Я хотел бы настроить мою полосу Emacs для отображения секций свертывания кода.
Например, BBEdit на Mac будет показывать следующее при редактировании файла JSON:
Сами метки являются действующими: нажатие на метку развернет или свернет соответствующий раздел кода. Если в документе отсутствует режим, поддерживающий свертывание кода, полоса не отображается.
Можно ли таким образом расширить функциональность Emacs?
источник
Hideshowvis.el
отлично работает, спасибо! У меня были некоторые проблемы, заставляющие его работать с файлами JSONjs3-mode
; Чтобы обойти эти проблемы, я должен был убедиться, что hideshowvis only включен после всех действий в очереди, например:(dolist (hook '(emacs-lisp-mode-hook c++-mode-hook)) (add-hook hook 'hideshowvis-enable)) (defun hideshowvis-enable-immediately () (run-at-time "0 seconds" nil 'hideshowvis-enable)) (add-hook 'js3-mode-hook 'hideshowvis-enable-immediately)
Хотя я не думаю, что дополнительные элементы могут напрямую получать клики (хотя я могу и ошибаться), возможный хак будет связывать
(kbd "<left-fringe> <double-mouse-1>")
Поскольку первый щелчок переместит точку в начало линии, которая соответствует значку полосы, проверка значения
(point)
в вашей гипотетической (не) функции сворачивания позволит вам определить, какая часть кода (раз) сворачивается, или если вам нужно что-то делать вообще (в случае, если для этой строки нет значка с бахромой)пример с буфером режима org:
Двойной щелчок по краю циклически повторяет соответствующее поддерево.
источник