aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRajesh Vaidheeswarran2001-03-22 21:30:11 +0000
committerRajesh Vaidheeswarran2001-03-22 21:30:11 +0000
commita3db02ad94c0412cb331d0242cc46410a828c678 (patch)
treeacc25dedf0e525bd0b337f5555f1d5a25d4eb5ec
parent3c9e997b3c5f8d2715ae33e93a89c70ad7199780 (diff)
downloademacs-a3db02ad94c0412cb331d0242cc46410a828c678.tar.gz
emacs-a3db02ad94c0412cb331d0242cc46410a828c678.zip
whitespace.el version 3.0 with buffer local toggle capability.
-rw-r--r--lisp/ChangeLog12
-rw-r--r--lisp/whitespace.el149
2 files changed, 137 insertions, 24 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 7a768aae37a..aedfedee8be 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,15 @@
12001-03-22 Rajesh Vaidheeswarran <rv@gnu.org>
2
3 * whitespace.el: Add buffer local variables to toggle testing of
4 whitespaces in buffers without affecting the default values.
5
6 Added defuns (whitespace-toggle-ateol-check,
7 whitespace-toggle-leading-check, whitespace-toggle-trailing-check,
8 whitespace-toggle-indent-check and whitespace-toggle-spacetab-check)
9
10 Bump version to 3.0 to account for a few other changes.
11
12
12001-03-21 Stefan Monnier <monnier@cs.yale.edu> 132001-03-21 Stefan Monnier <monnier@cs.yale.edu>
2 14
3 * obsolete/cplus-md.el: Moved from progmodes/cplus-md.el. 15 * obsolete/cplus-md.el: Moved from progmodes/cplus-md.el.
diff --git a/lisp/whitespace.el b/lisp/whitespace.el
index 7f48560a245..e439f258a2b 100644
--- a/lisp/whitespace.el
+++ b/lisp/whitespace.el
@@ -38,7 +38,7 @@
38 38
39;;; Code: 39;;; Code:
40 40
41(defvar whitespace-version "2.8" "Version of the whitespace library.") 41(defvar whitespace-version "3.0" "Version of the whitespace library.")
42 42
43(defvar whitespace-all-buffer-files nil 43(defvar whitespace-all-buffer-files nil
44 "An associated list of buffers and files checked for whitespace cleanliness. 44 "An associated list of buffers and files checked for whitespace cleanliness.
@@ -60,6 +60,31 @@ visited by the buffers.")
60(make-variable-buffer-local 'whitespace-mode-line) 60(make-variable-buffer-local 'whitespace-mode-line)
61(put 'whitespace-mode-line 'permanent-local nil) 61(put 'whitespace-mode-line 'permanent-local nil)
62 62
63(defvar whitespace-check-buffer-leading nil
64 "Test leading whitespace for file in current buffer if t")
65(make-variable-buffer-local 'whitespace-check-buffer-leading)
66(put 'whitespace-check-buffer-leading 'permanent-local nil)
67
68(defvar whitespace-check-buffer-trailing nil
69 "Test trailing whitespace for file in current buffer if t")
70(make-variable-buffer-local 'whitespace-check-buffer-trailing)
71(put 'whitespace-check-buffer-trailing 'permanent-local nil)
72
73(defvar whitespace-check-buffer-indent nil
74 "Test indentation whitespace for file in current buffer if t")
75(make-variable-buffer-local 'whitespace-check-buffer-indent)
76(put 'whitespace-check-buffer-indent 'permanent-local nil)
77
78(defvar whitespace-check-buffer-spacetab nil
79 "Test Space-followed-by-TABS whitespace for file in current buffer if t")
80(make-variable-buffer-local 'whitespace-check-buffer-spacetab)
81(put 'whitespace-check-buffer-spacetab 'permanent-local nil)
82
83(defvar whitespace-check-buffer-ateol nil
84 "Test end-of-line whitespace for file in current buffer if t")
85(make-variable-buffer-local 'whitespace-check-buffer-ateol)
86(put 'whitespace-check-buffer-ateol 'permanent-local nil)
87
63;; For flavors of Emacs which don't define `defgroup' and `defcustom'. 88;; For flavors of Emacs which don't define `defgroup' and `defcustom'.
64(eval-when-compile 89(eval-when-compile
65 (if (not (fboundp 'defgroup)) 90 (if (not (fboundp 'defgroup))
@@ -85,17 +110,23 @@ don't define defcustom"
85 :group 'convenience)) 110 :group 'convenience))
86 111
87(defcustom whitespace-check-leading-whitespace t 112(defcustom whitespace-check-leading-whitespace t
88 "Flag to check leading whitespace." 113 "Flag to check leading whitespace. This is the global for the system.
114It can be overriden by setting a buffer local variable
115`whitespace-check-buffer-leading'"
89 :type 'boolean 116 :type 'boolean
90 :group 'whitespace) 117 :group 'whitespace)
91 118
92(defcustom whitespace-check-trailing-whitespace t 119(defcustom whitespace-check-trailing-whitespace t
93 "Flag to check trailing whitespace." 120 "Flag to check trailing whitespace. This is the global for the system.
121It can be overriden by setting a buffer local variable
122`whitespace-check-buffer-trailing'"
94 :type 'boolean 123 :type 'boolean
95 :group 'whitespace) 124 :group 'whitespace)
96 125
97(defcustom whitespace-check-spacetab-whitespace t 126(defcustom whitespace-check-spacetab-whitespace t
98 "Flag to check space followed by a TAB." 127 "Flag to check space followed by a TAB. This is the global for the system.
128It can be overriden by setting a buffer local variable
129`whitespace-check-buffer-spacetab'"
99 :type 'boolean 130 :type 'boolean
100 :group 'whitespace) 131 :group 'whitespace)
101 132
@@ -105,7 +136,9 @@ don't define defcustom"
105 :group 'whitespace) 136 :group 'whitespace)
106 137
107(defcustom whitespace-check-indent-whitespace t 138(defcustom whitespace-check-indent-whitespace t
108 "Flag to check indentation whitespace." 139 "Flag to check indentation whitespace. This is the global for the system.
140It can be overriden by setting a buffer local variable
141`whitespace-check-buffer-indent'"
109 :type 'boolean 142 :type 'boolean
110 :group 'whitespace) 143 :group 'whitespace)
111 144
@@ -115,7 +148,9 @@ don't define defcustom"
115 :group 'whitespace) 148 :group 'whitespace)
116 149
117(defcustom whitespace-check-ateol-whitespace t 150(defcustom whitespace-check-ateol-whitespace t
118 "Flag to check end-of-line whitespace." 151 "Flag to check end-of-line whitespace. This is the global for the system.
152It can be overriden by setting a buffer local variable
153`whitespace-check-buffer-ateol'"
119 :type 'boolean 154 :type 'boolean
120 :group 'whitespace) 155 :group 'whitespace)
121 156
@@ -191,6 +226,17 @@ To disable timer scans, set this to zero."
191 (setq minor-mode-alist (cons '(whitespace-mode whitespace-mode-line) 226 (setq minor-mode-alist (cons '(whitespace-mode whitespace-mode-line)
192 minor-mode-alist))) 227 minor-mode-alist)))
193 228
229(set-default 'whitespace-check-buffer-leading
230 whitespace-check-leading-whitespace)
231(set-default 'whitespace-check-buffer-trailing
232 whitespace-check-trailing-whitespace)
233(set-default 'whitespace-check-buffer-indent
234 whitespace-check-indent-whitespace)
235(set-default 'whitespace-check-buffer-spacetab
236 whitespace-check-spacetab-whitespace)
237(set-default 'whitespace-check-buffer-ateol
238 whitespace-check-ateol-whitespace)
239
194(defun whitespace-check-whitespace-mode (&optional arg) 240(defun whitespace-check-whitespace-mode (&optional arg)
195 "Test and set the whitespace-mode in qualifying buffers." 241 "Test and set the whitespace-mode in qualifying buffers."
196 (if (null whitespace-mode) 242 (if (null whitespace-mode)
@@ -200,6 +246,61 @@ To disable timer scans, set this to zero."
200 nil)))) 246 nil))))
201 247
202;;;###autoload 248;;;###autoload
249(defun whitespace-toggle-leading-check ()
250 "Toggle the check for leading space in the local buffer."
251 (interactive)
252 (let ((current-val whitespace-check-buffer-leading))
253 (setq whitespace-check-buffer-leading (not current-val))
254 (message "Will%s check for leading space in buffer."
255 (if whitespace-check-buffer-leading "" " not"))
256 (if whitespace-check-buffer-leading (whitespace-buffer-leading))))
257
258;;;###autoload
259(defun whitespace-toggle-trailing-check ()
260 "Toggle the check for trailing space in the local buffer."
261 (interactive)
262 (let ((current-val whitespace-check-buffer-trailing))
263 (setq whitespace-check-buffer-trailing (not current-val))
264 (message "Will%s check for trailing space in buffer."
265 (if whitespace-check-buffer-trailing "" " not"))
266 (if whitespace-check-buffer-trailing (whitespace-buffer-trailing))))
267
268;;;###autoload
269(defun whitespace-toggle-indent-check ()
270 "Toggle the check for indentation space in the local buffer."
271 (interactive)
272 (let ((current-val whitespace-check-buffer-indent))
273 (setq whitespace-check-buffer-indent (not current-val))
274 (message "Will%s check for indentation space in buffer."
275 (if whitespace-check-buffer-indent "" " not"))
276 (if whitespace-check-buffer-indent
277 (whitespace-buffer-search whitespace-indent-regexp))))
278
279;;;###autoload
280(defun whitespace-toggle-spacetab-check ()
281 "Toggle the check for space-followed-by-TABs in the local buffer."
282 (interactive)
283 (let ((current-val whitespace-check-buffer-spacetab))
284 (setq whitespace-check-buffer-spacetab (not current-val))
285 (message "Will%s check for space-followed-by-TABs in buffer."
286 (if whitespace-check-buffer-spacetab "" " not"))
287 (if whitespace-check-buffer-spacetab
288 (whitespace-buffer-search whitespace-spacetab-regexp))))
289
290
291;;;###autoload
292(defun whitespace-toggle-ateol-check ()
293 "Toggle the check for end-of-line space in the local buffer."
294 (interactive)
295 (let ((current-val whitespace-check-buffer-ateol))
296 (setq whitespace-check-buffer-ateol (not current-val))
297 (message "Will%s check for end-of-line space in buffer."
298 (if whitespace-check-buffer-ateol "" " not"))
299 (if whitespace-check-buffer-ateol
300 (whitespace-buffer-search whitespace-ateol-regexp))))
301
302
303;;;###autoload
203(defun whitespace-buffer (&optional quiet) 304(defun whitespace-buffer (&optional quiet)
204 "Find five different types of white spaces in buffer. 305 "Find five different types of white spaces in buffer.
205These are: 306These are:
@@ -225,21 +326,21 @@ and:
225 (if (not quiet) 326 (if (not quiet)
226 (message "Can't cleanup: %s is read-only" (buffer-name))) 327 (message "Can't cleanup: %s is read-only" (buffer-name)))
227 (whitespace-cleanup)) 328 (whitespace-cleanup))
228 (let ((whitespace-leading (if whitespace-check-leading-whitespace 329 (let ((whitespace-leading (if whitespace-check-buffer-leading
229 (whitespace-buffer-leading) 330 (whitespace-buffer-leading)
230 nil)) 331 nil))
231 (whitespace-trailing (if whitespace-check-trailing-whitespace 332 (whitespace-trailing (if whitespace-check-buffer-trailing
232 (whitespace-buffer-trailing) 333 (whitespace-buffer-trailing)
233 nil)) 334 nil))
234 (whitespace-indent (if whitespace-check-indent-whitespace 335 (whitespace-indent (if whitespace-check-buffer-indent
235 (whitespace-buffer-search 336 (whitespace-buffer-search
236 whitespace-indent-regexp) 337 whitespace-indent-regexp)
237 nil)) 338 nil))
238 (whitespace-spacetab (if whitespace-check-spacetab-whitespace 339 (whitespace-spacetab (if whitespace-check-buffer-spacetab
239 (whitespace-buffer-search 340 (whitespace-buffer-search
240 whitespace-spacetab-regexp) 341 whitespace-spacetab-regexp)
241 nil)) 342 nil))
242 (whitespace-ateol (if whitespace-check-ateol-whitespace 343 (whitespace-ateol (if whitespace-check-buffer-ateol
243 (whitespace-buffer-search 344 (whitespace-buffer-search
244 whitespace-ateol-regexp) 345 whitespace-ateol-regexp)
245 nil)) 346 nil))
@@ -330,31 +431,31 @@ whitespace problems."
330 ;; they are displayed. 431 ;; they are displayed.
331 (setq tab-width whitespace-tabwith) 432 (setq tab-width whitespace-tabwith)
332 433
333 (if (and whitespace-check-leading-whitespace 434 (if (and whitespace-check-buffer-leading
334 (whitespace-buffer-leading)) 435 (whitespace-buffer-leading))
335 (progn 436 (progn
336 (whitespace-buffer-leading-cleanup) 437 (whitespace-buffer-leading-cleanup)
337 (setq whitespace-any t))) 438 (setq whitespace-any t)))
338 439
339 (if (and whitespace-check-trailing-whitespace 440 (if (and whitespace-check-buffer-trailing
340 (whitespace-buffer-trailing)) 441 (whitespace-buffer-trailing))
341 (progn 442 (progn
342 (whitespace-buffer-trailing-cleanup) 443 (whitespace-buffer-trailing-cleanup)
343 (setq whitespace-any t))) 444 (setq whitespace-any t)))
344 445
345 (if (and whitespace-check-indent-whitespace 446 (if (and whitespace-check-buffer-indent
346 (whitespace-buffer-search whitespace-indent-regexp)) 447 (whitespace-buffer-search whitespace-indent-regexp))
347 (progn 448 (progn
348 (whitespace-indent-cleanup) 449 (whitespace-indent-cleanup)
349 (setq whitespace-any t))) 450 (setq whitespace-any t)))
350 451
351 (if (and whitespace-check-spacetab-whitespace 452 (if (and whitespace-check-buffer-spacetab
352 (whitespace-buffer-search whitespace-spacetab-regexp)) 453 (whitespace-buffer-search whitespace-spacetab-regexp))
353 (progn 454 (progn
354 (whitespace-buffer-cleanup whitespace-spacetab-regexp "\t") 455 (whitespace-buffer-cleanup whitespace-spacetab-regexp "\t")
355 (setq whitespace-any t))) 456 (setq whitespace-any t)))
356 457
357 (if (and whitespace-check-ateol-whitespace 458 (if (and whitespace-check-buffer-ateol
358 (whitespace-buffer-search whitespace-ateol-regexp)) 459 (whitespace-buffer-search whitespace-ateol-regexp))
359 (progn 460 (progn
360 (whitespace-buffer-cleanup whitespace-ateol-regexp "") 461 (whitespace-buffer-cleanup whitespace-ateol-regexp "")
@@ -484,14 +585,14 @@ whitespace problems."
484 585
485(defun whitespace-unchecked-whitespaces () 586(defun whitespace-unchecked-whitespaces ()
486 "Return the list of whitespaces whose testing has been suppressed." 587 "Return the list of whitespaces whose testing has been suppressed."
487 (let ((whitespace-this-modeline 588 (let ((unchecked-spaces
488 (concat (if (not whitespace-check-ateol-whitespace) "e") 589 (concat (if (not whitespace-check-buffer-ateol) "e")
489 (if (not whitespace-check-indent-whitespace) "i") 590 (if (not whitespace-check-buffer-indent) "i")
490 (if (not whitespace-check-leading-whitespace) "l") 591 (if (not whitespace-check-buffer-leading) "l")
491 (if (not whitespace-check-spacetab-whitespace) "s") 592 (if (not whitespace-check-buffer-spacetab) "s")
492 (if (not whitespace-check-trailing-whitespace) "t")))) 593 (if (not whitespace-check-buffer-trailing) "t"))))
493 (if (not (equal whitespace-this-modeline "")) 594 (if (not (equal unchecked-spaces ""))
494 whitespace-this-modeline 595 unchecked-spaces
495 nil))) 596 nil)))
496 597
497(defun whitespace-update-modeline (&optional whitespace-err) 598(defun whitespace-update-modeline (&optional whitespace-err)