umeaji.hatenablog.com
この設定を使っていると、ssh でリモートの python ソースを修正していると emacs がハングアップしていましたが、ハングアップの解決方法をなんとか見つけました。いろいろ課題は残りますが。
時間がかかった理由は python が好きではないので、やる気が出なかったのですが、
仕事で python 使わないといけないため、やむなく調査しました。
emacs が始終ハングアップするので、ただでさえ萎えているやる気が、やばいぐらい無くなってしまいます。
/usr/local/bin/pychecker は shell スクリプトです。
#!/bin/bash /usr/bin/pyflakes "$1" /usr/bin/pep8 --ignore=E221,E701,E202 --repeat "$1" exit 0
で、これを使うように .emacs.el に書くのですが
(when (load "flymake" t) (defun flymake-pyflakes-init () (let* ((temp-file (flymake-init-create-temp-buffer-copy 'flymake-create-temp-inplace)) (local-file (file-relative-name temp-file (file-name-directory buffer-file-name)))) (list "/usr/local/bin/pychecker" (list local-file)))) ; <- これ (add-to-list 'flymake-allowed-file-name-masks '("\\.py\\'" flymake-pyflakes-init)))
自前スクリプトを実行するようにしていると ssh 時はハングアップするようです。
ファイルを何度か保存するとハングアップします。いまいち再現性がよくわからないですが、3回ぐらい保存するとハングアップします。
ハングアップすると emacs が完全に固まるため(C-g は効かない)、バックトレースを調べるのもできません。
(emacs lisp はわからないので、バックトレース見てもよくわかりませんがwwwww)
(when (load "flymake" t) (defun flymake-pyflakes-init () (let* ((temp-file (flymake-init-create-temp-buffer-copy 'flymake-create-temp-inplace)) (local-file (file-relative-name temp-file (file-name-directory buffer-file-name)))) (list "/usr/bin/pyflakes" (list local-file)))) ; <- 自前スクリプトをやめる (add-to-list 'flymake-allowed-file-name-masks '("\\.py\\'" flymake-pyflakes-init)))
このようにすると ssh 時にハングアップはしなくなりますが、構文エラーチェックは機能しなくなります。
ただしローカルの py を編集しているときは機能します。わけわからん。
とりあえず emacs が ssh でリモートの python ソース編集時にハングアップするのは回避したのでいいか・・・
最後に Python について心の叫びを書いて終わりますw
Python の良さがさっぱりわからない!
Python は Java 臭がプンプンする!
emacs を使っていてもコードが書きづらい!
はっきり言って嫌い!
仕事じゃなければ Python なんて絶対使わない!
以上です。