Почему не там никакое сворачивание кода в emacs?

Существует несколько вопросов на ТАК о том, как получить код, сворачивающийся в emacs, не имея необходимость добавлять любые специальные символы как "маркеры" в комментариях, например. Кто-то сказал, что не было "никакого идеального решения".
Кажется, что это могло быть сделано путем парсинга источника записанной программы и искать соответствие круглой скобке или скобке, или сделать это на основе добавления отступа. Вы могли также использовать комбинацию сценариев, которые используют различные методы.
Итак, почему обычно признается, что нет никакого "идеального" и простого способа получить сворачивание кода в emac? Есть ли что-то в emacs или его архитектуре, которая мешает программировать? Если бы это было легко, то после такого количества лет умных людей, использующих emacs, Вы думали бы, что кто-то имел бы, записал это.

26
задан HaskellElephant 25 December 2011 в 23:17
поделиться

5 ответов

Вам стоит поиграть с Hideshow (hs-minor-mode) в сочетании с fold-dwim.el. Он делает именно то, что вы предложили - ищет совпадающие скобки/пары, и может быть настроен на отступ.

Для большинства распространенных языков есть надежное решение для сворачивания, а если его нет, то все пакеты для сворачивания хорошо настраиваются. Фактически, единственным недостатком является распространение методов сворачивания (fold-dwim очень помогает в этом); раньше я думал, что раз никто не может указать мне на окончательное решение, то сворачивание трудно или невозможно - на самом деле все наоборот. Вы просто должны немного поэкспериментировать, чтобы понять, что работает лучше для вас.

Я использовал folding.el (например, для группировки материала в .emacs), outline-minor-mode, а теперь и Hideshow. Существует некоторая вероятность того, что ни один из них не будет работать именно так, как вы хотите, прямо из коробки (например, вам может понадобиться установить регекс для контура или определить метки складывания для folding.el), но это оказывается просто. Привязки клавиш по умолчанию могут быть несколько барочными, но это исправляется с помощью fold-dwim и/или hideshow-org (настоятельно рекомендуется для Hideshow, см. страницу Emacswiki hideshow; вы также можете имитировать поведение hideshow-org для других режимов сворачивания с помощью быстрого и грязного elisp и fold-dwim). Как только вы определитесь с предпочтительной настройкой, просто включите ее автоматически с помощью хуков или локальных переменных буфера, и наблюдайте, как ваш код сворачивается :) (см. ниже, обратите внимание на кликабельные + в полях).

alt text http://img198.imageshack.us/img198/4029/screenshot1oc.png

24
ответ дан 28 November 2019 в 07:14
поделиться

Вы должны посмотреть на CEDET. Он отлично справляется со сворачиванием кода и многими другими модными функциями, которые вам, вероятно, нужны, если вы переходите с IDE на Emacs.

http://cedet.sourceforge.net/

В частности, поищите `global-semantic-tag-folding-mode'

11
ответ дан 28 November 2019 в 07:14
поделиться

Вам не нужно ничего дополнительного, просто включите режим outline-minor-mode для типов файлов, которые вы хотите свернуть.

8
ответ дан 28 November 2019 в 07:14
поделиться

Я уже довольно давно использую режим сворачивания . С автоматическим добавлением шаблона и аббревиатур он неплохо работает для меня для некоторых хороших блоков кода.

Возможность создания свернутого буфера (для печати / отправки по электронной почте) всегда была моим желанием. Некоторые из моих складных тегов предназначены для безопасного скрытия пароля.

1
ответ дан 28 November 2019 в 07:14
поделиться

Но на самом деле существуют различные решения для Emacs; Я перечислил некоторые из них (те, с которыми мне довелось столкнуться) на http://en.wikipedia.org/w/index.php?title=Code_folding&oldid=375300945#cite_note-2 .

Однако есть вещи, которых мне не хватает: в некоторых случаях я хотел бы объединить несколько механизмов: например, для разметки я бы хотел использовать складывание на основе контура (для разделов) и на основе отступов сворачивание (для цитат, блоков кода и т. д.) - чтобы не заморачиваться с реализацией полного парсера для уценки.

Вот они:

Сворачивание на основе токенов в Emacs

Сворачивание на основе токенов в Emacs препятствует второстепенному режиму сворачивания .

Сворачивание на основе отступов в Emacs

Можно использовать функцию set-selected-display в Emacs, чтобы скрыть строки на основе уровня отступа, как предложено в Универсальном сворачивании кода примечание.

Зависящее от синтаксиса сворачивание в Emacs

Зависимое от синтаксиса сворачивание в Emacs поддерживается:

Несколько механизмов складывания объединены фолд-двим интерфейс.

См. Также http://www.emacswiki.org/emacs/CategoryHideStuff .

Сворачивание выбранных пользователем регионов в Emacs

Сворачивание выбранных пользователем регионов в Emacs реализуется командой hide-region-hide .

3
ответ дан 28 November 2019 в 07:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: