summaryrefslogtreecommitdiff
path: root/lisp/progmodes/flymake.el
diff options
context:
space:
mode:
authorChong Yidong <cyd@stupidchicken.com>2010-01-28 14:53:11 -0500
committerChong Yidong <cyd@stupidchicken.com>2010-01-28 14:53:11 -0500
commitfd09a83f94c3122a67180bb3be4221a9a6c9f873 (patch)
tree94f0b3b5e6b8b0dfdc9c6c9eccf079fdb1fdfd02 /lisp/progmodes/flymake.el
parentb242dbfc1b2d4dacad8d33fdd12b328a48afb8b6 (diff)
downloademacs-fd09a83f94c3122a67180bb3be4221a9a6c9f873.tar.gz
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).
Diffstat (limited to 'lisp/progmodes/flymake.el')
-rw-r--r--lisp/progmodes/flymake.el18
1 files changed, 10 insertions, 8 deletions
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index 4af331c5c29..2a198215536 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -269,8 +269,7 @@ are the string substitutions (see `format')."
:group 'tools)
(defcustom flymake-allowed-file-name-masks
- '(("\\.c\\'" flymake-simple-make-init)
- ("\\.cpp\\'" flymake-simple-make-init)
+ '(("\\.\\(?:c\\(?:pp\\|xx\\|\\+\\+\\)?\\|CC\\)\\'" flymake-simple-make-init)
("\\.xml\\'" flymake-xml-init)
("\\.html?\\'" flymake-xml-init)
("\\.cs\\'" flymake-simple-make-init)
@@ -291,7 +290,7 @@ are the string substitutions (see `format')."
;; ("[ \t]*\\input[ \t]*{\\(.*\\)\\(%s\\)}" 1 2 ))
;; ("\\.tex\\'" 1)
)
- "*Files syntax checking is allowed for."
+ "Files syntax checking is allowed for."
:group 'flymake
:type '(repeat (string symbol symbol symbol)))
@@ -384,7 +383,7 @@ Return t if so, nil if not."
(defun flymake-find-possible-master-files (file-name master-file-dirs masks)
"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.
File contents are not checked."
(let* ((dirs master-file-dirs)
@@ -434,9 +433,11 @@ to the beginning of the list (File.h -> File.cpp moved to top)."
source-file-name patched-source-file-name
include-dirs regexp)
"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
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
instead of reading master file from disk."
(let* ((source-file-nondir (file-name-nondirectory source-file-name))
@@ -1700,9 +1701,10 @@ Use CREATE-TEMP-F for creating temp copy."
;;;; .h/make specific
(defun flymake-master-make-header-init ()
- (flymake-master-make-init 'flymake-get-include-dirs
- '("\\.cpp\\'" "\\.c\\'")
- "[ \t]*#[ \t]*include[ \t]*\"\\([[:word:]0-9/\\_.]*%s\\)\""))
+ (flymake-master-make-init
+ 'flymake-get-include-dirs
+ '("\\.\\(?:c\\(?:pp\\|xx\\|\\+\\+\\)?\\|CC\\)\\'")
+ "[ \t]*#[ \t]*include[ \t]*\"\\([[:word:]0-9/\\_.]*%s\\)\""))
;;;; .java/make specific
(defun flymake-simple-make-java-init ()