1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-17 11:20:39 -08:00

Doc fixes.

(top-level): Don't add hooks here.
(whitespace-running-emacs): Deleted.
(timer): Don't require.
(whitespace): Add back :version conditional on xemacs test.
(whitespace-spacetab-regexp, whitespace-indent-regexp)
(whitespace-ateol-regexp, whitespace-modes): Fix custom type.
(whitespace-force-mode-line-update, whitespace-refresh-rescan-list)
(whitespace-tickle-timer, whitespace-rescan-files-in-buffers):
Avoid specific xemacs test.
(whitespace-global-mode): New option.
(whitespace-global-mode): New command.
(whitespace-unload-hook): New function.
This commit is contained in:
Dave Love 2000-10-15 17:07:55 +00:00
parent d1268e529b
commit fc3337909b

View file

@ -38,17 +38,7 @@
;;; Code: ;;; Code:
;; add a hook to find-file-hooks and kill-buffer-hook
(add-hook 'find-file-hooks 'whitespace-buffer)
(add-hook 'kill-buffer-hook 'whitespace-buffer)
(defvar whitespace-version "2.8" "Version of the whitespace library.") (defvar whitespace-version "2.8" "Version of the whitespace library.")
;; Find out what type of Emacs we are running in.
(defvar whitespace-running-emacs (if (string-match "XEmacs\\|Lucid"
emacs-version) nil t)
"If this is Emacs, not XEmacs, this is t.")
(if whitespace-running-emacs (require 'timer))
(defvar whitespace-all-buffer-files nil (defvar whitespace-all-buffer-files nil
"An associated list of buffers and files checked for whitespace cleanliness. "An associated list of buffers and files checked for whitespace cleanliness.
@ -83,12 +73,16 @@ defgroup"
don't define defcustom" don't define defcustom"
`(defvar ,sym ,val ,doc)))) `(defvar ,sym ,val ,doc))))
(if (featurep 'xemacs)
(defgroup whitespace nil (defgroup whitespace nil
"Check for and fix five different types of whitespaces in source code." "Check for and fix five different types of whitespaces in source code."
;; Since XEmacs doesn't have a 'convenience group, use the next best group ;; Since XEmacs doesn't have a 'convenience group, use the next best group
;; which is 'editing? ;; which is 'editing?
;; :version "21.1" :group 'editing)
:group (if whitespace-running-emacs 'convenience 'editing)) (defgroup whitespace nil
"Check for and fix five different types of whitespaces in source code."
:version "21.1"
:group 'convenience))
(defcustom whitespace-check-leading-whitespace t (defcustom whitespace-check-leading-whitespace t
"Flag to check leading whitespace." "Flag to check leading whitespace."
@ -107,7 +101,7 @@ don't define defcustom"
(defcustom whitespace-spacetab-regexp " \t" (defcustom whitespace-spacetab-regexp " \t"
"Regexp to match a space followed by a TAB." "Regexp to match a space followed by a TAB."
:type 'string :type 'regexp
:group 'whitespace) :group 'whitespace)
(defcustom whitespace-check-indent-whitespace t (defcustom whitespace-check-indent-whitespace t
@ -117,7 +111,7 @@ don't define defcustom"
(defcustom whitespace-indent-regexp (concat "^\\(\t*\\) " " ") (defcustom whitespace-indent-regexp (concat "^\\(\t*\\) " " ")
"Regexp to match (any TABS followed by) 8/more whitespaces at start of line." "Regexp to match (any TABS followed by) 8/more whitespaces at start of line."
:type 'string :type 'regexp
:group 'whitespace) :group 'whitespace)
(defcustom whitespace-check-ateol-whitespace t (defcustom whitespace-check-ateol-whitespace t
@ -127,11 +121,11 @@ don't define defcustom"
(defcustom whitespace-ateol-regexp "[ \t]$" (defcustom whitespace-ateol-regexp "[ \t]$"
"Regexp to match a TAB or a space at the EOL." "Regexp to match a TAB or a space at the EOL."
:type 'string :type 'regexp
:group 'whitespace) :group 'whitespace)
(defcustom whitespace-errbuf "*Whitespace Errors*" (defcustom whitespace-errbuf "*Whitespace Errors*"
"The buffer where whitespace related messages will be logged." "The name of the buffer where whitespace related messages will be logged."
:type 'string :type 'string
:group 'whitespace) :group 'whitespace)
@ -174,6 +168,7 @@ following to your `.emacs':
whitespace-modes))\) whitespace-modes))\)
Or, alternately, you can use the Emacs `customize' command to set this." Or, alternately, you can use the Emacs `customize' command to set this."
:type '(repeat symbol)
:group 'whitespace) :group 'whitespace)
(defcustom whitespace-rescan-timer-time 600 (defcustom whitespace-rescan-timer-time 600
@ -206,8 +201,8 @@ To disable timer scans, set this to zero."
;;;###autoload ;;;###autoload
(defun whitespace-buffer (&optional quiet) (defun whitespace-buffer (&optional quiet)
"Find five different types of white spaces in buffer: "Find five different types of white spaces in buffer.
These are:
1. Leading space \(empty lines at the top of a file\). 1. Leading space \(empty lines at the top of a file\).
2. Trailing space \(empty lines at the end of a file\). 2. Trailing space \(empty lines at the end of a file\).
3. Indentation space \(8 or more spaces, that should be replaced with TABS\). 3. Indentation space \(8 or more spaces, that should be replaced with TABS\).
@ -310,7 +305,7 @@ and:
;;;###autoload ;;;###autoload
(defun whitespace-region (s e) (defun whitespace-region (s e)
"Check a region specified by point and mark for whitespace errors." "Check the region for whitespace errors."
(interactive "r") (interactive "r")
(save-excursion (save-excursion
(save-restriction (save-restriction
@ -375,7 +370,7 @@ whitespace problems."
;;;###autoload ;;;###autoload
(defun whitespace-cleanup-region (s e) (defun whitespace-cleanup-region (s e)
"Whitespace cleanup on a region specified by point and mark." "Whitespace cleanup on the region."
(interactive "r") (interactive "r")
(save-excursion (save-excursion
(save-restriction (save-restriction
@ -500,8 +495,8 @@ whitespace problems."
nil))) nil)))
(defun whitespace-update-modeline (&optional whitespace-err) (defun whitespace-update-modeline (&optional whitespace-err)
"Update modeline with whitespace errors and whitespaces whose testing has "Update modeline with whitespace errors.
been turned off." Also with whitespaces whose testing has been turned off."
(if whitespace-display-in-modeline (if whitespace-display-in-modeline
(progn (progn
(setq whitespace-mode-line nil) (setq whitespace-mode-line nil)
@ -522,9 +517,9 @@ been turned off."
;; Force mode line updation for different Emacs versions ;; Force mode line updation for different Emacs versions
(defun whitespace-force-mode-line-update () (defun whitespace-force-mode-line-update ()
"Force the mode line update for different flavors of Emacs." "Force the mode line update for different flavors of Emacs."
(if whitespace-running-emacs (if (fboundp 'redraw-modeline)
(force-mode-line-update) ; Emacs (redraw-modeline) ; XEmacs
(redraw-modeline))) ; XEmacs (force-mode-line-update))) ; Emacs
(defun whitespace-check-buffer-list (buf-name buf-file) (defun whitespace-check-buffer-list (buf-name buf-file)
"Add a buffer and its file to the whitespace monitor list. "Add a buffer and its file to the whitespace monitor list.
@ -543,12 +538,9 @@ If timer is not set, then set it to scan the files in
`whitespace-rescan-timer-time') for whitespace creep." `whitespace-rescan-timer-time') for whitespace creep."
(if (and whitespace-rescan-timer-time (not whitespace-rescan-timer)) (if (and whitespace-rescan-timer-time (not whitespace-rescan-timer))
(setq whitespace-rescan-timer (setq whitespace-rescan-timer
(if whitespace-running-emacs
(run-at-time nil whitespace-rescan-timer-time
'whitespace-rescan-files-in-buffers)
(add-timeout whitespace-rescan-timer-time (add-timeout whitespace-rescan-timer-time
'whitespace-rescan-files-in-buffers nil 'whitespace-rescan-files-in-buffers nil
whitespace-rescan-timer-time))))) whitespace-rescan-timer-time))))
(defun whitespace-rescan-files-in-buffers (&optional arg) (defun whitespace-rescan-files-in-buffers (&optional arg)
"Check monitored files for whitespace creep since last scan." "Check monitored files for whitespace creep since last scan."
@ -556,9 +548,7 @@ If timer is not set, then set it to scan the files in
buffile bufname thiselt buf) buffile bufname thiselt buf)
(if (not whitespace-all-my-files) (if (not whitespace-all-my-files)
(progn (progn
(if whitespace-running-emacs (disable-timeout whitespace-rescan-timer)
(cancel-timer whitespace-rescan-timer)
(disable-timeout whitespace-rescan-timer))
(setq whitespace-rescan-timer nil)) (setq whitespace-rescan-timer nil))
(while whitespace-all-my-files (while whitespace-all-my-files
(setq thiselt (car whitespace-all-my-files)) (setq thiselt (car whitespace-all-my-files))
@ -588,16 +578,42 @@ If timer is not set, then set it to scan the files in
(defun whitespace-refresh-rescan-list (buffile bufname) (defun whitespace-refresh-rescan-list (buffile bufname)
"Refresh the list of files to be rescaned for whitespace creep." "Refresh the list of files to be rescaned for whitespace creep."
(if whitespace-all-buffer-files (if whitespace-all-buffer-files
(progn
(setq whitespace-all-buffer-files (setq whitespace-all-buffer-files
(delete (list buffile bufname) whitespace-all-buffer-files))) (delete (list buffile bufname) whitespace-all-buffer-files))
(when whitespace-rescan-timer
(disable-timeout whitespace-rescan-timer)
(setq whitespace-rescan-timer nil))))
;;;###autoload
(defcustom whitespace-global-mode nil
"Toggle global Whitespace mode.
Setting this variable directly does not take effect;
use either \\[customize] or the function `whitespace-global-mode'
\(which see)."
:set (lambda (sym val)
(whitespace-global-mode (or value 0)))
:initialize 'custom-initialize-default
:type 'boolean
:group 'whitespace
:require 'whitespace)
(defun whitespace-global-mode (&optional arg)
"Toggle using Whitespace mode in new buffers.
With ARG, turn the mode on if and only iff ARG is positive.
When this mode is active, `whitespace-buffer' is added to
`find-file-hooks' and `kill-buffer-hook'."
(interactive "P")
(setq arg (if arg
(> (prefix-numeric-value arg) 0)
(not whitespace-global-mode)))
(if arg
(progn (progn
(if (and whitespace-running-emacs (timerp whitespace-rescan-timer)) (add-hook 'find-file-hooks 'whitespace-buffer)
(cancel-timer whitespace-rescan-timer)) (add-hook 'kill-buffer-hook 'whitespace-buffer))
(if (and (not whitespace-running-emacs) whitespace-rescan-timer) (remove-hook 'find-file-hooks 'whitespace-buffer)
(disable-timeout whitespace-rescan-timer)) (remove-hook 'kill-buffer-hook 'whitespace-buffer)))
(if whitespace-rescan-timer
(setq whitespace-rescan-timer nil)))))
;;;###autoload ;;;###autoload
(defun whitespace-describe () (defun whitespace-describe ()
@ -632,13 +648,13 @@ If any of the whitespace checks is turned off, the modeline will display a
hardcoded to be 8 spaces. (Some of them allow configuration, but almost hardcoded to be 8 spaces. (Some of them allow configuration, but almost
always they default to 8.) always they default to 8.)
Changing tab-width to other than 8 and editing will cause your code to Changing `tab-width' to other than 8 and editing will cause your code to
look different from within Emacs, and say, if you cat it or more it, or look different from within Emacs, and say, if you cat it or more it, or
even print it. even print it.
Almost all the popular programming modes let you define an offset (like Almost all the popular programming modes let you define an offset (like
c-basic-offset or perl-indent-level) to configure the offset, so you c-basic-offset or perl-indent-level) to configure the offset, so you
should never have to set your tab-width to be other than 8 in all these should never have to set your `tab-width' to be other than 8 in all these
modes. In fact, with an indent level of say, 4, 2 TABS will cause Emacs modes. In fact, with an indent level of say, 4, 2 TABS will cause Emacs
to replace your 8 spaces with one \t (try it). If vi users in your to replace your 8 spaces with one \t (try it). If vi users in your
office complain, tell them to use vim, which distinguishes between office complain, tell them to use vim, which distinguishes between
@ -649,12 +665,16 @@ All the above have caused (and will cause) unwanted codeline integration and
merge problems. merge problems.
whitespace.el will complain if it detects whitespaces on opening a file, and whitespace.el will complain if it detects whitespaces on opening a file, and
warn you on closing a file also. (if in case you had inserted any warn you on closing a file also (in case you had inserted any
whitespaces during the process of your editing.)" whitespaces during the process of your editing)."
(interactive) (interactive)
(message "Use C-h f whitespace-describe to read about whitespace.el v%s." (message "Use C-h f whitespace-describe to read about whitespace.el v%s."
whitespace-version)) whitespace-version))
(defun whitespace-unload-hook ()
(remove-hook 'find-file-hooks 'whitespace-buffer)
(remove-hook 'kill-buffer-hook 'whitespace-buffer))
(provide 'whitespace) (provide 'whitespace)
;;; whitespace.el ends here ;;; whitespace.el ends here