Доступне складання коду в бахромі Emacs


15

Я хотів би налаштувати мою бахрому Emacs для відображення розділів складання коду.

Наприклад, BBEdit на Mac показав би таке при редагуванні файлу JSON:

Складні позначки коду BBEdit

Самі позначки є діючими: натискання на позначку розширить або згорнуть відповідний розділ коду. Якщо документ не має режиму, який підтримує складання коду, бахрома не відображається.

Чи можливо розширити функціональність бахроми Emacs таким чином?

Відповіді:


16

Hideshowvis додає піктограми, які можна натискати на бахрому, але з якихось дивних причин вона не входить до elpa чи melpa. За замовчуванням він відображає в -бахромі код для коду, який можна скласти, а потім виводить вміст за допомогою а .... Увімкнувши hideshowvis-symbolsце, він додає "a" +і робить натяк на складний вміст трохи гучнішим.

Сам Hideshow також дозволяє клацанням миші на лінії перемикати дисплей за допомогою S-mouse-2(або зсуву середнього клацання). Це вбудовано і може бути ввімкнено за допомогою hs-minor-mode.


1
Приємно, hideshowvis.el використовує хак, схожий на той, який я пропоную, але без потворності двічі клацнути (читаючи необроблені події). Дякуємо за вказівник.
Sigma

3
Hideshowvis.elчудово працює, дякую! У мене виникли проблеми з тим, щоб він працював над файлами JSON js3-mode; Щоб вирішити ці проблеми, я повинен був переконатися, що функція Hideshowvis увімкнена лише після всіх дій у черзі, наприклад:(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)
Mathieu Legrand

Зараз на мельпі.
дшеферд

4

Хоча я не думаю, що елементи бахроми можуть безпосередньо отримувати кліки (я, можливо, помиляюся), можливим злом буде прив'язувати (kbd "<left-fringe> <double-mouse-1>")

Оскільки перший клацання перемістить точку на початок рядка, що відповідає значку бахроми, тестування значення (point)вашої гіпотетичної (не) складної функції дозволить вам визначити, яку частину коду (не) скласти, або якщо вам взагалі потрібно щось робити (якщо для цього рядка немає значка бахроми)

приклад з буфером в режимі org:

(define-key org-mode-map (kbd "<left-fringe> <double-mouse-1>") 'org-cycle)

Подвійне клацання по бахромі циклизує відповідне піддерево.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.