ほとんどの場合、最初の文字がブックマークを一意に決定するように、ほとんどのブックマークに文字のプレフィックスを付けています。このようにして、たとえば、ソース フォルダー (「s: source」としてブックマークされている) にM-x bookmark-jump RET s RET. ショートカットに持っているので、実は~ s RET.
最終的には取り除きたいRET 、つまり 、前述の仕事を取得M-x bookmark-quick-jump RET s または実行したいと考えています。~ sまた、デフォルトの動作にフォールバックしたいと思います。バリアントが1つだけではない場合に備えて、指定された文字で始まるすべてのブックマークを表示します。
これまでのところ、私は持っています:
(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)))))
まだ問題が 2 つあります。
まず、どうにかしてミニバッファーにジャンプし、このマップに固執する必要があります (これを行う方法がわかりません)。
(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...) で戻ってきます。私は今ミニバッファーにいますが、 RET RET これらの 3 つのバリアントを表示するにはまだ押す必要があります。これを自動でやってほしい。
私が説明した動作と使いやすさを得ることができる限り、私の2つのサブ問題に直接答えるか、まったく異なるアプローチのいずれかの応答をいただければ幸いです.
更新:
completing-read
からに切り替えることで2番目のことを解決しました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+
。dired へのジャンプがデフォルトでサポートされているかどうかはわかりませんbookmark-jump
。