/plugins/SpellCheck/trunk/docs/users-guide.xml

# · XML · 710 lines · 637 code · 63 blank · 10 comment · 0 complexity · 3d55bb50df5177d5f14d0a7949976091 MD5 · raw file

  1. <?xml version="1.0"?>
  2. <!-- Spell Check plugin user's guide -->
  3. <!-- (C) 2001, 2008 C.S. Willy, L. Fiol, Eric Le Lay -->
  4. <!-- jEdit buffer-local properties: -->
  5. <!-- :tabSize=1:indentSize=1:noTabs=true:folding=sidekick: -->
  6. <!-- $Id: users-guide.xml 12872 2008-06-22 07:53:52Z kerik-sf $ - $Revision: 12872 $ -->
  7. <article xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  8. xsi:noNamespaceSchemaLocation='http://www.docbook.org/xsd/4.4/docbook.xsd' >
  9. <articleinfo>
  10. <releaseinfo>Version R007</releaseinfo>
  11. <title>SpellCheck plugin user's guide</title>
  12. <author>
  13. <firstname>C.S.</firstname>
  14. <surname>Willy</surname>
  15. </author>
  16. <author>
  17. <firstname>L.</firstname>
  18. <surname>Fiol</surname>
  19. </author>
  20. <author>
  21. <firstname>Eric</firstname>
  22. <surname>Le Lay</surname>
  23. </author>
  24. <date>$Date: 2008-06-22 09:53:52 +0200 (Dim 22 jui 2008) $</date>
  25. <legalnotice><title>Legal Notice</title>
  26. <para>
  27. Permission is granted to copy, distribute and/or modify this document
  28. under the terms of the GNU Free Documentation License, Version 1.1 or
  29. any later version published by the Free Software Foundation; with no
  30. <quote>Invariant Sections</quote>, <quote>Front-Cover Texts</quote> or
  31. <quote>Back-Cover Texts</quote>, each as defined in the license. A copy of
  32. the license can be found in the file <filename>COPYING.DOC.txt</filename>
  33. included with jEdit.
  34. </para>
  35. </legalnotice>
  36. </articleinfo>
  37. <section id="intro">
  38. <title>Introduction</title>
  39. <para>
  40. This is a jEdit plugin to perform spell checking of text in a jEdit buffer.
  41. It can use various engines to perform the spell-checking.
  42. </para>
  43. </section>
  44. <!-- FEATURES -->
  45. <section id="features">
  46. <title>Features</title>
  47. <itemizedlist>
  48. <listitem>
  49. <para>spell check selected text or the entire buffer if
  50. no selection;
  51. </para>
  52. </listitem>
  53. <listitem>
  54. <para>highlight misspelled words for easy access (uses ErrorList);
  55. this can be automatically invoke at save;</para>
  56. </listitem>
  57. <listitem>
  58. <para>an editable user dictionary for each language;</para>
  59. </listitem>
  60. <listitem>
  61. <para>markup-sensitive spell-checking (to only spell-check comments
  62. in source code);</para>
  63. </listitem>
  64. <listitem>
  65. <para>a rich dialog letting the user review suspect words
  66. (see a wordy description <link linkend="dialog-box">there</link>);
  67. </para>
  68. </listitem>
  69. </itemizedlist>
  70. </section>
  71. <!-- ENGINES -->
  72. <section id="engines">
  73. <title>Engines</title>
  74. <para>The SpellCheck plugin has the ability to work with different spell-checkers.
  75. It currently supports Aspell, Hunspell and VoxSpell</para>
  76. <section id="engine-aspell">
  77. <title>Aspell</title>
  78. <para>Aspell is a famous spell-checker, used as a standalone program or as a library
  79. in the Unix world. A windows port also exists, but it's for an old version.
  80. </para>
  81. <para>The interactions with Aspell are done via a pipe : the SpellCheck plugin
  82. invokes the Aspell executable, send lines via standard input and gets results
  83. by parsing the output. This leads to slow interactions but is quite independent
  84. of the way Aspell is installed.</para>
  85. <para>Aspell is not bundled with this plugin,
  86. see <link linkend="install-aspell">installation instructions</link>.
  87. You will also have to install dictionaries.</para>
  88. </section>
  89. <section id="engines-hunspell">
  90. <title>Hunspell</title>
  91. <para>Hunspell is the spell-checker bundled with OpenOffice.org (as of 2.0.2)
  92. and Mozilla firefox (as of 3.0).
  93. The java interface is from <ulink url="http://dion.swamp.dk/hunspell.html">Flemming Frandsen</ulink>.
  94. </para>
  95. <para>The interactions with Hunspell are done via native calls: some string-copying
  96. is still involved, but the SpellCheck plugin gets directly some structures representing
  97. spell-check results from the library.</para>
  98. <para>A version of Hunspell is bundled for:
  99. <itemizedlist>
  100. <listitem><para>Mac OS X PPC32</para></listitem>
  101. <listitem><para>Mac OS X x86</para></listitem>
  102. <listitem><para>Windows x86 (32 bits)</para></listitem>
  103. <listitem><para>Linux x86 (32 bits)</para></listitem>
  104. <listitem><para>Linux x86 (64 bits)</para></listitem>
  105. </itemizedlist>
  106. The plugin provides a way to install dictionaries.
  107. </para>
  108. </section>
  109. <section id="voxspell-engine">
  110. <title>VoxSpell</title>
  111. <para>VoxSpell is a plugin for jEdit. It is implemented in pure java
  112. and provides spell-check as you type. It is very fast but consumes
  113. a lot of memory.</para>
  114. <para>You can get VoxSpell from the <guimenuitem>Plugin Manager</guimenuitem>.
  115. An English dictionary is included.</para>
  116. </section>
  117. </section>
  118. <!-- SYSTEM REQUIREMENTS -->
  119. <section id="sysreq">
  120. <title>System Requirements</title>
  121. <itemizedlist>
  122. <listitem>
  123. <para>The plugin requires jEdit 4.3pre12 or later.</para>
  124. </listitem>
  125. <listitem>
  126. <para>The plugin requires Java JDK 1.5.</para>
  127. </listitem>
  128. <listitem>
  129. <para>Tested on Mac OS X, Windows XP and Linux.</para>
  130. </listitem>
  131. <listitem><para>Depending of the engine, you will need:
  132. <itemizedlist>
  133. <listitem>
  134. <para>Aspell 0.50 or better (I am using Aspell 0.60.5).</para>
  135. </listitem>
  136. <listitem>
  137. <para>Hunspell 1.1.12 or better (this is the bundled version)</para>
  138. </listitem>
  139. <listitem>
  140. <para>VoxSpell plugin 1.0.1 ( TODO: verify that the patch was applied)</para>
  141. </listitem>
  142. </itemizedlist>
  143. </para></listitem>
  144. </itemizedlist>
  145. </section>
  146. <!-- INSTALLATION -->
  147. <section id="install">
  148. <title>Installation and Configuration</title>
  149. <section id="install-aspell">
  150. <title>Installing Aspell</title>
  151. <itemizedlist>
  152. <listitem><para>First, you must have Aspell, as well as some dictionary installed.</para>
  153. <glosslist>
  154. <glossentry>
  155. <glossterm>On Windows</glossterm>
  156. <glossdef>
  157. <para><code>Aspell</code> is not pre-installed on Windows.
  158. You can get it from <emphasis>Gnu</emphasis>: <uri>http://ftp.gnu.org/gnu/aspell/w32/</uri>.
  159. The installer is <ulink url="http://ftp.gnu.org/gnu/aspell/w32/Aspell-0-50-3-3-Setup.exe">Aspell-0-50-3-3-Setup.exe</ulink>.
  160. The dictionary for your language of choice comes by the two letter ISO code of the country, like
  161. <ulink url="http://ftp.gnu.org/gnu/aspell/w32/aspell-fr-0.50-3-3.exe">Aspell-fr-0.50-3-3.exe</ulink> for French,
  162. or <ulink url="http://ftp.gnu.org/gnu/aspell/w32/aspell-uk-0.50-3-3.exe">Aspell-uk-0.50-3-3.exe</ulink> for UK English.
  163. You can leave everything to default and will be done with installing pretty quickly.
  164. </para>
  165. </glossdef>
  166. </glossentry>
  167. <glossentry>
  168. <glossterm>On Linux</glossterm>
  169. <glossdef>
  170. <para>Depending on your distribution, <code>Aspell</code> can be already present.
  171. You can check this by typing <code>aspell -v</code> in a terminal console.
  172. If you see something like <code>@(#) International Ispell Version 3.1.20 (but really Aspell 0.60.5)</code>,
  173. it's OK.
  174. </para>
  175. <para>If Aspell is not present (you are getting <code>-bash: aspell: command not found</code>),
  176. use your package manager to install it automatically.
  177. Alternatively, you can get the source from <uri>http://ftp.gnu.org/gnu/aspell/</uri>.
  178. </para>
  179. </glossdef>
  180. </glossentry>
  181. <glossentry>
  182. <glossterm>On Mac OS X</glossterm>
  183. <glossdef><para>
  184. You should use <ulink url="http://www.macports.org">Macports</ulink> to get Aspell.
  185. If you are already using Macports, all you have to do is <code>sudo port install aspell</code>.
  186. If you are not, there is some guidance about installing Aspell on <uri>http://docs.moodle.org/en/Configuring_aspell_on_Mac_OS_X</uri>.
  187. </para>
  188. </glossdef>
  189. </glossentry>
  190. </glosslist>
  191. </listitem>
  192. <listitem>
  193. <para>
  194. In the <guimenu>Plugins</guimenu> -&gt; <guimenuitem>Plugin Options...</guimenuitem>
  195. option dialog, section <code>SpellCheck/Aspell Engine</code>, you must set the path to the
  196. Aspell executable : see <link linkend="options">Options</link> section below.
  197. </para>
  198. </listitem>
  199. </itemizedlist>
  200. </section>
  201. <section id="install-hunspell">
  202. <title>Installing Hunspell</title>
  203. <para>If your architecture is supported by the plugin, you have nothing to install.</para>
  204. <para>To check if the bundled Hunspell library works, there is no other way than setting
  205. Hunspell as the engine in <guimenu>Plugins</guimenu> -&gt; <guimenuitem>Plugin Options</guimenuitem>&gt; <code>Spell Check</code> &gt; <code>General</code>
  206. and trying to spell-check a buffer (<guimenu>Plugins</guimenu> -&gt; <guimenuitem>Spell Check</guimenuitem> &gt; <guimenuitem>Spell check selection...</guimenuitem>.
  207. </para>
  208. <para>If your architecture is not supported, I can only point you to the
  209. homepage of Hunspell <uri>http://hunspell.sourceforge.net/</uri>.
  210. Once you managed to install Hunspell, you'll have to point to the library in
  211. <guimenu>Plugins</guimenu> -&gt; <guimenuitem>Plugin Options</guimenuitem>&gt; <code>Spell Check</code> &gt; <code>Hunspell Engine</code>.
  212. You must restart jEdit for the change to take effect.
  213. </para>
  214. <para>You can pick a dictionary to install from the list in the option pane.
  215. Clicking on <guibutton>Install</guibutton> downloads and expands a dictionary.</para>
  216. </section>
  217. <section id="install-voxspell">
  218. <title>Installing VoxSpell</title>
  219. <para>Install the plugin as you already installed SpellCheck : open the <guimenuitem>Plugin Manager</guimenuitem>
  220. and in the pane <guilabel>Install</guilabel>, select it then click on <guibutton>Install</guibutton></para>
  221. </section>
  222. </section>
  223. <!-- OPTIONS -->
  224. <section id="options">
  225. <title>Options</title>
  226. <para>In the <guimenu>Plugins</guimenu> -&gt; <guimenuitem>Plugin Options...</guimenuitem>
  227. option dialog, section <code>SpellCheck</code>, there are some options to set.
  228. </para>
  229. <section id="options-general">
  230. <title>General Options</title>
  231. <section id="engine-option">
  232. <title>Spell-checking engine to use</title>
  233. <para>Here you can choose which engine to use. The engines listed here
  234. are the supported engines. They might require some additional installation
  235. to actually work.</para>
  236. </section>
  237. <section id="language-option"><title>Dictionary to use</title>
  238. <para>You can choose in the list which dictionary to use for spell-checking.
  239. The contents of the list depends on the selected engine.</para>
  240. </section>
  241. <section id="spell-check-on-save"><title>Spell-check on save</title>
  242. <para>This experimental feature takes advantage of the <code>Error List</code>
  243. plugin to report every misspelled word as a warning. Spell-checking is performed each time
  244. you save a file.</para>
  245. <tip><para>Depending on the engine, this can get pretty sluggish. So I recommend
  246. you use Hunspell or VoxSpell engines if you want this.</para></tip>
  247. </section>
  248. </section>
  249. <section id="options-syntax">
  250. <title>Syntax handling Options</title>
  251. <section id="concept-tokens">
  252. <title>Concept : syntax aware spell-checking</title>
  253. <para>
  254. For each buffer, jEdit does syntax-highlighting for you.
  255. To do this, it splits the content of the buffer in tokens and gives
  256. every token a <emphasis>token type</emphasis>.
  257. Token types are taken from a predefined set, like <code>COMMENT1</code>, <code>MARKUP</code>,
  258. etc..
  259. </para>
  260. <para> When spell-checking a Java file, you are generally only interested
  261. in the correctness of strings (output to the user) and comments.
  262. In other words, you are only interested in token types <code>COMMENT1</code> to <code>COMMENT4</code>
  263. and <code>LITERAL1</code>. This is done via syntax aware spell-checking.
  264. </para>
  265. </section>
  266. <section id="really-syntax-options">
  267. <title>Option pane contents</title>
  268. <para>
  269. The <guilabel>Syntax handling</guilabel> option pane lets you customize which
  270. token type will be spell-checked for each mode.
  271. </para>
  272. <para>Modes are grouped by <emphasis>profiles</emphasis>, so that you don't repeat yourself too much.
  273. For instance, the <guilabel>markup</guilabel> profile already includes xml and html. For these two
  274. modes, only comments, literals and plain text will be spell-checked.
  275. </para>
  276. <para>The <guibutton>Add...</guibutton> and <guibutton>Remove...</guibutton> buttons
  277. let you manage the profiles, while clicking in a cell of the table lets you edit their
  278. content.
  279. <itemizedlist>
  280. <listitem><para>The <guilabel>Name</guilabel> of a profile identifies it. Please do not include spaces.</para></listitem>
  281. <listitem><para>The <guilabel>Modes</guilabel> of a profile are the modes to which the settings apply.</para></listitem>
  282. <listitem><para>The <guilabel>Tokens</guilabel> of a profile are the token types that <emphasis>will</emphasis> be spell-checked.</para></listitem>
  283. </itemizedlist>
  284. </para>
  285. <para>The <guilabel>code</guilabel> is the default profile, but you can change this
  286. via the check-boxes in the first column of the table.</para>
  287. <para>You can globally disable syntax aware spell-checking for an engine manager
  288. in the <guilabel>General</guilabel> option pane.
  289. Aspell has it disabled by default, as it has its own syntax handling.
  290. </para>
  291. </section>
  292. </section>
  293. <section id="options-aspell">
  294. <title>Aspell Options</title>
  295. <section id="executable-option"><title>Aspell executable filename</title>
  296. <para>It is important to set the <code>Aspell executable filename</code> to where you have
  297. installed Aspell. If you didn't install it manually, try to leave it to "aspell".</para>
  298. <para>Here are some potential locations:</para>
  299. <itemizedlist>
  300. <listitem><para>On <emphasis>Windows</emphasis> it's in <code>c:\Program Files\Aspell\bin</code></para></listitem>
  301. <listitem><para>On <emphasis>Mac OS X</emphasis> it's in <code>/opt/local/bin</code></para></listitem>
  302. <listitem><para>On <emphasis>Linux</emphasis> it's in <code>/usr/local/bin</code></para></listitem>
  303. </itemizedlist>
  304. </section>
  305. <section id="markup-modes"><title>Markup Mode</title>
  306. <para>Aspell is able to deal automatically with certain kinds of documents,
  307. via <emphasis>Filter Modes</emphasis>. Here is an extract of what <code>aspell --help</code>
  308. says on my computer:</para>
  309. <programlisting linenumbering="unnumbered">
  310. Available Filter Modes:
  311. Filter Modes are reconfigured combinations of filters optimized for
  312. files of a specific type. A mode is selected via the "mode" option.
  313. This will happen implicitly if Aspell is able to identify the file
  314. type from the extension, and possibility the contents, of the file.
  315. ccpp mode for checking C++ comments and string literals
  316. comment mode to check any lines starting with a #
  317. email mode for skipping quoted text in email messages
  318. html mode for checking HTML documents
  319. none mode to disable all filters
  320. nroff mode for checking Nroff documents
  321. perl mode for checking Perl comments and string literals
  322. sgml mode for checking generic SGML/XML documents
  323. tex mode for checking TeX/LaTeX documents
  324. texinfo mode for checking Texinfo documents
  325. url mode to skip URL like constructs (default mode)
  326. </programlisting>
  327. <para>You can choose to
  328. <itemizedlist>
  329. <listitem><para><emphasis>Disable Markup mode</emphasis>:
  330. it will tell Aspell not to use any filter.
  331. As a result, your buffer will be analysed as plain text</para></listitem>
  332. <listitem><para>use <emphasis>Automatic Markup mode</emphasis>:
  333. it will let Aspell choose which mode to use automatically</para></listitem>
  334. <listitem><para>use <emphasis>Manual Markup mode</emphasis>:
  335. it will tell Aspell which mode to use, according to your choices
  336. in the table bellow</para></listitem>
  337. </itemizedlist>
  338. </para>
  339. <para>If you choose the <emphasis>Manual Markup Mode</emphasis>,
  340. you will have to configure which Aspell filter to use for each mode.
  341. Leave it to <emphasis>AUTO</emphasis> to let aspell choose.
  342. Use the filter named <emphasis>none</emphasis> to disable context-filtering at all.
  343. </para>
  344. </section>
  345. <section id="additional-parameters"><title>Additional parameters</title>
  346. <para>If you are familiar with Aspell from the command line and want to
  347. pass additional parameters, feel free to enter these parameters here.
  348. They will be directly passed to aspell.
  349. This way, you can use a personal dictionary, for instance...
  350. </para>
  351. <para>Note however that white space is not allowed in parameter. Please file a
  352. feature request or send an e-mail if you need it.
  353. </para>
  354. </section>
  355. </section>
  356. <section id="options-hunspell">
  357. <title>Hunspell Engine</title>
  358. <section id="hunspell-troubleshooting">
  359. <title>Troubleshooting</title>
  360. <para>Depending on you OS/architecture, you may experience some issues with Hunspell.</para>
  361. <para>The library might not have been packaged with the plugin.
  362. This results in an <emphasis>Unknown OS/arch...</emphasis> message.
  363. It is solved by installing Hunspell yourself (or via your package manager)
  364. and pointing the plugin to the library file (see <xref linkend="hunspell-library"/>).
  365. </para>
  366. <para>Or JNA itself might not work : this results in a <emphasis>libjnidispatch.* not found</emphasis>
  367. message.
  368. You can replace the bundled <filename>jna.jar</filename> with the latest version
  369. from <uri>http://jna.dev.java.net</uri>. They are supporting more and more
  370. architectures, so it has a fair chance to work. However, if you are the lucky
  371. owner of a linux/ppc machine, this doesn't work. Your last chance is downloading
  372. the latest sources of JNA and building them yourself.
  373. This is done vi <command>ant dist</command>. Then copy the <filename>build/jna.jar</filename>
  374. and <filename>build/YOUR_ARCHITECTURE.jar</filename> to jEdit jar directory.
  375. The new library is picked automatically and everything should work...</para>
  376. </section>
  377. <section id="hunspell-library">
  378. <title>Location of the Hunspell library</title>
  379. <para>You need this only if the bundled library doesn't work on your system.
  380. Look for the actual library file (something like <filename>libhunspell-1.2.so</filename>
  381. on Linux).
  382. </para>
  383. </section>
  384. <section id="hunspell-dict">
  385. <title>Managing Dictionaries</title>
  386. <para>Installed Dictionaries are listed in the top list. You can remove them
  387. one by one by selecting one and clicking on <guibutton>remove</guibutton></para>
  388. <para>Available Dictionaries are fetched from a file on <uri>openoffice.org</uri>
  389. server. It's the same file as for the &quot;Add dictionary&quot; Wizard in OpenOffice.</para>
  390. <para>This list is fetched only once a day. If you experience some inconsistencies,
  391. you should delete the file <filename>available.lst</filename> in the plugin home directory
  392. (accessible via <guimenu>Plugins</guimenu> -&gt; <guisubmenu>Spell check</guisubmenu> -&gt; <guimenuitem>Browse user dictionaries</guimenuitem>).
  393. </para>
  394. </section>
  395. </section>
  396. </section>
  397. <section id="usage">
  398. <title>Usage</title>
  399. <section id="usage.general">
  400. <title>General Usage</title>
  401. <itemizedlist>
  402. <listitem>
  403. <para>Select the text you would like to spell check (no selection will spell check all the buffer).</para>
  404. </listitem>
  405. <listitem>
  406. <para>Choose the menu item
  407. <guimenu>Plugins</guimenu> -&gt; <guisubmenu>Spell check</guisubmenu> -&gt; <guimenuitem>Spell check selection...</guimenuitem>
  408. for default dictionary or
  409. <guimenu>Plugins</guimenu> -&gt; <guisubmenu>Spell check</guisubmenu> -&gt; <guimenuitem>Spell check selection with lang...</guimenuitem>
  410. to use an alternate dictionary.</para>
  411. </listitem>
  412. <listitem>
  413. <para>You will be prompted with a MS-Office-like spell check dialog box for each
  414. word that needs to be validated.</para>
  415. </listitem>
  416. <listitem>
  417. <para>See <xref linkend="dialog-box"/> for more info on the dialog box.</para>
  418. </listitem>
  419. </itemizedlist>
  420. </section>
  421. <section id="dialog-box">
  422. <title>Spell Check Dialog Box</title>
  423. <section>
  424. <title>Available actions</title>
  425. <para>For each misspelled word the user has buttons to choose to:
  426. <glosslist>
  427. <glossentry>
  428. <glossterm>Add</glossterm>
  429. <glossdef>
  430. <para>Adds the current word to the user's dictionary.</para>
  431. </glossdef>
  432. </glossentry>
  433. <glossentry>
  434. <glossterm>Cancel</glossterm>
  435. <glossdef>
  436. <para>Closes the dialog box without making any changes you have made.</para>
  437. </glossdef>
  438. </glossentry>
  439. <glossentry>
  440. <glossterm>Change</glossterm>
  441. <glossdef>
  442. <para>Replaces the word in the <guilabel>Not in Dictionary</guilabel> text field with the word in the
  443. <guilabel>Change to</guilabel> text field.</para>
  444. </glossdef>
  445. </glossentry>
  446. <glossentry>
  447. <glossterm>Change All</glossterm>
  448. <glossdef>
  449. <para>Replaces all instances of the word not in the <guilabel>Not in Dictionary</guilabel>
  450. text field with the word in the <guilabel>Change to</guilabel> text field.</para>
  451. </glossdef>
  452. </glossentry>
  453. <glossentry>
  454. <glossterm>Ignore</glossterm>
  455. <glossdef>
  456. <para>Leaves the word in the <guilabel>Not in Dictionary</guilabel> text field unchanged.</para>
  457. </glossdef>
  458. </glossentry>
  459. <glossentry>
  460. <glossterm>Ignore All</glossterm>
  461. <glossdef>
  462. <para>Leaves this and all later occurences of the word in the <code>Not in Dictionary</code>
  463. text field unchanged. A reminder (wearing sunglasses) will appear.</para>
  464. <para>To clear the list of ignored words, go to the menu
  465. <guimenu>Plugins</guimenu>&gt;<guimenuitem>Spell Check</guimenuitem>&gt;<guimenuitem>Clear ignored words</guimenuitem>.
  466. </para>
  467. </glossdef>
  468. </glossentry>
  469. </glosslist>
  470. </para>
  471. </section>
  472. <section>
  473. <title>Text components</title>
  474. <para>The dialog has the following components:
  475. <glosslist>
  476. <glossentry><glossterm>Not in Dictionary</glossterm>
  477. <glossdef>
  478. <para>Displays a possible error, such as a misspelled word, a duplicate word, or a incorrect capitalization.</para>
  479. </glossdef>
  480. </glossentry>
  481. <glossentry>
  482. <glossterm>Change to:</glossterm>
  483. <glossdef>
  484. <para>Displays a suggested word to replace the word that appears in the <guilabel> Not in Dictionary</guilabel>
  485. text field. To accept the suggested replacement, click <guibutton>Change</guibutton>.
  486. You can verify if the word you typed is in the dictionary by clicking on the <guibutton>Suggest</guibutton> button.</para>
  487. </glossdef>
  488. </glossentry>
  489. <glossentry>
  490. <glossterm>Suggestions:</glossterm>
  491. <glossdef>
  492. <para>Lists suggested replacement words.</para>
  493. </glossdef>
  494. </glossentry>
  495. </glosslist>
  496. </para>
  497. </section>
  498. <section>
  499. <title>Navigation</title>
  500. <glosslist>
  501. <glossentry><glossterm>Previous:</glossterm>
  502. <glossdef>
  503. <para>go back to previous misspelled word, rolling back any change.</para>
  504. </glossdef>
  505. </glossentry>
  506. <glossentry>
  507. <glossterm>Cancel:</glossterm>
  508. <glossdef>
  509. <para>stops this spell-checking session without applying changes. There is no way to go back
  510. from there, so beware of loosing painfully corrected words...</para>
  511. </glossdef>
  512. </glossentry>
  513. <glossentry>
  514. <glossterm>Done:</glossterm>
  515. <glossdef>
  516. <para>stops this spell-checking session and applies all modifications so far.</para>
  517. </glossdef>
  518. </glossentry>
  519. </glosslist>
  520. </section>
  521. </section>
  522. </section>
  523. <section id="user-dicts">
  524. <title>User dictionaries</title>
  525. <para>User dictionaries consist in lists of words. Any misspelled word reported by
  526. the spell-checker which is present in the user dictionary is ignored.
  527. Independent User dictionaries are kept for each language.</para>
  528. <section id="managing-dicts">
  529. <title>Managing user dictionaries</title>
  530. <para>User dictionaries are saved as text files inside the plugin's settings directory.
  531. They look like <filename>user.***.dict</filename>.
  532. You can browse this directory from jEdit by using <guimenu>Plugins</guimenu>&gt;<guimenuitem>Spell Check</guimenuitem>&gt;<guimenuitem>Browse user dictionaries</guimenuitem>.
  533. </para>
  534. <para>You can edit directly a user dictionary : it consists in a newline-separated
  535. text file. jEdit will pick <code>UTF-8</code> encoding. When you open the file,
  536. any change in a dictionary will be persisted, so that you can review the latest
  537. changes. On save, the user dictionary will be reloaded to take your changes into account.
  538. </para>
  539. <para>Otherwise, changed dictionaries are saved when the plugin has stopped.
  540. You can also invoke <guimenu>Plugins</guimenu>&gt;<guimenuitem>Spell Check</guimenuitem>&gt;<guimenuitem>Persist Dictionaries on disk</guimenuitem> at any time.</para>
  541. </section>
  542. </section>
  543. <section id="building"><title>Building</title>
  544. <para>
  545. As of release R005, the build process is the same as other plugins.
  546. It uses the <code>build-support/plugin-build.xml</code> build file,
  547. available from jedit repository. The documentation is generated using docbook xsl.
  548. </para>
  549. <para>Some tests are included. They are based upon <ulink url="http://fest.easytesting.org/swing/wiki/pmwiki.php">FEST-swing</ulink>
  550. for GUI testing. Otherwise they are plain <ulink url="http://www.junit.org/">jUnit</ulink> tests.
  551. To run the tests, <command>cd</command> to the plugin root directory and type <command>ant test</command>.
  552. </para>
  553. </section>
  554. <section id="bugs">
  555. <title>Current Bugs</title>
  556. <itemizedlist>
  557. <listitem>
  558. <para>It has happened once that jEdit froze while <xref linkend="spell-check-on-save"/>
  559. was active. If you encounter such behaviour again, please send a bug report.
  560. </para>
  561. </listitem>
  562. </itemizedlist>
  563. </section>
  564. <section id="todo"><title>Current ToDo List</title>
  565. <itemizedlist>
  566. <listitem><para>Allow the user access all of Aspell options.
  567. This is now dormant, as new engines are included.</para></listitem>
  568. </itemizedlist>
  569. </section>
  570. <section id="changelog"><title>Change Log</title>
  571. <itemizedlist>
  572. <listitem><para>Release 007 (November, 2011) - <ulink url="mailto:kerik-sf@users.sourceforge.net">E. Le Lay</ulink></para>
  573. <para>Maintainance release.</para>
  574. <itemizedlist>
  575. <listitem><para>support hunspell on Mac OS X x86 64 bits JVM</para></listitem>
  576. <listitem><para>use the Fest framework for tests</para></listitem>
  577. <listitem><para>update the location of OpenOffice.org dictionary listing</para></listitem>
  578. <listitem><para>optional dependency on VoxSpell (fixes plugin bug #2523940)</para></listitem>
  579. </itemizedlist>
  580. </listitem>
  581. <listitem><para>Release 006 (September, 2008) - <ulink url="mailto:kerik-sf@users.sourceforge.net">E. Le Lay</ulink></para>
  582. <itemizedlist>
  583. <listitem><para>user dictionaries</para></listitem>
  584. <listitem><para>multiple engines (Hunspell bundled)</para></listitem>
  585. <listitem><para>previous and done actions in spell-check dialog</para></listitem>
  586. <listitem><para>suggest action in spell-check dialog</para></listitem>
  587. <listitem><para>use buffer token types for context-sensitive spellchecking</para></listitem>
  588. </itemizedlist>
  589. </listitem>
  590. <listitem><para>Release 005 (August 26, 2008) - <ulink url="mailto:kerik-sf@users.sourceforge.net">E. Le Lay</ulink></para>
  591. <itemizedlist>
  592. <listitem><para>Fix: bug [787498] : SpellCheck freeze. Now SpellCheck shouldn't
  593. freeze the editor any more. (If it does, please report !)</para></listitem>
  594. <listitem><para>Fix: the currently spell-checked word is highlighted</para></listitem>
  595. <listitem><para>Updated for jEdit 4.3 API (dynamic loading, local data)</para></listitem>
  596. <listitem><para>Add the ability to define the language for each buffer.</para></listitem>
  597. <listitem><para>Really use mode-filters (fix for bug [898733] SpellCheck does not discard markup).</para></listitem>
  598. <listitem><para>Add the ability to report misspellings as warnings in ErrorList</para></listitem>
  599. </itemizedlist>
  600. </listitem>
  601. <listitem><para>Release 004 (Jul 25, 2002) - <ulink url="mailto:lio-sand@ifrance.com">L.Fiol</ulink></para>
  602. <itemizedlist>
  603. <listitem><para>Fix: the current buffer is no more changed when there were no spell
  604. errors corrected in the buffer. Instead a status message tells there
  605. were nothing to correct.</para></listitem>
  606. <listitem><para>Fix: the last line separator of the selection which is spell
  607. checked is removed if any.</para></listitem>
  608. <listitem><para>Fix: Exception was thrown when there was no suggestion for a word.</para></listitem>
  609. <listitem><para>Updated for jEdit 4.0 API.</para></listitem>
  610. <listitem><para>Spell checks for entire buffer when no selection.</para></listitem>
  611. <listitem><para>If the Aspell executable field is empty it is defaulted to 'Aspell'
  612. on Unix systems. On others systems an open file dialog is displayed.
  613. The Aspell executable property is saved afterward.</para></listitem>
  614. <listitem><para>Add the ability to choose another language dictionary than the default
  615. one (use both the --lang and --language-tag parameters as some systems
  616. seems to need the first and others the second).</para></listitem>
  617. <listitem><para>Add the ability to choose to automatically discard tags in all defined
  618. markup edit modes.</para></listitem>
  619. <listitem><para>Add the ability to specify any additional Aspell parameter.</para></listitem>
  620. </itemizedlist>
  621. </listitem>
  622. <listitem>
  623. <para>Release 003 (Sep 09, 2001)</para>
  624. <itemizedlist>
  625. <listitem><para>Same functionality as R002, but now in SourceForge's CVS.</para></listitem>
  626. <listitem><para>Cleaned and improved the build.xml and build.cmd files.</para></listitem>
  627. </itemizedlist>
  628. </listitem>
  629. <listitem>
  630. <para>Release 002 (Apr 22, 2001)</para>
  631. <itemizedlist>
  632. <listitem><para>Added build files (<code>build.xml</code> and <code>makefile.jmk</code>)
  633. to distribution</para></listitem>
  634. <listitem><para>Updated <code>help.html</code> with test feedback and system requirements</para></listitem>
  635. <listitem><para>The <code>ValidationDialog</code> now remembers its last placement. This
  636. means that once you move it out-of-the-way, it stays out-of-the-way.</para></listitem>
  637. </itemizedlist>
  638. </listitem>
  639. <listitem>
  640. <para>Release 001 (Apr 16, 2001)</para>
  641. <itemizedlist>
  642. <listitem><para>First release.</para></listitem>
  643. </itemizedlist>
  644. </listitem>
  645. </itemizedlist>
  646. </section>
  647. </article>