blob: d336fe6c3126cf0ac6097e702dd287facf24eb8b [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001#!/bin/sh
2#
3# Spell a file & generate the syntax statements necessary to
4# highlight in vim. Based on a program from Krishna Gadepalli
5# <krishna@stdavids.picker.com>.
6#
7# I use the following mappings (in .vimrc):
8#
9# noremap <F8> :so `vimspell.sh %`<CR><CR>
10# noremap <F7> :syntax clear SpellErrors<CR>
11#
12# Neil Schemenauer <nascheme@ucalgary.ca>
13# March 1999
Bram Moolenaare37d50a2008-08-06 17:06:04 +000014# updated 2008 Jul 17 by Bram
Bram Moolenaar3a7c85b2005-02-05 21:39:53 +000015#
16# Safe method for the temp file by Javier Fernández-Sanguino_Peña
Bram Moolenaar071d4272004-06-13 20:20:40 +000017
18INFILE=$1
Bram Moolenaar3a7c85b2005-02-05 21:39:53 +000019tmp="${TMPDIR-/tmp}"
20OUTFILE=`mktemp -t vimspellXXXXXX || tempfile -p vimspell || echo none`
21# If the standard commands failed then create the file
22# since we cannot create a directory (we cannot remove it on exit)
23# create a file in the safest way possible.
24if test "$OUTFILE" = none; then
25 OUTFILE=$tmp/vimspell$$
Bram Moolenaare37d50a2008-08-06 17:06:04 +000026 [ -e $OUTFILE ] && { echo "Cannot use temporary file $OUTFILE, it already exists!"; exit 1 ; }
Bram Moolenaar3a7c85b2005-02-05 21:39:53 +000027 (umask 077; touch $OUTFILE)
28fi
29# Note the copy of vimspell cannot be deleted on exit since it is
30# used by vim, otherwise it should do this:
31# trap "rm -f $OUTFILE" 0 1 2 3 9 11 13 15
32
Bram Moolenaar071d4272004-06-13 20:20:40 +000033
34#
35# local spellings
36#
37LOCAL_DICT=${LOCAL_DICT-$HOME/local/lib/local_dict}
38
39if [ -f $LOCAL_DICT ]
40then
41 SPELL_ARGS="+$LOCAL_DICT"
42fi
43
44spell $SPELL_ARGS $INFILE | sort -u |
45awk '
46 {
47 printf "syntax match SpellErrors \"\\<%s\\>\"\n", $0 ;
48 }
49
50END {
51 printf "highlight link SpellErrors ErrorMsg\n\n" ;
52 }
53' > $OUTFILE
54echo "!rm $OUTFILE" >> $OUTFILE
55echo $OUTFILE