aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2005-03-24 22:55:54 +0000
committerStefan Monnier2005-03-24 22:55:54 +0000
commitcd2325cdd387d20d04c10fd84f15a2880a7e8b98 (patch)
treec051a3ef4850a0c01e26e66925149e802eed5b1e
parent9a686ad20166813392efecd834247af53924380f (diff)
downloademacs-cd2325cdd387d20d04c10fd84f15a2880a7e8b98.tar.gz
emacs-cd2325cdd387d20d04c10fd84f15a2880a7e8b98.zip
Use with-current-buffer.
(flymake-float-time, flymake-get-temp-dir, flymake-replace-regexp-in-string) (flymake-line-beginning-position, flymake-current-row, flymake-selected-frame) (flymake-line-end-position, flymake-popup-menu): Avoid testing for `xemacs'. (flymake-nop): Move. (flymake-region-has-flymake-overlays): Return the computed value. (flymake-reformat-err-line-patterns-from-compile-el): Use dolist. Remove unused var `endline'. (flymake-get-line-count): Remove unused function. (flymake-display-err-menu-for-current-line): Unused var `move-mouse-pos'.
-rw-r--r--lisp/progmodes/flymake.el145
1 files changed, 59 insertions, 86 deletions
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index 3346c05ba03..b9fa6cf4754 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -49,17 +49,17 @@
49 (if test (make-hash-table :test test) (make-hash-table)) 49 (if test (make-hash-table :test test) (make-hash-table))
50 (makehash test))) 50 (makehash test)))
51 51
52(defun flymake-float-time () 52(defalias 'flymake-float-time
53 (if (featurep 'xemacs) 53 (if (fboundp 'float-time)
54 (let ((tm (current-time))) 54 'float-time
55 (multiple-value-bind (s0 s1 s2) (current-time) 55 (lambda ()
56 (+ (* (float (ash 1 16)) s0) (float s1) (* 0.0000001 s2)))) 56 (multiple-value-bind (s0 s1 s2) (current-time)
57 (float-time))) 57 (+ (* (float (ash 1 16)) s0) (float s1) (* 0.0000001 s2))))))
58 58
59(defsubst flymake-replace-regexp-in-string (regexp rep str) 59(defsubst flymake-replace-regexp-in-string (regexp rep str)
60 (if (featurep 'xemacs) 60 (if (fboundp 'replace-regexp-in-string)
61 (replace-in-string str regexp rep) 61 (replace-regexp-in-string regexp rep str)
62 (replace-regexp-in-string regexp rep str))) 62 (replace-in-string str regexp rep)))
63 63
64(defun flymake-split-string (str pattern) 64(defun flymake-split-string (str pattern)
65 "Split, then remove first and/or last in case it's empty." 65 "Split, then remove first and/or last in case it's empty."
@@ -71,22 +71,22 @@
71 splitted)) 71 splitted))
72 72
73(defsubst flymake-get-temp-dir () 73(defsubst flymake-get-temp-dir ()
74 (if (featurep 'xemacs) 74 (if (fboundp 'temp-directory)
75 (temp-directory) 75 (temp-directory)
76 temporary-file-directory)) 76 temporary-file-directory))
77 77
78(defun flymake-line-beginning-position () 78(defalias 'flymake-line-beginning-position
79 (save-excursion 79 (if (fboundp 'line-beginning-position)
80 (beginning-of-line) 80 'line-beginning-position
81 (point))) 81 (lambda (&optional arg) (save-excursion (beginning-of-line arg) (point)))))
82 82
83(defun flymake-line-end-position () 83(defalias 'flymake-line-end-position
84 (save-excursion 84 (if (fboundp 'line-end-position)
85 (end-of-line) 85 'line-end-position
86 (point))) 86 (lambda (&optional arg) (save-excursion (end-of-line arg) (point)))))
87 87
88(defun flymake-popup-menu (pos menu-data) 88(defun flymake-popup-menu (pos menu-data)
89 (if (featurep 'xemacs) 89 (if (and (fboundp 'popup-menu) (fboundp 'make-event))
90 (let* ((x-pos (nth 0 (nth 0 pos))) 90 (let* ((x-pos (nth 0 (nth 0 pos)))
91 (y-pos (nth 1 (nth 0 pos))) 91 (y-pos (nth 1 (nth 0 pos)))
92 (fake-event-props '(button 1 x 1 y 1))) 92 (fake-event-props '(button 1 x 1 y 1)))
@@ -104,10 +104,10 @@
104 menu-items)) 104 menu-items))
105 (list menu-title (cons "" menu-commands)))) 105 (list menu-title (cons "" menu-commands))))
106 106
107(defun flymake-nop ())
108
109(if (featurep 'xemacs) (progn 107(if (featurep 'xemacs) (progn
110 108
109(defun flymake-nop ())
110
111(defun flymake-make-xemacs-menu (menu-data) 111(defun flymake-make-xemacs-menu (menu-data)
112 (let* ((menu-title (nth 0 menu-data)) 112 (let* ((menu-title (nth 0 menu-data))
113 (menu-items (nth 1 menu-data)) 113 (menu-items (nth 1 menu-data))
@@ -134,19 +134,19 @@
134 134
135(defun flymake-current-row () 135(defun flymake-current-row ()
136 "Return current row number in current frame." 136 "Return current row number in current frame."
137 (if (featurep 'xemacs) 137 (if (fboundp 'window-edges)
138 (count-lines (window-start) (point)) 138 (+ (car (cdr (window-edges))) (count-lines (window-start) (point)))
139 (+ (car (cdr (window-edges))) (count-lines (window-start) (point))))) 139 (count-lines (window-start) (point))))
140 140
141(defun flymake-selected-frame () 141(defun flymake-selected-frame ()
142 (if (featurep 'xemacs) 142 (if (fboundp 'window-edges)
143 (selected-window) 143 (selected-frame)
144 (selected-frame))) 144 (selected-window)))
145 145
146;;;; ]] 146;;;; ]]
147 147
148(defcustom flymake-log-level -1 148(defcustom flymake-log-level -1
149 "Logging level, only messages with level > flymake-log-level will not be logged 149 "Logging level, only messages with level lower or equal will be logged.
150-1 = NONE, 0 = ERROR, 1 = WARNING, 2 = INFO, 3 = DEBUG" 150-1 = NONE, 0 = ERROR, 1 = WARNING, 2 = INFO, 3 = DEBUG"
151 :group 'flymake 151 :group 'flymake
152 :type 'integer) 152 :type 'integer)
@@ -199,8 +199,7 @@
199 199
200 (if (eq buffer (current-buffer)) 200 (if (eq buffer (current-buffer))
201 (symbol-value var-name) 201 (symbol-value var-name)
202 (save-excursion 202 (with-current-buffer buffer
203 (set-buffer buffer)
204 (symbol-value var-name)))) 203 (symbol-value var-name))))
205 204
206(defun flymake-set-buffer-var (buffer var-name var-value) 205(defun flymake-set-buffer-var (buffer var-name var-value)
@@ -210,8 +209,7 @@
210 209
211 (if (eq buffer (current-buffer)) 210 (if (eq buffer (current-buffer))
212 (set var-name var-value) 211 (set var-name var-value)
213 (save-excursion 212 (with-current-buffer buffer
214 (set-buffer buffer)
215 (set var-name var-value)))) 213 (set var-name var-value))))
216 214
217(defvar flymake-buffer-data (flymake-makehash) 215(defvar flymake-buffer-data (flymake-makehash)
@@ -537,8 +535,7 @@ instead of reading master file from disk."
537(defun flymake-read-file-to-temp-buffer (file-name) 535(defun flymake-read-file-to-temp-buffer (file-name)
538 "Insert contents of FILE-NAME into newly created temp buffer." 536 "Insert contents of FILE-NAME into newly created temp buffer."
539 (let* ((temp-buffer (get-buffer-create (generate-new-buffer-name (concat "flymake:" (file-name-nondirectory file-name)))))) 537 (let* ((temp-buffer (get-buffer-create (generate-new-buffer-name (concat "flymake:" (file-name-nondirectory file-name))))))
540 (save-excursion 538 (with-current-buffer temp-buffer
541 (set-buffer temp-buffer)
542 (insert-file-contents file-name)) 539 (insert-file-contents file-name))
543 temp-buffer)) 540 temp-buffer))
544 541
@@ -546,8 +543,7 @@ instead of reading master file from disk."
546 "Copy contents of BUFFER into newly created temp buffer." 543 "Copy contents of BUFFER into newly created temp buffer."
547 (let ((contents nil) 544 (let ((contents nil)
548 (temp-buffer nil)) 545 (temp-buffer nil))
549 (save-excursion 546 (with-current-buffer buffer
550 (set-buffer buffer)
551 (setq contents (buffer-string)) 547 (setq contents (buffer-string))
552 548
553 (setq temp-buffer (get-buffer-create (generate-new-buffer-name (concat "flymake:" (buffer-name buffer))))) 549 (setq temp-buffer (get-buffer-create (generate-new-buffer-name (concat "flymake:" (buffer-name buffer)))))
@@ -618,9 +614,8 @@ Find master file, patch and save it."
618(defun flymake-save-buffer-in-file (buffer file-name) 614(defun flymake-save-buffer-in-file (buffer file-name)
619 (or buffer 615 (or buffer
620 (error "Invalid buffer")) 616 (error "Invalid buffer"))
621 (save-excursion 617 (with-current-buffer buffer
622 (save-restriction 618 (save-restriction
623 (set-buffer buffer)
624 (widen) 619 (widen)
625 (make-directory (file-name-directory file-name) 1) 620 (make-directory (file-name-directory file-name) 1)
626 (write-region (point-min) (point-max) file-name nil 566))) 621 (write-region (point-min) (point-max) file-name nil 566)))
@@ -665,8 +660,7 @@ It's flymake process filter."
665 (delete-process process) 660 (delete-process process)
666 661
667 (when source-buffer 662 (when source-buffer
668 (save-excursion 663 (with-current-buffer source-buffer
669 (set-buffer source-buffer)
670 664
671 (flymake-parse-residual source-buffer) 665 (flymake-parse-residual source-buffer)
672 (flymake-post-syntax-check source-buffer exit-status command) 666 (flymake-post-syntax-check source-buffer exit-status command)
@@ -706,8 +700,7 @@ It's flymake process filter."
706 700
707(defun flymake-parse-output-and-residual (source-buffer output) 701(defun flymake-parse-output-and-residual (source-buffer output)
708 "Split OUTPUT into lines, merge in residual if necessary." 702 "Split OUTPUT into lines, merge in residual if necessary."
709 (save-excursion 703 (with-current-buffer source-buffer
710 (set-buffer source-buffer)
711 (let* ((buffer-residual (flymake-get-buffer-output-residual source-buffer)) 704 (let* ((buffer-residual (flymake-get-buffer-output-residual source-buffer))
712 (total-output (if buffer-residual (concat buffer-residual output) output)) 705 (total-output (if buffer-residual (concat buffer-residual output) output))
713 (lines-and-residual (flymake-split-output total-output)) 706 (lines-and-residual (flymake-split-output total-output))
@@ -721,8 +714,7 @@ It's flymake process filter."
721 714
722(defun flymake-parse-residual (source-buffer) 715(defun flymake-parse-residual (source-buffer)
723 "Parse residual if it's non empty." 716 "Parse residual if it's non empty."
724 (save-excursion 717 (with-current-buffer source-buffer
725 (set-buffer source-buffer)
726 (when (flymake-get-buffer-output-residual source-buffer) 718 (when (flymake-get-buffer-output-residual source-buffer)
727 (flymake-set-buffer-new-err-info source-buffer (flymake-parse-err-lines 719 (flymake-set-buffer-new-err-info source-buffer (flymake-parse-err-lines
728 (flymake-get-buffer-new-err-info source-buffer) 720 (flymake-get-buffer-new-err-info source-buffer)
@@ -846,8 +838,7 @@ line number outside the file being compiled."
846 838
847(defun flymake-highlight-err-lines (buffer err-info-list) 839(defun flymake-highlight-err-lines (buffer err-info-list)
848 "Highlight error lines in BUFFER using info from ERR-INFO-LIST." 840 "Highlight error lines in BUFFER using info from ERR-INFO-LIST."
849 (save-excursion 841 (with-current-buffer buffer
850 (set-buffer buffer)
851 (let* ((idx 0) 842 (let* ((idx 0)
852 (count (length err-info-list))) 843 (count (length err-info-list)))
853 (while (< idx count) 844 (while (< idx count)
@@ -873,8 +864,7 @@ line number outside the file being compiled."
873 864
874(defun flymake-delete-own-overlays (buffer) 865(defun flymake-delete-own-overlays (buffer)
875 "Delete all flymake overlays in BUFFER." 866 "Delete all flymake overlays in BUFFER."
876 (save-excursion 867 (with-current-buffer buffer
877 (set-buffer buffer)
878 (let ((ov (overlays-in (point-min) (point-max)))) 868 (let ((ov (overlays-in (point-min) (point-max))))
879 (while (consp ov) 869 (while (consp ov)
880 (when (flymake-overlay-p (car ov)) 870 (when (flymake-overlay-p (car ov))
@@ -891,7 +881,8 @@ Return t if it has at least one flymake overlay, nil if no overlay."
891 (while (consp ov) 881 (while (consp ov)
892 (when (flymake-overlay-p (car ov)) 882 (when (flymake-overlay-p (car ov))
893 (setq has-flymake-overlays t)) 883 (setq has-flymake-overlays t))
894 (setq ov (cdr ov))))) 884 (setq ov (cdr ov)))
885 has-flymake-overlays))
895 886
896(defface flymake-errline-face 887(defface flymake-errline-face
897 ;;+ '((((class color)) (:foreground "OrangeRed" :bold t :underline t)) 888 ;;+ '((((class color)) (:foreground "OrangeRed" :bold t :underline t))
@@ -986,21 +977,18 @@ Returns ((LINES) RESIDUAL)."
986 "Grab error line patterns from ORIGINAL-LIST in compile.el format. 977 "Grab error line patterns from ORIGINAL-LIST in compile.el format.
987Convert it to flymake internal format." 978Convert it to flymake internal format."
988 (let* ((converted-list '())) 979 (let* ((converted-list '()))
989 (mapcar 980 (dolist (item original-list)
990 (lambda (item) 981 (setq item (cdr item))
991 (setq item (cdr item)) 982 (let ((regexp (nth 0 item))
992 (let ((regexp (nth 0 item)) 983 (file (nth 1 item))
993 (file (nth 1 item)) 984 (line (nth 2 item))
994 (line (nth 2 item)) 985 (col (nth 3 item)))
995 (col (nth 3 item)) 986 (if (consp file) (setq file (car file)))
996 end-line) 987 (if (consp line) (setq line (car line)))
997 (if (consp file) (setq file (car file))) 988 (if (consp col) (setq col (car col)))
998 (if (consp line) (setq end-line (cdr line) line (car line))) 989
999 (if (consp col) (setq col (car col))) 990 (when (not (functionp line))
1000 991 (setq converted-list (cons (list regexp file line col) converted-list)))))
1001 (when (not (functionp line))
1002 (setq converted-list (cons (list regexp file line col) converted-list)))))
1003 original-list)
1004 converted-list)) 992 converted-list))
1005 993
1006(eval-when-compile 994(eval-when-compile
@@ -1211,9 +1199,8 @@ Return first 'INCLUDE-DIRS/REL-FILE-NAME' that exists, or just REL-FILE-NAME if
1211(defun flymake-get-program-dir (buffer) 1199(defun flymake-get-program-dir (buffer)
1212 "Get dir to start program in." 1200 "Get dir to start program in."
1213 (unless (bufferp buffer) 1201 (unless (bufferp buffer)
1214 (error "Invlid buffer")) 1202 (error "Invalid buffer"))
1215 (save-excursion 1203 (with-current-buffer buffer
1216 (set-buffer buffer)
1217 default-directory)) 1204 default-directory))
1218 1205
1219(defun flymake-safe-delete-file (file-name) 1206(defun flymake-safe-delete-file (file-name)
@@ -1238,8 +1225,7 @@ Return first 'INCLUDE-DIRS/REL-FILE-NAME' that exists, or just REL-FILE-NAME if
1238 "Start syntax checking for buffer BUFFER." 1225 "Start syntax checking for buffer BUFFER."
1239 (unless (bufferp buffer) 1226 (unless (bufferp buffer)
1240 (error "Expected a buffer")) 1227 (error "Expected a buffer"))
1241 (save-excursion 1228 (with-current-buffer buffer
1242 (set-buffer buffer)
1243 (flymake-log 3 "flymake is running: %s" (flymake-get-buffer-is-running buffer)) 1229 (flymake-log 3 "flymake is running: %s" (flymake-get-buffer-is-running buffer))
1244 (when (and (not (flymake-get-buffer-is-running buffer)) 1230 (when (and (not (flymake-get-buffer-is-running buffer))
1245 (flymake-can-syntax-check-file (buffer-file-name buffer))) 1231 (flymake-can-syntax-check-file (buffer-file-name buffer)))
@@ -1385,8 +1371,7 @@ Return first 'INCLUDE-DIRS/REL-FILE-NAME' that exists, or just REL-FILE-NAME if
1385 "Start a syntax check for buffer BUFFER if necessary." 1371 "Start a syntax check for buffer BUFFER if necessary."
1386 ;;+(flymake-log 3 "timer: running=%s, time=%s, cur-time=%s" (flymake-get-buffer-is-running buffer) (flymake-get-buffer-last-change-time buffer) (flymake-float-time)) 1372 ;;+(flymake-log 3 "timer: running=%s, time=%s, cur-time=%s" (flymake-get-buffer-is-running buffer) (flymake-get-buffer-last-change-time buffer) (flymake-float-time))
1387 (when (and (bufferp buffer) (not (flymake-get-buffer-is-running buffer))) 1373 (when (and (bufferp buffer) (not (flymake-get-buffer-is-running buffer)))
1388 (save-excursion 1374 (with-current-buffer buffer
1389 (set-buffer buffer)
1390 (when (and (flymake-get-buffer-last-change-time buffer) 1375 (when (and (flymake-get-buffer-last-change-time buffer)
1391 (> (flymake-float-time) (+ flymake-no-changes-timeout (flymake-get-buffer-last-change-time buffer)))) 1376 (> (flymake-float-time) (+ flymake-no-changes-timeout (flymake-get-buffer-last-change-time buffer))))
1392 (flymake-set-buffer-last-change-time buffer nil) 1377 (flymake-set-buffer-last-change-time buffer nil)
@@ -1405,18 +1390,9 @@ Return first 'INCLUDE-DIRS/REL-FILE-NAME' that exists, or just REL-FILE-NAME if
1405 (end (if (= (point) (point-max)) (point) (1+ (point))))) 1390 (end (if (= (point) (point-max)) (point) (1+ (point)))))
1406 (count-lines beg end))) 1391 (count-lines beg end)))
1407 1392
1408(defun flymake-get-line-count (buffer)
1409 "Return number of lines in buffer BUFFER."
1410 (unless (bufferp buffer)
1411 (error "Invalid buffer"))
1412 (save-excursion
1413 (set-buffer buffer)
1414 (count-lines (point-min) (point-max))))
1415
1416(defun flymake-count-lines (buffer) 1393(defun flymake-count-lines (buffer)
1417 "Return number of lines in buffer BUFFER." 1394 "Return number of lines in buffer BUFFER."
1418 (save-excursion 1395 (with-current-buffer buffer
1419 (set-buffer buffer)
1420 (count-lines (point-min) (point-max)))) 1396 (count-lines (point-min) (point-max))))
1421 1397
1422(defun flymake-get-point-pixel-pos () 1398(defun flymake-get-point-pixel-pos ()
@@ -1443,7 +1419,6 @@ Return first 'INCLUDE-DIRS/REL-FILE-NAME' that exists, or just REL-FILE-NAME if
1443 (menu-data (flymake-make-err-menu-data line-no line-err-info-list)) 1419 (menu-data (flymake-make-err-menu-data line-no line-err-info-list))
1444 (choice nil) 1420 (choice nil)
1445 (mouse-pos (flymake-get-point-pixel-pos)) 1421 (mouse-pos (flymake-get-point-pixel-pos))
1446 (moved-mouse-pos (list (car mouse-pos) (+ 10 (car (cdr mouse-pos)))))
1447 (menu-pos (list (flymake-get-point-pixel-pos) (selected-window)))) 1422 (menu-pos (list (flymake-get-point-pixel-pos) (selected-window))))
1448 (if menu-data 1423 (if menu-data
1449 (progn 1424 (progn
@@ -1525,8 +1500,7 @@ Return first 'INCLUDE-DIRS/REL-FILE-NAME' that exists, or just REL-FILE-NAME if
1525(defun flymake-report-status (buffer e-w &optional status) 1500(defun flymake-report-status (buffer e-w &optional status)
1526 "Show status in mode line." 1501 "Show status in mode line."
1527 (when (bufferp buffer) 1502 (when (bufferp buffer)
1528 (save-excursion 1503 (with-current-buffer buffer
1529 (set-buffer buffer)
1530 (when e-w 1504 (when e-w
1531 (flymake-set-buffer-mode-line-e-w buffer e-w) 1505 (flymake-set-buffer-mode-line-e-w buffer e-w)
1532 ) 1506 )
@@ -1553,8 +1527,7 @@ Return first 'INCLUDE-DIRS/REL-FILE-NAME' that exists, or just REL-FILE-NAME if
1553 (when flymake-gui-warnings-enabled 1527 (when flymake-gui-warnings-enabled
1554 (flymake-display-warning (format "Flymake: %s. Flymake will be switched OFF" warning)) 1528 (flymake-display-warning (format "Flymake: %s. Flymake will be switched OFF" warning))
1555 ) 1529 )
1556 (save-excursion 1530 (with-current-buffer buffer
1557 (set-buffer buffer)
1558 (flymake-mode 0) 1531 (flymake-mode 0)
1559 (flymake-log 0 "switched OFF Flymake mode for buffer %s due to fatal status %s, warning %s" 1532 (flymake-log 0 "switched OFF Flymake mode for buffer %s due to fatal status %s, warning %s"
1560 (buffer-name buffer) status warning))) 1533 (buffer-name buffer) status warning)))