Emacs 帮助模式:在源代码的第一行定位定义

Posted

技术标签:

【中文标题】Emacs 帮助模式:在源代码的第一行定位定义【英文标题】:Emacs help-mode: positioning definitions on top line in source code 【发布时间】:2012-02-05 14:23:47 【问题描述】:

我试图在 Emacs Lisp 源代码中将函数和变量的 Emacs 位置定义放在缓冲区的顶行,而不是在中心线上,在从帮助缓冲区中查找它们之后。

我的意思是:通过 `describe-function' 查找函数后,您会得到一个帮助缓冲区,如果该函数已在 Emacs Lisp 源文件中定义,您可以选择在该文件上按 RET名称并被带到该函数的定义中。但是,这样的定义将位于屏幕的中心线上,而我希望它位于顶线上,以查看更多的实现。

我试图查找我可以建议的功能。 describe-mode' for Help said RET was bound tohelp-follow' 我已经准备好建议这样的功能,但看看它的定义,我认为它只是一个占位符:

(defun help-follow ()
   "Follow cross-reference at point.

   For the cross-reference format, see `help-make-xrefs'."
   (interactive)
   (error "No cross-reference here"))

有什么帮助吗?我正在使用 Viper+Vimpulse,我不知道这是否会改变任何东西。

谢谢。

【问题讨论】:

【参考方案1】:

在我看来相关函数是help-button-action(它调用help-do-xref),所以你可能想advise that在找到外部参照后设置你想要的点。

【讨论】:

我建议使用 `help-do-xref'。谢谢。【参考方案2】:

您可能想使用find-function 转到函数的源代码。

它使用变量find-function-recenter-line,它是开始显示函数定义的行号。默认情况下它的值为 1,这应该正是您所需要的。

而函数的描述是声明后的注释,所以你不需要describe-function

【讨论】:

我自定义了 find-function' already. I did it by using find-function-hook' 因为我不知道 find-function-recenter-line'. find-variable' 虽然没有类似的变量。我更喜欢使用“describe-function”,因为它允许我浏览帮助系统。还是谢谢你。【参考方案3】:

FWIW 我使用这两个快速跳转到函数/变量的源代码(C-h C-f, C-h C-v

(define-key help-map (kbd "C-f") 'find-function-at-point)
(define-key help-map (kbd "C-v") 'find-variable-at-point)

【讨论】:

如果可以将两者结合起来会更好,所以我可以在符号上按一个绑定,它会检查它是函数还是变量并跳转到它的定义。它不适用于符号既是函数又是变量的情况,但无论如何它并不常见,如果我不必考虑按哪个键来跳转到定义会更方便。跨度>

以上是关于Emacs 帮助模式:在源代码的第一行定位定义的主要内容,如果未能解决你的问题,请参考以下文章

将 minted(源代码 LaTeX 包)与 emacs/auctex 一起使用

Emacs 是如何实现快速查找和定位代码的?

使用粘贴时如何跳转到emacs中的函数定义?

开始使用 Org 模式吧,在没有 Emacs 的情况下 | Linux 中国

备忘-EMACS常用命令

Emacs:窗口太短时向下箭头键跳过行