]> git.eshelyaron.com Git - emacs.git/commitdiff
(ispell-local-dictionary-alist): New variable for
authorKarl Heuer <kwzh@gnu.org>
Sun, 9 May 1999 06:34:35 +0000 (06:34 +0000)
committerKarl Heuer <kwzh@gnu.org>
Sun, 9 May 1999 06:34:35 +0000 (06:34 +0000)
customizing local dictionaries not accessable by everyone.
(ispell-dictionary-alist): Loads `ispell-local-dictionary-alist'.
(ispell-required-version): Changed format `(major minor
revision)' to support general pattern matching.
(ispell-tex-skip-alists): AMS Tex block comment and `\author'
skip region commented out due to incorrect skip potential in std latex.
(ispell-word): Removed `when' macro.  Fixed bug of not restoring
cursor point on small words for calls from `ispell-minor-mode'.
(check-ispell-version): Tests and accepts versions major.minor
and above, with adjustments for interactions in 3.1.0-3.1.11.
(ispell-get-line): No longer skips ispell process special characters.
(ispell-comments-and-strings): Removed `when' macro call.
(ispell-minor-check): Requires ispell-word to restore cursor point.
(ispell-buffer-local-parsing): Supports checking comments only.

lisp/textmodes/ispell.el

index b14f4e39d9836200e0e38bc4e3b16941e38c59e4..1b22c23e65c1a6e4b0439e3fd22997994777ef80 100644 (file)
@@ -1,10 +1,10 @@
 ;;; ispell.el --- Interface to International Ispell Version 3.1
 
-;; Copyright (C) 1994, 1995, 1997, 1998 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1995, 1997, 1998, 1999 Free Software Foundation, Inc.
 
 ;; Authors         : Ken Stevens <k.stevens@ieee.org>
-;; Stevens Mod Date: Mon Nov 30 20:32:48 PST 1998
-;; Stevens Revision: 3.1
+;; Stevens Mod Date: Fri May  7 14:25:14 PDT 1999
+;; Stevens Revision: 3.2
 ;; Status          : Release with 3.1.12+ ispell.
 ;; Bug Reports     : ispell-el-bugs@itcorp.com
 ;; Web Site        : http://kdstevens.com/~stevens/ispell-page.html
 
 ;; INSTRUCTIONS
 
-;;  This code contains a section of user-settable variables that you should
-;; inspect prior to installation.  Look past the end of the history list.
-;; Set them up for your locale and the preferences of the majority of the
-;; users.  Otherwise the users may need to set a number of variables
+;;   This code contains a section of user-settable variables that you
+;; should inspect prior to installation.  Look past the end of the history
+;; list.  Set them up for your locale and the preferences of the majority
+;; of the users.  Otherwise the users may need to set a number of variables
 ;; themselves.
-;;  You particularly may want to change the default dictionary for your
+;;   You particularly may want to change the default dictionary for your
 ;; country and language.
+;;   Most dictionary changes should be made in this file so all users can
+;; enjoy them.  Local or modified dictionaries are supported in your .emacs
+;; file.  Modify the variable `ispell-local-dictionary-alist' to include
+;; these dictionaries, and they will be installed when ispell.el is loaded.
 
 ;;  Depending on the mail system you use, you may want to include these:
-
 ;;  (add-hook 'news-inews-hook 'ispell-message)
 ;;  (add-hook 'mail-send-hook  'ispell-message)
 ;;  (add-hook 'mh-before-send-letter-hook 'ispell-message)
 
-
-;; Ispell has a TeX parser and a nroff parser (the default).
+;;   Ispell has a TeX parser and a nroff parser (the default).
 ;; The parsing is controlled by the variable ispell-parser.  Currently
 ;; it is just a "toggle" between TeX and nroff, but if more parsers are
 ;; added it will be updated.  See the variable description for more info.
 ;;  `ispell-message' contains some custom skipping code for e-mail messages.
 
 ;; BUGS:
-;;  Accepting definitions in latex mode can mess up math mode skipping...
+;;  Accepting word definitions in latex mode can mess up math mode skipping.
 ;;  On some versions of emacs, growing the minibuffer fails.
