aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2006-01-03 19:05:06 +0000
committerStefan Monnier2006-01-03 19:05:06 +0000
commit5bcef417b1587707a4849dce71aefd837cbbebb3 (patch)
treef5811158b7b069d5b40005b561ae0ab11ae9f3e9
parent43ed65aceabebdbfbe7d2f31fe63fca0cd36858b (diff)
downloademacs-5bcef417b1587707a4849dce71aefd837cbbebb3.tar.gz
emacs-5bcef417b1587707a4849dce71aefd837cbbebb3.zip
(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.
-rw-r--r--lisp/ChangeLog7
-rw-r--r--lisp/progmodes/flymake.el88
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 @@
12006-01-03 Stefan Monnier <monnier@iro.umontreal.ca> 12006-01-03 Stefan Monnier <monnier@iro.umontreal.ca>
2 2
3 * progmodes/flymake.el (flymake-temp-source-file-name)
4 (flymake-master-file-name, flymake-temp-master-file-name)
5 (flymake-base-dir): New buffer-local vars.
6 (flymake-buffer-data, flymake-get-buffer-value)
7 (flymake-set-buffer-value): Replace those hash-tables by the new
8 buffer-local vars. Update callers.
9
3 * progmodes/flymake.el (flymake-check-start-time) 10 * progmodes/flymake.el (flymake-check-start-time)
4 (flymake-check-was-interrupted, flymake-err-info, flymake-is-running) 11 (flymake-check-was-interrupted, flymake-err-info, flymake-is-running)
5 (flymake-last-change-time, flymake-new-err-info, flymake-timer): 12 (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')."
240(defvar flymake-processes nil 240(defvar flymake-processes nil
241 "List of currently active flymake processes.") 241 "List of currently active flymake processes.")
242 242
243(defvar flymake-buffer-data nil
244 "Data specific to syntax check tool, in name-value pairs.")
245
246(make-variable-buffer-local 'flymake-buffer-data)
247
248(defun flymake-get-buffer-value (buffer name)
249 (gethash name (with-current-buffer buffer flymake-buffer-data)))
250
251(defun flymake-set-buffer-value (buffer name value)
252 (puthash name value (with-current-buffer buffer flymake-buffer-data)))
253
254(defvar flymake-output-residual nil) 243(defvar flymake-output-residual nil)
255 244
256(make-variable-buffer-local 'flymake-output-residual) 245(make-variable-buffer-local 'flymake-output-residual)
@@ -1178,7 +1167,6 @@ For the format of LINE-ERR-INFO, see `flymake-ler-make-ler'."
1178 (flymake-clear-project-include-dirs-cache) 1167 (flymake-clear-project-include-dirs-cache)
1179 1168
1180 (setq flymake-check-was-interrupted nil) 1169 (setq flymake-check-was-interrupted nil)
1181 (setq flymake-buffer-data (flymake-makehash 'equal))
1182 1170
1183 (let* ((source-file-name buffer-file-name) 1171 (let* ((source-file-name buffer-file-name)
1184 (init-f (flymake-get-init-function source-file-name)) 1172 (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."
1576 (setq suffix (substring suffix 0 slash-pos)) 1564 (setq suffix (substring suffix 0 slash-pos))
1577 (setq suffix ""))))) 1565 (setq suffix "")))))
1578 1566
1567(defvar flymake-temp-source-file-name nil)
1568(make-variable-buffer-local 'flymake-temp-source-file-name)
1569
1570(defvar flymake-master-file-name nil)
1571(make-variable-buffer-local 'flymake-master-file-name)
1572
1573(defvar flymake-temp-master-file-name nil)
1574(make-variable-buffer-local 'flymake-temp-master-file-name)
1575
1576(defvar flymake-base-dir nil)
1577(make-variable-buffer-local 'flymake-base-dir)
1578
1579(defun flymake-init-create-temp-buffer-copy (buffer create-temp-f) 1579(defun flymake-init-create-temp-buffer-copy (buffer create-temp-f)
1580 "Make a temporary copy of the current buffer, save its name in buffer data and return the name." 1580 "Make a temporary copy of the current buffer, save its name in buffer data and return the name."
1581 (let* ((source-file-name (buffer-file-name buffer)) 1581 (let* ((source-file-name (buffer-file-name buffer))
1582 (temp-source-file-name (funcall create-temp-f source-file-name "flymake"))) 1582 (temp-source-file-name (funcall create-temp-f source-file-name "flymake")))
1583 1583
1584 (flymake-save-buffer-in-file buffer temp-source-file-name) 1584 (flymake-save-buffer-in-file buffer temp-source-file-name)
1585 (flymake-set-buffer-value buffer "temp-source-file-name" temp-source-file-name) 1585 (with-current-buffer buffer
1586 (setq flymake-temp-source-file-name temp-source-file-name))
1586 temp-source-file-name)) 1587 temp-source-file-name))
1587 1588
1588(defun flymake-simple-cleanup (buffer) 1589(defun flymake-simple-cleanup (buffer)
1589 "Do cleanup after `flymake-init-create-temp-buffer-copy'. 1590 "Do cleanup after `flymake-init-create-temp-buffer-copy'.
1590Delete temp file." 1591Delete temp file."
1591 (let* ((temp-source-file-name (flymake-get-buffer-value buffer "temp-source-file-name"))) 1592 (let* ((temp-source-file-name (with-current-buffer buffer
1593 flymake-temp-source-file-name)))
1592 (flymake-safe-delete-file temp-source-file-name) 1594 (flymake-safe-delete-file temp-source-file-name)
1593 (with-current-buffer buffer 1595 (with-current-buffer buffer
1594 (setq flymake-last-change-time nil)))) 1596 (setq flymake-last-change-time nil))))
@@ -1598,12 +1600,16 @@ Delete temp file."
1598Return full-name. Names are real, not patched." 1600Return full-name. Names are real, not patched."
1599 (let* ((real-name nil) 1601 (let* ((real-name nil)
1600 (source-file-name (buffer-file-name buffer)) 1602 (source-file-name (buffer-file-name buffer))
1601 (master-file-name (flymake-get-buffer-value buffer "master-file-name")) 1603 (master-file-name
1602 (temp-source-file-name (flymake-get-buffer-value buffer "temp-source-file-name")) 1604 (with-current-buffer buffer flymake-master-file-name))
1603 (temp-master-file-name (flymake-get-buffer-value buffer "temp-master-file-name")) 1605 (temp-source-file-name
1604 (base-dirs (list (flymake-get-buffer-value buffer "base-dir") 1606 (with-current-buffer buffer flymake-temp-source-file-name))
1605 (file-name-directory source-file-name) 1607 (temp-master-file-name
1606 (if master-file-name (file-name-directory master-file-name) nil))) 1608 (with-current-buffer buffer flymake-temp-master-file-name))
1609 (base-dirs
1610 (list (with-current-buffer buffer flymake-base-dir)
1611 (file-name-directory source-file-name)
1612 (if master-file-name (file-name-directory master-file-name))))
1607 (files (list (list source-file-name source-file-name) 1613 (files (list (list source-file-name source-file-name)
1608 (list temp-source-file-name source-file-name) 1614 (list temp-source-file-name source-file-name)
1609 (list master-file-name master-file-name) 1615 (list master-file-name master-file-name)
@@ -1657,25 +1663,22 @@ Return full-name. Names are real, not patched."
1657 1663
1658(defun flymake-init-find-buildfile-dir (buffer source-file-name buildfile-name) 1664(defun flymake-init-find-buildfile-dir (buffer source-file-name buildfile-name)
1659 "Find buildfile, store its dir in buffer data and return its dir, if found." 1665 "Find buildfile, store its dir in buffer data and return its dir, if found."
1660 (let* ((buildfile-dir (flymake-find-buildfile buildfile-name 1666 (let* ((buildfile-dir
1661 (file-name-directory source-file-name) 1667 (flymake-find-buildfile buildfile-name
1662 flymake-buildfile-dirs))) 1668 (file-name-directory source-file-name)
1663 (if (not buildfile-dir) 1669 flymake-buildfile-dirs)))
1664 (progn 1670 (if buildfile-dir
1665 (flymake-log 1 "no buildfile (%s) for %s" buildfile-name source-file-name) 1671 (with-current-buffer buffer (setq flymake-base-dir buildfile-dir))
1666 (with-current-buffer buffer 1672 (flymake-log 1 "no buildfile (%s) for %s" buildfile-name source-file-name)
1667 (flymake-report-fatal-status "NOMK" (format "No buildfile (%s) found for %s" buildfile-name source-file-name))) 1673 (with-current-buffer buffer
1668 ) 1674 (flymake-report-fatal-status
1669 (progn 1675 "NOMK" (format "No buildfile (%s) found for %s"
1670 (flymake-set-buffer-value buffer "base-dir" buildfile-dir))) 1676 buildfile-name source-file-name))))))
1671 buildfile-dir))
1672 1677
1673(defun flymake-init-create-temp-source-and-master-buffer-copy (buffer get-incl-dirs-f create-temp-f master-file-masks include-regexp-list) 1678(defun flymake-init-create-temp-source-and-master-buffer-copy (buffer get-incl-dirs-f create-temp-f master-file-masks include-regexp-list)
1674 "Find master file (or buffer), create it's copy along with a copy of the source file." 1679 "Find master file (or buffer), create it's copy along with a copy of the source file."
1675 (let* ((source-file-name (buffer-file-name buffer)) 1680 (let* ((source-file-name (buffer-file-name buffer))
1676 (temp-source-file-name (flymake-init-create-temp-buffer-copy buffer create-temp-f)) 1681 (temp-source-file-name (flymake-init-create-temp-buffer-copy buffer create-temp-f))
1677 (master-file-name nil)
1678 (temp-master-file-name nil)
1679 (master-and-temp-master (flymake-create-master-file 1682 (master-and-temp-master (flymake-create-master-file
1680 source-file-name temp-source-file-name 1683 source-file-name temp-source-file-name
1681 get-incl-dirs-f create-temp-f 1684 get-incl-dirs-f create-temp-f
@@ -1687,18 +1690,14 @@ Return full-name. Names are real, not patched."
1687 (when (bufferp buffer) 1690 (when (bufferp buffer)
1688 (with-current-buffer buffer 1691 (with-current-buffer buffer
1689 (flymake-report-status "!" ""))) ; NOMASTER 1692 (flymake-report-status "!" ""))) ; NOMASTER
1690 ) 1693 nil)
1691 (progn 1694 (with-current-buffer buffer
1692 (setq master-file-name (nth 0 master-and-temp-master)) 1695 (setq flymake-master-file-name (nth 0 master-and-temp-master))
1693 (setq temp-master-file-name (nth 1 master-and-temp-master)) 1696 (setq flymake-temp-master-file-name (nth 1 master-and-temp-master))))))
1694 (flymake-set-buffer-value buffer "master-file-name" master-file-name)
1695 (flymake-set-buffer-value buffer "temp-master-file-name" temp-master-file-name)
1696 ))
1697 temp-master-file-name))
1698 1697
1699(defun flymake-master-cleanup (buffer) 1698(defun flymake-master-cleanup (buffer)
1700 (flymake-simple-cleanup buffer) 1699 (flymake-simple-cleanup buffer)
1701 (flymake-safe-delete-file (flymake-get-buffer-value buffer "temp-master-file-name"))) 1700 (flymake-safe-delete-file (with-current-buffer buffer flymake-temp-master-file-name)))
1702 1701
1703;;;; make-specific init-cleanup routines 1702;;;; make-specific init-cleanup routines
1704(defun flymake-get-syntax-check-program-args (source-file-name base-dir use-relative-base-dir use-relative-source get-cmd-line-f) 1703(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."
1778 1777
1779(defun flymake-simple-java-cleanup (buffer) 1778(defun flymake-simple-java-cleanup (buffer)
1780 "Cleanup after `flymake-simple-make-java-init' -- delete temp file and dirs." 1779 "Cleanup after `flymake-simple-make-java-init' -- delete temp file and dirs."
1781 (let* ((temp-source-file-name (flymake-get-buffer-value buffer "temp-source-file-name"))) 1780 (let* ((temp-source-file-name (with-current-buffer buffer
1781 flymake-temp-source-file-name)))
1782 (flymake-safe-delete-file temp-source-file-name) 1782 (flymake-safe-delete-file temp-source-file-name)
1783 (when temp-source-file-name 1783 (when temp-source-file-name
1784 (flymake-delete-temp-directory (file-name-directory temp-source-file-name))))) 1784 (flymake-delete-temp-directory (file-name-directory temp-source-file-name)))))