gpt4 book ai didi

Emacs:如何获取全局快捷键值

转载 作者:太空宇宙 更新时间:2023-11-03 18:52:00 24 4
gpt4 key购买 nike

我在 Emacs 中有以下全局键盘快捷键:

(global-set-key (kbd "C-<right>") 'forward-word)

对于组织模式,我决定重新定义这个快捷方式。如果光标停留在链接上,则转到链接位置。否则 - 使用 forward-word功能。

(defun is-link-p ()
(if (org-in-regexp org-bracket-link-regexp)
t))

(defun follow-link-or-next-word ()
(interactive)
(if (is-link-p)
(org-open-at-point)
(forward-word)))

(add-hook 'org-mode-hook (lambda ()
(define-key org-mode-map (kbd "C-<right>") 'follow-link-or-next-word)))

是否可以通过以下方式更改 org-mode 快捷方式:不是调用 (forward-word),而是查找全局绑定(bind)到 "C-<right>" 的函数并改为调用它。

因此,如果我决定更改全局快捷方式,我不需要更改 (forward-word) 两次。

最佳答案

我认为您正在寻找函数 (lookup-key keymap key &optional accept-defaults)

This function returns the definition of key in keymap. All the other functions described in this chapter that look up keys use lookup-key. Here are examples:

      (lookup-key (current-global-map) "\C-x\C-f")
⇒ find-file
(lookup-key (current-global-map) (kbd "C-x C-f"))
⇒ find-file

你可以扩展你的功能:

(defun is-link-p ()
(if (org-in-regexp org-bracket-link-regexp)
t))

(defun follow-link-or-default-action()
(interactive)
(let ((global-default (lookup-key (current-global-map) (kbd "C-<right>"))))
(if (is-link-p)
(org-open-at-point)
(funcall global-default))))

(add-hook 'org-mode-hook (lambda ()
(define-key org-mode-map (kbd "C-<right>") 'follow-link-or-default-action)))

关于Emacs:如何获取全局快捷键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16867507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com