]> git.eshelyaron.com Git - emacs.git/commitdiff
ispell.el: Improve comments. XEmacs compatibility changes.
authorAgustín Martín <agustin.martin@hispalinux.es>
Fri, 10 Sep 2010 11:20:51 +0000 (13:20 +0200)
committerAgustín Martín <agustin.martin@hispalinux.es>
Fri, 10 Sep 2010 11:20:51 +0000 (13:20 +0200)
* textmodes/ispell.el (ispell-init-process): Improve comments.
  XEmacs compatibility changes regarding (add-hook) 'local option
  and (set-process-query-on-exit-flag).

lisp/ChangeLog
lisp/textmodes/ispell.el

index 530b724f14e86e6ceb67cb43cbbf27b98c7dadc5..95ca3a113ef4f95f61a6280b4cbed9e3804383c3 100644 (file)
@@ -1,3 +1,9 @@
+2010-09-10  Agustín Martín  <agustin.martin@hispalinux.es>
+
+       * textmodes/ispell.el (ispell-init-process): Improve comments.
+       XEmacs compatibility changes regarding (add-hook) 'local option
+       and (set-process-query-on-exit-flag).
+
 2010-09-09  Michael Albinus  <michael.albinus@gmx.de>
 
        * net/tramp-cache.el (tramp-parse-connection-properties): Set
index 21eeba1a87aa32fedd3ecc172ad34f7c6130a45c..ad2838adaa965519878c517d6894039e4b9cb9f8 100644 (file)
@@ -2674,24 +2674,27 @@ Keeps argument list for future ispell invocations for no async support."
            ispell-filter-continue nil
            ispell-process-directory default-directory)
 
-      ;; Kill ispell process when killing its associated buffer if using Ispell
-      ;; per-directory personal dictionaries.
       (unless (equal ispell-process-directory (expand-file-name "~/"))
-        (with-current-buffer
-           (if (and (window-minibuffer-p)
-                     (fboundp 'minibuffer-selected-window)) ;; E.g. XEmacs.
-                ;; When spellchecking minibuffer contents, assign ispell
-                ;; process to parent buffer if known (not known for XEmacs).
-                ;; Use (buffer-name) otherwise.
+       ;; At this point, `ispell-process-directory' will be "~/" unless using
+       ;; Ispell with directory-specific dicts and not in XEmacs minibuffer.
+       ;; If not, kill ispell process when killing buffer.  It may be in a
+       ;; removable device that would otherwise become un-mountable.
+       (with-current-buffer
+           (if (and (window-minibuffer-p)                  ;; In minibuffer
+                    (fboundp 'minibuffer-selected-window)) ;; Not XEmacs.
+               ;; In this case kill ispell only when parent buffer is killed
+               ;; to avoid over and over ispell kill.
                (window-buffer (minibuffer-selected-window))
-              (current-buffer))
-          (add-hook 'kill-buffer-hook (lambda () (ispell-kill-ispell t))
-                    nil 'local)))
+             (current-buffer))
+         ;; 'local does not automatically make hook buffer-local in XEmacs.
+         (if (featurep 'xemacs)
+             (make-local-hook 'kill-buffer-hook))
+         (add-hook 'kill-buffer-hook
+                   (lambda () (ispell-kill-ispell t)) nil 'local)))
 
       (if ispell-async-processp
          (set-process-filter ispell-process 'ispell-filter))
-      ;; protect against bogus binding of `enable-multibyte-characters' in
-      ;; XEmacs.
+      ;; Protect against XEmacs bogus binding of `enable-multibyte-characters'.
       (if (and (or (featurep 'xemacs)
                   (and (boundp 'enable-multibyte-characters)
                        enable-multibyte-characters))
@@ -2727,7 +2730,9 @@ Keeps argument list for future ispell invocations for no async support."
        (if extended-char-mode          ; ~ extended character mode
            (ispell-send-string (concat extended-char-mode "\n"))))
       (if ispell-async-processp
-         (set-process-query-on-exit-flag ispell-process nil)))))
+         (if (fboundp 'set-process-query-on-exit-flag) ;; not XEmacs
+             (set-process-query-on-exit-flag ispell-process nil)
+           (process-kill-without-query ispell-process))))))
 
 ;;;###autoload
 (defun ispell-kill-ispell (&optional no-error)