]> git.eshelyaron.com Git - emacs.git/commitdiff
(flymake-copy-buffer-to-temp-buffer): Simplify.
authorStefan Monnier <monnier@iro.umontreal.ca>
Fri, 30 Dec 2005 17:28:30 +0000 (17:28 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Fri, 30 Dec 2005 17:28:30 +0000 (17:28 +0000)
(flymake-parse-output-and-residual): Remove `source-buffer' argument.
(flymake-process-filter): Switch to buffer before calling it instead.
(flymake-post-syntax-check, flymake-highlight-err-lines)
(flymake-delete-own-overlays, flymake-parse-err-lines)
(flymake-start-syntax-check, flymake-start-syntax-check-process)
(flymake-count-lines, flymake-parse-residual): Remove constant buffer argument.
(flymake-start-syntax-check-for-current-buffer): Remove.
Update callers to use flymake-start-syntax-check instead.
(flymake-display-err-menu-for-current-line): Remove unused var `mouse-pos'.
(flymake-restore-formatting): Comment out unused function.
(flymake-report-status, flymake-report-fatal-status): Remove buffer
argument, use current-buffer instead.  Update callers.

lisp/ChangeLog
lisp/progmodes/flymake.el

index 96a7bc10d62f91830a2466ec3a4ed0d6402de618..21c04a6678b6643e35ccfedc7cbee5b9eef8a0c6 100644 (file)
@@ -1,3 +1,21 @@
+2005-12-30  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * progmodes/flymake.el (flymake-copy-buffer-to-temp-buffer): Simplify.
+       (flymake-parse-output-and-residual): Remove `source-buffer' argument.
+       (flymake-process-filter): Switch to buffer before calling it instead.
+       (flymake-post-syntax-check, flymake-highlight-err-lines)
+       (flymake-delete-own-overlays, flymake-parse-err-lines)
+       (flymake-start-syntax-check, flymake-start-syntax-check-process)
+       (flymake-count-lines, flymake-parse-residual):
+       Remove constant buffer argument.
+       (flymake-start-syntax-check-for-current-buffer): Remove.
+       Update callers to use flymake-start-syntax-check instead.
+       (flymake-display-err-menu-for-current-line):
+       Remove unused var `mouse-pos'.
+       (flymake-restore-formatting): Comment out unused function.
+       (flymake-report-status, flymake-report-fatal-status): Remove buffer
+       argument, use current-buffer instead.  Update callers.
+
 2005-12-30  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
 
        * textmodes/bibtex.el (bibtex-mode): Make completion-ignore-case
@@ -11,8 +29,7 @@
 
 2005-12-30  Andreas Schwab  <schwab@suse.de>
 
-       * progmodes/cc-defs.el: Ignore errors from
-       font-lock-compile-keywords.
+       * progmodes/cc-defs.el: Ignore errors from font-lock-compile-keywords.
 
 2005-12-30  Eli Zaretskii  <eliz@gnu.org>
 
index 9ceee6f69202e71b87ff1dd30e420b43272e522a..6f5d0855e19c4a1a7df75a0c8deea718becfc486 100644 (file)
@@ -516,15 +516,11 @@ instead of reading master file from disk."
 
 (defun flymake-copy-buffer-to-temp-buffer (buffer)
   "Copy contents of BUFFER into newly created temp buffer."
-  (let ((contents     nil)
-       (temp-buffer  nil))
-    (with-current-buffer buffer
-      (setq contents (buffer-string))
-
-      (setq temp-buffer (get-buffer-create (generate-new-buffer-name (concat "flymake:" (buffer-name buffer)))))
-      (set-buffer temp-buffer)
-      (insert contents))
-    temp-buffer))
+  (with-current-buffer
+      (get-buffer-create (generate-new-buffer-name
+                          (concat "flymake:" (buffer-name buffer))))
+    (insert-buffer-substring buffer)
+    (current-buffer)))
 
 (defun flymake-check-include (source-file-name inc-path inc-name include-dirs)
   "Check if SOURCE-FILE-NAME can be found in include path.
@@ -613,7 +609,8 @@ It's flymake process filter."
 
     (flymake-log 3 "received %d byte(s) of output from process %d" (length output) pid)
     (when source-buffer
-      (flymake-parse-output-and-residual source-buffer output))))
+      (with-current-buffer source-buffer
+        (flymake-parse-output-and-residual output)))))
 
 (defun flymake-process-sentinel (process event)
   "Sentinel for syntax check buffers."
@@ -636,8 +633,8 @@ It's flymake process filter."
              (when source-buffer
                (with-current-buffer source-buffer
 
-                 (flymake-parse-residual source-buffer)
-                 (flymake-post-syntax-check source-buffer exit-status command)
+                 (flymake-parse-residual)
+                 (flymake-post-syntax-check exit-status command)
                  (setq flymake-is-running nil))))
          (error
           (let ((err-str (format "Error in process sentinel for buffer %s: %s"
@@ -646,60 +643,51 @@ It's flymake process filter."
             (with-current-buffer source-buffer
               (setq flymake-is-running nil))))))))
 
