1

ターミナルのコマンドラインから使用できる実行可能ファイルがあります。

$ foo "bar" 1行のテキストを返します

ファイルの編集中にこの関数を呼び出せるようにしたいと思います。

次のことができることがわかります

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

コードには2つの問題があります。

  • に渡す記号を引用する必要がありますglobal-set-key
  • 関数は「コマンド」である必要があります。これは、トップレベルのinteractiveフォームを含めることでインタラクティブに呼び出し可能としてマークされたemacs関数です。

特に、ミニバッファから引数を渡したい場合はfunc、次のようにすることができます。

(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 に答える