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 to
help-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 一起使用