我的大部分書籤都以前綴 的字母作爲前綴,幾乎總是唯一確定書籤。 這樣我可以,例如, 跳轉到我的源文件夾(書籤爲「s:源」)與M-X書籤跳轉RET的RET。我有一個快捷方式,所以它實際上是〜s RET。Emacs更快捷的書籤跳轉?
我想最終擺脫RET的, 即得到M-X的書籤,快速跳RET小號或 做上述工作。 我還想回到默認行爲:向我展示所有以給定字母開頭的書籤 ,以防不僅有一個變體。
到目前爲止,我有:
(defun bookmark-do-quick-jump (str)
(let ((completions (all-completions str bookmark-alist)))
(bookmark-jump
(if (eq 1 (length completions))
(car completions)
(completing-read "Jump to bookmark: " bookmark-alist nil t str)))))
有仍然是兩個打嗝:
首先,我要跳進小緩衝區不知何故,堅持在那裏此地圖(不知道如何做到這一點):
(setq bookmark-quick-jump-map
(let ((map (make-sparse-keymap)))
(mapcar (lambda (key)
(define-key map key
(lambda()
(interactive)
(bookmark-do-quick-jump key))))
(loop for c from ?a to ?z
collect (string c)))
map))
其次,當我做了呼叫
(bookmark-do-quick-jump "o")
它帶有3個變體(org-capture-last-stored,org-capture-last-stored-marker ...)。 我現在在minibuffer中,但我仍然需要按RET RET 才能看到這3個變體。我想這是自動完成的。
我會很感激任何迴應,直接回答我的兩個子問題, 或完全不同的方法,只要我能得到我描述的行爲和可用性 。
UPD:
我切換從completing-read
到ido-completing-read
解決的第二件事:
(defun bookmark-do-quick-jump (str)
(let ((completions (all-completions str bookmark-alist)))
(bookmark-jump
(if (eq 1 (length completions))
(car completions)
(ido-completing-read "Jump to bookmark: " completions nil t str)))))
順便說一句,我忘了提,我使用bookmark+
。我不確定跳轉到 是否由默認的bookmark-jump
支持。
這可能是更容易實現與調用鍵盤宏功能。唯一的複雜情況是鍵盤宏的其中一個鍵必須是該函數的參數。 – Malabarba
@ abo-abo您可否提供用於爲書籤創建唯一名稱的方法,並設置問題第一行中提到的快捷方式?另外,您是否在最終解決方案中使用了auto-completion-read.el?謝謝。 – Anusha
我通過用唯一字符加前綴來製作書籤名稱。我只有50左右,所以小寫字母和大寫字母就足夠了。請參閱http://oremacs.com/2015/01/06/rushing-headlong/。 –