Почему режим блокировки кнопок не работает с режимом python в Emacs?

Я хотел бы иметь интерактивные ссылки на билеты JIRA в моем коде Python из Emacs.

Например, я использую строки документации doxygen в моем тестовом коде интеграции, который связывает номер билета:

def test_user_type_isolation(self):
    """
    Ensure UDT cannot be used from another keyspace
    @jira_ticket CASSANDRA-9409
    @since 2.2
    """
    ....

Я хотел бы иметь возможность щелкнуть CASSANDRA-9409 и получить прямой переход к JIRA билет это ссылка. Я нашел button-lock-mode, и он отлично работает! Однако этот elisp работает во всех режимах кроме для режима python:

(require 'button-lock)
(global-button-lock-mode 1)

(setq cassandra-jira-button
      (button-lock-set-button "CASSANDRA-[0-9]+"
        #'(lambda ()
            (interactive)
            (browse-url (concat "https://issues.apache.org/jira/browse/"
                         (thing-at-point 'symbol)))
        )
    :face 'link :face-policy 'prepend))

Это не только мой код, ни один из примеров, включенных в button-lock.el, также не работает в режиме python. Итак, кто-нибудь знает, что может вызвать конфликт?


person EnigmaCurry    schedule 29.07.2015    source источник


Ответы (1)


Я ничего не знаю о button-lock-mode, но Emacs поставляется с bug-reference-mode и очень полезным подрежимом bug-reference-prog-mode. Я бы предложил использовать их вместо них. Для вашего использования вы можете настроить это через bug-reference-bug-regexp и bug-reference-url-format.

bug-reference-prog-mode удобен, потому что ограничивает свое поведение при нажатии на кнопки комментариями и строками - идеально подходит для режимов программирования.

person Tom Tromey    schedule 30.07.2015
comment
Это идеально. Спасибо! Я, вероятно, воспользуюсь этим, но оставлю этот вопрос открытым на случай, если я смогу выяснить режим блокировки кнопок, потому что я все еще могу представить себе несколько других вариантов его использования. - person EnigmaCurry; 30.07.2015
comment
Замечательно, мне удалось получить несколько гиперссылок для отслеживания ошибок, используя это: gist.github.com/EnigmaCurry/487e2ed34488 / а> - person EnigmaCurry; 31.07.2015