X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/d607b96bc2824116a8fe0e5840ce49da7ce4514f..5d2ece3cd22aed2a89f51c315564605d52ebf382:/lisp/textmodes/ispell.el diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el index 9a494897b7..62f899d173 100644 --- a/lisp/textmodes/ispell.el +++ b/lisp/textmodes/ispell.el @@ -1,8 +1,6 @@ ;;; ispell.el --- interface to International Ispell Versions 3.1 and 3.2 -;; Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, -;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 -;; Free Software Foundation, Inc. +;; Copyright (C) 1994-1995, 1997-2011 Free Software Foundation, Inc. ;; Author: Ken Stevens ;; Maintainer: Ken Stevens @@ -1725,7 +1723,11 @@ quit spell session exited." (extent-at start) (and (fboundp 'delete-extent) (delete-extent (extent-at start))))) - ((null poss) (message "Error in ispell process")) + ((null poss) + (message "Error checking word %s using %s with %s dictionary" + (funcall ispell-format-word-function word) + (file-name-nondirectory ispell-program-name) + (or ispell-current-dictionary "default"))) (ispell-check-only ; called from ispell minor mode. (if (fboundp 'make-extent) (if (fboundp 'set-extent-property) @@ -1916,7 +1918,7 @@ Global `ispell-quit' set to start location to continue spell session." (setq line (1+ line)))) (insert (car guess) " ") (setq guess (cdr guess))) - (insert "\nUse option `i' to accept this spelling and put it in your private dictionary.") + (insert "\nUse option `i' to accept this spelling and put it in your private dictionary.\n") (setq line (+ line (if choices 3 2))))) (while (and choices (< (if (> (+ 7 (current-column) (length (car choices)) @@ -2302,48 +2304,42 @@ if defined." (wild-p (string-match "\\*" word)) (look-p (and ispell-look-p ; Only use look for an exact match. (or ispell-have-new-look (not wild-p)))) - (ispell-grep-buffer (get-buffer-create "*Ispell-Temp*")) ; result buf (prog (if look-p ispell-look-command ispell-grep-command)) (args (if look-p ispell-look-options ispell-grep-options)) status results loc) - (unwind-protect - (save-window-excursion - (message "Starting \"%s\" process..." (file-name-nondirectory prog)) - (set-buffer ispell-grep-buffer) - (if look-p - nil - ;; convert * to .* - (insert "^" word "$") - (while (search-backward "*" nil t) (insert ".")) - (setq word (buffer-string)) - (erase-buffer)) - (setq status (apply 'ispell-call-process prog nil t nil - (nconc (if (and args (> (length args) 0)) - (list args) - (if look-p nil - (list "-e"))) - (list word) - (if lookup-dict (list lookup-dict))))) - ;; grep returns status 1 and no output when word not found, which - ;; is a perfectly normal thing. - (if (stringp status) - (setq results (cons (format "error: %s exited with signal %s" - (file-name-nondirectory prog) status) - results)) - ;; else collect words into `results' in FIFO order - (goto-char (point-max)) - ;; assure we've ended with \n - (or (bobp) (= (preceding-char) ?\n) (insert ?\n)) - (while (not (bobp)) - (setq loc (point)) - (forward-line -1) - (setq results (cons (buffer-substring-no-properties (point) - (1- loc)) - results))))) - ;; protected - (kill-buffer ispell-grep-buffer) - (if (and results (string-match ".+: " (car results))) - (error "%s error: %s" ispell-grep-command (car results)))) + (with-temp-buffer + (message "Starting \"%s\" process..." (file-name-nondirectory prog)) + (if look-p + nil + ;; Convert * to .* + (insert "^" word "$") + (while (search-backward "*" nil t) (insert ".")) + (setq word (buffer-string)) + (erase-buffer)) + (setq status (apply 'ispell-call-process prog nil t nil + (nconc (if (and args (> (length args) 0)) + (list args) + (if look-p nil + (list "-e"))) + (list word) + (if lookup-dict (list lookup-dict))))) + ;; `grep' returns status 1 and no output when word not found, which + ;; is a perfectly normal thing. + (if (stringp status) + (error "error: %s exited with signal %s" + (file-name-nondirectory prog) status) + ;; Else collect words into `results' in FIFO order. + (goto-char (point-max)) + ;; Assure we've ended with \n. + (or (bobp) (= (preceding-char) ?\n) (insert ?\n)) + (while (not (bobp)) + (setq loc (point)) + (forward-line -1) + (push (buffer-substring-no-properties (point) + (1- loc)) + results)))) + (if (and results (string-match ".+: " (car results))) + (error "%s error: %s" ispell-grep-command (car results))) results)) @@ -3042,7 +3038,7 @@ Must call after `ispell-buffer-local-parsing' due to dependence on mode." (while (looking-at "[ \t\n]*\\[") (forward-sexp)) (forward-sexp (or arg 1))) (error - (message "error skipping s-expressions at point %d." (point)) + (message "Error skipping s-expressions at point %d." (point)) (beep) (sit-for 2)))) @@ -3466,15 +3462,21 @@ available on the net." ;;;###autoload (define-minor-mode ispell-minor-mode - "Toggle Ispell minor mode. -With prefix argument ARG, turn Ispell minor mode on if ARG is positive, -otherwise turn it off. + "Toggle last-word spell checking (Ispell minor mode). +With a prefix argument ARG, enable Ispell minor mode if ARG is +positive, and disable it otherwise. If called from Lisp, enable +the mode if ARG is omitted or nil. + +Ispell minor mode is a buffer-local mior mode. When enabled, +typing SPC or RET warns you if the previous word is incorrectly +spelled. -In Ispell minor mode, pressing SPC or RET -warns you if the previous word is incorrectly spelled. +All the buffer-local variables and dictionaries are ignored. To +read them into the running ispell process, type \\[ispell-word] +SPC. -All the buffer-local variables and dictionaries are ignored -- to read -them into the running ispell process, type \\[ispell-word] SPC." +For spell-checking \"on the fly\", not just after typing SPC or +RET, use `flyspell-mode'." nil " Spell" ispell-minor-keymap) (defun ispell-minor-check () @@ -3923,14 +3925,18 @@ Both should not be used to define a buffer-local dictionary." (progn (open-line 1) (unless found (newline)) - (insert (if (fboundp 'comment-padright) - ;; Try and use the proper comment marker, - ;; e.g. ";;" rather than ";". - (comment-padright comment-start - (comment-add nil)) - comment-start) - " " ispell-words-keyword) - (if (> (length comment-end) 0) + (insert (if comment-start + (concat + (if (fboundp 'comment-padright) + ;; Try and use the proper comment marker, + ;; e.g. ";;" rather than ";". + (comment-padright comment-start + (comment-add nil)) + comment-start) + " ") + "") + ispell-words-keyword) + (if (and comment-end (> (length comment-end) 0)) (save-excursion (newline) (insert comment-end)))))