【问题标题】:How to use <escape> (conditionally) as a modifier key如何使用 <escape> (有条件地)作为修饰键
【发布时间】:2013-11-30 07:43:51
【问题描述】:

是否可以让&lt;escape&gt; 在某些条件存在时激活函数,但在不满足这些条件时表现得像修饰键?

(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 提供的 awesome 解决方案/答案,以下是如何在多个条件下使用他的代码的说明(例如,如果 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))))

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

    你可以这样做:

    (define-key lawlist-mode-map [?\e]
      `(menu-item "" ,(lambda () (interactive) (message "You have satisfied condition ABC."))
                  :filter ,(lambda (binding) (if (ABC ...) 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))))
    猜你喜欢
    • 1970-01-01
    • 2022-05-28
    • 1970-01-01
    • 2012-04-21
    • 2011-04-15
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 2016-07-15
    相关资源
    最近更新 更多