-(defun flymake-post-syntax-check (source-buffer exit-status command)
-  (with-current-buffer source-buffer
-    (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 (flymake-count-lines source-buffer))))
-  (flymake-delete-own-overlays source-buffer)
-  (flymake-highlight-err-lines
-   source-buffer (with-current-buffer source-buffer flymake-err-info))
+(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 (flymake-count-lines)))
+  (flymake-delete-own-overlays)
+  (flymake-highlight-err-lines flymake-err-info)
   (let (err-count warn-count)
-    (with-current-buffer source-buffer
-      (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 source-buffer) 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
                 (- (flymake-float-time) flymake-check-start-time))
-      (setq flymake-check-start-time nil))
+    (setq flymake-check-start-time nil)
 
     (if (and (equal 0 err-count) (equal 0 warn-count))
        (if (equal 0 exit-status)
-           (flymake-report-status source-buffer "" "") ; PASSED
-         (if (not (with-current-buffer source-buffer
-                    flymake-check-was-interrupted))
-             (flymake-report-fatal-status (current-buffer) "CFGERR"
+           (flymake-report-status "" "")       ; PASSED
+         (if (not flymake-check-was-interrupted)
+             (flymake-report-fatal-status "CFGERR"
                                           (format "Configuration error has occured while running %s" command))
-           (flymake-report-status source-buffer nil ""))) ; "STOPPED"
-      (flymake-report-status source-buffer (format "%d/%d" err-count warn-count) ""))))
+           (flymake-report-status nil ""))) ; "STOPPED"
+      (flymake-report-status (format "%d/%d" err-count warn-count) ""))))
 
-(defun flymake-parse-output-and-residual (source-buffer output)
+(defun flymake-parse-output-and-residual (output)
   "Split OUTPUT into lines, merge in residual if necessary."
-  (with-current-buffer source-buffer
-    (let* ((buffer-residual     flymake-output-residual)
-          (total-output        (if buffer-residual (concat buffer-residual output) output))
-          (lines-and-residual  (flymake-split-output total-output))
-          (lines               (nth 0 lines-and-residual))
-          (new-residual        (nth 1 lines-and-residual)))
-      (with-current-buffer source-buffer
-       (setq flymake-output-residual new-residual)
-       (setq flymake-new-err-info
-             (flymake-parse-err-lines
-              flymake-new-err-info
-              source-buffer lines))))))
-
-(defun flymake-parse-residual (source-buffer)
+  (let* ((buffer-residual     flymake-output-residual)
+         (total-output        (if buffer-residual (concat buffer-residual output) output))
+         (lines-and-residual  (flymake-split-output total-output))
+         (lines               (nth 0 lines-and-residual))
+         (new-residual        (nth 1 lines-and-residual)))
+    (setq flymake-output-residual new-residual)
+    (setq flymake-new-err-info
+          (flymake-parse-err-lines
+           flymake-new-err-info lines))))
+
+(defun flymake-parse-residual ()
   "Parse residual if it's non empty."
-  (with-current-buffer source-buffer
-    (when flymake-output-residual
-      (setq flymake-new-err-info
-           (flymake-parse-err-lines
-            flymake-new-err-info
-            source-buffer
-            (list flymake-output-residual)))
-      (setq flymake-output-residual nil))))
+  (when flymake-output-residual
+    (setq flymake-new-err-info
+          (flymake-parse-err-lines
+           flymake-new-err-info
+           (list flymake-output-residual)))
+    (setq flymake-output-residual nil)))
 
 (defvar flymake-err-info nil
   "Sorted list of line numbers and lists of err info in the form (file, err-text).")
