-;;; whitespace.el --- Warn about and clean bogus whitespaces in the file.
+;;; whitespace.el --- warn about and clean bogus whitespaces in the file
;; Copyright (C) 1999, 2000 Free Software Foundation, Inc.
;; Author: Rajesh Vaidheeswarran <rv@gnu.org>
;; Keywords: convenience
+;; $Id: whitespace.el,v 1.17 2001/08/20 10:05:03 gerd Exp $
;; This file is part of GNU Emacs.
;; GNU Emacs is free software; you can redistribute it and/or modify
;;; Code:
-(defvar whitespace-version "3.0" "Version of the whitespace library.")
+(defvar whitespace-version "3.1" "Version of the whitespace library.")
(defvar whitespace-all-buffer-files nil
"An associated list of buffers and files checked for whitespace cleanliness.
:type 'regexp
:group 'whitespace)
-(defcustom whitespace-check-indent-whitespace t
+(defcustom whitespace-check-indent-whitespace indent-tabs-mode
"Flag to check indentation whitespace. This is the global for the system.
It can be overriden by setting a buffer local variable
`whitespace-check-buffer-indent'"
: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
+variable."
+ :type 'boolean
+ :group 'whitespace)
+
(defcustom whitespace-auto-cleanup nil
"Cleanup a buffer automatically on finding it whitespace unclean."
:type 'boolean
(save-excursion
(goto-char (point-min))
(while (re-search-forward regexp nil t)
- (setq whitespace-retval (format "%s %s " whitespace-retval
+ (setq whitespace-retval (format "%s %s" whitespace-retval
(match-beginning 0))))
(if (equal "" whitespace-retval)
nil
:group 'whitespace
:require 'whitespace)
+;;;###autoload
(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.
(if arg
(progn
(add-hook 'find-file-hooks 'whitespace-buffer)
+ (add-hook 'local-write-file-hooks 'whitespace-write-file-hook)
(add-hook 'kill-buffer-hook 'whitespace-buffer))
(remove-hook 'find-file-hooks 'whitespace-buffer)
+ (remove-hook 'local-write-file-hooks 'whitespace-write-file-hook)
(remove-hook 'kill-buffer-hook 'whitespace-buffer)))
+;;;###autoload
+(defun whitespace-write-file-hook ()
+ "The local-write-file-hook to be called on the buffer when
+whitespace check is enabled."
+ (interactive)
+ (let ((werr nil))
+ (if whitespace-auto-cleanup
+ (whitespace-cleanup)
+ (setq werr (whitespace-buffer)))
+ (if (and whitespace-abort-on-error werr)
+ (error (concat "Abort write due to whitespaces in "
+ buffer-file-name))))
+ nil)
+
;;;###autoload
(defun whitespace-describe ()
"A summary of whitespaces and what this library can do about them.
(defun whitespace-unload-hook ()
(remove-hook 'find-file-hooks 'whitespace-buffer)
+ (remove-hook 'local-write-file-hooks 'whitespace-write-file-hook)
(remove-hook 'kill-buffer-hook 'whitespace-buffer))
(provide 'whitespace)