【问题标题】:Emacs: is there a way I can get a list of custom tags - and navigate thru them?Emacs:有没有办法我可以获得自定义标签列表 - 并通过它们导航?
【发布时间】:2012-04-07 11:33:51
【问题描述】:

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

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

(在python中)

所以我想要一个缓冲区来列出给定缓冲区/文件的此类标签(或称其为标记)。它还应该以某种方式促进通过此标签的导航 - 使用鼠标或键绑定(类似于 rest-modetable of contents 功能)。

我想通过修改一些 etags 函数来解决这个问题。但是找不到(这将是一个解决方案,因为 ECB 在缓冲区中很好地显示了 etags - 正如我想要的那样)。

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

【问题讨论】:

  • 我不使用 ECB,但它是 etags/ctags TAGS 文件中的“标签”吗?还是欧洲央行特有的东西?如果是前者,我强烈怀疑您是否可以将其作为索引 cmets。不过,周围有书签增强功能,所以也许有一些方法可以改进书签工作流程。
  • 既然您已将大纲-次要模式添加到组合中,我对您对“标签”的定义感到更加困惑。这绝对不是概述术语。您的问题仍然模棱两可。
  • @phils:你说得对——我的编辑与标签无关。这只是通过自定义标记(或称其为标签)解决导航问题的另一种方式。也许我应该重新提出这个问题。
  • @phils:我已经完全重新提出了我的问题。
  • 本身不是答案,但我知道 Emacs org-mode 支持此功能。在最坏的情况下,从那里提取代码可以为您提供所需的功能。另外,您是否从文档中看到this pagethis one?它描述了自定义方法窗口,如果您折叠所有标签,理论上您可以将其改造成标签浏览器。

标签: emacs tags bookmarks cedet emacs-ecb


【解决方案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 一起提供,如果您需要更多信息,会在其中记录。

【讨论】:

    猜你喜欢
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    相关资源
    最近更新 更多