2010年2月 4日

Windowsでも手軽にflymake elisp(修正版)

1日経過し, 昨日の記事
http://www.lunaport.net/blog/2010/02/windowsflymake-elisp.html
がだいぶ若さゆえのあやまちだと判明してしまったので、書き直ししました.

1ファイルで完結して,Windows用のMeadowとかNTEmacsでも動く
emacs lisp用のFlymake-modeの設定です.
行っている処理は本家と同じです

(byte-compile-file)とかやるとなんかエラーになるの修正。あとEmacsWikiに載せました

2011-04-29 EmacsWikiで行った変更をこっちに反映し忘れてたので反映

2011-05-28 コメント欄での指摘バグ修正(http://d.hatena.ne.jp/uk-ar/20110424/1303622124)

(defun flymake-elisp-init ()
  (unless (string-match "^ " (buffer-name))
    (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
       (expand-file-name invocation-name invocation-directory)
       (list
        "-Q" "--batch" "--eval"
        (prin1-to-string
         (quote
          (dolist (file command-line-args-left)
            (with-temp-buffer
              (insert-file-contents file)
              (emacs-lisp-mode)
              (let ((parse-sexp-ignore-comments t))
                (condition-case data
                    (scan-sexps (point-min) (point-max))
                  (scan-error
                   (goto-char(nth 2 data))
                   (princ (format "%s:%s: error: Unmatched bracket or quote\n"
                                  file (line-number-at-pos))))))))
          )
         )
        local-file)))))
(push '("\\.el$" flymake-elisp-init) flymake-allowed-file-name-masks)
(push '("\\.emacs$" flymake-elisp-init) flymake-allowed-file-name-masks)
(add-hook 'emacs-lisp-mode-hook
          ;; workaround for (eq buffer-file-name nil)
          (function (lambda () (if buffer-file-name (flymake-mode)))))

上手くいけば,次のような実行結果になります
elisplint.png


僕がいつも使ってる設定ファイルはこれです

安定してきたらemacs wikiに書く
大佐は当時20歳だったことを知った.驚き.

 

コメント(3)

こんにちは。素敵なツールをありがとうございます。http://d.hatena.ne.jp/uk-ar/20110424/1303622124 (2011年4月24日)に、コメントアウトされた括弧を無視する、というパッチが出ていますので、お報せします。

ええと、このブログ記事とemacswikiの同期がどうなっているのか分かりませんので、emacswikiへのアップはしません。

ところで、"flymake"って、コードを書きながらチェックしてくれるので"fly"な訳で、"paren-check"とかの方が適切ではないでしょうか。

草々

うわ、本当だ不具合ありました。近々にパッチをマージしてEmacsWikiとかにもほかにマージしてくれた人がいないか確認しつつ反映します。ご報告ありがとうございました。

> ところで、"flymake"って、コードを書きながらチェックしてくれるので"fly"な訳で、"paren-check"とかの方が適切ではないでしょうか。
すんません、英語力不足でその辺のニュアンスを理解できていないので、なんか不自然だと感じたらEmacsWikiのほう修正お願いします。それでEmacsWikiのほうがコードとともに安定化したらこのページも追従します。

こんにちは、言及されているパッチを書いたものです。
記事を書いた際にトラックバックしたつもりが、ちゃんとできてなかったみたいで反省です。
修正を取り込んでもらえたようでうれしいです。
非常に役に立っているのでこれからもいろいろよろしくおねがいします。

コメントする





トラックバック(0)

トラックバックURL: http://www.lunaport.net/mt/mt-tb.cgi/22

るなぽブログ

最近のブログ記事

最近のコメント

  • uk-ar: こんにちは、言及され (more)
  • どようび: うわ、本当だ不具合あ (more)
  • crawlmake: こんにちは。素敵なツ (more)

その他