Index: ChangeLog =================================================================== RCS file: /cvsroot/emacs/emacs/lisp/ChangeLog,v retrieving revision 1.9435 diff -c -r1.9435 ChangeLog *** ChangeLog 23 Apr 2006 21:45:28 -0000 1.9435 --- ChangeLog 26 Apr 2006 21:55:49 -0000 *************** *** 1,3 **** --- 1,16 ---- + 2006-04-24 Michaël Cadilhac + + * textmodes/ispell.el (ispell-buffer-local-dict): Add a `no-reload' + argument to avoid the call to `ispell-internal-change-dictionary' + when not needed. + (ispell-change-dictionary): Use this argument and call + `ispell-internal-change-dictionary' after the possible change + to `ispell-local-dictionary'. + (ispell-internal-change-dictionary): Check for a change in + personal dictionary use too. + Cosmetic changes thanks to Agustin Martin + . + 2006-04-23 Michael Albinus * net/tramp.el (tramp-register-file-name-handlers): New defun. Index: textmodes/ispell.el =================================================================== RCS file: /cvsroot/emacs/emacs/lisp/textmodes/ispell.el,v retrieving revision 1.197 diff -c -r1.197 ispell.el *** textmodes/ispell.el 6 Apr 2006 19:20:37 -0000 1.197 --- textmodes/ispell.el 26 Apr 2006 21:55:50 -0000 *************** *** 2607,2621 **** (mapcar 'list (ispell-valid-dictionary-list))) nil t) current-prefix-arg)) ! (unless arg (ispell-buffer-local-dict)) (if (equal dict "default") (setq dict nil)) ;; This relies on completing-read's bug of returning "" for no match (cond ((equal dict "") (message "Using %s dictionary" (or ispell-local-dictionary ispell-dictionary "default"))) ((equal dict (or ispell-local-dictionary ispell-dictionary "default")) ! ;; Specified dictionary is the default already. No-op (and (interactive-p) (message "No change, using %s dictionary" dict))) (t ; reset dictionary! --- 2607,2624 ---- (mapcar 'list (ispell-valid-dictionary-list))) nil t) current-prefix-arg)) ! (unless arg (ispell-buffer-local-dict 'no-reload)) (if (equal dict "default") (setq dict nil)) ;; This relies on completing-read's bug of returning "" for no match (cond ((equal dict "") + (ispell-internal-change-dictionary) (message "Using %s dictionary" (or ispell-local-dictionary ispell-dictionary "default"))) ((equal dict (or ispell-local-dictionary ispell-dictionary "default")) ! ;; Specified dictionary is the default already. Could reload ! ;; the dictionaries if needed. ! (ispell-internal-change-dictionary) (and (interactive-p) (message "No change, using %s dictionary" dict))) (t ; reset dictionary! *************** *** 2634,2646 **** dict)))) (defun ispell-internal-change-dictionary () ! "Update the dictionary actually used by Ispell. This may kill the Ispell process; if so, a new one will be started when needed." ! (let ((dict (or ispell-local-dictionary ispell-dictionary))) ! (unless (equal ispell-current-dictionary dict) (ispell-kill-ispell t) ! (setq ispell-current-dictionary dict)))) ;;; Spelling of comments are checked when ispell-check-comments is non-nil. --- 2637,2652 ---- dict)))) (defun ispell-internal-change-dictionary () ! "Update the dictionary and the personal dictionary used by Ispell. This may kill the Ispell process; if so, a new one will be started when needed." ! (let ((dict (or ispell-local-dictionary ispell-dictionary)) ! (pdict (or ispell-local-pdict ispell-personal-dictionary))) ! (unless (and (equal ispell-current-dictionary dict) ! (equal ispell-current-personal-dictionary pdict)) (ispell-kill-ispell t) ! (setq ispell-current-dictionary dict ! ispell-current-personal-dictionary pdict)))) ;;; Spelling of comments are checked when ispell-check-comments is non-nil. *************** *** 3667,3674 **** ;;; Can kill the current ispell process ! (defun ispell-buffer-local-dict () "Initializes local dictionary and local personal dictionary. When a dictionary is defined in the buffer (see variable `ispell-dictionary-keyword'), it will override the local setting from \\[ispell-change-dictionary]. --- 3673,3681 ---- ;;; Can kill the current ispell process ! (defun ispell-buffer-local-dict (&optional no-reload) "Initializes local dictionary and local personal dictionary. + If optional NO-RELOAD is non-nil, do not make any dictionary reloading. When a dictionary is defined in the buffer (see variable `ispell-dictionary-keyword'), it will override the local setting from \\[ispell-change-dictionary]. *************** *** 3695,3706 **** (if (re-search-forward " *\\([^ \"]+\\)" end t) (setq ispell-local-pdict (match-string-no-properties 1))))))) ! ;; Reload if new personal dictionary defined. ! (if (not (equal ispell-current-personal-dictionary ! (or ispell-local-pdict ispell-personal-dictionary))) ! (ispell-kill-ispell t)) ! ;; Reload if new dictionary defined. ! (ispell-internal-change-dictionary)) (defun ispell-buffer-local-words () --- 3702,3710 ---- (if (re-search-forward " *\\([^ \"]+\\)" end t) (setq ispell-local-pdict (match-string-no-properties 1))))))) ! (unless no-reload ! ;; Reload if new dictionary (maybe the personal one) defined. ! (ispell-internal-change-dictionary))) (defun ispell-buffer-local-words ()