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

¥á¥ó¥Ð¡¼/y-takata/Flymake

Last-modified: 2011-06-27 (·î) 14:23:30

Flymake

GNU Flymake -- an on-the-fly syntax checker for Emacs

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

¥·¥ó¥×¥ë¤ÊÀßÄê

(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 ¤ò¼êÆ°¤Ç¼Â¹Ô¤¹¤ì¤Ð²óÉü¤¹¤ë¡¥

°ìÉô¤Î¸À¸ì¤À¤±Âоݤˤ¹¤ëÀßÄê

¾åµ­¤Î¤è¤¦¤Ë

(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¤ò»È¤ï¤Ê¤¤ÀßÄê

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

C¤Î¾ì¹ç

(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¤Î¾ì¹ç

¡Ê-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)))

»²¹Í¡§