Don't call c-parse-state when c++-template-syntax-table is active.
[bpt/emacs.git] / lisp / progmodes / flymake.el
index c4a2e3e..10aed7d 100644 (file)
@@ -40,6 +40,7 @@
 (defgroup flymake nil
   "Universal on-the-fly syntax checker."
   :version "23.1"
+  :link '(custom-manual "(flymake) Top")
   :group 'tools)
 
 (defcustom flymake-error-bitmap '(exclamation-mark error)
@@ -554,29 +555,31 @@ It's flymake process filter."
              (setq flymake-is-running nil))))))))
 
 (defun flymake-post-syntax-check (exit-status command)
-  (setq flymake-err-info flymake-new-err-info)
-  (setq flymake-new-err-info nil)
-  (setq flymake-err-info
-        (flymake-fix-line-numbers
-         flymake-err-info 1 (count-lines (point-min) (point-max))))
-  (flymake-delete-own-overlays)
-  (flymake-highlight-err-lines flymake-err-info)
-  (let (err-count warn-count)
-    (setq err-count (flymake-get-err-count flymake-err-info "e"))
-    (setq warn-count  (flymake-get-err-count flymake-err-info "w"))
-    (flymake-log 2 "%s: %d error(s), %d warning(s) in %.2f second(s)"
-                (buffer-name) err-count warn-count
-                (- (float-time) flymake-check-start-time))
-    (setq flymake-check-start-time nil)
-
-    (if (and (equal 0 err-count) (equal 0 warn-count))
-       (if (equal 0 exit-status)
-           (flymake-report-status "" "")       ; PASSED
-         (if (not flymake-check-was-interrupted)
-             (flymake-report-fatal-status "CFGERR"
-                                          (format "Configuration error has occurred while running %s" command))
-           (flymake-report-status nil ""))) ; "STOPPED"
-      (flymake-report-status (format "%d/%d" err-count warn-count) ""))))
+  (save-restriction
+    (widen)
+    (setq flymake-err-info flymake-new-err-info)
+    (setq flymake-new-err-info nil)
+    (setq flymake-err-info
+          (flymake-fix-line-numbers
+           flymake-err-info 1 (count-lines (point-min) (point-max))))
+    (flymake-delete-own-overlays)
+    (flymake-highlight-err-lines flymake-err-info)
+    (let (err-count warn-count)
+      (setq err-count (flymake-get-err-count flymake-err-info "e"))
+      (setq warn-count  (flymake-get-err-count flymake-err-info "w"))
+      (flymake-log 2 "%s: %d error(s), %d warning(s) in %.2f second(s)"
+                   (buffer-name) err-count warn-count
+                   (- (float-time) flymake-check-start-time))
+      (setq flymake-check-start-time nil)
+
+      (if (and (equal 0 err-count) (equal 0 warn-count))
+          (if (equal 0 exit-status)
+              (flymake-report-status "" "") ; PASSED
+            (if (not flymake-check-was-interrupted)
+                (flymake-report-fatal-status "CFGERR"
+                                             (format "Configuration error has occurred while running %s" command))
+              (flymake-report-status nil ""))) ; "STOPPED"
+        (flymake-report-status (format "%d/%d" err-count warn-count) "")))))
 
 (defun flymake-parse-output-and-residual (output)
   "Split OUTPUT into lines, merge in residual if necessary."