Навигация и сворачивание по блокам в c-mode (outline-minor-mode? Или всё-таки нет?)
Модератор: /dev/random
Навигация и сворачивание по блокам в c-mode
В кои-то веки открыл несколько сишных исходников, включил outline-minor-mode, а он сворачивает код и прыгает не по функциям и блокам, а… вообще непойми почём. У меня что-то поломалось? Или я всё-таки что-то не то включил? Последний раз активно редактировал сишный код лет восемь назад, так что мог и напутать.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Re: Навигация и сворачивание по блокам в c-mode
Кое-что нагуглилось, отвечу себе сам. Хотя удивляет такое молчание.
Ничего я не перепутал, это действительно outline-minor-mode, и действительно у меня что-то локально поломалось. Один раз даже всё заработало, удалось попрыгать по заголовкам функций и посворачивать всё что ниже. Но потом он снова начал считать заголовками почти все непустые строки.
Впрочем, пока гуглил решение проблемы с outline-minor-mode, наткнулся на альтернативное решение — hs-minor-mode. Документация на сайте немного устарела; в частности, описанный там баг (сворачивание if {…} else if {…}) у меня не воспроизводится.
Чем-то он мне даже больше нравится (кроме того что работает). Например, вместо вот такого (outline)получаем такое(hideshow):
Единственное что — не поддерживает навигацию по блокам, наподобие
outline-{previous,next}{,-visible}-heading, outline-{backward,forward}-same-level, outline-up-heading. Но на поверку оказалось, что мне более чем хватает глобальных {beginning,end}-of-defun (говоря точнее, я даже ими почти не пользуюсь).
Ничего я не перепутал, это действительно outline-minor-mode, и действительно у меня что-то локально поломалось. Один раз даже всё заработало, удалось попрыгать по заголовкам функций и посворачивать всё что ниже. Но потом он снова начал считать заголовками почти все непустые строки.
Впрочем, пока гуглил решение проблемы с outline-minor-mode, наткнулся на альтернативное решение — hs-minor-mode. Документация на сайте немного устарела; в частности, описанный там баг (сворачивание if {…} else if {…}) у меня не воспроизводится.
Чем-то он мне даже больше нравится (кроме того что работает). Например, вместо вот такого (outline)
Код: Выделить всё
{...
}
Код: Выделить всё
{...}
Единственное что — не поддерживает навигацию по блокам, наподобие
outline-{previous,next}{,-visible}-heading, outline-{backward,forward}-same-level, outline-up-heading. Но на поверку оказалось, что мне более чем хватает глобальных {beginning,end}-of-defun (говоря точнее, я даже ими почти не пользуюсь).
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж