+2001-08-20 Rajesh Vaidheeswarran <rv@gnu.org>
+
+ * whitespace.el (whitespace-abort-on-error): Add custom variable
+ to whitespace to abort a write-file if whitespace is detected in
+ file.
+
+ * whitespace.el (whitespace-write-file-hook): Hook to be called
+ when writing a file. If `whitespace-abort-on-error' is set, the
+ write will abort on detecting whitespaces. If
+ `whitespace-auto-cleanup' is set, the file will be cleaned
+ automatically prior to writing.
+
+ * whitespace.el (whitespace-buffer-search): Let's not insert bogus
+ whitespaces in the error output!
+
+ * whitespace.el (whitespace-check-indent-whitespace): defaults to
+ `indent-tabs-mode', since the latter notes user preferences on
+ TABs anyway.
+
+ * whitespace.el (whitespace-version): 3.1. All of the above issues
+ were raised by Fran\e,Ag\e(Bois Pinard, which led to the fixes described.
+
2001-08-20 Gerd Moellmann <gerd@gnu.org>
* textmodes/texnfo-upd.el (texinfo-every-node-update): Remove
2001-08-16 Miles Bader <miles@gnu.org>
* simple.el (line-move): Undo previous change.
-
- * comint.el (comint-send-input): Add `inhibit-line-move-field-capture'
+
+ * comint.el (comint-send-input): Add `inhibit-line-move-field-capture'
property to input-terminating `boundary' overlays to avoid
line-move wierdness.
(toplevel): Set it as `common-lisp-indent-function' for
`defmethod'.
- * ediff-mult.el (ediff-get-meta-info): Fix the condition
+ * ediff-mult.el (ediff-get-meta-info): Fix the condition
of a while-loop.
* Makefile.in (DONTCOMPILE): Remove sc.el.
-
+
* Makefile.in (finder_setwins): Renamed from nonobsolete_setwins.
Don't include term/.
* subr.el (add-minor-mode): Use mode-line-minor-mode-keymap for
the minor mode name.
- * emacs-lisp/easy-mmode.el (define-minor-mode): Use
+ * emacs-lisp/easy-mmode.el (define-minor-mode): Use
mode-line-minor-mode-keymap for the minor mode name.
* calendar/calendar.el (calendar-mode-line-format): Use
* textmodes/paragraphs.el (forward-sentence): Avoid building
a regexp from sentence-end. From Kenichi Handa <handa@etl.go.jp>.
- * progmodes/executable.el (executable-set-magic): If
+ * progmodes/executable.el (executable-set-magic): If
executable-find returns a quoted file name, unquote it before
inserting it.
* image.el (image-type-regexps): For JPEG files, use a regexp
derived from the JFIF spec.
-
+
* image.el (image-type-regexps): Use `\`' instead of `^' in
most regular expressions.
;; Author: Rajesh Vaidheeswarran <rv@gnu.org>
;; Keywords: convenience
-;; $Id: whitespace.el,v 1.16 2001/07/16 12:22:59 pj Exp $
+;; $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
(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)