1

我有一个可以从终端命令行使用的可执行文件。

$ foo "bar" 返回单行文本

我希望能够在编辑文件时调用此函数。

我可以看到我可以执行以下操作

M-! ~/Library/yolo/bin/foo "bar" 我得到了我正在寻找的东西。

所以我正在尝试编写一个函数,然后我可以绑定到键。但我很难过。

(setq foobar-path "~/Library/yolo/bin/foo ")
(defun foo-bar (func)
  (shell-command (concat foobar-path func)))

(global-set-key (kbd "M-p") foo-bar)

但我知道(emacs 告诉我)我还有很长的路要走。

我最理想的结果是一个键绑定,它可以将一行代码(如评估最后一个表达式)发送到外部函数,并在消息栏中的屏幕底部显示返回。

有什么提示吗?

4

1 回答 1

2

您的代码有两个问题:

  • 您需要引用传递给的符号global-set-key
  • 该功能必须是“命令”。这是通过包含顶级interactive表单标记为可交互调用的任何 emacs 函数。

特别是,如果你想func从 minibuffer 中传入参数,你可以这样做:

(setq foobar-path "~/Library/yolo/bin/foo ")
(defun foo-bar (func)
  (interactive "sEnter func: ")
  (shell-command (concat foobar-path func)))

(global-set-key (kbd "M-p") 'foo-bar)
于 2012-12-28T23:04:26.343 回答