簡體   English   中英

如何在不被Emacs詢問的情況下跳轉到定義?

[英]How can I jump to a definition without being queried in Emacs?

在Emacs中使用Etags遇到問題。 每次我點擊\\ M +。 跳轉到一個difinition點,查詢被不斷出現,如:

查找標簽(默認功能名稱):

我必須點擊“輸入”以確保它。

但在大多數情況下,我發現可以選擇默認值之一。 那么,有什么方法可以抑制此消息? 我發現原因是因為: (defun find-tag (tagname &optional next-p regexp-p) (interactive (find-tag-interactive "Find tag: ")) ... )

為什么必須選擇標簽? 為什么不能只將默認單詞作為重點呢? 我可以刪除這行嗎? 交互式 ),還是有一個好的解決方案?

不久,通過Emacs令人敬畏的Ch f在etags源代碼中進行了幾次分解,可以發現要搜索的默認標簽是通過名為find-tag-default的函數確定的。

這意味着您可以定義以下功能:

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

然后,您可以通過define-keyglobal-set-keylocal-set-key將其綁定到所需的任何local-set-key

(如果您希望函數成為可以通過Mx調用或綁定到鍵的“命令”,則始終需要interactive形式。)

您可以在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 (新功能)的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM