Emacsでカーソル周辺のキーワードをpythonに渡して処理させる elisp スクリプト
Emacsでカーソル周辺のキーワードをpythonに渡して処理させる elisp スクリプト
eslip はこんなの。
(defun call-external-script-test () (interactive) (let* (cur beg end str cmd) (save-excursion (setq cur (point)) (setq beg (+ cur (skip-chars-backward "_A-Za-z0-9_. \t" (bolp)))) (setq end (+ beg (skip-chars-forward "_A-Za-z0-9_. \t" (eolp)))) (setq str (buffer-substring-no-properties beg end)) (setq cmd (concat "~/python/test.py \"" str "\"")) ;;(message "beg=\"%d\"\nend=\"%d\"\nstring=\"%s\"\n" beg end str) (message (shell-command-to-string cmd)) )))
eslip から呼び出す python スクリプトはたとえばこんなの
#!/usr/bin/python3 import sys print("Hello Python! argv={}".format(sys.argv[1:]))
Emacs でたとえばこんな C ファイルを開く
if ((AAA.for_x == 1) || (BBB . for_y == 1)) { printf("true\n"); }
AAA.for_x
という文字列のどこかにカーソルを置いて M-x call-external-script-test <Enter>
とすると、ミニバッファに
Hello Python! argv=['AAA.for_x']
と表示される。
カーソル位置はどこでも良い。BBB . for_y
みたいに空白があっても一つの文字列と見なすようにしてみた。結果→
Hello Python! argv=[’BBB . for_y ’]