[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Ispell loads dict twice.
From: |
Michaël Cadilhac |
Subject: |
Re: Ispell loads dict twice. |
Date: |
Wed, 26 Apr 2006 23:58:15 +0200 |
User-agent: |
Gnus/5.110005 (No Gnus v0.5) Emacs/22.0.50 (gnu/linux) |
Agustin Martin <address@hidden> writes:
> On Mon, Apr 24, 2006 at 09:36:40PM +0200, Michaël Cadilhac wrote:
>> $ emacs -Q
>>
>> C-u M-x ispell-change-dictionary RET francais RET
>> C-x b test1 RET
>> M-x ispell-change-dictionary RET english RET
>> M-x ispell-buffer
>> C-x b test2 RET
>> M-x ispell-change-dictionary RET english RET
>>
>> The « english » dictionary will be loaded twice: on the
>> « ispell-buffer » and on the latest « ispell-change-dictionary ».
>
> While the above problem looks rather minor
In fact, it wasn't for me :-) I frequently switch between french and
english dictionaries and this bug arises more than you think :-)
> your patch seems to work well here, both the above and the personal
> dict part.
> I would only suggest a very minor cosmetic change
Thank you, I dithered about making this change in the first patch,
as I wasn't sure that it was OK regarding to the coding style.
Here's attached the patch modified.
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 <address@hidden>
+
+ * 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
+ <address@hidden>.
+
2006-04-23 Michael Albinus <address@hidden>
* 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 ()
--
| Michaël `Micha' Cadilhac | Pour les 35-40 ans, l'humour |
| Epita/LRDE Promo 2007 | c'est une plus-value. |
| http://www.lrde.org/~cadilh_m | -- Guillaume L. |
`-- - JID: address@hidden --' - --'
pgp8rZb06D92U.pgp
Description: PGP signature