Я хотел бы отобразить открывающую часть области, когда она выйдет из экрана.
Пример:
namespace a
{
...
--------------------- <- display frame
... |
}* | * when cursor is here display "namespace a" in the minibuffer
--------------------- or on screen
Это может работать для многих языков программирования, но я в основном думаю о C ++.
Чтобы пояснить немного больше и для тех, кто знает VS, я хотел бы подобную функцию как то, что существует для Visual Studio. То есть, поместив курсор в конец области, отобразите начало области в верхней части буфера редактирования.
Эта функция уже где-то существует?
minibuffer
c++
programming
log0
источник
источник
Ответы:
Если вы пишете на C / C ++ / Java / Emacs Lisp / Python, то semantic-sticky-func-mode будет делать то, что вы хотите.
ПРИМЕЧАНИЕ : Кажется, что это работает с CEDET из Git, а не с CEDET в настоящее время в Emacs 24.4. Чтобы получить Emacs от Git:
И сначала загрузите CEDET над всем остальным в вашем файле инициализации:
При включении этот режим показывает, что точка функции находится в первой строке текущего буфера. Это полезно, когда у вас очень длинная функция, которая распространяется не только на экран, и вам не нужно прокручивать вверх, чтобы прочитать имя функции, а затем прокрутить вниз до исходного положения.
Он отображает полный интерфейс функции (тип возвращаемого значения, имя функции и параметры), а не только имя функции.
Чтобы включить его, поместите этот код в файл инициализации:
ОБНОВЛЕНИЕ : Одной из проблем текущего
semantic-stickyfunc-mode
является то, что он не отображает все параметры, которые разбросаны по нескольким строкам. Чтобы решить эту проблему, я создал пакет stickyfunc-gain .ДЕМО :
Вот демо в C:
Вот демонстрация в Emacs Lisp:
ОБНОВЛЕНИЕ : В качестве альтернативы вы можете использовать helm-semantic-or-imenu . Когда вы находитесь внутри функции и запускаете команду, курсор помещается прямо в функцию в списке, поэтому вы всегда можете увидеть полный интерфейс функции. DEMO:
Сначала я использую
helm-semantic-or-imenu
для перехода к функцииhelm-define-key-with-subkeys
и перемещения точки туда.Затем я начинаю
helm-semantic-or-imenu
снова иhelm-define-key-with-subkeys
предварительно выбран.Затем я перемещаю точку в переменную helm-map и
helm-semantic-or-imenu
снова выполняю две функции: helm-next-source и helm-previous-source. На этот раз вместо того, чтобы показывать текущий семантический тег, в котором я работаю (это helm-map), он показывает два других тега в буфере Helm Semantic. Это потому, что я передал команду перед аргументом префикса.Также эта демонстрация в Emacs Lisp, она работает и для C / C ++, и она более гибкая, если у вас очень длинный интерфейс функций.
источник
emacs -Q
но я не понимаю, какое поведение вы описываете при просмотре, напримерorg.el
.Вы можете включить
which-function-mode
, выполнивM-x
which-function-mode
RETЧтобы сделать настройку постоянной, добавьте
в ваш файл инициализации.
Из документации:
Примечание : название на самом деле не говорит об этом, но это работает не только для «функций», но и для других типов областей. Например, in
org-mode
,which-function-mode
отображает заголовок текущего поддерева.источник