0

在 Emacs 中使用Etags时遇到问题。每次我点击 \M+。要跳转到定义点,总是会弹出一个查询,例如:

查找标记(默认函数名称):

我必须点击“输入”来确保它。

但在大多数情况下,我发现我可以选择默认的。那么有什么方法可以抑制这条消息吗?我发现原因是因为: (defun find-tag (tagname &optional next-p regexp-p) (interactive (find-tag-interactive "Find tag: ")) ... )

为什么我必须选择标签?为什么不能默认一个只是点下的单词?我可以删除这条线吗?(交互式),还是有一个好的解决方案?

4

2 回答 2

0

通过 Emacs 的 awesome 快速浏览 etags 源中的几个 defun C-h f,可以发现要搜索的默认标签是通过名为find-tag-default.

这意味着您可以只定义以下函数:

(defun find-tag-under-point ()
  (interactive)
  (find-tag (find-tag-default)))

define-key然后,您可以通过orglobal-set-key或将其绑定到您想要的任何键local-set-key

interactive如果您希望函数成为可以使用键调用M-x或绑定到键的“命令”,则该表单始终是必需的。)

于 2014-05-16T13:11:21.270 回答
-1

find-tag您可以在(或类似的任何交互式功能)上编写自己的功能

(defun find-tag-under-point (&optional arg)
  (interactive "P")
  (cond ((eq arg 9)
     (let ((current-prefix-arg nil))
       (call-interactively 'find-tag)))
    (arg
     (call-interactively 'find-tag))
    (t
     (find-tag (find-tag-default)))))

(global-set-key (kbd "M-.") 'find-tag-under-point)

然后像往常一样热键C-9M-.调用find-tag(old function),但find-tag-under-point默认情况下 (new-function) 的行为是你想要的。

于 2014-05-16T13:25:57.023 回答