当满足特定条件时,是否可以让<escape>
激活功能,但在不满足条件时像修饰键一样运行?
(define-key lawlist-mode-map (kbd "<escape>") (lambda () (interactive)
(cond
((ABC . . .)
(message "You have satisfied condition ABC."))
((DEF . . .)
(message "You have satisfied condition DEF."))
(t (The <escape> key shall behave like a modifier key: ESC- )) )))
编辑:根据Stefan提供的精彩解决方案,以下是如何使用他的代码处理多个条件(例如,如果ABC,则执行X;如果DEF,则执行Y)的示例。我包括这个例子是为了像我这样学习慢的人--也就是说,我花了一些时间才理解如何正确应用代码。
(global-set-key (kbd "<escape>") `(menu-item ""
,(lambda () (interactive)
(cond
((Set forth condition ABC.)
(message "You have satisfied condition ABC."))
((Set forth condition DEF.)
(message "You have satisfied condition DEF."))))
:filter ,(lambda (binding)
(if (or (Set forth condition ABC.)
(Set forth condition DEF.))
binding))))
(global-set-key [?\e] '(menu-item "" ,(lambda () (interactive) (message "You have satisfied condition ABC.")) :filter ,(lambda (binding) (if (eq major-mode 'text-mode) binding))))
- lawlist