Задача такая: есть буфер FirstBuffer, в котором содержится код на elisp. Этот код после вычисления должен создать буфер TextButtonBuffer, в котором должна создаться текстовая кнопка «Кнопка».Эта кнопка при клике должна возвращать нас обратно в FirstBuffer. Ну то есть я пытаюсь понять простейшую реализацию Clickable Text.
Вот мой код:
(let ((MyMap (make-sparse-keymap)) StartPos EndPos FirstBuffer TextButtonBuffer ClickFunc)
(progn
(setq FirstBuffer (current-buffer))
(defun ClickFunc()
"Кликальщик"
(switch-to-buffer FirstBuffer)
)
(switch-to-buffer "*TextButton*")
(setq TextButtonBuffer (current-buffer))
(setq StartPos (point))
(princ "Кнопка" TextButtonBuffer)
(setq EndPos (point))
(define-key MyMap [mouse-1] 'ClickFunc)
(add-text-properties StartPos EndPos '(mouse-face highlight keymap MyMap) TextButtonBuffer)
)
)
Я совсем не уверен насчет строки
(define-key MyMap [mouse-1] 'ClickFunc)
В целом этот код не работает. Кнопка подсвечивается как кликуемая, но сам клик не пашет(
Также меня интересует реализация той же задачи на widget link. Не совсем понимаю смысл follow-link в виджетах. И как в виджете привязывать кликанье к действию?