-;;  Autoloading ispell can result in problems if you need to use a local or
-;;   modified dictionary.  Place the following in your .emacs file to
-;;   override the autoload definitions:
-;;    (setq ispell-dictionary-alist (cons '(dictionary ...)
-;;                                        ispell-dictionary-alist))
-;;    (setq ispell-menu-map nil)
-;;    (setq ispell-dictionary-alist-override t)
-;;    (load-library "ispell")
+;;    see `ispell-help-in-bufferp'.
+
+;; HISTORY
+
+;; Modifications made in latest versions:
+
+;; Revision 3.2  1999/5/7 14:25:14     kss
+;; Accept ispell versions 3.X.Y where X>=1
+;; fine tuned latex region skipping.  Fixed bug in ispell-word that did not
+;; point in right place on words < 2 chars.  Simplified ispell-minor-mode.
+;; Fixed bug in TeX parsing when math commands are in the comments.
+;; Removed calls to `when' macro.
+
+;; Revision 3.1  1998/12/1 13:21:52    kss
+;; Improved and fixed customize support.
+;; Improved and fixed comments in variables and messages.
+;; A coding system is now required for all languages.
+;; casechars improved for castellano, castellano8, and norsk dictionaries.
+;; Dictionary norsk7-tex removed.  Dictionary polish added.
+;; Dictionaries redefined at load-time to support dictionary changes.
+;; Menu redefined at load time to support dictionary changes.
+;; ispell-check-version added as an alias for `check-ispell-version'.
+;; Spelling suggestions returned in order generated by ispell.
+;; Small bug fixed in matching ispell error messages.
+;; Robustness added to ensure `case-fold-search' doesn't get redefined.
+;; Fixed bug that didn't respect case of word in `ispell-complete-word'.
+;; Multibyte character coding support added for process interactions.
+;; Ensure ispell process has terminated before starting new process.
+;;  This can otherwise confuse process filters and hang ispell.
+;; Improved skipping support for sgml.
+;; Fixed bug using ^M rather than \r in `ispell-minor-check'.
+;; Improved message reference matching in `ispell-message'.
+;; Fixed bug in returning to nroff mode from tex mode.
 
 
 ;;; Code:
 ;;; **********************************************************************
 
 
