;;; whitespace.el --- warn about and clean bogus whitespaces in the file
-;; Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2000, 2005 Free Software Foundation, Inc.
;; Author: Rajesh Vaidheeswarran <rv@gnu.org>
;; Keywords: convenience
-;; $Id: whitespace.el,v 1.24 2003/06/11 03:50:45 rv Exp $
;; This file is part of GNU Emacs.
;; GNU Emacs is free software; you can redistribute it and/or modify
;; 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.
;;
;;; Code:
-(defvar whitespace-version "3.3" "Version of the whitespace library.")
+(defvar whitespace-version "3.5" "Version of the whitespace library.")
(defvar whitespace-all-buffer-files nil
"An associated list of buffers and files checked for whitespace cleanliness.
: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"))
+ (:background "green1"))
(((class color) (background dark))
(:background "sea green"))
(((class grayscale mono)
(if whitespace-spacetab "s")
(if whitespace-trailing "t")))))
(whitespace-update-modeline whitespace-this-modeline)
- (save-excursion
- (get-buffer-create whitespace-errbuf)
- (kill-buffer whitespace-errbuf)
- (get-buffer-create whitespace-errbuf)
- (set-buffer whitespace-errbuf)
+ (if (get-buffer whitespace-errbuf)
+ (kill-buffer whitespace-errbuf))
+ (with-current-buffer (get-buffer-create whitespace-errbuf)
(if whitespace-errmsg
(progn
(insert whitespace-errmsg)
(if (not (or quiet whitespace-silent))
- (display-buffer whitespace-errbuf t))
+ (display-buffer (current-buffer) t))
(if (not quiet)
(message "Whitespaces: [%s%s] in %s"
whitespace-this-modeline
(concat "!" whitespace-unchecked)
""))
whitespace-filename)))
- (if (not quiet)
- (message "%s clean" whitespace-filename))))))))
- (if whitespace-error
- t
- nil)))
+ (if (and (not quiet) (not (equal whitespace-clean-msg "")))
+ (message "%s %s" whitespace-filename
+ whitespace-clean-msg))))))))
+ whitespace-error))
;;;###autoload
(defun whitespace-region (s e)
(setq pmax (point))
(if (equal pmin pmax)
(progn
- (whitespace-highlight-the-space pmin pmax)
+ (whitespace-highlight-the-space pmin (1+ pmax))
t)
nil))))
(setq pmax (point))
(if (equal pmin pmax)
(progn
- (whitespace-highlight-the-space pmin pmax)
+ (whitespace-highlight-the-space (- pmin 1) pmax)
t)
nil))
nil))))
(defun whitespace-highlight-the-space (b e)
"Highlight the current line, unhighlighting a previously jumped to line."
(if whitespace-display-spaces-in-color
- (progn
- (whitespace-unhighlight-the-space)
- (add-to-list 'whitespace-highlighted-space
- (whitespace-make-overlay b e))
- (whitespace-overlay-put (whitespace-make-overlay b e) 'face
- 'whitespace-highlight-face))))
+ (let ((ol (whitespace-make-overlay b e)))
+ (push ol whitespace-highlighted-space)
+ (whitespace-overlay-put ol 'face 'whitespace-highlight-face))))
;; (add-hook 'pre-command-hook 'whitespace-unhighlight-the-space))
-(defun whitespace-unhighlight-the-space ()
+(defun whitespace-unhighlight-the-space()
"Unhighlight the currently highlight line."
(if (and whitespace-display-spaces-in-color whitespace-highlighted-space)
- (let ((whitespace-this-space nil))
- (while whitespace-highlighted-space
- (setq whitespace-this-space (car whitespace-highlighted-space))
- (setq whitespace-highlighted-space
- (cdr whitespace-highlighted-space))
- (whitespace-delete-overlay whitespace-this-space))
+ (progn
+ (mapc 'whitespace-delete-overlay whitespace-highlighted-space)
(setq whitespace-highlighted-space nil))
(remove-hook 'pre-command-hook 'whitespace-unhighlight-the-space)))
(disable-timeout whitespace-rescan-timer)
(setq whitespace-rescan-timer nil))))
+;;;###autoload
+(defalias 'global-whitespace-mode 'whitespace-global-mode)
+
;;;###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'."
(remove-hook 'write-file-functions 'whitespace-write-file-hook t)
(remove-hook 'kill-buffer-hook 'whitespace-buffer))
+(add-hook 'whitespace-unload-hook 'whitespace-unload-hook)
+
(provide 'whitespace)
+
+;; arch-tag: 4ff44e87-b63c-402d-95a6-15e51e58bd0c
;;; whitespace.el ends here