¥È¥Ã¥×   ÊÔ½¸ º¹Ê¬ ÍúÎò źÉÕ Ê£À½ ̾Á°Êѹ¹ ¥ê¥í¡¼¥É   ¿·µ¬ °ìÍ÷ ¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS

¥á¥ó¥Ð¡¼/y-takata/Flymake ¤ÎÊѹ¹ÅÀ


* Flymake [#ie43b6e5]

[[GNU Flymake -- an on-the-fly syntax checker for Emacs:http://flymake.sourceforge.net/]]

¤±¤Ã¤³¤¦¤¤¤¤¤«¤â¡¥¤³¤ó¤Ê¤Î¤¬É¸½àźÉÕ¤À¤Ã¤¿¤È¤Ï¡Ä¡¥

** ¥·¥ó¥×¥ë¤ÊÀßÄê [#r59729b3]

(1) ÊÔ½¸Âоݥե¡¥¤¥ë¤ÈƱ¤¸¥Ç¥£¥ì¥¯¥È¥ê¤Ë¡¤check-syntax¤È¤¤¤¦¥¿¡¼¥²¥Ã¥È¤ò»ý¤ÄMakefile¤òÃÖ¤¯¡ÊMakefile¤ò»È¤ï¤Ê¤¤ÀßÄê¤Ï¸å½Ò¡Ë¡¥

°Ê²¼¤ÏJava¤Î¾ì¹ç¡§
 .PHONY: check-syntax
 check-syntax:
 	javac -J-Dfile.encoding=utf-8 $(CHK_SOURCES)

file.encoding¤Ï¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤òUTF-8¤Ç½ÐÎϤµ¤»¤ë¤¿¤á¤Ë»ÈÍÑ¡¥

(2) .emacs¡Ê¤Þ¤¿¤Ï .emacs.d/init.el¡Ë¤Ë°Ê²¼¤òÄɲá§
 (require 'flymake)
 (add-hook 'find-file-hook 'flymake-find-file-hook)

.java¥Õ¥¡¥¤¥ë¤ò³«¤±¤Ð¼«Æ°Åª¤Ëflymake-mode¤Ë¤Ê¤ë¡¥

¥¨¥é¡¼²Õ½ê¤Ë¤Ï¿§¤¬ÉÕ¤¯¡¥¥Þ¥¦¥¹¥«¡¼¥½¥ë¤ò»ý¤Ã¤Æ¤¤¤¯¤È¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤¬¥Ý¥Ã¥×¥¢¥Ã¥×ɽ¼¨¤µ¤ì¤ë¡¥

C¤Î¾ì¹ç¤ÏMakefile¤ò²¼µ­¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¤è¤¤¡§
 .PHONY: check-syntax
 check-syntax:
 	$(CC) -W -Wall -pedantic -fsyntax-only $(CHK_SOURCES)

Java¤ÈC¤òƱ¤¸¥Ç¥£¥ì¥¯¥È¥ê¤Ëº®ºß¤µ¤»¤¿¤¤¾ì¹çÅù¤Ï¡¤Makefile¤ò¹©Éפ·¤Æ¤Ê¤ó¤È¤«¤¹¤ë¡¥

- Mac OS X 10.4 + CarbonEmacs 2007-06 ¤ÎÁȤ߹ç¤ï¤»¤À¤È¡¤¤¿¤Þ¤Ë Flymake Configuration Error ¤È¤¤¤¦¥À¥¤¥¢¥í¥°¤¬½Ð¤Æ¡¤flymake-mode¤¬¥ª¥Õ¤Ë¤Ê¤ë¡¥M-x flymake-mode ¤ò¼êÆ°¤Ç¼Â¹Ô¤¹¤ì¤Ð²óÉü¤¹¤ë¡¥

*** °ìÉô¤Î¸À¸ì¤À¤±Âоݤˤ¹¤ëÀßÄê [#a4507e3d]

¾åµ­¤Î¤è¤¦¤Ë
 (add-hook 'find-file-hook 'flymake-find-file-hook)
¤Èµ­½Ò¤¹¤ë¤È¡¤Í½¤áÀßÄꤵ¤ì¤Æ¤¤¤ë³ÈÄ¥»Ò(c, cpp, xml, html, pl, java, tex, ...)¤Î¥Õ¥¡¥¤¥ë¤¬¤¹¤Ù¤Æflymake¤ÎÂоݤˤʤ롥

°ìÉô¤Î¸À¸ì¤Î¥Õ¥¡¥¤¥ë¤Î¤ßÂоݤˤ·¤¿¤¤¾ì¹ç¤Ï°Ê²¼¤Î¤è¤¦¤Ë½ñ¤¯¡§
 (add-hook 'c-mode-hook '(lambda () (flymake-mode t)))
 (add-hook 'java-mode-hook '(lambda () (flymake-mode t)))

** Makefile¤ò»È¤ï¤Ê¤¤ÀßÄê [#b053fdeb]

.emacs¡Ê¤Þ¤¿¤Ï.emacs.d/init.el¡Ë¤Ç°Ê²¼¤Î¤è¤¦¤ËÀßÄꤹ¤ì¤Ð¡¤make¤ò»È¤ï¤º¤ËľÀÜgcc¤äjavac¤ò»È¤¦¤è¤¦¤Ë¤Ê¤ë¡¥

***C¤Î¾ì¹ç [#yde1b986]
 (require 'flymake)
 (defun flymake-c-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 "gcc" (list "-Wall" "-W" "-pedantic" "-fsyntax-only" local-file))))
 (push '("\\.c$" flymake-c-init) flymake-allowed-file-name-masks)
 (add-hook 'c-mode-hook '(lambda () (flymake-mode t)))

¾åµ­¤À¤È¡¤.h¥Õ¥¡¥¤¥ë¤ò³«¤¤¤¿¤È¤­¤âflymake-mode¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¡ÖMakefile¤¬¤Ê¤¤¡×¤ÈÅܤé¤ì¤ë¡¥¡Ê¾Ã¶ËŪ²ò·èºö¤À¤¬¡ËºÇ¸å¤Î¹Ô¤ò°Ê²¼¤Î¤è¤¦¤ËÊѤ¨¤ì¤Ð .h ¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¤Ïflymake-mode¤Ë¤Ê¤é¤Ê¤¤¡¥
 (add-hook 'c-mode-hook '(lambda () (if (string-match "\\.c$" buffer-file-name)
                                (flymake-mode t))))


***Java¤Î¾ì¹ç [#u9cf24b4]
¡Ê-encoding¤Î²Õ½ê¤Ï¤â¤Ã¤È¤¦¤Þ¤¯¤ä¤Ã¤¿Êý¤¬¤è¤¤¤«¤â¡¥¡Ë

''Äɵ­''¡§¤³¤ì¤À¤È¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Ê¤¤¤È¤­¡Ê¿·¤·¤¤¥Õ¥¡¥¤¥ë¤ò³«¤¤¤¿¤È¤­¡Ë¤Ë¥¨¥é¡¼¤Ë¤Ê¤Ã¤Æflymake-mode¤¬¥ª¥Õ¤Ë¤Ê¤ë¤³¤È¤¬È½ÌÀ¡¥¤É¤¦Ä¾¤»¤Ð¤è¤¤¤«¤Ï¹Í¤¨Ãæ¡Ä¡¥

 (require 'flymake)
 (defun flymake-java-init ()
   (flymake-simple-make-init-impl
    'flymake-create-temp-with-folder-structure nil nil
    buffer-file-name
    'flymake-get-java-cmdline))
 (defun flymake-get-java-cmdline (source base-dir)
   (list "javac" (list "-J-Dfile.encoding=utf-8" "-encoding" "utf-8"
               source)))
 (push '("\\.java$" flymake-java-init) flymake-allowed-file-name-masks)
 (add-hook 'java-mode-hook '(lambda () (flymake-mode t)))

»²¹Í¡§
- http://d.hatena.ne.jp/nyaasan/20071216/p1
- http://www.emacswiki.org/emacs/FlyMake ¤ÎAda¤Î¹à¡¥