Eu queria pular para um novo quadro, de um marcador no menu / lista de favoritos, sem um prompt .
Mas a explicação de u-punkt foi útil na construção desta nova função. Eu clonei o comando existente associado a RET
e liguei-o ao não usado C-RET
localmente para o modo.
Você pode descrever a chave original com C-h k RET
. Rastrear o código para bookmark-bmenu-this-window
não é difícil, então use a estratégia do u-punkt para escrever o seguinte:
(defun my-bookmark-bmenu-other-frame (&optional use-region-p) ; Bound to 'C-RET' in bookmark list
"Select this line's bookmark in a new frame.
See 'bookmark-jump' for info about the prefix arg."
(interactive "P")
(bmkp-bmenu-barf-if-not-in-menu-list)
(bookmark-bmenu-ensure-position)
(let ((bookmark-name (bookmark-bmenu-bookmark)))
(bmkp-jump-1 bookmark-name 'switch-to-buffer-other-frame use-region-p)))
Para a associação de teclas, bookmark-bmenu-mode-map
não está definido até que bookmark+
seja carregado, então eu uso um eval-after-load
,
(eval-after-load 'bookmark+ '(define-key bookmark-bmenu-mode-map
(kbd "<C-return>")
'my-bookmark-bmenu-other-frame))
EDITAR
Se você precisar de algo que funcione quando bookmark+
não estiver instalado, tente o seguinte,
(when (locate-library "bookmark+")
'(eval-after-load 'bookmark 'bookmark+))
(if (locate-library "bookmark+")
;; then
(defun my-bookmark-bmenu-other-frame (&optional use-region-p) ; Bound to 'C-RET' in bookmark list
"Select this line's bookmark in a new frame.
See 'bookmark-jump' for info about the prefix arg."
(interactive "P")
(bmkp-bmenu-barf-if-not-in-menu-list)
(bookmark-bmenu-ensure-position)
(let ((bookmark-name (bookmark-bmenu-bookmark)))
(bmkp-jump-1 bookmark-name 'switch-to-buffer-other-frame use-region-p)))
;; else
(defun my-bookmark-bmenu-other-frame ()
"Select this line's bookmark in other frame."
(interactive)
(bookmark-jump (bookmark-bmenu-bookmark) 'switch-to-buffer-other-frame))
)
(eval-after-load 'bookmark '(define-key bookmark-bmenu-mode-map
(kbd "<C-return>")
'my-bookmark-bmenu-other-frame))