#button #emacs
#кнопка #emacs
Вопрос:
Допустим, у меня есть следующий текст в буфере
CMM-3: Description
CMM-91: Description 2
Я хочу, чтобы CMM-XX стал интерактивными областями, которые вызывают пользовательскую функцию
(defun jira-ticket-view (amp;optional jira-ticket)
"Open Jira Ticket Inside Emacs"
(interactive)
....)
Как этого можно достичь в emacs / elisp?
Комментарии:
1. Режим организации — это первое, что приходит на ум; Вы могли бы рассмотреть возможность проверки источника для их обработки ссылок.
Ответ №1:
Создайте новую раскладку, привяжитесь 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 для получения дополнительной информации.