Навигация и сворачивание по блокам в c-mode (outline-minor-mode? Или всё-таки нет?)

Модератор: /dev/random

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Навигация и сворачивание по блокам в c-mode

Сообщение t.t »

В кои-то веки открыл несколько сишных исходников, включил outline-minor-mode, а он сворачивает код и прыгает не по функциям и блокам, а… вообще непойми почём. У меня что-то поломалось? Или я всё-таки что-то не то включил? Последний раз активно редактировал сишный код лет восемь назад, так что мог и напутать.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Навигация и сворачивание по блокам в c-mode

Сообщение t.t »

Кое-что нагуглилось, отвечу себе сам. Хотя удивляет такое молчание.

Ничего я не перепутал, это действительно 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 (говоря точнее, я даже ими почти не пользуюсь).
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали: