【问题标题】:bind key to negative-argument + command in emacs在emacs中将键绑定到否定参数+命令
【发布时间】:2016-10-13 13:36:51
【问题描述】:

我正在尝试将前面带有否定参数的命令绑定到 M-b。我发布我的代码。

工作

(global-unset-key (kbd "M-f"))                                                         
(global-set-key (kbd "M-f") 'forward-whitespace)                                       

不工作

(global-unset-key (kbd "M-b"))                                                         
(global-set-key (kbd "M-b") (lambda () (interactive) (negative-argument(forward-whitespace))))    

我怎样才能让它工作?

【问题讨论】:

    标签: emacs initialization elisp key-bindings


    【解决方案1】:

    您遇到的具体问题很容易解决:

    (global-set-key (kbd "M-b") (lambda () (interactive) (forward-whitespace -1)))
    

    您可能想知道是否可以编写一个宏,以交互方式调用带有否定参数的任意命令。

    其实并不难:

    (defmacro call-with-negative-argument (command)
      `(lambda ()
         (interactive)
         (prefix-command-preserve-state)
         (setq prefix-arg '-)
         (universal-argument--mode)
         (call-interactively ,command)))
    (global-set-key (kbd "...") (call-with-negative-argument forward-whitespace))
    

    但是,实际上,任何 兼容 函数也可以像这样正常工作:

    (defmacro call-with-negative-argument (command)
      `(lambda ()
         (interactive)
         (,command -1)))
    

    【讨论】:

    猜你喜欢
    • 2017-09-14
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 2012-01-23
    • 2011-03-04
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多