@@ -803,16 +791,11 @@ line number outside the file being compiled."
       (setq count (1- count))))
   err-info-list)
 
-(defun flymake-highlight-err-lines (buffer err-info-list)
+(defun flymake-highlight-err-lines (err-info-list)
   "Highlight error lines in BUFFER using info from ERR-INFO-LIST."
-  (with-current-buffer buffer
-   (save-excursion
-    (let* ((idx    0)
-          (count  (length err-info-list)))
-      (while (< idx count)
-       (flymake-highlight-line (car (nth idx err-info-list))
-                               (nth 1 (nth idx err-info-list)))
-       (setq idx (1+ idx)))))))
+  (save-excursion
+    (dolist (err err-info-list)
+      (flymake-highlight-line (car err) (nth 1 err)))))
 
 (defun flymake-overlay-p (ov)
   "Determine whether overlay OV was created by flymake."
@@ -831,16 +814,13 @@ line number outside the file being compiled."
       ov)
     (flymake-log 3 "created an overlay at (%d-%d)" beg end)))
 
-(defun flymake-delete-own-overlays (buffer)
+(defun flymake-delete-own-overlays ()
   "Delete all flymake overlays in BUFFER."
-  (with-current-buffer buffer
-    (let ((ov (overlays-in (point-min) (point-max))))
-      (while (consp ov)
-       (when (flymake-overlay-p (car ov))
-         (delete-overlay (car ov))
-         ;;+(flymake-log 3 "deleted overlay %s" ov)
-         )
-       (setq ov (cdr ov))))))
+  (dolist (ol (overlays-in (point-min) (point-max)))
+    (when (flymake-overlay-p ol)
+      (delete-overlay ol)
+      ;;+(flymake-log 3 "deleted overlay %s" ol)
+      )))
 
 (defun flymake-region-has-flymake-overlays (beg end)
   "Check if region specified by BEG and END has overlay.
@@ -905,19 +885,19 @@ Perhaps use text from LINE-ERR-INFO-LIST to enhance highlighting."
 
     (flymake-make-overlay beg end tooltip-text face nil)))
 
