【问题标题】:Binding a key to a command and automatically using the (interactive) default values for its interactive arguments将键绑定到命令并自动为其交互式参数使用(交互式)默认值
【发布时间】:2015-05-07 14:21:43
【问题描述】:

我希望 F5 切换到最近使用的缓冲区。这个功能是通过运行 M-x icicle-buffer 然后按回车键来实现的,not 指定我要切换到的缓冲区——(icicle 的默认行为是切换到最近的缓冲区。 )

我已尝试编辑我的.emacs,因此:

(defun most-recent-buffer-please ()
  (interactive)
  (icicle-buffer " "))

(global-set-key [(f5)] 'most-recent-buffer-please)

但是当我评估这个 lisp,然后点击 F5 时,我收到一个以 Wrong number of arguments 开头的错误,后面跟着很多乱码。我做错了什么?

【问题讨论】:

  • 那么mde-most-recent-buffer-please 是在哪里定义的?
  • 啊——我知道这是一个错字。我现在已经修好了。
  • 简单的旧 previous-buffer -- (global-set-key [f5] 'previous-buffer) -- gnu.org/software/emacs/manual/html_node/emacs/… 你不需要在 f5 周围加上括号——也就是说,只需要括号就足够了。我不熟悉使用冰柱。
  • 我不太明白这个问题,但听起来你想要的是previous-buffer(或者可能是switch-to-previous-buffer)。您收到的错误消息意味着 icicle-buffer 不接受任何参数,而您正在尝试向其传递参数 " "
  • 好的,是的..这回避了我最初的问题,但有效。谢谢。

标签: emacs key-bindings icicles


【解决方案1】:

函数可以有强制和/或可选参数,或者根本没有参数。在编写elisp 时,通常最好通过键入M-x describe-function RET [name of the function] RET 找出某些函数可用的参数。 Drew(Icicles 的作者)在原始问题下方的评论中指出,函数 icicle-buffer 并非旨在与任何参数一起使用 - 因此,添加 " " 会导致原始发布者遇到的错误消息.

要切换到上一个缓冲区,Emacs 已经有一个名为previous-buffer 的内置函数。由于原始发帖人已表明对f5 键的偏好,以下是如何配置该键盘快捷键以触发previous-buffer 的示例——括号就足够了,原始发帖人在@987654328 周围使用括号@ 可以省略:

 (global-set-key [f5] 'previous-buffer)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 2012-10-31
    • 2016-06-01
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多