annotate lisp/textmodes/flyspell.el @ 24102:1086aa5db591

Major rewrite to support cleaner method of dumping; a static "bss" section is used for heap space during preload, and bss data is now written to the proper section area when dumping. (need_to_recreate_heap): Renamed to using_dynamic_heap. (heap_index_in_executable): Obsolete variable removed. (data_section): New variable. (data_start_va): Renamed to data_start. (data_start_file): Obsolete variable removed. (bss_section): (extra_bss_size): (bss_section_static): (bss_start_static): (bss_size_static): (extra_bss_size_static): (heap_section): New variables. (_start): Remove code based on old unexec method. Call init_heap to initialize sbrk heap. (close_file_data): Update size of file when closing, so that unexec doesn't have to work out exact size in advance. (get_bss_info_from_map_file): (get_section_size): Obsolete functions removed. (rva_to_section): Fix minor bug, and add a work-around for a bug in very old linkers. (offset_to_section): (relocate_offset): New functions. (OFFSET_TO_RVA): (RVA_TO_OFFSET): (RVA_TO_SECTION_OFFSET): (PTR_TO_RVA): (PTR_TO_OFFSET): (OFFSET_TO_PTR): New macros. (get_section_info): Modify to support new unexec method; determines address ranges in process that need dumping, and COFF sections where data will be dumped. Allows for static and global bss data to be in separate ranges. No longer relies on knowledge of section names. (copy_executable_and_dump_data_section): Renamed copy_executable_and_dump_data. Completely rewritten to copy executable section by section, so that raw data areas can be expanded to hold dumped data as necessary. Allows for bss data to be in same section as initialized data. Reduces size of static heap section to that used during preload. (dump_bss_and_heap): (w32_fatal_reload_error): (read_in_bss): (map_in_heap): Obsolete functions removed. (unexec): Rounds off preload heap to nearest page rather than virtual allocation unit. Modified to match other changes.
author Andrew Innes <andrewi@gnu.org>
date Sun, 17 Jan 1999 19:21:24 +0000
parents 6236e60302e2
children 1544b0109c3b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 ;;; flyspell.el --- On-the-fly spell checker
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3 ;; Copyright (C) 1998 Free Software Foundation, Inc.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 ;; Author: Manuel Serrano <Manuel.Serrano@unice.fr>
22612
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
6 ;; Keywords: convenience
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 ;;; This file is part of GNU Emacs.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; any later version.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; GNU General Public License for more details.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 ;; Boston, MA 02111-1307, USA.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25 ;;; commentary:
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 ;;
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 ;; Flyspell is a minor Emacs mode performing on-the-fly spelling
22612
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
28 ;; checking.
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 ;;
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
30 ;; To enable Flyspell minor mode, type Meta-x flyspell-mode.
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
31 ;; This applies only to the current buffer.
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 ;;
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
33 ;; Note: consider setting the variable ispell-parser to `tex' to
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
34 ;; avoid TeX command checking; use `(setq ispell-parser 'tex)'
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 ;; _before_ entering flyspell.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 ;;
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 ;; Some user variables control the behavior of flyspell. They are
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 ;; those defined under the `User variables' comment.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 ;;
22612
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
40 ;; Note: as suggested by Yaron M. Minsky, if you use flyspell when
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 ;; sending mails, you should add the following:
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 ;; (add-hook 'mail-send-hook 'flyspell-mode-off)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 ;;; Code:
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 (require 'ispell)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
47 ;*---------------------------------------------------------------------*/
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
48 ;* Group ... */
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
49 ;*---------------------------------------------------------------------*/
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 (defgroup flyspell nil
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 "Spellchecking on the fly."
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52 :tag "FlySpell"
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 :prefix "flyspell-"
22648
3b7f1e026beb *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 22612
diff changeset
54 :group 'processes
3b7f1e026beb *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 22612
diff changeset
55 :version "20.3")
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 ;* User variables ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 (defcustom flyspell-highlight-flag t
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
61 "*How Flyspell should indicate misspelled words.
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
62 Non-nil means use highlight, nil means use minibuffer messages."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 :group 'flyspell
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 :type 'boolean)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
66 (defcustom flyspell-mark-duplications-flag t
22962
f4509374e88e (flyspell-command-hook): Option deleted.
Richard M. Stallman <rms@gnu.org>
parents: 22946
diff changeset
67 "*Non-nil means Flyspell reports a repeated word as an error."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 :group 'flyspell
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 :type 'boolean)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 (defcustom flyspell-sort-corrections t
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 "*Non-nil means, sort the corrections alphabetically before popping them."
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73 :group 'flyspell
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
74 :type 'boolean)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
76 (defcustom flyspell-duplicate-distance 10000
22962
f4509374e88e (flyspell-command-hook): Option deleted.
Richard M. Stallman <rms@gnu.org>
parents: 22946
diff changeset
77 "*The maximum distance for finding duplicates of unrecognized words.
f4509374e88e (flyspell-command-hook): Option deleted.
Richard M. Stallman <rms@gnu.org>
parents: 22946
diff changeset
78 This applies to the feature that when a word is not found in the dictionary,
f4509374e88e (flyspell-command-hook): Option deleted.
Richard M. Stallman <rms@gnu.org>
parents: 22946
diff changeset
79 if the same spelling occurs elsewhere in the buffer,
f4509374e88e (flyspell-command-hook): Option deleted.
Richard M. Stallman <rms@gnu.org>
parents: 22946
diff changeset
80 Flyspell uses a different face (`flyspell-duplicate-face') to highlight it.
f4509374e88e (flyspell-command-hook): Option deleted.
Richard M. Stallman <rms@gnu.org>
parents: 22946
diff changeset
81 This variable specifies how far to search to find such a duplicate.
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
82 -1 means no limit (search the whole buffer).
22962
f4509374e88e (flyspell-command-hook): Option deleted.
Richard M. Stallman <rms@gnu.org>
parents: 22946
diff changeset
83 0 means do not search for duplicate unrecognized spellings."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 :group 'flyspell
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 :type 'number)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 (defcustom flyspell-delay 3
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
88 "*The number of seconds to wait before checking, after a \"delayed\" command."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 :group 'flyspell
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 :type 'number)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 (defcustom flyspell-persistent-highlight t
22946
cfde96067373 (flyspell-persistent-highlight): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 22891
diff changeset
93 "*Non-nil means misspelled words remain highlighted until corrected.
cfde96067373 (flyspell-persistent-highlight): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 22891
diff changeset
94 If this variable is nil, only the most recently detected misspelled word
cfde96067373 (flyspell-persistent-highlight): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 22891
diff changeset
95 is highlighted."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 :group 'flyspell
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97 :type 'boolean)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99 (defcustom flyspell-highlight-properties t
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
100 "*Non-nil means highlight incorrect words even if a property exists for this word."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 :group 'flyspell
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 :type 'boolean)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104 (defcustom flyspell-default-delayed-commands
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105 '(self-insert-command
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106 delete-backward-char
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107 delete-char)
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
108 "The standard list of delayed commands for Flyspell.
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
109 See `flyspell-delayed-commands'."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110 :group 'flyspell
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 :type '(repeat (symbol)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
113 (defcustom flyspell-delayed-commands nil
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
114 "List of commands that are \"delayed\" for Flyspell mode.
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
115 After these commands, Flyspell checking is delayed for a short time,
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
116 whose length is specified by `flyspell-delay'."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 :group 'flyspell
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118 :type '(repeat (symbol)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120 (defcustom flyspell-issue-welcome-flag t
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
121 "*Non-nil means that Flyspell should display a welcome message when started."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122 :group 'flyspell
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123 :type 'boolean)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125 (defcustom flyspell-consider-dash-as-word-delimiter-flag nil
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 "*Non-nil means that the `-' char is considered as a word delimiter."
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127 :group 'flyspell
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128 :type 'boolean)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
129
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130 (defcustom flyspell-incorrect-hook nil
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
131 "*List of functions to be called when incorrect words are encountered.
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
132 Each function is given two arguments: the beginning and the end
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
133 of the incorrect region."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134 :group 'flyspell)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135
23179
72461ea3cfc8 (flyspell-mode): Do nothing if mode
Karl Heuer <kwzh@gnu.org>
parents: 22963
diff changeset
136 (defcustom flyspell-multi-language-p nil
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
137 "*Non-nil means that Flyspell can be used with multiple languages.
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
138 This mode works by starting a separate Ispell process for each buffer,
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
139 so that each buffer can use its own language."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 :group 'flyspell
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141 :type 'boolean)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 ;* Mode specific options */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145 ;* ------------------------------------------------------------- */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146 ;* Mode specific options enable users to disable flyspell on */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 ;* certain word depending of the emacs mode. For instance, when */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 ;* using flyspell with mail-mode add the following expression */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149 ;* in your .emacs file: */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150 ;* (add-hook 'mail-mode */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 ;* '(lambda () (setq flyspell-generic-check-word-p */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152 ;* 'mail-mode-flyspell-verify))) */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 (defvar flyspell-generic-check-word-p nil
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155 "Function providing per-mode customization over which words are flyspelled.
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
156 Returns t to continue checking, nil otherwise.
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
157 Flyspell mode sets this variable to whatever is the `flyspell-mode-predicate'
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
158 property of the major mode name.")
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159 (make-variable-buffer-local 'flyspell-generic-check-word-p)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
161 (put 'mail-mode 'flyspell-mode-predicate 'mail-mode-flyspell-verify)
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
162 (put 'message-mode 'flyspell-mode-predicate 'mail-mode-flyspell-verify)
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 (defun mail-mode-flyspell-verify ()
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
164 "This function is used for `flyspell-generic-check-word-p' in Mail mode."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165 (save-excursion
22612
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
166 (or (progn
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
167 (beginning-of-line)
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
168 (looking-at "Subject:"))
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
169 (not (or (re-search-forward mail-header-separator nil t)
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
170 (re-search-backward message-signature-separator nil t)
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
171 (progn
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
172 (beginning-of-line)
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
173 (looking-at "[>}|]")))))))
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
174
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
175 (put 'texinfo-mode 'flyspell-mode-predicate 'texinfo-mode-flyspell-verify)
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176 (defun texinfo-mode-flyspell-verify ()
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
177 "This function is used for `flyspell-generic-check-word-p' in Texinfo mode."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
178 (save-excursion
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179 (forward-word -1)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180 (not (looking-at "@"))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
181
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
183 ;* Overlay compatibility */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
184 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
185 (autoload 'make-overlay "overlay" "" t)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186 (autoload 'move-overlay "overlay" "" t)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 (autoload 'overlayp "overlay" "" t)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 (autoload 'overlay-properties "overlay" "" t)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 (autoload 'overlays-in "overlay" "" t)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 (autoload 'delete-overlay "overlay" "" t)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191 (autoload 'overlays-at "overlay" "" t)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192 (autoload 'overlay-put "overlay" "" t)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193 (autoload 'overlay-get "overlay" "" t)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 ;* Which emacs are we currently running */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
198 (defvar flyspell-emacs
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 (cond
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 ((string-match "XEmacs" emacs-version)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 'xemacs)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202 (t
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203 'emacs))
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
204 "The type of Emacs we are currently running.")
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205
23943
7555c77bc4f0 If local-maps work, don't put
Richard M. Stallman <rms@gnu.org>
parents: 23788
diff changeset
206 (defvar flyspell-use-local-map
7555c77bc4f0 If local-maps work, don't put
Richard M. Stallman <rms@gnu.org>
parents: 23788
diff changeset
207 (or (eq flyspell-emacs 'xemacs)
7555c77bc4f0 If local-maps work, don't put
Richard M. Stallman <rms@gnu.org>
parents: 23788
diff changeset
208 (not (string< emacs-version "20"))))
7555c77bc4f0 If local-maps work, don't put
Richard M. Stallman <rms@gnu.org>
parents: 23788
diff changeset
209
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211 ;* The minor mode declaration. */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213 (defvar flyspell-mode nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214 (make-variable-buffer-local 'flyspell-mode)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
215
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216 (defvar flyspell-mode-map (make-sparse-keymap))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217 (defvar flyspell-mouse-map (make-sparse-keymap))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219 (or (assoc 'flyspell-mode minor-mode-alist)
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
220 (setq minor-mode-alist
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
221 (cons '(flyspell-mode " Fly") minor-mode-alist)))
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222
23943
7555c77bc4f0 If local-maps work, don't put
Richard M. Stallman <rms@gnu.org>
parents: 23788
diff changeset
223 ;; mouse or local-map bindings
22612
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
224 (cond
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
225 ((eq flyspell-emacs 'xemacs)
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
226 (define-key flyspell-mouse-map [(button2)]
23943
7555c77bc4f0 If local-maps work, don't put
Richard M. Stallman <rms@gnu.org>
parents: 23788
diff changeset
227 (function flyspell-correct-word/mouse-keymap))
7555c77bc4f0 If local-maps work, don't put
Richard M. Stallman <rms@gnu.org>
parents: 23788
diff changeset
228 (define-key flyspell-mouse-map "\M-\t" 'flyspell-auto-correct-word))
7555c77bc4f0 If local-maps work, don't put
Richard M. Stallman <rms@gnu.org>
parents: 23788
diff changeset
229 (flyspell-use-local-map
7555c77bc4f0 If local-maps work, don't put
Richard M. Stallman <rms@gnu.org>
parents: 23788
diff changeset
230 (define-key flyspell-mouse-map [(mouse-2)]
7555c77bc4f0 If local-maps work, don't put
Richard M. Stallman <rms@gnu.org>
parents: 23788
diff changeset
231 (function flyspell-correct-word/mouse-keymap))
7555c77bc4f0 If local-maps work, don't put
Richard M. Stallman <rms@gnu.org>
parents: 23788
diff changeset
232 (define-key flyspell-mouse-map "\M-\t" 'flyspell-auto-correct-word))
22612
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
233 (t
23943
7555c77bc4f0 If local-maps work, don't put
Richard M. Stallman <rms@gnu.org>
parents: 23788
diff changeset
234 (or (assoc 'flyspell-mode minor-mode-map-alist)
7555c77bc4f0 If local-maps work, don't put
Richard M. Stallman <rms@gnu.org>
parents: 23788
diff changeset
235 (setq minor-mode-map-alist
7555c77bc4f0 If local-maps work, don't put
Richard M. Stallman <rms@gnu.org>
parents: 23788
diff changeset
236 (cons (cons 'flyspell-mode flyspell-mode-map)
7555c77bc4f0 If local-maps work, don't put
Richard M. Stallman <rms@gnu.org>
parents: 23788
diff changeset
237 minor-mode-map-alist)))
7555c77bc4f0 If local-maps work, don't put
Richard M. Stallman <rms@gnu.org>
parents: 23788
diff changeset
238 (define-key flyspell-mode-map "\M-\t" 'flyspell-auto-correct-word)
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239 (define-key flyspell-mode-map [(mouse-2)]
22612
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
240 (function flyspell-correct-word/local-keymap))))
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242 ;; the name of the overlay property that defines the keymap
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243 (defvar flyspell-overlay-keymap-property-name
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244 (if (string-match "19.*XEmacs" emacs-version)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 'keymap
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246 'local-map))
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
247
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 ;* Highlighting */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250 ;*---------------------------------------------------------------------*/
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
251 (defface flyspell-incorrect-face
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
252 '((((class color)) (:foreground "OrangeRed" :bold t :underline t))
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
253 (t (:bold t)))
22962
f4509374e88e (flyspell-command-hook): Option deleted.
Richard M. Stallman <rms@gnu.org>
parents: 22946
diff changeset
254 "Face used for marking a misspelled word in Flyspell."
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
255 :group 'flyspell)
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
256
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
257 (defface flyspell-duplicate-face
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
258 '((((class color)) (:foreground "Gold3" :bold t :underline t))
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
259 (t (:bold t)))
22962
f4509374e88e (flyspell-command-hook): Option deleted.
Richard M. Stallman <rms@gnu.org>
parents: 22946
diff changeset
260 "Face used for marking a misspelled word that appears twice in the buffer.
f4509374e88e (flyspell-command-hook): Option deleted.
Richard M. Stallman <rms@gnu.org>
parents: 22946
diff changeset
261 See also `flyspell-duplicate-distance'."
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
262 :group 'flyspell)
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
263
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264 (defvar flyspell-overlay nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267 ;* flyspell-mode ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
268 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269 ;;;###autoload
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270 (defun flyspell-mode (&optional arg)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271 "Minor mode performing on-the-fly spelling checking.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 Ispell is automatically spawned on background for each entered words.
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
273 The default flyspell behavior is to highlight incorrect words.
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
274 With no argument, this command toggles Flyspell mode.
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
275 With a prefix argument ARG, turn Flyspell minor mode on iff ARG is positive.
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 Bindings:
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278 \\[ispell-word]: correct words (using Ispell).
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279 \\[flyspell-auto-correct-word]: automatically correct word.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280 \\[flyspell-correct-word] (or mouse-2): popup correct words.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 Hooks:
23234
b0e173658e2e (flyspell-mode-on): Make the
Karl Heuer <kwzh@gnu.org>
parents: 23233
diff changeset
283 flyspell-mode-hook is run after flyspell is entered.
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285 Remark:
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286 `flyspell-mode' uses `ispell-mode'. Thus all Ispell options are
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287 valid. For instance, a personal dictionary can be used by
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
288 invoking `ispell-change-dictionary'.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
289
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290 Consider using the `ispell-parser' to check your text. For instance
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 consider adding:
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
292 \(add-hook 'tex-mode-hook (function (lambda () (setq ispell-parser 'tex))))
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 in your .emacs file.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 flyspell-region checks all words inside a region.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297 flyspell-buffer checks the whole buffer."
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 (interactive "P")
23179
72461ea3cfc8 (flyspell-mode): Do nothing if mode
Karl Heuer <kwzh@gnu.org>
parents: 22963
diff changeset
299 (let ((old-flyspell-mode flyspell-mode))
72461ea3cfc8 (flyspell-mode): Do nothing if mode
Karl Heuer <kwzh@gnu.org>
parents: 22963
diff changeset
300 ;; Mark the mode as on or off.
72461ea3cfc8 (flyspell-mode): Do nothing if mode
Karl Heuer <kwzh@gnu.org>
parents: 22963
diff changeset
301 (setq flyspell-mode (not (or (and (null arg) flyspell-mode)
72461ea3cfc8 (flyspell-mode): Do nothing if mode
Karl Heuer <kwzh@gnu.org>
parents: 22963
diff changeset
302 (<= (prefix-numeric-value arg) 0))))
72461ea3cfc8 (flyspell-mode): Do nothing if mode
Karl Heuer <kwzh@gnu.org>
parents: 22963
diff changeset
303 ;; Do the real work.
72461ea3cfc8 (flyspell-mode): Do nothing if mode
Karl Heuer <kwzh@gnu.org>
parents: 22963
diff changeset
304 (unless (eq flyspell-mode old-flyspell-mode)
72461ea3cfc8 (flyspell-mode): Do nothing if mode
Karl Heuer <kwzh@gnu.org>
parents: 22963
diff changeset
305 (if flyspell-mode
72461ea3cfc8 (flyspell-mode): Do nothing if mode
Karl Heuer <kwzh@gnu.org>
parents: 22963
diff changeset
306 (flyspell-mode-on)
72461ea3cfc8 (flyspell-mode): Do nothing if mode
Karl Heuer <kwzh@gnu.org>
parents: 22963
diff changeset
307 (flyspell-mode-off))
72461ea3cfc8 (flyspell-mode): Do nothing if mode
Karl Heuer <kwzh@gnu.org>
parents: 22963
diff changeset
308 ;; Force modeline redisplay.
72461ea3cfc8 (flyspell-mode): Do nothing if mode
Karl Heuer <kwzh@gnu.org>
parents: 22963
diff changeset
309 (set-buffer-modified-p (buffer-modified-p)))))
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312 ;* flyspell-mode-on ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
314 (defun flyspell-mode-on ()
23234
b0e173658e2e (flyspell-mode-on): Make the
Karl Heuer <kwzh@gnu.org>
parents: 23233
diff changeset
315 "Turn Flyspell mode on. Do not use this; use `flyspell-mode' instead."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
316 (setq ispell-highlight-face 'flyspell-incorrect-face)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
317 ;; ispell initialization
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
318 (if flyspell-multi-language-p
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319 (progn
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
320 (make-variable-buffer-local 'ispell-dictionary)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
321 (make-variable-buffer-local 'ispell-process)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
322 (make-variable-buffer-local 'ispell-filter)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
323 (make-variable-buffer-local 'ispell-filter-continue)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
324 (make-variable-buffer-local 'ispell-process-directory)
23234
b0e173658e2e (flyspell-mode-on): Make the
Karl Heuer <kwzh@gnu.org>
parents: 23233
diff changeset
325 (make-variable-buffer-local 'ispell-parser)
b0e173658e2e (flyspell-mode-on): Make the
Karl Heuer <kwzh@gnu.org>
parents: 23233
diff changeset
326 (put 'ispell-dictionary 'permanent-local t)
b0e173658e2e (flyspell-mode-on): Make the
Karl Heuer <kwzh@gnu.org>
parents: 23233
diff changeset
327 (put 'ispell-process 'permanent-local t)
b0e173658e2e (flyspell-mode-on): Make the
Karl Heuer <kwzh@gnu.org>
parents: 23233
diff changeset
328 (put 'ispell-filter 'permanent-local t)
b0e173658e2e (flyspell-mode-on): Make the
Karl Heuer <kwzh@gnu.org>
parents: 23233
diff changeset
329 (put 'ispell-filter-continue 'permanent-local t)
b0e173658e2e (flyspell-mode-on): Make the
Karl Heuer <kwzh@gnu.org>
parents: 23233
diff changeset
330 (put 'ispell-process-directory 'permanent-local t)
b0e173658e2e (flyspell-mode-on): Make the
Karl Heuer <kwzh@gnu.org>
parents: 23233
diff changeset
331 (put 'ispell-parser 'permanent-local t)))
23788
764497f1c6a0 (flyspell-check-word-p): Don't delay inside a kbd macro.
Richard M. Stallman <rms@gnu.org>
parents: 23234
diff changeset
332 ;; We put the `flyspell-delayed' property on some commands.
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333 (flyspell-delay-commands)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
334 ;; we bound flyspell action to post-command hook
22962
f4509374e88e (flyspell-command-hook): Option deleted.
Richard M. Stallman <rms@gnu.org>
parents: 22946
diff changeset
335 (make-local-hook 'post-command-hook)
f4509374e88e (flyspell-command-hook): Option deleted.
Richard M. Stallman <rms@gnu.org>
parents: 22946
diff changeset
336 (add-hook 'post-command-hook (function flyspell-post-command-hook) t t)
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337 ;; we bound flyspell action to pre-command hook
22962
f4509374e88e (flyspell-command-hook): Option deleted.
Richard M. Stallman <rms@gnu.org>
parents: 22946
diff changeset
338 (make-local-hook 'pre-command-hook)
f4509374e88e (flyspell-command-hook): Option deleted.
Richard M. Stallman <rms@gnu.org>
parents: 22946
diff changeset
339 (add-hook 'pre-command-hook (function flyspell-pre-command-hook) t t)
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
340
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
341 ;; Set flyspell-generic-check-word-p based on the major mode.
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
342 (let ((mode-predicate (get major-mode 'flyspell-mode-predicate)))
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
343 (if mode-predicate
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
344 (setq flyspell-generic-check-word-p mode-predicate)))
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
345
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346 ;; the welcome message
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347 (if flyspell-issue-welcome-flag
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
348 (let ((binding (where-is-internal 'flyspell-auto-correct-word
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
349 nil 'non-ascii)))
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
350 (message
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
351 (if binding
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
352 (format "Welcome to flyspell. Use %s or Mouse-2 to correct words."
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
353 (key-description binding))
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
354 "Welcome to flyspell. Use Mouse-2 to correct words."))))
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
355 ;; we have to kill the flyspell process when the buffer is deleted.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356 ;; (thanks to Jeff Miller and Roland Rosenfeld who sent me this
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357 ;; improvement).
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358 (add-hook 'kill-buffer-hook
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359 '(lambda ()
23233
b31869394e03 (flyspell-mode-on): fix kill-buffer-hook
Karl Heuer <kwzh@gnu.org>
parents: 23179
diff changeset
360 (if (and flyspell-multi-language-p ispell-process)
b31869394e03 (flyspell-mode-on): fix kill-buffer-hook
Karl Heuer <kwzh@gnu.org>
parents: 23179
diff changeset
361 (ispell-kill-ispell t))))
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362 ;; we end with the flyspell hooks
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363 (run-hooks 'flyspell-mode-hook))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
364
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366 ;* flyspell-delay-commands ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
367 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368 (defun flyspell-delay-commands ()
23234
b0e173658e2e (flyspell-mode-on): Make the
Karl Heuer <kwzh@gnu.org>
parents: 23233
diff changeset
369 "Install the standard set of Flyspell delayed commands."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
370 (mapcar 'flyspell-delay-command flyspell-default-delayed-commands)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
371 (mapcar 'flyspell-delay-command flyspell-delayed-commands))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374 ;* flyspell-delay-command ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376 (defun flyspell-delay-command (command)
23234
b0e173658e2e (flyspell-mode-on): Make the
Karl Heuer <kwzh@gnu.org>
parents: 23233
diff changeset
377 "Set COMMAND to be delayed, for Flyspell.
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378 When flyspell `post-command-hook' is invoked because a delayed command
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379 as been used the current word is not immediatly checked.
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
380 It will be checked only after `flyspell-delay' seconds."
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
381 (interactive "SDelay Flyspell after Command: ")
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382 (put command 'flyspell-delayed t))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385 ;* flyspell-ignore-commands ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387 (defun flyspell-ignore-commands ()
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
388 "This is an obsolete function, use `flyspell-delay-commands' instead."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 (flyspell-delay-commands))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
390
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392 ;* flyspell-ignore-command ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394 (defun flyspell-ignore-command (command)
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
395 "This is an obsolete function, use `flyspell-delay-command' instead.
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396 COMMAND is the name of the command to be delayed."
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 (flyspell-delay-command command))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 (make-obsolete 'flyspell-ignore-commands 'flyspell-delay-commands)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400 (make-obsolete 'flyspell-ignore-command 'flyspell-delay-command)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 ;* flyspell-word-cache ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 (defvar flyspell-word-cache-start nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 (defvar flyspell-word-cache-end nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407 (defvar flyspell-word-cache-word nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408 (make-variable-buffer-local 'flyspell-word-cache-start)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 (make-variable-buffer-local 'flyspell-word-cache-end)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 (make-variable-buffer-local 'flyspell-word-cache-word)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413 ;* The flyspell pre-hook, store the current position. In the */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 ;* post command hook, we will check, if the word at this position */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415 ;* has to be spell checked. */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417 (defvar flyspell-pre-buffer nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 (defvar flyspell-pre-point nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421 ;* flyspell-pre-command-hook ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423 (defun flyspell-pre-command-hook ()
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
424 "Save the current buffer and point for Flyspell's post-command hook."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425 (interactive)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 (setq flyspell-pre-buffer (current-buffer))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427 (setq flyspell-pre-point (point)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430 ;* flyspell-mode-off ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
431 ;*---------------------------------------------------------------------*/
23234
b0e173658e2e (flyspell-mode-on): Make the
Karl Heuer <kwzh@gnu.org>
parents: 23233
diff changeset
432 ;;;###autoload
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
433 (defun flyspell-mode-off ()
23234
b0e173658e2e (flyspell-mode-on): Make the
Karl Heuer <kwzh@gnu.org>
parents: 23233
diff changeset
434 "Turn Flyspell mode off."
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
435 ;; If we have an Ispell process for each buffer,
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
436 ;; kill the one for this buffer.
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
437 (if flyspell-multi-language-p
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
438 (ispell-kill-ispell t))
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
439 ;; we remove the hooks
22962
f4509374e88e (flyspell-command-hook): Option deleted.
Richard M. Stallman <rms@gnu.org>
parents: 22946
diff changeset
440 (remove-hook 'post-command-hook (function flyspell-post-command-hook) t)
f4509374e88e (flyspell-command-hook): Option deleted.
Richard M. Stallman <rms@gnu.org>
parents: 22946
diff changeset
441 (remove-hook 'pre-command-hook (function flyspell-pre-command-hook) t)
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
442 ;; we remove all the flyspell hilightings
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
443 (flyspell-delete-all-overlays)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
444 ;; we have to erase pre cache variables
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
445 (setq flyspell-pre-buffer nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
446 (setq flyspell-pre-point nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
447 ;; we mark the mode as killed
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448 (setq flyspell-mode nil))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
451 ;* flyspell-check-word-p ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453 (defun flyspell-check-word-p ()
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
454 "Return t when the word at `point' has to be checked.
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
455 The answer depends of several criteria.
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
456 Mostly we check word delimiters."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457 (cond
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458 ((<= (- (point-max) 1) (point-min))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459 ;; the buffer is not filled enough
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460 nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461 ((not (and (symbolp this-command) (get this-command 'flyspell-delayed)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 ;; the current command is not delayed, that
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463 ;; is that we must check the word now
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 t)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 ((and (> (point) (point-min))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466 (save-excursion
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467 (backward-char 1)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468 (and (looking-at (flyspell-get-not-casechars))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 (or flyspell-consider-dash-as-word-delimiter-flag
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470 (not (looking-at "\\-"))))))
22962
f4509374e88e (flyspell-command-hook): Option deleted.
Richard M. Stallman <rms@gnu.org>
parents: 22946
diff changeset
471 ;; yes because we have reached or typed a word delimiter.
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472 t)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473 ((not (integerp flyspell-delay))
22962
f4509374e88e (flyspell-command-hook): Option deleted.
Richard M. Stallman <rms@gnu.org>
parents: 22946
diff changeset
474 ;; yes because the user had set up a no-delay configuration.
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475 t)
23788
764497f1c6a0 (flyspell-check-word-p): Don't delay inside a kbd macro.
Richard M. Stallman <rms@gnu.org>
parents: 23234
diff changeset
476 (executing-kbd-macro
764497f1c6a0 (flyspell-check-word-p): Don't delay inside a kbd macro.
Richard M. Stallman <rms@gnu.org>
parents: 23234
diff changeset
477 ;; Don't delay inside a keyboard macro.
764497f1c6a0 (flyspell-check-word-p): Don't delay inside a kbd macro.
Richard M. Stallman <rms@gnu.org>
parents: 23234
diff changeset
478 t)
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479 (t
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 (if (fboundp 'about-xemacs)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481 (sit-for flyspell-delay nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 (sit-for flyspell-delay 0 nil)))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
485 ;* flyspell-check-pre-word-p ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487 (defun flyspell-check-pre-word-p ()
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
488 "Return non-nil if we should to check the word before point.
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
489 More precisely, it applies to the word that was before point
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
490 before the current command."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491 (cond
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 ((or (not (numberp flyspell-pre-point))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493 (not (bufferp flyspell-pre-buffer))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 (not (buffer-live-p flyspell-pre-buffer)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 nil)
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
496 ((or (and (= flyspell-pre-point (- (point) 1))
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
497 (eq (char-syntax (char-after flyspell-pre-point)) ?w))
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 (= flyspell-pre-point (point))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499 (= flyspell-pre-point (+ (point) 1)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 ((not (eq (current-buffer) flyspell-pre-buffer))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502 t)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 ((not (and (numberp flyspell-word-cache-start)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 (numberp flyspell-word-cache-end)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 t)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 (t
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507 (or (< flyspell-pre-point flyspell-word-cache-start)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508 (> flyspell-pre-point flyspell-word-cache-end)))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511 ;* flyspell-post-command-hook ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 (defun flyspell-post-command-hook ()
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 "The `post-command-hook' used by flyspell to check a word in-the-fly."
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515 (interactive)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516 (if (flyspell-check-word-p)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
517 (flyspell-word))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518 (if (flyspell-check-pre-word-p)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519 (save-excursion
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 (set-buffer flyspell-pre-buffer)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521 (save-excursion
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
522 (goto-char flyspell-pre-point)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
523 (flyspell-word)))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
524
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
526 ;* flyspell-word ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
528 (defun flyspell-word (&optional following)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
529 "Spell check a word."
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
530 (interactive (list current-prefix-arg))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
531 (if (interactive-p)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
532 (setq following ispell-following-word))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
533 (save-excursion
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
534 (ispell-accept-buffer-local-defs) ; use the correct dictionary
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
535 (let ((cursor-location (point)) ; retain cursor location
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536 (word (flyspell-get-word following))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537 start end poss)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
538 (if (or (eq word nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
539 (and (fboundp flyspell-generic-check-word-p)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
540 (not (funcall flyspell-generic-check-word-p))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
541 t
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
542 (progn
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
543 ;; destructure return word info list.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
544 (setq start (car (cdr word))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
545 end (car (cdr (cdr word)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
546 word (car word))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
547 ;; before checking in the directory, we check for doublons.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
548 (cond
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
549 ((and flyspell-mark-duplications-flag
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
550 (save-excursion
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
551 (goto-char start)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
552 (word-search-backward word
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
553 (- start
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
554 (+ 1 (- end start)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
555 t)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
556 ;; yes, this is a doublon
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
557 (flyspell-highlight-incorrect-region start end))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
558 ((and (eq flyspell-word-cache-start start)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
559 (eq flyspell-word-cache-end end)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
560 (string-equal flyspell-word-cache-word word))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561 ;; this word had been already checked, we skip
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
563 ((and (eq ispell-parser 'tex)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
564 (flyspell-tex-command-p word))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
565 ;; this is a correct word (because a tex command)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
566 (flyspell-unhighlight-at start)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
567 (if (> end start)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
568 (flyspell-unhighlight-at (- end 1)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
569 t)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
570 (t
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571 ;; we setup the cache
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572 (setq flyspell-word-cache-start start)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
573 (setq flyspell-word-cache-end end)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574 (setq flyspell-word-cache-word word)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
575 ;; now check spelling of word.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
576 (process-send-string ispell-process "%\n")
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577 ;; put in verbose mode
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
578 (process-send-string ispell-process
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579 (concat "^" word "\n"))
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
580 ;; we mark the ispell process so it can be killed
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
581 ;; when emacs is exited without query
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
582 (if (fboundp 'process-kill-without-query)
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
583 (process-kill-without-query ispell-process))
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
584 ;; wait until ispell has processed word
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
585 (while (progn
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586 (accept-process-output ispell-process)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
587 (not (string= "" (car ispell-filter)))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
588 ;; (process-send-string ispell-process "!\n")
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
589 ;; back to terse mode.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590 (setq ispell-filter (cdr ispell-filter))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591 (if (listp ispell-filter)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
592 (setq poss (ispell-parse-output (car ispell-filter))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
593 (cond ((eq poss t)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
594 ;; correct
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595 (flyspell-unhighlight-at start)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
596 (if (> end start)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
597 (flyspell-unhighlight-at (- end 1)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
598 t)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
599 ((and (stringp poss) flyspell-highlight-flag)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600 ;; correct
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601 (flyspell-unhighlight-at start)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
602 (if (> end start)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
603 (flyspell-unhighlight-at (- end 1)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
604 t)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
605 ((null poss)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
606 (flyspell-unhighlight-at start)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
607 (if (> end start)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608 (flyspell-unhighlight-at (- end 1)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 (message "Error in ispell process"))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
610 ((or (and (< flyspell-duplicate-distance 0)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
611 (or (save-excursion
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
612 (goto-char start)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
613 (word-search-backward word
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
614 (point-min)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
615 t))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
616 (save-excursion
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
617 (goto-char end)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
618 (word-search-forward word
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
619 (point-max)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
620 t))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
621 (and (> flyspell-duplicate-distance 0)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
622 (or (save-excursion
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
623 (goto-char start)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624 (word-search-backward
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
625 word
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626 (- start
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627 flyspell-duplicate-distance)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
628 t))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629 (save-excursion
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
630 (goto-char end)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631 (word-search-forward
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
632 word
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
633 (+ end
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634 flyspell-duplicate-distance)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635 t)))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636 (if flyspell-highlight-flag
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 (flyspell-highlight-duplicate-region start end)
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
638 (message (format "duplicate `%s'" word))))
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
639 (t
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640 ;; incorrect highlight the location
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641 (if flyspell-highlight-flag
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
642 (flyspell-highlight-incorrect-region start end)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
643 (message (format "mispelling `%s'" word)))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644 (goto-char cursor-location) ; return to original location
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 (if ispell-quit (setq ispell-quit nil)))))))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648 ;* flyspell-tex-command-p ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 (defun flyspell-tex-command-p (word)
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
651 "Return t if WORD is a TeX command."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652 (eq (aref word 0) ?\\))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
655 ;* flyspell-casechars-cache ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
656 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
657 (defvar flyspell-casechars-cache nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
658 (defvar flyspell-ispell-casechars-cache nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659 (make-variable-buffer-local 'flyspell-casechars-cache)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660 (make-variable-buffer-local 'flyspell-ispell-casechars-cache)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663 ;* flyspell-get-casechars ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
664 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
665 (defun flyspell-get-casechars ()
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
666 "This function builds a string that is the regexp of word chars.
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
667 In order to avoid one useless string construction,
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
668 this function changes the last char of the `ispell-casechars' string."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669 (let ((ispell-casechars (ispell-get-casechars)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670 (cond
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671 ((eq ispell-casechars flyspell-ispell-casechars-cache)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672 flyspell-casechars-cache)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673 ((not (eq ispell-parser 'tex))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674 (setq flyspell-ispell-casechars-cache ispell-casechars)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
675 (setq flyspell-casechars-cache
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
676 (concat (substring ispell-casechars
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
677 0
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
678 (- (length ispell-casechars) 1))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
679 "{}]"))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
680 flyspell-casechars-cache)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
681 (t
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
682 (setq flyspell-ispell-casechars-cache ispell-casechars)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
683 (setq flyspell-casechars-cache ispell-casechars)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
684 flyspell-casechars-cache))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
685
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
686 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
687 ;* flyspell-get-not-casechars-cache ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
688 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
689 (defvar flyspell-not-casechars-cache nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
690 (defvar flyspell-ispell-not-casechars-cache nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
691 (make-variable-buffer-local 'flyspell-not-casechars-cache)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
692 (make-variable-buffer-local 'flyspell-ispell-not-casechars-cache)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
693
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
694 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
695 ;* flyspell-get-not-casechars ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
696 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
697 (defun flyspell-get-not-casechars ()
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
698 "This function builds a string that is the regexp of non-word chars."
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
699 (let ((ispell-not-casechars (ispell-get-not-casechars)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
700 (cond
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
701 ((eq ispell-not-casechars flyspell-ispell-not-casechars-cache)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
702 flyspell-not-casechars-cache)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703 ((not (eq ispell-parser 'tex))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
704 (setq flyspell-ispell-not-casechars-cache ispell-not-casechars)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
705 (setq flyspell-not-casechars-cache
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
706 (concat (substring ispell-not-casechars
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
707 0
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
708 (- (length ispell-not-casechars) 1))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
709 "{}]"))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
710 flyspell-not-casechars-cache)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
711 (t
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
712 (setq flyspell-ispell-not-casechars-cache ispell-not-casechars)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
713 (setq flyspell-not-casechars-cache ispell-not-casechars)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
714 flyspell-not-casechars-cache))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
715
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
716 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
717 ;* flyspell-get-word ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
718 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
719 (defun flyspell-get-word (following)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
720 "Return the word for spell-checking according to Ispell syntax.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
721 If optional argument FOLLOWING is non-nil or if `ispell-following-word'
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
722 is non-nil when called interactively, then the following word
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
723 \(rather than preceding\) is checked when the cursor is not over a word.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
724 Optional second argument contains otherchars that can be included in word
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
725 many times.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
726
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
727 Word syntax described by `ispell-dictionary-alist' (which see)."
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
728 (let* ((flyspell-casechars (flyspell-get-casechars))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
729 (flyspell-not-casechars (flyspell-get-not-casechars))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
730 (ispell-otherchars (ispell-get-otherchars))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
731 (ispell-many-otherchars-p (ispell-get-many-otherchars-p))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
732 (word-regexp (concat flyspell-casechars
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
733 "+\\("
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
734 ispell-otherchars
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
735 "?"
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
736 flyspell-casechars
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
737 "+\\)"
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
738 (if ispell-many-otherchars-p
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
739 "*" "?")))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
740 (tex-prelude "[\\\\{]")
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
741 (tex-regexp (if (eq ispell-parser 'tex)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
742 (concat tex-prelude "?" word-regexp "}?")
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
743 word-regexp))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
744
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
745 did-it-once
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
746 start end word)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
747 ;; find the word
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
748 (if (not (or (looking-at flyspell-casechars)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
749 (and (eq ispell-parser 'tex)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
750 (looking-at tex-prelude))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
751 (if following
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
752 (re-search-forward flyspell-casechars (point-max) t)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
753 (re-search-backward flyspell-casechars (point-min) t)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
754 ;; move to front of word
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
755 (re-search-backward flyspell-not-casechars (point-min) 'start)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
756 (let ((pos nil))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
757 (while (and (looking-at ispell-otherchars)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
758 (not (bobp))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
759 (or (not did-it-once)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
760 ispell-many-otherchars-p)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
761 (not (eq pos (point))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
762 (setq pos (point))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
763 (setq did-it-once t)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764 (backward-char 1)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
765 (if (looking-at flyspell-casechars)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
766 (re-search-backward flyspell-not-casechars (point-min) 'move)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
767 (backward-char -1))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
768 ;; Now mark the word and save to string.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
769 (if (eq (re-search-forward tex-regexp (point-max) t) nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
770 nil
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
771 (progn
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
772 (setq start (match-beginning 0)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
773 end (point)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
774 word (buffer-substring start end))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
775 (list word start end)))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
776
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
777 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
778 ;* flyspell-region ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
779 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
780 (defun flyspell-region (beg end)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
781 "Flyspell text between BEG and END."
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
782 (interactive "r")
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
783 (save-excursion
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
784 (if (> beg end)
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
785 (let ((old beg))
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
786 (setq beg end)
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
787 (setq end old)))
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
788 (goto-char beg)
22612
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
789 (let ((count 0))
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
790 (while (< (point) end)
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
791 (if (= count 100)
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
792 (progn
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
793 (message "Spell Checking...%d%%"
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
794 (* 100 (/ (float (- (point) beg)) (- end beg))))
22612
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
795 (setq count 0))
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
796 (setq count (+ 1 count)))
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
797 (flyspell-word)
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
798 (let ((cur (point)))
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
799 (forward-word 1)
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
800 (if (and (< (point) end) (> (point) (+ cur 1)))
6def3da74c7c Delete defcustom definition.
Richard M. Stallman <rms@gnu.org>
parents: 22611
diff changeset
801 (backward-char 1)))))
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
802 (backward-char 1)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
803 (message "Spell Checking...done")
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
804 (flyspell-word)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
805
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
806 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
807 ;* flyspell-buffer ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
808 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
809 (defun flyspell-buffer ()
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
810 "Flyspell whole buffer."
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
811 (interactive)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
812 (flyspell-region (point-min) (point-max)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
813
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
814 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
815 ;* flyspell-overlay-p ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
816 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
817 (defun flyspell-overlay-p (o)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
818 "A predicate that return true iff O is an overlay used by flyspell."
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
819 (and (overlayp o) (overlay-get o 'flyspell-overlay)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
820
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
821 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
822 ;* flyspell-delete-all-overlays ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
823 ;* ------------------------------------------------------------- */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
824 ;* Remove all the overlays introduced by flyspell. */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
825 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
826 (defun flyspell-delete-all-overlays ()
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
827 "Delete all the overlays used by flyspell."
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
828 (let ((l (overlays-in (point-min) (point-max))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
829 (while (consp l)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
830 (progn
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
831 (if (flyspell-overlay-p (car l))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
832 (delete-overlay (car l)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
833 (setq l (cdr l))))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
834
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
835 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
836 ;* flyspell-unhighlight-at ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
837 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
838 (defun flyspell-unhighlight-at (pos)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
839 "Remove the flyspell overlay that are located at POS."
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
840 (if flyspell-persistent-highlight
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
841 (let ((overlays (overlays-at pos)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
842 (while (consp overlays)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
843 (if (flyspell-overlay-p (car overlays))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
844 (delete-overlay (car overlays)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
845 (setq overlays (cdr overlays))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
846 (delete-overlay flyspell-overlay)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
847
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
848 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
849 ;* flyspell-properties-at-p ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
850 ;* ------------------------------------------------------------- */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
851 ;* Is there an highlight properties at position pos? */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
852 ;*---------------------------------------------------------------------*/
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
853 (defun flyspell-properties-at-p (pos)
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
854 "Return t if there is a text property at POS, not counting `local-map'.
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
855 If variable `flyspell-highlight-properties' is set to nil,
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
856 text with properties are not checked. This function is used to discover
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
857 if the character at POS has any other property."
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
858 (let ((prop (text-properties-at pos))
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
859 (keep t))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
860 (while (and keep (consp prop))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
861 (if (and (eq (car prop) 'local-map) (consp (cdr prop)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
862 (setq prop (cdr (cdr prop)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
863 (setq keep nil)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
864 (consp prop)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
865
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
866 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
867 ;* make-flyspell-overlay ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
868 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
869 (defun make-flyspell-overlay (beg end face mouse-face)
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
870 "Allocate an overlay to highlight an incorrect word.
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
871 BEG and END specify the range in the buffer of that word.
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
872 FACE and MOUSE-FACE specify the `face' and `mouse-face' properties
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
873 for the overlay."
24076
6236e60302e2 (make-flyspell-overlay): fix front stickiness.
Richard M. Stallman <rms@gnu.org>
parents: 23943
diff changeset
874 (let ((flyspell-overlay (make-overlay beg end nil t nil)))
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
875 (overlay-put flyspell-overlay 'face face)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
876 (overlay-put flyspell-overlay 'mouse-face mouse-face)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
877 (overlay-put flyspell-overlay 'flyspell-overlay t)
23943
7555c77bc4f0 If local-maps work, don't put
Richard M. Stallman <rms@gnu.org>
parents: 23788
diff changeset
878 (if flyspell-use-local-map
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
879 (overlay-put flyspell-overlay
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
880 flyspell-overlay-keymap-property-name
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
881 flyspell-mouse-map))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
882
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
883 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
884 ;* flyspell-highlight-incorrect-region ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
885 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
886 (defun flyspell-highlight-incorrect-region (beg end)
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
887 "Set up an overlay on a misspelled word, in the buffer from BEG to END."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
888 (run-hook-with-args 'flyspell-incorrect-hook beg end)
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
889 (if (or flyspell-highlight-properties (not (flyspell-properties-at-p beg)))
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
890 (progn
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
891 ;; we cleanup current overlay at the same position
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
892 (if (and (not flyspell-persistent-highlight)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
893 (overlayp flyspell-overlay))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
894 (delete-overlay flyspell-overlay)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
895 (let ((overlays (overlays-at beg)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
896 (while (consp overlays)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
897 (if (flyspell-overlay-p (car overlays))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
898 (delete-overlay (car overlays)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
899 (setq overlays (cdr overlays)))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
900 ;; now we can use a new overlay
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
901 (setq flyspell-overlay
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
902 (make-flyspell-overlay beg end
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
903 'flyspell-incorrect-face 'highlight)))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
904
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
905 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
906 ;* flyspell-highlight-duplicate-region ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
907 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
908 (defun flyspell-highlight-duplicate-region (beg end)
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
909 "Set up an overlay on a duplicated word, in the buffer from BEG to END."
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
910 (if (or flyspell-highlight-properties (not (flyspell-properties-at-p beg)))
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
911 (progn
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
912 ;; we cleanup current overlay at the same position
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
913 (if (and (not flyspell-persistent-highlight)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
914 (overlayp flyspell-overlay))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
915 (delete-overlay flyspell-overlay)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
916 (let ((overlays (overlays-at beg)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
917 (while (consp overlays)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
918 (if (flyspell-overlay-p (car overlays))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
919 (delete-overlay (car overlays)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
920 (setq overlays (cdr overlays)))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
921 ;; now we can use a new overlay
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
922 (setq flyspell-overlay
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
923 (make-flyspell-overlay beg end
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
924 'flyspell-duplicate-face 'highlight)))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
925
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
926 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
927 ;* flyspell-auto-correct-cache ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
928 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
929 (defvar flyspell-auto-correct-pos nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
930 (defvar flyspell-auto-correct-region nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
931 (defvar flyspell-auto-correct-ring nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
932
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
933 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
934 ;* flyspell-auto-correct-word ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
935 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
936 (defun flyspell-auto-correct-word (pos)
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
937 "Correct the word at POS.
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
938 This command proposes various successive corrections for the word at POS.
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
939 The variable `flyspell-auto-correct-binding' specifies the key to bind
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
940 to this command."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
941 (interactive "d")
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
942 ;; use the correct dictionary
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
943 (ispell-accept-buffer-local-defs)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
944 (if (eq flyspell-auto-correct-pos pos)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
945 ;; we have already been using the function at the same location
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
946 (progn
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
947 (save-excursion
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
948 (let ((start (car flyspell-auto-correct-region))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
949 (len (cdr flyspell-auto-correct-region)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
950 (delete-region start (+ start len))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
951 (setq flyspell-auto-correct-ring (cdr flyspell-auto-correct-ring))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
952 (let* ((word (car flyspell-auto-correct-ring))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
953 (len (length word)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
954 (rplacd flyspell-auto-correct-region len)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
955 (goto-char start)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
956 (insert word))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
957 (setq flyspell-auto-correct-pos (point)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
958 ;; retain cursor location
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
959 (let ((cursor-location pos)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
960 (word (flyspell-get-word nil))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
961 start end poss)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
962 ;; destructure return word info list.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
963 (setq start (car (cdr word))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
964 end (car (cdr (cdr word)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
965 word (car word))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
966 ;; now check spelling of word.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
967 (process-send-string ispell-process "%\n") ;put in verbose mode
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
968 (process-send-string ispell-process (concat "^" word "\n"))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
969 ;; wait until ispell has processed word
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
970 (while (progn
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
971 (accept-process-output ispell-process)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
972 (not (string= "" (car ispell-filter)))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
973 (setq ispell-filter (cdr ispell-filter))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
974 (if (listp ispell-filter)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
975 (setq poss (ispell-parse-output (car ispell-filter))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
976 (cond ((or (eq poss t) (stringp poss))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
977 ;; don't correct word
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
978 t)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
979 ((null poss)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
980 ;; ispell error
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
981 (error "Ispell: error in Ispell process"))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
982 (t
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
983 ;; the word is incorrect, we have to propose a replacement
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
984 (let ((replacements (if flyspell-sort-corrections
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
985 (sort (car (cdr (cdr poss))) 'string<)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
986 (car (cdr (cdr poss))))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
987 (if (consp replacements)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
988 (progn
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
989 (let ((replace (car replacements)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
990 (setq word replace)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
991 (setq cursor-location (+ (- (length word) (- end start))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
992 cursor-location))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
993 (if (not (equal word (car poss)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
994 (progn
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
995 ;; the save the current replacements
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
996 (setq flyspell-auto-correct-pos cursor-location)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
997 (setq flyspell-auto-correct-region
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
998 (cons start (length word)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
999 (let ((l replacements))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1000 (while (consp (cdr l))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1001 (setq l (cdr l)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1002 (rplacd l (cons (car poss) replacements)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1003 (setq flyspell-auto-correct-ring
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1004 (cdr replacements))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1005 (delete-region start end)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1006 (insert word)))))))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1007 ;; return to original location
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1008 (goto-char cursor-location)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1009 (ispell-pdict-save t))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1010
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1011 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1012 ;* flyspell-correct-word ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1013 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1014 (defun flyspell-correct-word (event)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1015 "Check spelling of word under or before the cursor.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1016 If the word is not found in dictionary, display possible corrections
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1017 in a popup menu allowing you to choose one.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1018
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1019 Word syntax described by `ispell-dictionary-alist' (which see).
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1020
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1021 This will check or reload the dictionary. Use \\[ispell-change-dictionary]
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1022 or \\[ispell-region] to update the Ispell process."
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1023 (interactive "e")
23943
7555c77bc4f0 If local-maps work, don't put
Richard M. Stallman <rms@gnu.org>
parents: 23788
diff changeset
1024 (if flyspell-use-local-map
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1025 (flyspell-correct-word/mouse-keymap event)
23943
7555c77bc4f0 If local-maps work, don't put
Richard M. Stallman <rms@gnu.org>
parents: 23788
diff changeset
1026 (flyspell-correct-word/local-keymap event)))
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1027
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1028 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1029 ;* flyspell-correct-word/local-keymap ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1030 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1031 (defun flyspell-correct-word/local-keymap (event)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1032 "emacs 19.xx seems to be buggous. Overlay keymap does not seems
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1033 to work correctly with local map. That is, if a key is not
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1034 defined for the overlay keymap, the current local map, is not
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1035 checked. The binding is resolved with the global map. The
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1036 consequence is that we can not use overlay map with flyspell."
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1037 (interactive "e")
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1038 (save-window-excursion
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1039 (let ((save (point)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1040 (mouse-set-point event)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1041 ;; we look for a flyspell overlay here
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1042 (let ((overlays (overlays-at (point)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1043 (overlay nil))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1044 (while (consp overlays)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1045 (if (flyspell-overlay-p (car overlays))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1046 (progn
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1047 (setq overlay (car overlays))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1048 (setq overlays nil))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1049 (setq overlays (cdr overlays))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1050 ;; we return to the correct location
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1051 (goto-char save)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1052 ;; we check to see if button2 has been used overlay a
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1053 ;; flyspell overlay
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1054 (if overlay
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1055 ;; yes, so we use the flyspell function
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1056 (flyspell-correct-word/mouse-keymap event)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1057 ;; no so we have to use the non flyspell binding
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1058 (let ((flyspell-mode nil))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1059 (if (key-binding (this-command-keys))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1060 (command-execute (key-binding (this-command-keys))))))))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1061
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1062 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1063 ;* flyspell-correct-word ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1064 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1065 (defun flyspell-correct-word/mouse-keymap (event)
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
1066 "Pop up a menu of possible corrections for a misspelled word.
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
1067 The word checked is the word at the mouse position."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1068 (interactive "e")
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1069 ;; use the correct dictionary
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1070 (ispell-accept-buffer-local-defs)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1071 ;; retain cursor location (I don't know why but save-excursion here fails).
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1072 (let ((save (point)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1073 (mouse-set-point event)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1074 (let ((cursor-location (point))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1075 (word (flyspell-get-word nil))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1076 start end poss replace)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1077 ;; destructure return word info list.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1078 (setq start (car (cdr word))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1079 end (car (cdr (cdr word)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1080 word (car word))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1081 ;; now check spelling of word.
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1082 (process-send-string ispell-process "%\n") ;put in verbose mode
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1083 (process-send-string ispell-process (concat "^" word "\n"))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1084 ;; wait until ispell has processed word
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1085 (while (progn
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1086 (accept-process-output ispell-process)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1087 (not (string= "" (car ispell-filter)))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1088 (setq ispell-filter (cdr ispell-filter))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1089 (if (listp ispell-filter)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1090 (setq poss (ispell-parse-output (car ispell-filter))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1091 (cond ((or (eq poss t) (stringp poss))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1092 ;; don't correct word
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1093 t)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1094 ((null poss)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1095 ;; ispell error
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1096 (error "Ispell: error in Ispell process"))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1097 ((string-match "GNU" (emacs-version))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1098 ;; the word is incorrect, we have to propose a replacement
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
1099 (setq replace (flyspell-emacs-popup event poss word))
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1100 (cond ((eq replace 'ignore)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1101 nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1102 ((eq replace 'save)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1103 (process-send-string ispell-process (concat "*" word "\n"))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1104 (flyspell-unhighlight-at cursor-location)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1105 (setq ispell-pdict-modified-p '(t)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1106 ((or (eq replace 'buffer) (eq replace 'session))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1107 (process-send-string ispell-process (concat "@" word "\n"))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1108 (if (null ispell-pdict-modified-p)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1109 (setq ispell-pdict-modified-p
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1110 (list ispell-pdict-modified-p)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1111 (flyspell-unhighlight-at cursor-location)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1112 (if (eq replace 'buffer)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1113 (ispell-add-per-file-word-list word)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1114 (replace
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1115 (setq word (if (atom replace) replace (car replace))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1116 cursor-location (+ (- (length word) (- end start))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1117 cursor-location))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1118 (if (not (equal word (car poss)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1119 (progn
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1120 (delete-region start end)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1121 (insert word))))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1122 ((string-match "XEmacs" (emacs-version))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1123 (flyspell-xemacs-popup
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1124 event poss word cursor-location start end)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1125 (ispell-pdict-save t))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1126 (if (< save (point-max))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1127 (goto-char save)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1128 (goto-char (point-max)))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1129
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1130 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1131 ;* flyspell-xemacs-correct ... */
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1132 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1133 (defun flyspell-xemacs-correct (replace poss word cursor-location start end)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1134 "The xemacs popup menu callback."
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1135 (cond ((eq replace 'ignore)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1136 nil)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1137 ((eq replace 'save)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1138 (process-send-string ispell-process (concat "*" word "\n"))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1139 (flyspell-unhighlight-at cursor-location)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1140 (setq ispell-pdict-modified-p '(t)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1141 ((or (eq replace 'buffer) (eq replace 'session))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1142 (process-send-string ispell-process (concat "@" word "\n"))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1143 (flyspell-unhighlight-at cursor-location)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1144 (if (null ispell-pdict-modified-p)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1145 (setq ispell-pdict-modified-p
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1146 (list ispell-pdict-modified-p)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1147 (if (eq replace 'buffer)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1148 (ispell-add-per-file-word-list word)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1149 (replace
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1150 (setq word (if (atom replace) replace (car replace))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1151 cursor-location (+ (- (length word) (- end start))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1152 cursor-location))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1153 (if (not (equal word (car poss)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1154 (save-excursion
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1155 (delete-region start end)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1156 (goto-char start)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1157 (insert word))))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1158
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1159 ;*---------------------------------------------------------------------*/
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
1160 ;* flyspell-emacs-popup ... */
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1161 ;*---------------------------------------------------------------------*/
22844
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
1162 (defun flyspell-emacs-popup (event poss word)
1104a715c324 (flyspell-emacs-popup): Renamed from flyspell-gnuemacs-popup. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 22648
diff changeset
1163 "The Emacs popup menu."
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1164 (if (not event)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1165 (let* ((mouse-pos (mouse-position))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1166 (mouse-pos (if (nth 1 mouse-pos)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1167 mouse-pos
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1168 (set-mouse-position (car mouse-pos)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1169 (/ (frame-width) 2) 2)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1170 (unfocus-frame)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1171 (mouse-position))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1172 (setq event (list (list (car (cdr mouse-pos))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1173 (1+ (cdr (cdr mouse-pos))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1174 (car mouse-pos)))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1175 (let* ((corrects (if flyspell-sort-corrections
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1176 (sort (car (cdr (cdr poss))) 'string<)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1177 (car (cdr (cdr poss)))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1178 (cor-menu (if (consp corrects)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1179 (mapcar (lambda (correct)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1180 (list correct correct))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1181 corrects)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1182 '()))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1183 (affix (car (cdr (cdr (cdr poss)))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1184 (base-menu (let ((save (if (consp affix)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1185 (list
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1186 (list (concat "Save affix: " (car affix))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1187 'save)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1188 '("Accept (session)" accept)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1189 '("Accept (buffer)" buffer))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1190 '(("Save word" save)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1191 ("Accept (session)" session)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1192 ("Accept (buffer)" buffer)))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1193 (if (consp cor-menu)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1194 (append cor-menu (cons "" save))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1195 save)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1196 (menu (cons "flyspell correction menu" base-menu)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1197 (car (x-popup-menu event
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1198 (list (format "%s [%s]" word (or ispell-local-dictionary
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1199 ispell-dictionary))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1200 menu)))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1201
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1202 ;*---------------------------------------------------------------------*/
22891
780c3ef895d7 (flyspell-duplicate-distance): Doc fix; change default to 10000.
Richard M. Stallman <rms@gnu.org>
parents: 22844
diff changeset
1203 ;* flyspell-xemacs-popup ... */
22611
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1204 ;*---------------------------------------------------------------------*/
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1205 (defun flyspell-xemacs-popup (event poss word cursor-location start end)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1206 "The xemacs popup menu."
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1207 (let* ((corrects (if flyspell-sort-corrections
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1208 (sort (car (cdr (cdr poss))) 'string<)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1209 (car (cdr (cdr poss)))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1210 (cor-menu (if (consp corrects)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1211 (mapcar (lambda (correct)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1212 (vector correct
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1213 (list 'flyspell-xemacs-correct
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1214 correct
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1215 (list 'quote poss)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1216 word
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1217 cursor-location
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1218 start
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1219 end)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1220 t))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1221 corrects)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1222 '()))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1223 (affix (car (cdr (cdr (cdr poss)))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1224 (menu (let ((save (if (consp affix)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1225 (vector
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1226 (concat "Save affix: " (car affix))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1227 (list 'flyspell-xemacs-correct
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1228 ''save
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1229 (list 'quote poss)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1230 word
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1231 cursor-location
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1232 start
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1233 end)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1234 t)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1235 (vector
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1236 "Save word"
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1237 (list 'flyspell-xemacs-correct
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1238 ''save
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1239 (list 'quote poss)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1240 word
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1241 cursor-location
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1242 start
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1243 end)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1244 t)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1245 (session (vector "Accept (session)"
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1246 (list 'flyspell-xemacs-correct
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1247 ''session
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1248 (list 'quote poss)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1249 word
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1250 cursor-location
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1251 start
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1252 end)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1253 t))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1254 (buffer (vector "Accept (buffer)"
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1255 (list 'flyspell-xemacs-correct
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1256 ''buffer
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1257 (list 'quote poss)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1258 word
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1259 cursor-location
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1260 start
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1261 end)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1262 t)))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1263 (if (consp cor-menu)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1264 (append cor-menu (list "-" save session buffer))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1265 (list save session buffer)))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1266 (popup-menu (cons (format "%s [%s]" word (or ispell-local-dictionary
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1267 ispell-dictionary))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1268 menu))))
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1269
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1270 (provide 'flyspell)
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1271
38463342cd56 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1272 ;;; flyspell.el ends here