假设我有一个带有以下标记的文件(或称之为标记):
test.el:
;; =====
;; gnus:
some code here
;; ====
;; ECB:
some code here
;; =====
;; code:
some code here
(在elisp中)
test.py:
# ========
# imports:
some code here
# =====
# defs:
some code here
# =====
# args:
some code here
(在python中)
所以我想要一个缓冲区,列出给定缓冲区/文件的标记(或称之为标记)。它还应该以某种方式通过这个标签进行导航 - 使用鼠标或键绑定(类似于table of contents
的{{1}}功能)。
我想通过修改一些etags函数来解决这个问题。但是找不到一个(这将是一个解决方案,因为ECB在缓冲区中很好地显示了etags - 就像我想要的那样)。
其他一些解决方案可能一直在使用书签 - 但书签不是特定于文件的。它们是系统特定的。这是书签列表你有所有的书签 - 虽然我只想获得给定文件的书签。
答案 0 :(得分:4)
使用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,如果您需要更多信息,请在此处进行记录。