Сворачивание кода в Emacs

Возможный дубликат:
Как добиться эффекты сворачивания кода в emacs

Отличная особенность Dreamweaver - это сворачивание кода любых строк текста - рекурсивно!

Это фантастика, я могу сложить любой текст или код, независимо от языка. Я работаю с существующими системами; Я не редактирую хорошо написанный код или код на одном языке и т. Д., В основном HTML, смешанный с черт знает что. Складывание линий упрощает и ускоряет понимание намного. К сожалению, это единственная функция, которая мне нравится в Dreamweaver.

Есть ли сворачивание кода для Emacs с аналогичной целью?


person Christopher Done    schedule 30.07.2009    source источник
comment
Ранее здесь: stackoverflow .com / questions / 1085170 /   -  person dmckee --- ex-moderator kitten    schedule 30.07.2009


Ответы (6)


Есть режим сворачивания, второстепенный режим. К сожалению, это навязчиво: вам нужно вручную аннотировать складки специальными комментариями, которые загромождают код, когда вы не используете режим (или когда вы делитесь кодом с другими, кто его не использует). Лучший режим не заставит ваш код работать.

Позвольте мне добавить: есть дубликат этого, на который стоит обратить внимание: Как добиться эффекта сворачивания кода в Emacs.

person quark    schedule 30.07.2009
comment
Спасибо, я уже смотрел на этот вопрос, и он не отвечает на мой вопрос, потому что я не хочу, чтобы для этого мне приходилось редактировать свой код. Но я все равно приму это как ответ, т.е. нет. Похоже, мне придется написать это самому или перейти на vim. - person Christopher Done; 31.07.2009
comment
Если кто-то зайдет на эту страницу позже, может быть интересна эта библиотека складывания на основе тегов: lisperati.com/tagging.html - person Christopher Done; 31.07.2009
comment
Если вы собираетесь писать это, дайте нам всем знать! Я давно хотел иметь правильный режим сворачивания для Emacs. Я практически сдался и начал пользоваться другими редакторами. - person quark; 31.07.2009

hide-show (hs-minor-mode) - второстепенный режим, который будет делать что-то вроде этого ...

Привязка клавиш по умолчанию для запуска сворачивания - C-c @ C-c, что я считаю довольно громоздким. Но и тогда я им не особо пользуюсь.

person dmckee --- ex-moderator kitten    schedule 30.07.2009
comment
Для получения дополнительных сведений см. emacswiki.org/emacs/HideShow. - person Pete; 30.07.2009
comment
Я это уже видел. Мне действительно нужно что-то, чтобы скрыть данную область, а не пытаться понять синтаксис, как я сказал выше. Спасибо хоть. - person Christopher Done; 31.07.2009

Вы можете найти функцию set-selective-display и переменную selective-display. Не совсем то, что вам нужно, но позволяет скрывать строки в зависимости от уровня отступа.

person Yoo    schedule 31.07.2009
comment
Ура, мне удалось [придумать что-то] [1], используя set-selective-display, по крайней мере, чтобы продемонстрировать эту идею складывания для будущего обсуждения. Это не решение, потому что это портит код, но это хорошая демонстрация. Я собираюсь попробовать использовать tagging.el в качестве примера, чтобы почерпнуть идеи для правильной реализации этого. [1]: chrisdone.com/blog/html/ 2009-08-01-emacs-fold.html # video - person Christopher Done; 01.08.2009
comment
Ссылка Christopher Done на видео сворачивания кода emacs теперь неактивна. - person David Spector; 17.01.2019

Я использую fold-dwim.el. Из вики emacs:

fold-dwim.el - это унифицированный пользовательский интерфейс для режимов сворачивания / контуров Emacs. Он поддерживает fold.el, hideshow.el, outline.el, TeX-fold.el и nxml-outln.el.

Вы можете получить его здесь:

http://www.emacswiki.org/emacs/FoldDwim

У меня это в моем .emacs:

(require 'fold-dwim)
(global-set-key [(C kp-4)] 'fold-dwim-hide-all)
(global-set-key [(C kp-5)] 'fold-dwim-toggle)
(global-set-key [(C kp-6)] 'fold-dwim-show-all)

Имейте в виду, что вам все равно нужно активировать hs-minor-mode, fold-mode и т. Д., Но мне легче использовать их таким образом.

person Community    schedule 05.08.2009

Еще вы можете изучить nxhtml-mode; он не сворачивает код, но выделяет смешанный код (например, HTML и PHP) по-разному в зависимости от его типа. Это дает вам такой же выигрыш в понятности, но без неудобств режима складывания. Я думаю, что этот подход в любом случае больше подходит для Emacs, во-первых, потому что сворачивание кода похоже на идею, ориентированную на мышь, которая плохо адаптируется к в основном ориентированному на клавиатуру интерфейсу Emacs, а во-вторых, потому что Emacs в некоторой степени упрощает навигацию по большому файлу. этот код может оставаться видимым, не мешая вам.

person JasonFruit    schedule 30.07.2009

Если вам действительно нужно «что-то, чтобы скрыть данную область, а не пытаться понять синтаксис» (в отличие от hideshow и других решений, основанных на синтаксическом анализе), и вы «не хотите редактировать [свой] код» (в отличие от сворачивания) то, я полагаю, вы имеете в виду, что не хотите, чтобы регионы были постоянными между различными сеансами редактирования. Затем вы можете использовать http://www.emacswiki.org/emacs/HideRegion, чтобы скрыть пользователя -выбранные регионы ...

(Но это странно. Младший режим складывания с постоянными отметками кажется гораздо более удобным решением.)

person imz -- Ivan Zakharyaschev    schedule 25.07.2010
comment
HideRegion слишком сложен. Мне нужно что-то, что просто работает! - person Robin Green; 29.06.2011
comment
@Robin Но что ты хочешь сделать? Мой ответ был о том, чтобы просто однажды спрятать произвольный регион. - person imz -- Ivan Zakharyaschev; 29.06.2011