Emacs:有没有一种方法可以让我得到一个定制标签列表,并浏览它们?

Emacs:有没有一种方法可以让我得到一个定制标签列表,并浏览它们?,emacs,tags,bookmarks,cedet,emacs-ecb,Emacs,Tags,Bookmarks,Cedet,Emacs Ecb,假设我有一个带有以下标记(或称之为标记)的文件: 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

假设我有一个带有以下标记(或称之为标记)的文件:

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语言)

因此,我希望有一个缓冲区,它将列出给定缓冲区/文件的此类标记(或称之为标记)。它还应该以某种方式促进通过这些标签的导航-使用鼠标或键绑定(类似于
目录
rest模式的功能)

我想通过修改一些etag函数来解决这个问题。但找不到一个(这将是一个解决方案,因为欧洲央行在缓冲区中很好地显示了ETag——正如我所希望的)


其他一些解决方案可能使用书签,但书签不是特定于文件的。它们是特定于系统的。在书签列表中,您拥有所有书签-虽然我只想获取给定文件的书签。

使用Emacs Lisp示例代码,我用以下代码解决了它,它可以添加到Emacs Lisp模式的钩子中,对于其他语言应该很容易调整

(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,只需替换;;在带有#的regexp中


大纲模式
随Emacs提供,如果您需要更多信息,可以在那里记录。

我不使用ECB,但“标记”是否与etags/ctags标记文件中的一样?还是欧洲央行特有的?如果是前者,我强烈怀疑你能做出索引评论。不过,书签功能有很多增强功能,所以也许有一些方法可以改进书签工作流程。现在你已经在混合中添加了大纲次要模式,我对你对“标记”的定义更加困惑。这绝对不是提纲术语。你的问题仍然模棱两可。@phils:你说得对-我的编辑与标记无关。这只是通过自定义标记(或称之为标签)来解决navigartion问题的另一种方法。也许我应该重新表述这个问题。@phils:我已经完全重新表述了我的问题。这本身不是一个答案,但我知道Emacs支持这个功能。在最坏的情况下,从那里提升代码可以为您提供所需的功能。另外,您是否看过和看过文档?它描述了自定义“方法”窗口,例如,如果折叠所有标记,理论上可以将该窗口重新修改为标记浏览器。