-(defun flymake-parse-err-lines (err-info-list source-buffer lines)
+(defun flymake-parse-err-lines (err-info-list lines)
   "Parse err LINES, store info in ERR-INFO-LIST."
   (let* ((count              (length lines))
         (idx                0)
         (line-err-info      nil)
         (real-file-name     nil)
-        (source-file-name   (buffer-file-name source-buffer))
+        (source-file-name   buffer-file-name)
         (get-real-file-name-f (flymake-get-real-file-name-function source-file-name)))
 
     (while (< idx count)
       (setq line-err-info (flymake-parse-line (nth idx lines)))
       (when line-err-info
-       (setq real-file-name (funcall get-real-file-name-f source-buffer (flymake-ler-get-file line-err-info)))
+       (setq real-file-name (funcall get-real-file-name-f (current-buffer) (flymake-ler-get-file line-err-info)))
        (setq line-err-info (flymake-ler-set-full-file line-err-info real-file-name))
 
        (if (flymake-same-files real-file-name source-file-name)
@@ -1147,9 +1127,9 @@ For the format of LINE-ERR-INFO, see `flymake-ler-make-ler'."
   (let* ((include-dirs (append '(".") (flymake-get-project-include-dirs base-dir) (flymake-get-system-include-dirs))))
     include-dirs))
 
-(defun flymake-restore-formatting (source-buffer)
-  "Remove any formatting made by flymake."
-  )
+;; (defun flymake-restore-formatting ()
+;;   "Remove any formatting made by flymake."
+;;   )
 
 (defun flymake-get-program-dir (buffer)
   "Get dir to start program in."
@@ -1176,38 +1156,36 @@ For the format of LINE-ERR-INFO, see `flymake-ler-make-ler'."
   :group 'flymake
   :type 'boolean)
 
-(defun flymake-start-syntax-check (buffer)
-  "Start syntax checking for buffer BUFFER."
-  (unless (bufferp buffer)
-    (error "Expected a buffer"))
-  (with-current-buffer buffer
-    (flymake-log 3 "flymake is running: %s" flymake-is-running)
-    (when (and (not flymake-is-running)
-              (flymake-can-syntax-check-file (buffer-file-name buffer)))
-      (when (or (not flymake-compilation-prevents-syntax-check)
-               (not (flymake-compilation-is-running))) ;+ (flymake-rep-ort-status buffer "COMP")
-       (flymake-clear-buildfile-cache)
-       (flymake-clear-project-include-dirs-cache)
-
-       (setq flymake-check-was-interrupted nil)
-       (setq flymake-buffer-data (flymake-makehash 'equal))
-
-       (let* ((source-file-name  (buffer-file-name buffer))
-              (init-f (flymake-get-init-function source-file-name))
-              (cleanup-f (flymake-get-cleanup-function source-file-name))
-              (cmd-and-args (funcall init-f buffer))
-              (cmd          (nth 0 cmd-and-args))
-              (args         (nth 1 cmd-and-args))
-              (dir          (nth 2 cmd-and-args)))
-         (if (not cmd-and-args)
-             (progn
-               (flymake-log 0 "init function %s for %s failed, cleaning up" init-f source-file-name)
-               (funcall cleanup-f buffer))
-           (progn
-             (setq flymake-last-change-time nil)
-             (flymake-start-syntax-check-process buffer cmd args dir))))))))
-
-(defun flymake-start-syntax-check-process (buffer cmd args dir)
+(defun flymake-start-syntax-check ()
+  "Start syntax checking for current buffer."
+  (interactive)
+  (flymake-log 3 "flymake is running: %s" flymake-is-running)
+  (when (and (not flymake-is-running)
+             (flymake-can-syntax-check-file buffer-file-name))
+    (when (or (not flymake-compilation-prevents-syntax-check)
+              (not (flymake-compilation-is-running))) ;+ (flymake-rep-ort-status buffer "COMP")
+      (flymake-clear-buildfile-cache)
+      (flymake-clear-project-include-dirs-cache)
+
+      (setq flymake-check-was-interrupted nil)
+      (setq flymake-buffer-data (flymake-makehash 'equal))
+
+      (let* ((source-file-name  buffer-file-name)
+             (init-f (flymake-get-init-function source-file-name))
+             (cleanup-f (flymake-get-cleanup-function source-file-name))
+             (cmd-and-args (funcall init-f (current-buffer)))
+             (cmd          (nth 0 cmd-and-args))
+             (args         (nth 1 cmd-and-args))
+             (dir          (nth 2 cmd-and-args)))
+        (if (not cmd-and-args)
+            (progn
+              (flymake-log 0 "init function %s for %s failed, cleaning up" init-f source-file-name)
+              (funcall cleanup-f (current-buffer)))
+          (progn
+            (setq flymake-last-change-time nil)
+            (flymake-start-syntax-check-process cmd args dir)))))))
+
+(defun flymake-start-syntax-check-process (cmd args dir)
   "Start syntax check process."
   (let* ((process nil))
     (condition-case err
@@ -1219,25 +1197,24 @@ For the format of LINE-ERR-INFO, see `flymake-ler-make-ler'."
          (set-process-sentinel process 'flymake-process-sentinel)
          (set-process-filter process 'flymake-process-filter)
 
-         (flymake-reg-names (process-id process) (buffer-name buffer))
+         (flymake-reg-names (process-id process) (buffer-name))
 
-         (with-current-buffer buffer
-           (setq flymake-is-running t)
-           (setq flymake-last-change-time nil)
-           (setq flymake-check-start-time (flymake-float-time)))
+          (setq flymake-is-running t)
+          (setq flymake-last-change-time nil)
+          (setq flymake-check-start-time (flymake-float-time))
 
-         (flymake-report-status buffer nil "*")
+         (flymake-report-status nil "*")
          (flymake-log 2 "started process %d, command=%s, dir=%s"
                       (process-id process) (process-command process) default-directory)
          process)
       (error
        (let* ((err-str (format "Failed to launch syntax check process '%s' with args %s: %s"
                               cmd args (error-message-string err)))
-             (source-file-name (buffer-file-name buffer))
+             (source-file-name buffer-file-name)
              (cleanup-f        (flymake-get-cleanup-function source-file-name)))
         (flymake-log 0 err-str)
-        (funcall cleanup-f buffer)
-        (flymake-report-fatal-status buffer "PROCERR" err-str))))))
+        (funcall cleanup-f (current-buffer))
+        (flymake-report-fatal-status "PROCERR" err-str))))))
 
 (defun flymake-kill-process (pid &optional rest)
   "Kill process PID."
@@ -1304,12 +1281,7 @@ For the format of LINE-ERR-INFO, see `flymake-ler-make-ler'."
 
        (setq flymake-last-change-time nil)
        (flymake-log 3 "starting syntax check as more than 1 second passed since last change")
-       (flymake-start-syntax-check buffer)))))
-
-(defun flymake-start-syntax-check-for-current-buffer ()
-  "Run `flymake-start-syntax-check' for current buffer if it isn't already running."
-  (interactive)
-  (flymake-start-syntax-check (current-buffer)))
+       (flymake-start-syntax-check)))))
 
 (defun flymake-current-line-no ()
   "Return number of current line in current buffer."
@@ -1318,10 +1290,9 @@ For the format of LINE-ERR-INFO, see `flymake-ler-make-ler'."
        (end  (if (= (point) (point-max)) (point) (1+ (point)))))
     (count-lines beg end)))
 
-(defun flymake-count-lines (buffer)
+(defun flymake-count-lines ()
   "Return number of lines in buffer BUFFER."
-  (with-current-buffer buffer
-    (count-lines (point-min) (point-max))))
+  (count-lines (point-min) (point-max)))
 
 (defun flymake-get-point-pixel-pos ()
   "Return point position in pixels: (x, y)."
@@ -1346,7 +1317,6 @@ For the format of LINE-ERR-INFO, see `flymake-ler-make-ler'."
         (line-err-info-list  (nth 0 (flymake-find-err-info flymake-err-info line-no)))
         (menu-data           (flymake-make-err-menu-data line-no line-err-info-list))
         (choice              nil)
-        (mouse-pos           (flymake-get-point-pixel-pos))
         (menu-pos            (list (flymake-get-point-pixel-pos) (selected-window))))
     (if menu-data
        (progn
@@ -1402,20 +1372,18 @@ For the format of LINE-ERR-INFO, see `flymake-ler-make-ler'."
 
 (make-variable-buffer-local 'flymake-mode-line-status)
 
-(defun flymake-report-status (buffer e-w &optional status)
+(defun flymake-report-status (e-w &optional status)
   "Show status in mode line."
-  (when (bufferp buffer)
-    (with-current-buffer buffer
-      (when e-w
-       (setq flymake-mode-line-e-w e-w))
-      (when status
-       (setq flymake-mode-line-status status))
-      (let* ((mode-line " Flymake"))
-       (when (> (length flymake-mode-line-e-w) 0)
-         (setq mode-line (concat mode-line ":" flymake-mode-line-e-w)))
-       (setq mode-line (concat mode-line flymake-mode-line-status))
-       (setq flymake-mode-line mode-line)
-       (force-mode-line-update)))))
+  (when e-w
+    (setq flymake-mode-line-e-w e-w))
+  (when status
+    (setq flymake-mode-line-status status))
+  (let* ((mode-line " Flymake"))
+    (when (> (length flymake-mode-line-e-w) 0)
+      (setq mode-line (concat mode-line ":" flymake-mode-line-e-w)))
+    (setq mode-line (concat mode-line flymake-mode-line-status))
+    (setq flymake-mode-line mode-line)
+    (force-mode-line-update)))
 
 (defun flymake-display-warning (warning)
   "Display a warning to user."
@@ -1426,15 +1394,14 @@ For the format of LINE-ERR-INFO, see `flymake-ler-make-ler'."
   :group 'flymake
   :type 'boolean)
 
-(defun flymake-report-fatal-status (buffer status warning)
+(defun flymake-report-fatal-status (status warning)
   "Display a warning and switch flymake mode off."
   (when flymake-gui-warnings-enabled
     (flymake-display-warning (format "Flymake: %s. Flymake will be switched OFF" warning))
     )
-  (with-current-buffer buffer
-    (flymake-mode 0)
-    (flymake-log 0 "switched OFF Flymake mode for buffer %s due to fatal status %s, warning %s"
-                (buffer-name buffer) status warning)))
+  (flymake-mode 0)
+  (flymake-log 0 "switched OFF Flymake mode for buffer %s due to fatal status %s, warning %s"
+               (buffer-name) status warning))
 
 (defcustom flymake-start-syntax-check-on-find-file t
   "Start syntax check on find file."
@@ -1458,13 +1425,13 @@ With arg, turn Flymake mode on if and only if arg is positive."
       (add-hook 'kill-buffer-hook 'flymake-kill-buffer-hook nil t)
       ;;+(add-hook 'find-file-hook 'flymake-find-file-hook)
 
-      (flymake-report-status (current-buffer) "" "")
+      (flymake-report-status "" "")
 
       (setq flymake-timer
             (run-at-time nil 1 'flymake-on-timer-event (current-buffer)))
 
       (when flymake-start-syntax-check-on-find-file
-        (flymake-start-syntax-check-for-current-buffer))))
+        (flymake-start-syntax-check))))
 
    ;; Turning the mode OFF.
    (t
@@ -1473,7 +1440,7 @@ With arg, turn Flymake mode on if and only if arg is positive."
     (remove-hook 'kill-buffer-hook 'flymake-kill-buffer-hook t)
     ;;+(remove-hook 'find-file-hook (function flymake-find-file-hook) t)
 
-    (flymake-delete-own-overlays (current-buffer))
+    (flymake-delete-own-overlays)
 
     (when flymake-timer
       (cancel-timer flymake-timer)
@@ -1504,14 +1471,14 @@ With arg, turn Flymake mode on if and only if arg is positive."
   (let((new-text (buffer-substring start stop)))
     (when (and flymake-start-syntax-check-on-newline (equal new-text "\n"))
       (flymake-log 3 "starting syntax check as new-line has been seen")
-      (flymake-start-syntax-check-for-current-buffer))
+      (flymake-start-syntax-check))
     (setq flymake-last-change-time (flymake-float-time))))
 
 (defun flymake-after-save-hook ()
   (if (local-variable-p 'flymake-mode (current-buffer))        ; (???) other way to determine whether flymake is active in buffer being saved?
       (progn
        (flymake-log 3 "starting syntax check as buffer was saved")
-       (flymake-start-syntax-check-for-current-buffer)))) ; no more mode 3. cannot start check if mode 3 (to temp copies) is active - (???)
+       (flymake-start-syntax-check)))) ; no more mode 3. cannot start check if mode 3 (to temp copies) is active - (???)
 
 (defun flymake-kill-buffer-hook ()
   (when flymake-timer
@@ -1521,7 +1488,7 @@ With arg, turn Flymake mode on if and only if arg is positive."
 (defun flymake-find-file-hook ()
   ;;+(when flymake-start-syntax-check-on-find-file
   ;;+    (flymake-log 3 "starting syntax check on file open")
-  ;;+    (flymake-start-syntax-check-for-current-buffer)
+  ;;+    (flymake-start-syntax-check)
   ;;+)
   (when (and (not (local-variable-p 'flymake-mode (current-buffer)))
             (flymake-can-syntax-check-file buffer-file-name))
@@ -1728,7 +1695,8 @@ Return full-name.  Names are real, not patched."
     (if (not buildfile-dir)
        (progn
          (flymake-log 1 "no buildfile (%s) for %s" buildfile-name source-file-name)
-         (flymake-report-fatal-status buffer "NOMK" (format "No buildfile (%s) found for %s" buildfile-name source-file-name))
+          (with-current-buffer buffer
+            (flymake-report-fatal-status "NOMK" (format "No buildfile (%s) found for %s" buildfile-name source-file-name)))
          )
       (progn
        (flymake-set-buffer-value buffer "base-dir" buildfile-dir)))
@@ -1748,7 +1716,9 @@ Return full-name.  Names are real, not patched."
     (if (not master-and-temp-master)
        (progn
          (flymake-log 1 "cannot find master file for %s" source-file-name)
-         (flymake-report-status buffer "!" "") ; NOMASTER
+          (when (bufferp buffer)
+            (with-current-buffer buffer
+              (flymake-report-status "!" ""))) ; NOMASTER
          )
       (progn
        (setq master-file-name       (nth 0 master-and-temp-master))