diff options
| author | Rajesh Vaidheeswarran | 2001-03-22 21:30:11 +0000 |
|---|---|---|
| committer | Rajesh Vaidheeswarran | 2001-03-22 21:30:11 +0000 |
| commit | a3db02ad94c0412cb331d0242cc46410a828c678 (patch) | |
| tree | acc25dedf0e525bd0b337f5555f1d5a25d4eb5ec | |
| parent | 3c9e997b3c5f8d2715ae33e93a89c70ad7199780 (diff) | |
| download | emacs-a3db02ad94c0412cb331d0242cc46410a828c678.tar.gz emacs-a3db02ad94c0412cb331d0242cc46410a828c678.zip | |
whitespace.el version 3.0 with buffer local toggle capability.
| -rw-r--r-- | lisp/ChangeLog | 12 | ||||
| -rw-r--r-- | lisp/whitespace.el | 149 |
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 @@ | |||
| 1 | 2001-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 | |||
| 1 | 2001-03-21 Stefan Monnier <monnier@cs.yale.edu> | 13 | 2001-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. |
| 114 | It 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. |
| 121 | It 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. |
| 128 | It 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. |
| 140 | It 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. |
| 152 | It 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. |
| 205 | These are: | 306 | These 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) |