Emacs: есть ли способ получить список пользовательских тегов - и перемещаться по ним?
Предположим, у меня есть файл со следующими отметками (или назовите его тегами):
test.el:
;; =====
;; gnus:
some code here
;; ====
;; ECB:
some code here
;; =====
;; code:
some code here
(в элиспе)
test.py:
# ========
# imports:
some code here
# =====
# defs:
some code here
# =====
# args:
some code here
(в питоне)
Поэтому я хотел бы иметь буфер, который бы перечислял такие теги (или называл это метками) для данного буфера / файла. И это должно также облегчить навигацию по этим тегам в некотором роде - с помощью мыши или сочетаний клавиш (что-то похожее на table of contents
функциональность rest-mode
).
Я хотел решить эту проблему, изменив некоторые функции etags. Но не смог найти (это было бы решением, так как ECB показывает etags красиво в буфере - как я и хотел).
Некоторые другие решения могли бы использовать закладки - но закладки не зависят от файла. Они зависят от системы. То есть в списке закладок У вас есть все закладки - пока я хотел получить закладки только для данного файла.
1 ответ
Используя пример кода Emacs Lisp, я решил его с помощью следующего, который можно добавить в ловушку для emacs-lisp-mode, и его легко настроить для других языков.
(make-local-variable 'outline-regexp)
(setq outline-regexp ";; =+\n;; ")
(make-local-variable 'outline-heading-end-regexp)
(setq outline-heading-end-regexp ":\n")
(outline-minor-mode 1)
Теперь вы можете использовать стандартный режим контура, который имеет такие сочетания клавиш:
C-c @ C-p -> prevous header
C-c @ C-n -> next header
C-c @ C-t -> hide code between headers
C-c @ C-a -> show all the code between headers
Если вы временно скроете заголовки, вы получите схему вашего буфера, переместитесь туда, куда хотите, и снова покажете код.
Для python просто замените;; в регулярном выражении с #.
outline-mode
поставляется с Emacs и документируется там, если вам нужна дополнительная информация.