¥á¥ó¥Ð¡¼/y-takata/Flymake
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)))
»²¹Í¡§