簡體   English   中英

從密鑰調用Imenu

[英]Invoking Imenu from a key

目前emacs有一些有用的imenu東西,它允許我查看當前緩沖區中的函數列表。 為了實現這一點,我需要鍵入Mx ,然后鍵入imenu ,然后按return鍵,然后它將在迷你緩沖區“索引項目:”中顯示提示,我需要輸入func ,然后它顯示另一個迷你緩沖區提示符,其中包含當前所有函數的完成緩沖。 這是非常好的和有用的,但現在我想減少打字的數量,並在某種程度上以序列的第一部分宏觀化。 我試過這種方法:

(defun my-imenu-go-function-list ()
  (interactive)
  (imenu "func"))

(global-set-key (kbd "C-x C-o") 'my-imenu-go-function-list)

另一個嘗試:

(defun my-imenu-go-function-list ()
  (interactive)
  (imenu)
  (execute-kbd-macro [?f ?u ?n ?c return]))

但沒有一個有效,還有其他可能嗎?

sebs的回答顯示了一個我以前從未見過的非常巧妙的技巧; 但是以下內容會更直接:

(imenu (assoc "func" (imenu--make-index-alist)))

它確實依賴於私有(按慣例)功能,所以YMMV。 我看不到用於返回此alist值的明顯API。

您需要以交互方式調用您的函數。

請嘗試以下方法。 它應該工作。

更新:

(defun my-imenu-go-function-list ()
  (interactive) 
  (let ((unread-command-events  (listify-key-sequence "func\n") ))
  (call-interactively 'imenu)))

如果您在Windows中,則可能必須將回車符更改為“\\ r \\ n”或“\\ r \\ n”

暫無
暫無

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

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