-;;;  ******* THIS FILE IS WRITTEN FOR ISPELL VERSION 3.1
-;;; Code:
+;;;  ******* THIS FILE IS WRITTEN FOR ISPELL VERSION 3.1+
 
 (defcustom ispell-highlight-p 'block
   "*Highlight spelling errors when non-nil.
@@ -370,6 +396,31 @@ for language-specific arguments."
   :type '(repeat string)
   :group 'ispell)
 
+
+;; Define definitions here only for personal dictionaries.
+(defcustom ispell-local-dictionary-alist nil
+  "*Contains local or customized dictionary definitions.
+See `ispell-dictionary-alist'."
+  :type '(repeat (list (choice :tag "Dictionary"
+                              (string :tag "Dictionary name")
+                              (const :tag "default" nil))
+                      (regexp :tag "Case characters")
+                      (regexp :tag "Non case characters")
+                      (regexp :tag "Other characters")
+                      (boolean :tag "Many other characters")
+                      (repeat :tag "Ispell command line args"
+                              (string :tag "Arg"))
+                      (choice :tag "Extended character mode"
+                              (const "~tex") (const "~plaintex")
+                              (const "~nroff") (const "~list")
+                              (const "~latin1") (const "~latin3") 
+                              (const :tag "default" nil))
+                      (choice :tag "Character set"
+                              (const iso-8859-1)
+                              (const iso-8859-2))))
+  :group 'ispell)
+
+
 ;;; split dictionary so line length is smaller in loaddefs.el
 
 ;;; First part of dictionary, shortened for loaddefs.el
@@ -378,7 +429,7 @@ for language-specific arguments."
  ispell-dictionary-alist-1
  '((nil                                        ; default (English.aff)
     "[A-Za-z]" "[^A-Za-z]" "[']" nil ("-B") nil iso-8859-1)
-   ("american"                         ; yankee English
+   ("american"                         ; Yankee English
     "[A-Za-z]" "[^A-Za-z]" "[']" nil ("-B") nil iso-8859-1)
    ("british"                          ; British version
     "[A-Za-z]" "[^A-Za-z]" "[']" nil ("-B" "-d" "british") nil iso-8859-1)
@@ -471,7 +522,7 @@ for language-specific arguments."
 ;;;###autoload
 (setq
  ispell-dictionary-alist-6
- '(("russian"                          ; russian.aff (KOI8-R charset)
+ '(("russian"                          ; Russian.aff (KOI8-R charset)
     "[\341\342\367\347\344\345\263\366\372\351\352\353\354\355\356\357\360\362\363\364\365\346\350\343\376\373\375\370\371\377\374\340\361\301\302\327\307\304\305\243\326\332\311\312\313\314\315\316\317\320\322\323\324\325\306\310\303\336\333\335\330\331\337\334\300\321]"
     "[^\341\342\367\347\344\345\263\366\372\351\352\353\354\355\356\357\360\362\363\364\365\346\350\343\376\373\375\370\371\377\374\340\361\301\302\327\307\304\305\243\326\332\311\312\313\314\315\316\317\320\322\323\324\325\306\310\303\336\333\335\330\331\337\334\300\321]"
     "[']" t ("-C" "-d" "russian") "~latin1" iso-8859-1)
@@ -484,7 +535,8 @@ for language-specific arguments."
 
 ;;;###autoload
 (defcustom ispell-dictionary-alist
-  (append ispell-dictionary-alist-1 ispell-dictionary-alist-2
+  (append ispell-local-dictionary-alist        ; dictionary customizations
+         ispell-dictionary-alist-1 ispell-dictionary-alist-2
          ispell-dictionary-alist-3 ispell-dictionary-alist-4
          ispell-dictionary-alist-5 ispell-dictionary-alist-6)
   "An alist of dictionaries and their associated parameters.
@@ -552,14 +604,12 @@ LANGUAGE.aff file \(e.g., english.aff\)."
                               (const iso-8859-2))))
   :group 'ispell)
 
-(defvar ispell-dictionary-alist-override nil)
-
 ;;; update the dictionaries at load time
-(unless ispell-dictionary-alist-override
-  (setq ispell-dictionary-alist
-       (append ispell-dictionary-alist-1 ispell-dictionary-alist-2
-               ispell-dictionary-alist-3 ispell-dictionary-alist-4
-               ispell-dictionary-alist-5 ispell-dictionary-alist-6)))
+(setq ispell-dictionary-alist
+      (append ispell-local-dictionary-alist    ; dictionary customizations
+             ispell-dictionary-alist-1 ispell-dictionary-alist-2
+             ispell-dictionary-alist-3 ispell-dictionary-alist-4
+             ispell-dictionary-alist-5 ispell-dictionary-alist-6))
 
 ;;; The preparation of the menu bar menu must be autoloaded
 ;;; because otherwise this file gets autoloaded every time Emacs starts
@@ -696,7 +746,7 @@ and added as a submenu of the \"Edit\" menu.")
 
 ;;; The version must be 3.1 or greater for this version of ispell.el
 ;;; There is an incompatibility between version 3.1.12 and lower versions.
-(defconst ispell-required-version '("3.1." 12)
+(defconst ispell-required-version '(3 1 12)
   "Ispell versions with which this version of ispell.el is known to work.")
 (defvar ispell-offset -1
   "Offset that maps protocol differences between ispell 3.1 versions.")
@@ -810,7 +860,7 @@ The last occurring definition in the buffer will be used.")
     ("\\(/\\|\\(\\(\\w\\|-\\)+[.:@]\\)\\)\\(\\w\\|-\\)*\\([.:/@]+\\(\\w\\|-\\|~\\)+\\)+")
     ;; This is a pretty complex regexp.  It can be simplified to the following:
     ;; "\\(\\w\\|-\\)*\\([.:/@]+\\(\\w\\|-\\|~\\)+\\)+"
-    ;; but some valid text will be skipped, e.g. "his/herr".  This could be
+    ;; but some valid text will be skipped, e.g. "his/her".  This could be
     ;; fixed up (at the expense of a moderately more complex regexp)
     ;; by not allowing "/" to be the character which triggers the
     ;; identification of the computer name, e.g.:
@@ -828,14 +878,14 @@ Valid forms include:
 
 ;;;###autoload
 (defvar ispell-tex-skip-alists
-  '((("%\\[" . "%\\]")
+  '((;;("%\\[" . "%\\]") ; AMStex block comment...
      ;; All the standard LaTeX keywords from L. Lamport's guide:
      ;; \cite, \hspace, \hspace*, \hyphenation, \include, \includeonly, \input,
      ;; \label, \nocite, \rule (in ispell - rest included here)
      ("\\\\addcontentsline"              ispell-tex-arg-end 2)
      ("\\\\add\\(tocontents\\|vspace\\)" ispell-tex-arg-end)
      ("\\\\\\([aA]lph\\|arabic\\)"      ispell-tex-arg-end)
-     ("\\\\author"                      ispell-tex-arg-end)
+     ;;("\\\\author"                    ispell-tex-arg-end)
      ("\\\\bibliographystyle"           ispell-tex-arg-end)
      ("\\\\makebox"                     ispell-tex-arg-end 0)
      ;;("\\\\epsfig"           ispell-tex-arg-end)
@@ -950,7 +1000,8 @@ or \\[ispell-region] to update the Ispell process."
            word (car word))
 
       ;; now check spelling of word if it has 3 or more characters.
-      (when (> (length word) 2)
+      (cond
+       ((> (length word) 2)
        (or quietly
            (message "Checking spelling of %s..."
                     (funcall ispell-format-word word)))
@@ -1003,9 +1054,9 @@ or \\[ispell-region] to update the Ispell process."
                            (ispell-region start end)))))
               (if (get-buffer ispell-choices-buffer)
                   (kill-buffer ispell-choices-buffer))))
-       (goto-char cursor-location)     ; return to original location
        (ispell-pdict-save ispell-silently-savep)
-       (if ispell-quit (setq ispell-quit nil))))))
+       (if ispell-quit (setq ispell-quit nil))))
+      (goto-char cursor-location))))   ; return to original location
 
 
 (defun ispell-get-word (following &optional extra-otherchars)
@@ -1086,7 +1137,7 @@ If so, ask if it needs to be saved."
   (if (or ispell-pdict-modified-p force-save)
       (if (or no-query (y-or-n-p "Personal dictionary modified.  Save? "))
          (progn
-           (process-send-string ispell-process "#\n")
+           (process-send-string ispell-process "#\n") ; save dictionary
            (message "Personal dictionary saved."))))
   ;; unassert variable, even if not saved to avoid questioning.
   (setq ispell-pdict-modified-p nil))
@@ -1321,7 +1372,7 @@ Global `ispell-quit' set to start location to continue spell session."
                         (ispell-highlight-spelling-error start end nil
                                                          'block))
                    t)                  ; reselect from new choices
-                  ((= char ?u)
+                  ((= char ?u)         ; insert lowercase into dictionary
                    (process-send-string ispell-process
                                         (concat "*" (downcase word) "\n"))
                    (setq ispell-pdict-modified-p '(t)) ; dictionary modified!
@@ -1675,7 +1726,7 @@ scrolling the current window.  Leave the new window selected."
   (save-excursion
     (let ((oldot (save-excursion (forward-line -1) (point)))
          (top (save-excursion (move-to-window-line height) (point))))
-      ;; If line above old point (line starting at olddot) would be
+      ;; If line above old point (line starting at oldot) would be
       ;; hidden by new window, scroll it to just below new win
       ;; otherwise set top line of other win so it doesn't scroll.
       (if (< oldot top) (setq top oldot))
@@ -1778,18 +1829,25 @@ scrolling the current window.  Leave the new window selected."
       (setq case-fold-search t
            status (re-search-forward
                    (concat "\\<\\("
-                           (regexp-quote (car ispell-required-version))
-                           "\\)\\([0-9]*\\)\\>")
+                           (format "%d" (car ispell-required-version))
+                           "\\)\\.\\([0-9]*\\)\\.\\([0-9]*\\)\\>")
                    nil t)
            case-fold-search case-fold-search-val)
-      (if (not status)
-         (error "%s version 3 release %s%s or greater is required"
+      (if (or (not status)     ; major version mismatch
+             (< (car (read-from-string (buffer-substring-no-properties
+                                        (match-beginning 2) (match-end 2))))
+                (car (cdr ispell-required-version)))) ; minor version mismatch
+         (error "%s version 3 release %d.%d.%d or greater is required"
                 ispell-program-name (car ispell-required-version)
-                (car (cdr ispell-required-version)))
+                (car (cdr ispell-required-version))
+                (car (cdr (cdr ispell-required-version))))
        ;; check that it is the correct version.
-       (if (< (car (read-from-string (buffer-substring-no-properties
-                                      (match-beginning 2) (match-end 2))))
-              (car (cdr ispell-required-version)))
+       (if (and (= (car (read-from-string (buffer-substring-no-properties
+                                           (match-beginning 2)(match-end 2))))
+                   (car (cdr ispell-required-version)))
+                (< (car (read-from-string (buffer-substring-no-properties
+                                           (match-beginning 3)(match-end 3))))
+                   (car (cdr (cdr ispell-required-version)))))
            (setq ispell-offset 0)))
       (kill-buffer (current-buffer)))
     result))
@@ -1870,7 +1928,7 @@ scrolling the current window.  Leave the new window selected."
           (error "%s" (mapconcat 'identity ispell-filter "\n"))))
     (setq ispell-filter nil)           ; Discard version ID line
     (let ((extended-char-mode (ispell-get-extended-character-mode)))
-      (if extended-char-mode
+      (if extended-char-mode           ; ~ extended character mode
          (process-send-string ispell-process
                               (concat extended-char-mode "\n"))))
     (process-kill-without-query ispell-process)))
@@ -2178,8 +2236,8 @@ otherwise, the current line is skipped."
     (cond                              ; LOOK AT THIS LINE AND SKIP OR PROCESS
      ((eolp)                           ; END OF LINE, just go to next line.
       (forward-line))
-     ((looking-at "[---#@*+!%~^]")     ; SKIP SPECIAL ISPELL CHARACTERS
-      (forward-char 1))
+     ;;((looking-at "[---#@*+!%~^]")   ; SKIP SPECIAL ISPELL CHARACTERS
+     ;; (forward-char 1))              ; not needed as quoted below.
      ((or (re-search-forward ispell-casechars end t) ; TEXT EXISTS
          (re-search-forward "[][()${}]" end t)) ; or MATH COMMANDS
       (setq string (concat "^" (buffer-substring-no-properties start end)
@@ -2327,14 +2385,14 @@ otherwise, the current line is skipped."
       (setq done t)
       (setq state (parse-partial-sexp (point) (point-max)
                                      nil nil state 'syntax-table))
-      (when (or (nth 3 state) (nth 4 state))
-       (let ((start (point)))
-         (setq state (parse-partial-sexp start (point-max)
-                                         nil nil state 'syntax-table))
-         (when (or (nth 3 state) (nth 4 state))
-           (error "Unterminated string or comment"))
-         (save-excursion
-           (setq done (not (ispell-region start (point))))))))))
+      (if (or (nth 3 state) (nth 4 state))
+         (let ((start (point)))
+           (setq state (parse-partial-sexp start (point-max)
+                                           nil nil state 'syntax-table))
+           (if (or (nth 3 state) (nth 4 state))
+               (error "Unterminated string or comment"))
+           (save-excursion
+             (setq done (not (ispell-region start (point))))))))))
 
 
 ;;;###autoload
@@ -2493,15 +2551,11 @@ Don't read buffer-local settings or word lists."
   (let ((ispell-minor-mode nil)
        (ispell-check-only t)
        (last-char (char-after (1- (point)))))
-    (if (or (eq last-char ?\ ) (eq last-char ?\n)
-           (and ispell-skip-sgml (eq last-char ?>))
-           (and ispell-skip-sgml (eq last-char ?\;)))
-       nil
-      (save-window-excursion
-       (save-restriction
-         (narrow-to-region (save-excursion (forward-line -1) (point)) (point))
-         (ispell-word nil t))))
-    (command-execute (key-binding (this-command-keys)))))
+    (command-execute (key-binding (this-command-keys)))
+    (if (not (or (eq last-char ?\ ) (eq last-char ?\n)
+                (and ispell-skip-sgml (eq last-char ?>))
+                (and ispell-skip-sgml (eq last-char ?\;))))
+       (ispell-word nil t))))
 
 
 ;;; **********************************************************************
@@ -2519,7 +2573,7 @@ Don't read buffer-local settings or word lists."
               "^%!PS-Adobe-[123].0"
               ;; Matches uuencoded text
               "^begin [0-9][0-9][0-9] .*\nM.*\nM.*\nM"
-              ;; Matches shell files (esp. auto-decoding)
+              ;; Matches shell files (especially auto-decoding)
               "^#! /bin/[ck]?sh"
               ;; Matches context difference listing
               "\\(\\(^cd .*\n\\)?diff -c .*\\)?\n\\*\\*\\* .*\n--- .*\n\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*\\*"
@@ -2676,9 +2730,12 @@ Includes Latex/Nroff modes and extended character mode."
   ;; (ispell-init-process) must already be called.
   (process-send-string ispell-process "!\n") ; Put process in terse mode.
   ;; We assume all major modes with "tex-mode" in them should use latex parsing
-  (if (or (and (eq ispell-parser 'use-mode-name)
-              (string-match "[Tt][Ee][Xx]-mode" (symbol-name major-mode)))
-         (eq ispell-parser 'tex))
+  ;; When exclusively checking comments, set to raw text mode (nroff).
+  (if (and (not (eq 'exclusive ispell-check-comments))
+          (or (and (eq ispell-parser 'use-mode-name)
+                   (string-match "[Tt][Ee][Xx]-mode"
+                                 (symbol-name major-mode)))
+              (eq ispell-parser 'tex)))
       (progn
        (process-send-string ispell-process "+\n") ; set ispell mode to tex
        (if (not (eq ispell-parser 'tex))
@@ -2705,7 +2762,8 @@ Includes Latex/Nroff modes and extended character mode."
            ;; space separated definitions.
            (setq string (downcase (buffer-substring-no-properties
                                    (match-beginning 1) (match-end 1))))
-           (cond ((string-match "latex-mode" string)
+           (cond ((and (string-match "latex-mode" string)
+                       (not (eq 'exclusive ispell-check-comments)))
                   (process-send-string ispell-process "+\n~tex\n"))
                  ((string-match "nroff-mode" string)
                   (process-send-string ispell-process "-\n~nroff\n"))
@@ -2822,7 +2880,7 @@ Both should not be used to define a buffer-local dictionary."
              (insert (concat " " word))))))))
 
 
-(defconst ispell-version "ispell.el 3.1 -- Mon Nov 30 20:32:48 PST 1998")
+(defconst ispell-version "ispell.el 3.2 -- Fri May  7 14:25:14 PDT 1999")
 
 (provide 'ispell)
 
@@ -2834,7 +2892,7 @@ Both should not be used to define a buffer-local dictionary."
 ;;; eval: expression
 ;;; local-variable: value
 
-;;; The following sets the buffer local dictionary to 'american' English
+;;; The following sets the buffer local dictionary to `american' English
 ;;; and spell checks only comments.
 
 ;;; Local Variables:
@@ -2852,15 +2910,13 @@ Both should not be used to define a buffer-local dictionary."
 ;;; Change IspellPersDict to IspellPersDict: to enable the following line.
 ;;; Local IspellPersDict ~/.ispell_lisp
 ;;; The following were automatically generated by ispell using the 'A' command:
-; LocalWords:  Moellmann copyleft Dansk russian KOI charset minipage hspace mh
-; LocalWords:  unsplitable includeonly nocite epsfig displaymath eqnarray init
-; LocalWords:  settable autoload inews frag pdict alist Wildcards iconify arg
-; LocalWords:  tex alists minibuffer Autoloading setq changelog kss stevens reg
-; LocalWords:  Castellano framepop sgml modeline Wedler Dirk Froembgen fn Gerd
-; LocalWords:  pgp NZST Vignaux autoloaded loaddefs aff Francais Nederlands SPC
-; LocalWords:  popup nonmenu regexp herr num pers dict unhighlight ccept uit NB
-; LocalWords:  buf grep sync prev inc hilight olddot AIX ersion msg read's op
-; LocalWords:  bufs pt multibyte cmd Quinlan uuencoded esp unidiff eg sc
-; LocalWords:  VM lns HTML eval american IspellPersDict
+; LocalWords:  settable alist inews mh frag pdict Wildcards iconify arg tex kss
+; LocalWords:  alists minibuffer bufferp autoload loaddefs aff Dansk KOI SPC op
+; LocalWords:  Francais Nederlands charset autoloaded popup nonmenu regexp num
+; LocalWords:  AMStex hspace includeonly nocite epsfig displaymath eqnarray reg
+; LocalWords:  minipage modeline pers dict unhighlight buf grep sync prev inc
+; LocalWords:  fn hilight oldot NB AIX msg init read's bufs pt cmd Quinlan eg
+; LocalWords:  uuencoded unidiff sc nn VM SGML eval IspellPersDict unsplitable
+; LocalWords:  lns
 
 ;;; ispell.el ends here