;; Author: Rajesh Vaidheeswarran <rv@gnu.org>
;; Keywords: convenience
-;; $Id: whitespace.el,v 1.20 2002/09/11 21:30:25 monnier Exp $
;; This file is part of GNU Emacs.
;; GNU Emacs is free software; you can redistribute it and/or modify
;; Boston, MA 02111-1307, USA.
;;; Commentary:
-
-;; Whitespace.el URL: http://www.dsmit.com/lisp/
-
+;;
+;; URL: http://www.dsmit.com/lisp/
+;;
;; The whitespace library is intended to find and help fix five different types
;; of whitespace problems that commonly exist in source code.
-
+;;
;; 1. Leading space (empty lines at the top of a file).
;; 2. Trailing space (empty lines at the end of a file).
;; 3. Indentation space (8 or more spaces at beginning of line, that should be
-;; replaced with TABS).
+;; replaced with TABS).
;; 4. Spaces followed by a TAB. (Almost always, we never want that).
;; 5. Spaces or TABS at the end of a line.
-
+;;
;; Whitespace errors are reported in a buffer, and on the modeline.
-
+;;
;; Modeline will show a W:<x>!<y> to denote a particular type of whitespace,
;; where `x' and `y' can be one (or more) of:
-
+;;
;; e - End-of-Line whitespace.
;; i - Indentation whitespace.
;; l - Leading whitespace.
;; s - Space followed by Tab.
;; t - Trailing whitespace.
-
+;;
;; If any of the whitespace checks is turned off, the modeline will display a
;; !<y>.
-
+;;
;; (since (3) is the most controversial one, here is the rationale: Most
;; terminal drivers and printer drivers have TAB configured or even
;; hardcoded to be 8 spaces. (Some of them allow configuration, but almost
;; always they default to 8.)
-
+;;
;; 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
;; even print it.
-
+;;
;; 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
;; should never have to set your `tab-width' to be other than 8 in all
;; your office complain, tell them to use vim, which distinguishes between
;; tabstop and shiftwidth (vi equivalent of our offsets), and also ask them
;; to set smarttab.)
-
+;;
;; All the above have caused (and will cause) unwanted codeline integration and
;; merge problems.
-
+;;
;; whitespace.el will complain if it detects whitespaces on opening a file, and
;; warn you on closing a file also (in case you had inserted any
;; whitespaces during the process of your editing).
-
+;;
;; Exported functions:
-
+;;
;; `whitespace-buffer' - To check the current buffer for whitespace problems.
;; `whitespace-cleanup' - To cleanup all whitespaces in the current buffer.
;; `whitespace-region' - To check between point and mark for whitespace
;;; Code:
-(defvar whitespace-version "3.2" "Version of the whitespace library.")
+(defvar whitespace-version "3.4" "Version of the whitespace library.")
(defvar whitespace-all-buffer-files nil
"An associated list of buffers and files checked for whitespace cleanliness.
"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
;; which is 'editing?
+ :link '(emacs-commentary-link "whitespace.el")
:group 'editing)
(defgroup whitespace nil
"Check for and fix five different types of whitespaces in source code."
:version "21.1"
+ :link '(emacs-commentary-link "whitespace.el")
:group 'convenience))
(defcustom whitespace-check-leading-whitespace t
:type 'string
:group 'whitespace)
+(defcustom whitespace-clean-msg "clean."
+ "If non-nil, this message will be displayed after a whitespace check
+determines a file to be clean."
+ :type 'string
+ :group 'whitespace)
+
(defcustom whitespace-abort-on-error nil
"While writing a file, abort if the file is unclean. If
`whitespace-auto-cleanup' is set, that takes precedence over this
:group 'faces)
(defface whitespace-highlight-face '((((class color) (background light))
- (:background "green"))
- (((class color) (background dark))
- (:background "sea green"))
- (((class grayscale monochrome)
- (background light))
- (:background "black"))
- (((class grayscale monochrome)
- (background dark))
- (:background "white")))
+ (:background "green"))
+ (((class color) (background dark))
+ (:background "sea green"))
+ (((class grayscale mono)
+ (background light))
+ (:background "black"))
+ (((class grayscale mono)
+ (background dark))
+ (:background "white")))
"Face used for highlighting the bogus whitespaces that exist in the buffer."
:group 'whitespace-faces)
(concat "!" whitespace-unchecked)
""))
whitespace-filename)))
- (if (not quiet)
- (message "%s clean" whitespace-filename))))))))
+ (if (and (not quiet) (not (equal whitespace-clean-msg "")))
+ (message "%s %s" whitespace-filename
+ whitespace-clean-msg))))))))
(if whitespace-error
t
nil)))
(if whitespace-any
(whitespace-cleanup)
(progn
- (message "%s clean" buffer-file-name)
+ (if (not whitespace-silent)
+ (message "%s clean" buffer-file-name))
(whitespace-update-modeline)))
(setq tab-width whitespace-tabwith-saved))))
;;;###autoload
(define-minor-mode whitespace-global-mode
"Toggle using Whitespace mode in new buffers.
-With ARG, turn the mode on if and only iff ARG is positive.
+With ARG, turn the mode on iff ARG is positive.
When this mode is active, `whitespace-buffer' is added to
`find-file-hook' and `kill-buffer-hook'."
- :global t :group 'whitespace
+ :global t
+ :group 'whitespace
(if whitespace-global-mode
(progn
(add-hook 'find-file-hook 'whitespace-buffer)
(remove-hook 'kill-buffer-hook 'whitespace-buffer))
(provide 'whitespace)
+
+;;; arch-tag: 4ff44e87-b63c-402d-95a6-15e51e58bd0c
;;; whitespace.el ends here