Commit fd09a83f authored by Chong Yidong's avatar Chong Yidong
Browse files

Flymake fix to handle more C++ filenames (Bug#5488).

* progmodes/flymake.el (flymake-allowed-file-name-masks)
(flymake-master-make-header-init): Add other C++ filename masks.
(flymake-find-possible-master-files)
(flymake-check-patch-master-file-buffer): Doc fixes (Bug#5488).
parent b242dbfc
2010-01-28 Nil Geisweiller <ngeiswei@googlemail.com> (tiny change)
* progmodes/flymake.el (flymake-allowed-file-name-masks)
(flymake-master-make-header-init): Add other C++ filename masks.
(flymake-find-possible-master-files)
(flymake-check-patch-master-file-buffer): Doc fixes (Bug#5488).
2010-01-28 Michael Albinus <michael.albinus@gmx.de> 2010-01-28 Michael Albinus <michael.albinus@gmx.de>
Fix some busybox annoyances. Fix some busybox annoyances.
......
...@@ -269,8 +269,7 @@ are the string substitutions (see `format')." ...@@ -269,8 +269,7 @@ are the string substitutions (see `format')."
:group 'tools) :group 'tools)
(defcustom flymake-allowed-file-name-masks (defcustom flymake-allowed-file-name-masks
'(("\\.c\\'" flymake-simple-make-init) '(("\\.\\(?:c\\(?:pp\\|xx\\|\\+\\+\\)?\\|CC\\)\\'" flymake-simple-make-init)
("\\.cpp\\'" flymake-simple-make-init)
("\\.xml\\'" flymake-xml-init) ("\\.xml\\'" flymake-xml-init)
("\\.html?\\'" flymake-xml-init) ("\\.html?\\'" flymake-xml-init)
("\\.cs\\'" flymake-simple-make-init) ("\\.cs\\'" flymake-simple-make-init)
...@@ -291,7 +290,7 @@ are the string substitutions (see `format')." ...@@ -291,7 +290,7 @@ are the string substitutions (see `format')."
;; ("[ \t]*\\input[ \t]*{\\(.*\\)\\(%s\\)}" 1 2 )) ;; ("[ \t]*\\input[ \t]*{\\(.*\\)\\(%s\\)}" 1 2 ))
;; ("\\.tex\\'" 1) ;; ("\\.tex\\'" 1)
) )
"*Files syntax checking is allowed for." "Files syntax checking is allowed for."
:group 'flymake :group 'flymake
:type '(repeat (string symbol symbol symbol))) :type '(repeat (string symbol symbol symbol)))
...@@ -384,7 +383,7 @@ Return t if so, nil if not." ...@@ -384,7 +383,7 @@ Return t if so, nil if not."
(defun flymake-find-possible-master-files (file-name master-file-dirs masks) (defun flymake-find-possible-master-files (file-name master-file-dirs masks)
"Find (by name and location) all possible master files. "Find (by name and location) all possible master files.
Master files are .cpp and .c for and .h. Files are searched for Master files include .cpp and .c for .h. Files are searched for
starting from the .h directory and max max-level parent dirs. starting from the .h directory and max max-level parent dirs.
File contents are not checked." File contents are not checked."
(let* ((dirs master-file-dirs) (let* ((dirs master-file-dirs)
...@@ -434,9 +433,11 @@ to the beginning of the list (File.h -> File.cpp moved to top)." ...@@ -434,9 +433,11 @@ to the beginning of the list (File.h -> File.cpp moved to top)."
source-file-name patched-source-file-name source-file-name patched-source-file-name
include-dirs regexp) include-dirs regexp)
"Check if MASTER-FILE-NAME is a master file for SOURCE-FILE-NAME. "Check if MASTER-FILE-NAME is a master file for SOURCE-FILE-NAME.
For .cpp master file this means it includes SOURCE-FILE-NAME (.h).
If yes, patch a copy of MASTER-FILE-NAME to include PATCHED-SOURCE-FILE-NAME If yes, patch a copy of MASTER-FILE-NAME to include PATCHED-SOURCE-FILE-NAME
instead of SOURCE-FILE-NAME. instead of SOURCE-FILE-NAME.
For example, foo.cpp is a master file if it includes foo.h.
Whether a buffer for MATER-FILE-NAME exists, use it as a source Whether a buffer for MATER-FILE-NAME exists, use it as a source
instead of reading master file from disk." instead of reading master file from disk."
(let* ((source-file-nondir (file-name-nondirectory source-file-name)) (let* ((source-file-nondir (file-name-nondirectory source-file-name))
...@@ -1700,9 +1701,10 @@ Use CREATE-TEMP-F for creating temp copy." ...@@ -1700,9 +1701,10 @@ Use CREATE-TEMP-F for creating temp copy."
;;;; .h/make specific ;;;; .h/make specific
(defun flymake-master-make-header-init () (defun flymake-master-make-header-init ()
(flymake-master-make-init 'flymake-get-include-dirs (flymake-master-make-init
'("\\.cpp\\'" "\\.c\\'") 'flymake-get-include-dirs
"[ \t]*#[ \t]*include[ \t]*\"\\([[:word:]0-9/\\_.]*%s\\)\"")) '("\\.\\(?:c\\(?:pp\\|xx\\|\\+\\+\\)?\\|CC\\)\\'")
"[ \t]*#[ \t]*include[ \t]*\"\\([[:word:]0-9/\\_.]*%s\\)\""))
;;;; .java/make specific ;;;; .java/make specific
(defun flymake-simple-make-java-init () (defun flymake-simple-make-java-init ()
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment