changeset 68169:c8f233733d78

(ispell-init-process): Include the used dictionary in ispell process start message. (ispell-internal-change-dictionary): When flyspell-mode is active and dictionary is changed, make sure ispell process is restarted and flyspell word cache cleared out for the current buffer. (ispell-change-dictionary): Make sure flyspell word cache is cleared out in all buffers with active flyspell mode when dictionary is globally changed. Call ispell-internal-change-dictionary after dictionary change.
author Eli Zaretskii <eliz@gnu.org>
date Fri, 13 Jan 2006 10:45:29 +0000
parents b5a63fe8bdf9
children c49519c91e45
files lisp/textmodes/ispell.el
diffstat 1 files changed, 17 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/textmodes/ispell.el	Fri Jan 13 09:56:23 2006 +0000
+++ b/lisp/textmodes/ispell.el	Fri Jan 13 10:45:29 2006 +0000
@@ -202,6 +202,7 @@
 ;;; Code:
 
 (defvar mail-yank-prefix)
+(eval-when-compile (defvar flyspell-word-cache-word))
 
 ;;; Custom.el macros require recompiling this when they are not present.
 ;;; Add in backward compatible custom support.
@@ -2504,7 +2505,8 @@
       (setq ispell-filter nil ispell-filter-continue nil)
     ;; may need to restart to select new personal dictionary.
     (ispell-kill-ispell t)
-    (message "Starting new Ispell process...")
+    (message "Starting new Ispell process [%s] ..."
+	     (or ispell-local-dictionary ispell-dictionary "default"))
     (sit-for 0)
     (setq ispell-library-directory (ispell-check-version)
 	  ispell-process-directory default-directory
@@ -2619,6 +2621,14 @@
 	       (setq ispell-local-dictionary dict)
 	       (setq ispell-local-dictionary-overridden t))
 	   (error "Undefined dictionary: %s" dict))
+	 ;; For global setting clear out flyspell word cache when needed
+         (when (and arg
+		    (featurep 'flyspell))
+	   (dolist (buf (buffer-list))
+	     (with-current-buffer buf
+	       (when flyspell-mode
+		 (setq flyspell-word-cache-word nil)))))
+	 (ispell-internal-change-dictionary)
 	 (message "%s Ispell dictionary set to %s"
 		  (if arg "Global" "Local")
 		  dict))))
@@ -2630,8 +2640,12 @@
   (let ((dict (or ispell-local-dictionary ispell-dictionary)))
     (unless (equal ispell-current-dictionary dict)
       (ispell-kill-ispell t)
-      (setq ispell-current-dictionary dict))))
-
+      (setq ispell-current-dictionary dict)
+      ;; If needed, start ispell process and clear out flyspell word cache
+      (when (and (featurep 'flyspell)
+                 flyspell-mode)
+        (ispell-init-process)
+        (setq flyspell-word-cache-word nil)))))
 
 ;;; Spelling of comments are checked when ispell-check-comments is non-nil.