在Emacs中使用Etags时遇到问题。每次我点击\ M +。要跳转到一个定义点,总是会弹出一个查询,例如:
查找标记(默认function_name):
我必须点击“输入”#39;确保它。
但在大多数情况下,我发现我可以选择默认值。那么有什么方法可以抑制这个消息吗?
我发现原因是因为:
(defun find-tag (tagname &optional next-p regexp-p)
(interactive (find-tag-interactive "Find tag: "))
...
)
为什么我要选择标签?为什么默认值不能仅仅是这一点下的单词?我可以删除这一行吗? (交互式),还是有一个很好的解决方案?
答案 0 :(得分:0)
通过Emacs令人敬畏的C-h f
很快通过etags源中的一些defuns,可以发现搜索的默认标签是通过名为find-tag-default
的函数确定的。
这意味着你可以定义以下功能:
(defun find-tag-under-point ()
(interactive)
(find-tag (find-tag-default)))
然后,您可以通过define-key
或global-set-key
或local-set-key
将其绑定到您想要的任何键。
(如果您希望函数成为"命令"可以使用interactive
调用或绑定到密钥,则始终需要M-x
表单。)
答案 1 :(得分:-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-9 M - 。像往常一样调用find-tag
(旧函数),但find-tag-under-point
的行为(new-函数)默认是你想要的。