emacsのelispで作ってみた。編集画面にLinuxコマンドの結果を貼り付け

| コメント(2) | トラックバック(0)

emacsでコードを書いているとき、lscatの結果を 編集画面に貼付けできればな~と思って作ってみた。

call-processのオプション項目が多いのですぐ忘れます・・・

※追記 2012-03-22 C-u M-!を利用すればできる! コメントでご指摘ありがとうございました!

使い方

  • 1.eval起動

    M-:
    
  • 2.コマンドを書く

    (ic "ls" )
    
  • 3.結果が勝手に張り付きます。

オプションを利用したい場合

    (ic "ls" "-a")

ダメな例1、文字列1つにすると動きませぬ・・・

(ic "ls -a")

ダメな例2、引数を5個使うと動きませぬ・・・・・

(ic "echo" "hoge" "fuga" "foo" "bar" "baz")

elispソース

(defun cmd (command &optional op1  &optional op2  &optional op3 &optional op4)
  "linux command"
  (setq buffername "command-buffer" )
  (setq res "" )
  (let (
    (oldbuf (current-buffer))
    )
    ;現在のバッファを固定、下のフォームを実行
    (save-current-buffer
      ;curettn-bufferに切り替え   (buffer を作成)
      (set-buffer (get-buffer-create buffername))
      (cond
       (op4
         (call-process command  nil buffername  nil  op1 op2 op3 op4))
       (op3
         (call-process command  nil buffername  nil  op1 op2 op3))
       (op2
         (call-process command  nil buffername  nil  op1 op2))
       (op1
         (call-process command  nil buffername  nil  op1))
       (t
         (call-process command  nil buffername  nil  ))
         )
      ;buffer内容取得
      (setq res (buffer-string))
      ;buffe kill
      (kill-buffer buffername)
      ))
  res
)


;;inscmd
;;
(defun ic (command  &optional op1  &optional op2  &optional op3 &optional op4)
  (insert (cmd command op1 op2 op3 op4 ))
)

終わり

簡単に結果が張り付くのは便利だ!!

今後のTODO

  • 文字列を1つでも動くように。
  • 引数の制限解除

引数は何とかしたいけど call-process&restの受け渡し方法がわかりませぬ・・・

次はTODOをなおしたい! かも・・・

関連記事

トラックバック(0)

トラックバックURL: http://mukaer.com/cgi-bin/mt/mt-tb.cgi/64

コメント(2)

C-u M-!
としてコマンドを打ち込めばカレントバッファに
結果を展開することができます。

また call-processでなく call-process-shell-command
を使えばコマンドを文字列として渡させるので、
引数の数を気にする必要はなくなります。

> syohex さん
お教えありがとうございます!
universal-argumentとshell-commandを使えばできたのですね・・・

コメントする

PR

PR





検索

Loading

メニュー

twitter