2022/12/20(火) [n年前の日記]
#1 [xyzzy] xyzzyからautopep8を呼び出したい
随分前に設定したままメモするのを忘れていたような気がするのでメモ。
自分は普段、xyzzy というエディタを使っていて、Pythonのスクリプトも、xyzzy を使って書き始めてしまうことが多かったりするのだけど。ただ、xyzzy は、Pythonスクリプトソースの整形処理がちょっと怪しくて…。できれば autopep8 という、Pythonスクリプトソースを整形できるツール ―― フォーマッタを、xyzzy から呼び出して整形したい。
そんなわけで、こんな感じの内容を ~/.xyzzy に追記した。.py を開いている状態で、M-x autopep8 と打てば、autopep8 を呼び出して、現在開いてるファイルに対して整形処理をしてくれる。
ただ、Pythonスクリプトソースが最低限動く状態になってない場合、どんな整形結果になるのかは分からない。まずはスクリプトが動作することを確認して、ちゃんと動いてるようなら最後に autopep8 で整形、という手順を踏んだほうが良さそう。
ちなみに、autopep8 -i hoge.py と打てば、autopep8 は hoge.py を読み込んで、整形して、その整形後の内容で元ファイルを上書きしてくれる。-i をつけなければ、整形結果は標準出力に出力する。
xyzzy の lisp について少し説明。
自分は普段、xyzzy というエディタを使っていて、Pythonのスクリプトも、xyzzy を使って書き始めてしまうことが多かったりするのだけど。ただ、xyzzy は、Pythonスクリプトソースの整形処理がちょっと怪しくて…。できれば autopep8 という、Pythonスクリプトソースを整形できるツール ―― フォーマッタを、xyzzy から呼び出して整形したい。
そんなわけで、こんな感じの内容を ~/.xyzzy に追記した。.py を開いている状態で、M-x autopep8 と打てば、autopep8 を呼び出して、現在開いてるファイルに対して整形処理をしてくれる。
;; ---------------------------------------- ;; Python formatter autopep8 を呼び出し (defun autopep8() (interactive) (call-process (concat "autopep8 -i " (get-buffer-file-name))))
ただ、Pythonスクリプトソースが最低限動く状態になってない場合、どんな整形結果になるのかは分からない。まずはスクリプトが動作することを確認して、ちゃんと動いてるようなら最後に autopep8 で整形、という手順を踏んだほうが良さそう。
ちなみに、autopep8 -i hoge.py と打てば、autopep8 は hoge.py を読み込んで、整形して、その整形後の内容で元ファイルを上書きしてくれる。-i をつけなければ、整形結果は標準出力に出力する。
xyzzy の lisp について少し説明。
- call-process を使うと、任意のプログラムを呼び出して実行できるらしい。ヘルプには、「外部プログラムを実行します。完全にxyzzyの外部でプログラムを実行します。」と書いてあった。
- concat で文字列の連結ができる。
- get-buffer-file-name で、バッファで開いてるファイルのフルパスを取得できる。
[ ツッコむ ]
以上です。