[Users] Missing spell checker [Claws Mail, enchant, aspell, CentOS 6.5]

Victoria S. 1 at VictoriasJourney.com
Sat Jul 12 19:05:44 CEST 2014


Charles (earlier in this thread) presented a reasonable Claws Mail spell-checking solution -- my Claws installation lacks an integrated spell checker -- that got me thinking and experimenting.  Here is my solution/summary.

Spell Checking in Claws Mail Using aspell

Background: I work in a corporate environment, on a CentOS-based computer without root access, where it was claimed that Claws Mail could not be installed.  After I requested some needed packages (dependencies), I managed to compile Claws mail myself in my home directory, and it works fine.  However, despite enchant being installed earlier by Systems (our support staff), it never worked right; e.g., my ~/.config./enchant/en_us.dic is overwritten to 0 bytes whenever I log out; this issue was never resolved.  Perhaps related, when I compiled Claws Mail in my $HOME directory using ./configure --prefix=$HOME/... it compiled Claws without spell checking support.  I therefore also (re-installed) enchant, set the $PATH, etc., and recompiled Claws --  all to no avail - any of these issues.

Workaround:

1. Install (local user) GNU aspell (http://aspell.net/; see 'man aspell' for more information).

2. Also need to install an aspell dictionary; my aspell dictionary is at ~/.aspell.en.pws; usage: aspell -c <file>

3. Enable a Claws Mail aspell-based spell check "action" (Configuration:Actions... menu):

Per the example provided at http://www.claws-mail.org/faq/index.php/Actions ...

    Check spelling (Open a terminal and check the spelling with ispell):
    |T=`mktemp $HOME/.sXXXXXX`; cat - > $T;xterm -e ispell $T;cat $T;rm $T|

... I modified this action to work with aspell (vs. ispell: not installed) and gnome-terminal (vs. xterm: not installed):

| T=`mktemp $HOME/.tmpXXX`; cat - > $T ; gnome-terminal --geometry 150x55+25+25 -x aspell -c $T;  printf ' ' >> $T; cat $T; rm $T |

4. Set Claws Mail keyboard shortcut (Ctrl-L) for aspell action:

 a. Configuration:Preferences:Other:Miscellaneous:Enable customizable keyboard shortcuts menu

 b. Hover over the Tools:Actions:aspell menu item in both the Claws main program window and separately in the message composition window and type your shortcut (e.g., Ctrl-L)

Notes:

1. System environment, versions: Claws 3.10.1 on CentOS 6.5 Final 64-bit; aspell -v: @(#) International Ispell Version 3.1.20 (but really Aspell 0.60.6.1)

2. Claws Mail actions: http://www.claws-mail.org/faq/index.php/Actions

3. mktemp: see (e.g.) linux mktemp man page (http://linux.die.net/man/1/mktemp) and https://github.com/rtomayko/shocco/issues/5 (for " too few X's in template" error message)

4. cat - > : The '-' is important!  Per the linux cat man page (provided example - annotated here):

  cat f - g     ## Output f’s contents, then standard input [i.e. the '-'], then g’s contents."

5. gnome-terminal --geometry 150x55+25+25   ## width x height + xpos + ypos; adjust per your preference (or simply omit the --geometry option)

6. Problem - a quirk?  The last character is truncated (omitted) when the output is returned to Claws; it is not due to aspell (tested independently using the same text in a text file using aspell in the terminal); the input is fine up to that point, so it must be in the latter "cat $T;" or "|" parts of the action command.  Workarounds:

 a. Include a trailing space in your message, prior to running aspell.

 b. Alternatively (per http://www.unix.com/shell-programming-and-scripting/128970-add-space-end-file.html), modify the action script as follows (also implemented above, in case this portion of these notes is deleted or not read): programmatically  add a trailing space at the end of the $T temporary file that is returned to Claws Mail (printf ' ' >> $T;):

| T=`mktemp $HOME/.tmpXXX`; cat - > $T ; gnome-terminal --geometry 150x55+25+25 -x aspell -c $T;  printf ' ' >> $T; cat $T; rm $T |

7. If there are no spelling errors, aspell will simply execute and terminate; i.e., it will appear that nothing has happened.

8. aspell, aspell dictionary installation notes (CentOS 6; abbreviated here):

  a. Install aspell binary [http://aspell.net/]

./configure --prefix=$HOME/Linux/apps/aspell
make
make install
make clean

Set path (see: https://www.cs.purdue.edu/homes/cs348/unix_path.html):

echo 'export PATH=/home/vstuart/Linux/apps/aspell/:$PATH'

  ## Note! Appending $PATH at the end, rather than the beginning,
     export PATH=$PATH:/..., directs the system to this binary, first!
     The trailing /, before :$PATH, is important/needed!

To make this path permanent, add the following to your ~/.bashrc:

export PATH=/home/vstuart/Linux/apps/aspell/bin/:$PATH

  b. Install aspell dictionary

./configure --help
Usage: ./configure [--help | --vars VAR1=VAL1 ...]
  Note: Variables may also be set in the environment before running configure
  Useful vars: ASPELL ASPELL_PARMS PREZIP DESTDIR

In the following I guessed at the PREFIX= bit, but it seemed to work.  I had to dig around for "prezip-bin" : it is here (in my aspell installation):

/home/vstuart/Linux/apps/aspell/bin/prezip-bin

So, the three steps are:

./configure --vars  PREFIX=--prefix=$HOME/Linux/apps/aspell  ASPELL=/home/vstuart/Linux/apps/aspell/bin/aspell
make
make install
make clean

9. Also added aspell binary path to ~/.bashrc:

alias aspell='echo "  [~/Linux/apps/aspell/bin/aspell]" && /home/vstuart/Linux/apps/aspell/bin/aspell'

Q.E.D.  :-)



More information about the Users mailing list