ssh を使用時にハングアップする

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 を編集しているときは機能します。わけわからん。
とりあえず emacsssh でリモートの python ソース編集時にハングアップするのは回避したのでいいか・・・


最後に Python について心の叫びを書いて終わりますw

Python の良さがさっぱりわからない!
PythonJava 臭がプンプンする!
emacs を使っていてもコードが書きづらい!
はっきり言って嫌い!
仕事じゃなければ Python なんて絶対使わない!

以上です。