Как получить кликабельный текст, который вызывает функцию - PullRequest
1 голос
/ 26 марта 2019

Допустим, у меня есть следующий текст в буфере

CMM-3:       Description
CMM-91:      Description 2

Я хочу, чтобы CMM-XX стал интерактивной областью, вызывающей пользовательскую функцию

(defun jira-ticket-view (&optional jira-ticket)
  "Open Jira Ticket Inside Emacs"
  (interactive)
  ....)

Как это может бытьдостигнуто в emacs / elisp?

1 Ответ

5 голосов
/ 28 марта 2019

Создайте новую раскладку клавиш, привяжите mouse-1 к функции, которую вы хотите вызвать, и добавьте раскладку клавиш к тексту ссылки в виде текстового свойства. Установите mouse-face на highlight и добавьте help-echo для дополнительного удобства - они вступают в силу, когда пользователь наводит указатель мыши на текст.

(defun my-function ()
  (interactive)
  (message "You've clicked the text!"))

(let ((map (make-sparse-keymap)))
  (define-key map [mouse-1] 'my-function)
  (insert "Foo: "
          (propertize "bar" 'keymap map 'mouse-face 'highlight 'help-echo "Click here!")
          "\n"))

См. Раздел Текст, доступный для кликабельности в справочном руководстве elisp для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...