From 5bcef417b1587707a4849dce71aefd837cbbebb3 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Tue, 3 Jan 2006 19:05:06 +0000 Subject: [PATCH] (flymake-base-dir, flymake-master-file-name, flymake-temp-master-file-name) (flymake-temp-source-file-name): New buffer-local vars. (flymake-buffer-data, flymake-get-buffer-value, flymake-set-buffer-value): Replace those hash-tables by the new buffer-local vars. Update callers. --- lisp/ChangeLog | 7 ++++ lisp/progmodes/flymake.el | 88 +++++++++++++++++++-------------------- 2 files changed, 51 insertions(+), 44 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 4af6886a499..cde815b83b5 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,12 @@ 2006-01-03 Stefan Monnier + * progmodes/flymake.el (flymake-temp-source-file-name) + (flymake-master-file-name, flymake-temp-master-file-name) + (flymake-base-dir): New buffer-local vars. + (flymake-buffer-data, flymake-get-buffer-value) + (flymake-set-buffer-value): Replace those hash-tables by the new + buffer-local vars. Update callers. + * progmodes/flymake.el (flymake-check-start-time) (flymake-check-was-interrupted, flymake-err-info, flymake-is-running) (flymake-last-change-time, flymake-new-err-info, flymake-timer): diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el index 568964705ff..42f2ad787a7 100644 --- a/lisp/progmodes/flymake.el +++ b/lisp/progmodes/flymake.el @@ -240,17 +240,6 @@ are the string substitutions (see `format')." (defvar flymake-processes nil "List of currently active flymake processes.") -(defvar flymake-buffer-data nil - "Data specific to syntax check tool, in name-value pairs.") - -(make-variable-buffer-local 'flymake-buffer-data) - -(defun flymake-get-buffer-value (buffer name) - (gethash name (with-current-buffer buffer flymake-buffer-data))) - -(defun flymake-set-buffer-value (buffer name value) - (puthash name value (with-current-buffer buffer flymake-buffer-data))) - (defvar flymake-output-residual nil) (make-variable-buffer-local 'flymake-output-residual) @@ -1178,7 +1167,6 @@ For the format of LINE-ERR-INFO, see `flymake-ler-make-ler'." (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)) @@ -1576,19 +1564,33 @@ With arg, turn Flymake mode on if and only if arg is positive." (setq suffix (substring suffix 0 slash-pos)) (setq suffix ""))))) +(defvar flymake-temp-source-file-name nil) +(make-variable-buffer-local 'flymake-temp-source-file-name) + +(defvar flymake-master-file-name nil) +(make-variable-buffer-local 'flymake-master-file-name) + +(defvar flymake-temp-master-file-name nil) +(make-variable-buffer-local 'flymake-temp-master-file-name) + +(defvar flymake-base-dir nil) +(make-variable-buffer-local 'flymake-base-dir) + (defun flymake-init-create-temp-buffer-copy (buffer create-temp-f) "Make a temporary copy of the current buffer, save its name in buffer data and return the name." (let* ((source-file-name (buffer-file-name buffer)) (temp-source-file-name (funcall create-temp-f source-file-name "flymake"))) (flymake-save-buffer-in-file buffer temp-source-file-name) - (flymake-set-buffer-value buffer "temp-source-file-name" temp-source-file-name) + (with-current-buffer buffer + (setq flymake-temp-source-file-name temp-source-file-name)) temp-source-file-name)) (defun flymake-simple-cleanup (buffer) "Do cleanup after `flymake-init-create-temp-buffer-copy'. Delete temp file." - (let* ((temp-source-file-name (flymake-get-buffer-value buffer "temp-source-file-name"))) + (let* ((temp-source-file-name (with-current-buffer buffer + flymake-temp-source-file-name))) (flymake-safe-delete-file temp-source-file-name) (with-current-buffer buffer (setq flymake-last-change-time nil)))) @@ -1598,12 +1600,16 @@ Delete temp file." Return full-name. Names are real, not patched." (let* ((real-name nil) (source-file-name (buffer-file-name buffer)) - (master-file-name (flymake-get-buffer-value buffer "master-file-name")) - (temp-source-file-name (flymake-get-buffer-value buffer "temp-source-file-name")) - (temp-master-file-name (flymake-get-buffer-value buffer "temp-master-file-name")) - (base-dirs (list (flymake-get-buffer-value buffer "base-dir") - (file-name-directory source-file-name) - (if master-file-name (file-name-directory master-file-name) nil))) + (master-file-name + (with-current-buffer buffer flymake-master-file-name)) + (temp-source-file-name + (with-current-buffer buffer flymake-temp-source-file-name)) + (temp-master-file-name + (with-current-buffer buffer flymake-temp-master-file-name)) + (base-dirs + (list (with-current-buffer buffer flymake-base-dir) + (file-name-directory source-file-name) + (if master-file-name (file-name-directory master-file-name)))) (files (list (list source-file-name source-file-name) (list temp-source-file-name source-file-name) (list master-file-name master-file-name) @@ -1657,25 +1663,22 @@ Return full-name. Names are real, not patched." (defun flymake-init-find-buildfile-dir (buffer source-file-name buildfile-name) "Find buildfile, store its dir in buffer data and return its dir, if found." - (let* ((buildfile-dir (flymake-find-buildfile buildfile-name - (file-name-directory source-file-name) - flymake-buildfile-dirs))) - (if (not buildfile-dir) - (progn - (flymake-log 1 "no buildfile (%s) 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))) - buildfile-dir)) + (let* ((buildfile-dir + (flymake-find-buildfile buildfile-name + (file-name-directory source-file-name) + flymake-buildfile-dirs))) + (if buildfile-dir + (with-current-buffer buffer (setq flymake-base-dir buildfile-dir)) + (flymake-log 1 "no buildfile (%s) 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)))))) (defun flymake-init-create-temp-source-and-master-buffer-copy (buffer get-incl-dirs-f create-temp-f master-file-masks include-regexp-list) "Find master file (or buffer), create it's copy along with a copy of the source file." (let* ((source-file-name (buffer-file-name buffer)) (temp-source-file-name (flymake-init-create-temp-buffer-copy buffer create-temp-f)) - (master-file-name nil) - (temp-master-file-name nil) (master-and-temp-master (flymake-create-master-file source-file-name temp-source-file-name get-incl-dirs-f create-temp-f @@ -1687,18 +1690,14 @@ Return full-name. Names are real, not patched." (when (bufferp buffer) (with-current-buffer buffer (flymake-report-status "!" ""))) ; NOMASTER - ) - (progn - (setq master-file-name (nth 0 master-and-temp-master)) - (setq temp-master-file-name (nth 1 master-and-temp-master)) - (flymake-set-buffer-value buffer "master-file-name" master-file-name) - (flymake-set-buffer-value buffer "temp-master-file-name" temp-master-file-name) - )) - temp-master-file-name)) + nil) + (with-current-buffer buffer + (setq flymake-master-file-name (nth 0 master-and-temp-master)) + (setq flymake-temp-master-file-name (nth 1 master-and-temp-master)))))) (defun flymake-master-cleanup (buffer) (flymake-simple-cleanup buffer) - (flymake-safe-delete-file (flymake-get-buffer-value buffer "temp-master-file-name"))) + (flymake-safe-delete-file (with-current-buffer buffer flymake-temp-master-file-name))) ;;;; make-specific init-cleanup routines (defun flymake-get-syntax-check-program-args (source-file-name base-dir use-relative-base-dir use-relative-source get-cmd-line-f) @@ -1778,7 +1777,8 @@ Use CREATE-TEMP-F for creating temp copy." (defun flymake-simple-java-cleanup (buffer) "Cleanup after `flymake-simple-make-java-init' -- delete temp file and dirs." - (let* ((temp-source-file-name (flymake-get-buffer-value buffer "temp-source-file-name"))) + (let* ((temp-source-file-name (with-current-buffer buffer + flymake-temp-source-file-name))) (flymake-safe-delete-file temp-source-file-name) (when temp-source-file-name (flymake-delete-temp-directory (file-name-directory temp-source-file-name)))))