From 1d8a80f0bdf75ef9665fcf8cd409db17d7ee9ad5 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Fri, 26 Jun 1998 01:27:40 +0000 Subject: [PATCH] Delete defcustom definition. (flyspell-auto-correct-binding): Fix custom type. (mail-mode-flyspell-verify): Check for `Subject:'. (flyspell-mouse-map): Use cond, not if. (flyspell-region): Update message only every 100 actions. --- lisp/textmodes/flyspell.el | 175 +++++++------------------------------ 1 file changed, 31 insertions(+), 144 deletions(-) diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el index 29c7a8089dd..950d688791b 100644 --- a/lisp/textmodes/flyspell.el +++ b/lisp/textmodes/flyspell.el @@ -3,10 +3,7 @@ ;; Copyright (C) 1998 Free Software Foundation, Inc. ;; Author: Manuel Serrano -;; version 1.2h -;; new version may be found at: -;; -;; http://kaolin.unice.fr/~serrano +;; Keywords: convenience ;;; This file is part of GNU Emacs. @@ -28,12 +25,7 @@ ;;; commentary: ;; ;; Flyspell is a minor Emacs mode performing on-the-fly spelling -;; checking. It requires `font-lock' and `ispell'. It has been -;; tested on gnu-emacs 19.29, 19.34 and Xemacs 19.15. -;; -;; To install it, copy the flyspell.el file in your Emacs path and -;; add to your .emacs file: -;; `(autoload 'flyspell-mode "flyspell" "On-the-fly Ispell." t)' +;; checking. ;; ;; To enter the flyspell minor mode, Meta-x flyspell-mode. ;; @@ -44,130 +36,14 @@ ;; Some user variables control the behavior of flyspell. They are ;; those defined under the `User variables' comment. ;; -;; Note: as suggested by Yaron M. Minsky, if you use flyspell when +;; Note: as suggested by Yaron M. Minsky, if you use flyspell when ;; sending mails, you should add the following: ;; (add-hook 'mail-send-hook 'flyspell-mode-off) -;; ------------------------------------------------------------- -;; Release 1.2h: -;; - Fix a bug on mouse-2 (yank-at-click) for gnu-emacs. -;; Release 1.2g: -;; - Support for flyspell-generic-check-word-p (has suggested -;; by Eric M. Ludlam). -;; - Compliance to emacs-lisp comments. -;; Release 1.2f: -;; - Improved TeX handling. -;; - Improved word fetch implementation. -;; - flyspell-sort-corrections was not used inside -;; flyspell-auto-correct-word. The consequence was that auto -;; corrections where not sorted even if the variable was set -;; to non-nil. -;; - Support for flyspell-multi-language-p variable. Setting -;; this variable to nil will prevent flyspell to spawn a new -;; Ispell process per buffer. -;; Release 1.2e: -;; - Fix two popup bugs on Xemacs. If no replacement words are -;; proposed only the save option is available. Corrected words -;; were not inserted at the correct position in the buffer. -;; - Addition of flyspell-region and flyspell-buffer. -;; Release 1.2d: -;; - Make-face-... expressions are now enclosed in -;; condition-case expressions. -;; - Fix bugs when flyspell-auto-correct-binding is set to nil -;; (thanks to Eli Tziperman). -;; Release 1.2c: -;; - Fix the overlay keymap problem for Emacs (it was correctly -;; working with Xemacs). -;; - Thanks to Didier Remy, flyspell now uses a cache in order -;; to improve efficiency and make uses of a pre-command-hook -;; in order to check a word when living it. -;; - Remaned flyspell-ignore-command into -;; flyspell-delay-command. -;; - Add the flyspell-issue-welcome (as suggested by Joshua -;; Guttman). -;; - Ispell process are now killed when the buffer they are -;; running in is deleted (thanks to Jeff Miller and Roland -;; Rosenfled). -;; - When used on a B&W terminal flyspell used boldness instead -;; of color for incorrect words. -;; Release 1.2: -;; - Breaks (space or newline) inside incorrect words are now -;; better handled. -;; - Flyspell sorts the proposed replacement words (thanks to -;; Carsten Dominik). See new variable -;; `flyspell-sort-corrections'. -;; - The mouse binding to correct mispelled word is now mouse-2 -;; on an highlighted region. This enhancement (as well as a -;; lot of code cleaning) has been acheived by Carsten Dominik. -;; - flyspell-mode arg is now optional. -;; - flyspell bindings are better displayed. -;; - flyspell nows is able to handle concurent and different -;; dictionaries (that each buffer running flyspell uses its -;; own (buffer local) Ispell process). -;; - default value for flyspell-highlight-property has been -;; turned to t. -;; - flyspell popup menus now support session and buffer -;; dictionaries. -;; - corrected words are now correctly unhighlighted (no -;; highlighted characters left). -;; Note: I think emacs-19.34 has a bug on the overlay event -;; handling. When an overlay (or a text property) has uses a -;; local-map, if this map does not include a key binding, -;; instead of looking at the enclosing local-map emacs-19.34 -;; uses the global-map. I have not tested this with emacs-20. -;; I have checked with Xemacs that does contain this error. -;; Release 1.1: -;; - Add an automatic replacement for incorrect word. -;; Release 1.0: -;; - Add popup menu for fast correction. -;; Release 0.9: -;; - Add an Ispell bug workaround. Now, in french mode, word -;; starting by the '-' character does not, any longer, make -;; Ispell to fall in infinite loops. -;; Release 0.8: -;; - Better Xemacs support -;; Release 0.7: -;; - Rather than hard-coding the ignored commend I now uses a -;; property field to check if a command is ignored. The -;; advantage is that user may now add its own ignored -;; commands. -;; Release 0.6: -;; - Fix flyspell mode name (in modeline bar) bug. -;; - Fix the bug on flyspell quitting. Overlays are now really -;; removed. -;; Release 0.5: -;; - Persistent hilightings. -;; - Refresh of the modeline on flyspell ending -;; - Do not hilight text with properties (e.g. font lock text) ;;; Code: (require 'font-lock) (require 'ispell) -;*---------------------------------------------------------------------*/ -;* defcustom stuff. This ensure that we have the correct custom */ -;* library. */ -;*---------------------------------------------------------------------*/ -(eval-and-compile - (condition-case () (require 'custom) (error nil)) - (if (and (featurep 'custom) (fboundp 'custom-declare-variable)) - ;; We have got what we need - (if (not (string-match "XEmacs" emacs-version)) - ;; suppress warnings - (progn - ;; This is part of bytecomp.el in 19.35: - (put 'custom-declare-variable 'byte-hunk-handler - 'byte-compile-file-form-custom-declare-variable) - (defun byte-compile-file-form-custom-declare-variable (form) - (if (memq 'free-vars byte-compile-warnings) - (setq byte-compile-bound-variables - (cons (nth 1 (nth 1 form)) - byte-compile-bound-variables))) - form))) - ;; We have the old custom-library, hack around it! - (defmacro defgroup (&rest args) nil) - (defmacro defcustom (var value doc &rest args) - (` (defvar (, var) (, value) (, doc)))))) - (defgroup flyspell nil "Spellchecking on the fly." :tag "FlySpell" @@ -212,7 +88,7 @@ "*Non-nil means that its value (a binding) will bound to the flyspell auto-correct." :group 'flyspell - :type '(choice (const nil string))) + :type '(choice (const nil) string)) (defcustom flyspell-command-hook t "*Non-nil means that `post-command-hook' is used to check @@ -302,11 +178,14 @@ Returns t to continue checking, nil otherwise.") (defun mail-mode-flyspell-verify () "Return t if we want flyspell to check the word under point." (save-excursion - (not (or (re-search-forward mail-header-separator nil t) - (re-search-backward message-signature-separator nil t) - (progn - (beginning-of-line) - (looking-at "[>}|]")))))) + (or (progn + (beginning-of-line) + (looking-at "Subject:")) + (not (or (re-search-forward mail-header-separator nil t) + (re-search-backward message-signature-separator nil t) + (progn + (beginning-of-line) + (looking-at "[>}|]"))))))) (defun texinfo-mode-flyspell-verify () "Return t if we want flyspell to check the word under point." @@ -402,11 +281,13 @@ to be a symbol." (define-key flyspell-mode-map flyspell-auto-correct-binding (function flyspell-auto-correct-word))) ;; mouse bindings -(if (eq flyspell-emacs 'xemacs) - (define-key flyspell-mouse-map [(button2)] - (function flyspell-correct-word/mouse-keymap)) +(cond + ((eq flyspell-emacs 'xemacs) + (define-key flyspell-mouse-map [(button2)] + (function flyspell-correct-word/mouse-keymap))) + (t (define-key flyspell-mode-map [(mouse-2)] - (function flyspell-correct-word/local-keymap))) + (function flyspell-correct-word/local-keymap)))) ;; the name of the overlay property that defines the keymap (defvar flyspell-overlay-keymap-property-name @@ -941,13 +822,19 @@ Word syntax described by `ispell-dictionary-alist' (which see)." (interactive "r") (save-excursion (goto-char beg) - (while (< (point) end) - (message "Spell Checking...%d%%" (* 100 (/ (float (point)) (- end beg)))) - (flyspell-word) - (let ((cur (point))) - (forward-word 1) - (if (and (< (point) end) (> (point) (+ cur 1))) - (backward-char 1)))) + (let ((count 0)) + (while (< (point) end) + (if (= count 100) + (progn + (message "Spell Checking...%d%%" + (* 100 (/ (float (point)) (- end beg)))) + (setq count 0)) + (setq count (+ 1 count))) + (flyspell-word) + (let ((cur (point))) + (forward-word 1) + (if (and (< (point) end) (> (point) (+ cur 1))) + (backward-char 1))))) (backward-char 1) (message "Spell Checking...done") (flyspell-word))) -- 2.39.2