emacs - 如何使用 <escape>(有条件地)作为修饰键

标签 emacs elisp

是否可以有<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))))

最佳答案

您可以执行以下操作:

(define-key lawlist-mode-map [?\e]
  `(menu-item "" ,(lambda () (interactive) (message "You have satisfied condition ABC."))
              :filter ,(lambda (binding) (if (ABC ...) binding))))

关于emacs - 如何使用 <escape>(有条件地)作为修饰键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20026083/

相关文章:

emacs - 如何在 Elisp 中创建 DSL

emacs - 交互式命令行模式 emacs

emacs - 我应该将 Emacs Lisp 中的 add-to-list 称为破坏性函数吗?

emacs - .emacs 全局设置键并使用参数调用交互函数

linux - 我如何让 Emacs 从文件加载字体?

colors - 如何设置flycheck-posframe的颜色

emacs - 无法在Emacs中启用plantuml模式

emacs - 错误停止执行后重复宏

emacs - 如何在 Emacs 中为 LaTeX 模式定义两个 ispell 词典?

emacs - 将邪恶移位宽度设置为emacs中的缓冲区局部缩进