ispell mode * installation Simply put it all in your load path, add require ("ispell_init"); to your .jedrc, and any keybindings you want. And set up your dictionaries. * dictionaries On Debian the dictionaries should be automatically initialised by the dictionaries-common package. On other systems, use ispell_add_dictionary(), aspell_add_dictionary() or hunspell_add_dictionary(). hash_name: the name by which ispell knows the language (a .hash file in /usr/lib/ispell) letters: letters that constitute words. For latin1 languages, the default should be all right. otherchars: chars that may appear inside words, or outside words. In English it's "'", in other languages it may be "-'". Old versions of dictionaries_common don't provide this argument, so you have to update. ext_char: something that's put in the ispell command line after a "-T" flag and should match a stringtype defined in /usr/lib/ispell/(language).aff. So it's not the same as Emacs ispell's extended-character-mode or character-set. If you're European try latin1. Dutch doesn't seem to need it but in German an 'ä' will be turned into an '"a' without it. This option is only for ispell_add_dictionary(), not for aspell_add_dictionary(). options: any other args you want to pass. wordlist: just needed for ispell_complete, it would be annoying to have to set the language for ispell AND a wordlist for completions. For Debian users, this one is not automatically filled in. * ispell and utf-8 For checking utf-8, it's recommended to use aspell. Ispell.sl does not work with ispell in utf-8 mode, though flyspell.sl should. * using (i|fly)spell with other modes ** checking TeX When in TeX mode, ispell_region() will tell the ispell process to switch to TeX mode. Ispell will not check the markup. However, when a word is misspelled, the rest of the line is again sent to ispell like this: check out this fomrula $ A^2 + B^2 = C^2 $ First it will stop at fomrula, then "formula $ A^2 +" will be sent again to re-check the correction and check the rest of the line (much easier to program that way). The problem is that in TeX, "$" starts and ends a math environment which ispell does not check, and ispell does not see its input as unrelated lines, but tries to keep track of the environment. The first "$" is seen twice, so the third "$" will start a new math environment for ispell, and the rest of the buffer will not be checked. I don't know how much of a problem this is, since I don't use TeX. BTW I read somewhere that the `$' to delimit math environments is deprecated. *** flyspelling TeX To flyspell TeX while keeping your syntax highlighting use a hook like this: define latex_mode_hook() { define_blocal_var("flyspell_syntax_table", "TeX-Mode"); } Flyspell doesn't always work with DFA, so it turns DFA mode off when a blocal flyspell_syntax_table is set. ** checking html Doesn't work. Since ispell does not have an interactive command for turning html parsing on, you would have to create a dictionary entry for html: ispell_add_dictionary("html", "british", NULL, "-'", "/home/paul/htmlwords.txt", " -h"); Htmlwords.txt would be a list of html keywords for word-completion. You can set this in the html mode hook: define html_mode_hook() { ispell_change_local_dictionary("html"); define_blocal_var("flyspell_syntax_table", "html"); } This could be expected to have the same shortcomings as [checking TeX]. If you'd check get more kool jedmodez from you could expect it to complain about "kool" but skip over "jedmodez" since it would think this is part of a HTML tag. As it turns out, html parsing works differently between a full-screen ispell and ispell -a. The full-screen ispell deals correctly with tags that span lines, but ispell -a will echo the lines between the opening and closing bracket without an empty line to indicate it has finished processing the line. Ispell.sl does not know how to deal with this and crashes. ** checking email Email.sl has an ispell_message() function that will check the body of of the message, and an ispell_region_hook that will skip past quoted text. Get it from http://jedmodes.sf.net. * FAQ ** Undefined Name: ispell_region: Function did not autoload You installed ispell.sl in jed's lib/ directory and didn't remove ispell.slc. Put non-standard modes in their own directory. ** Invalid UTF-8 encoded string You're running in utf-8 mode, and the 'letters' and/or 'otherchars' arguments of your ispell_add_dictionary or aspell_add_dictionary calls are not encoded in utf-8. Use something like if (_slang_utf8_ok) { % utf-8 settings } else { % latin1 settings } * license This package is GPL'ed. No warranty. You can get the latest version at http://jedmodes.sf.net/mode/ispell * thanks Kudos to Günter Milde, Rafael Laboissiere, Agustin Martin and JED.