1071d4279SBram Moolenaar#!/bin/sh 2071d4279SBram Moolenaar# 3071d4279SBram Moolenaar# Spell a file & generate the syntax statements necessary to 4071d4279SBram Moolenaar# highlight in vim. Based on a program from Krishna Gadepalli 5071d4279SBram Moolenaar# <[email protected]>. 6071d4279SBram Moolenaar# 7071d4279SBram Moolenaar# I use the following mappings (in .vimrc): 8071d4279SBram Moolenaar# 9071d4279SBram Moolenaar# noremap <F8> :so `vimspell.sh %`<CR><CR> 10071d4279SBram Moolenaar# noremap <F7> :syntax clear SpellErrors<CR> 11071d4279SBram Moolenaar# 12071d4279SBram Moolenaar# Neil Schemenauer <[email protected]> 13071d4279SBram Moolenaar# March 1999 14*e37d50a5SBram Moolenaar# updated 2008 Jul 17 by Bram 153a7c85bcSBram Moolenaar# 163a7c85bcSBram Moolenaar# Safe method for the temp file by Javier Fern�ndez-Sanguino_Pe�a 17071d4279SBram Moolenaar 18071d4279SBram MoolenaarINFILE=$1 193a7c85bcSBram Moolenaartmp="${TMPDIR-/tmp}" 203a7c85bcSBram MoolenaarOUTFILE=`mktemp -t vimspellXXXXXX || tempfile -p vimspell || echo none` 213a7c85bcSBram Moolenaar# If the standard commands failed then create the file 223a7c85bcSBram Moolenaar# since we cannot create a directory (we cannot remove it on exit) 233a7c85bcSBram Moolenaar# create a file in the safest way possible. 243a7c85bcSBram Moolenaarif test "$OUTFILE" = none; then 253a7c85bcSBram Moolenaar OUTFILE=$tmp/vimspell$$ 26*e37d50a5SBram Moolenaar [ -e $OUTFILE ] && { echo "Cannot use temporary file $OUTFILE, it already exists!"; exit 1 ; } 273a7c85bcSBram Moolenaar (umask 077; touch $OUTFILE) 283a7c85bcSBram Moolenaarfi 293a7c85bcSBram Moolenaar# Note the copy of vimspell cannot be deleted on exit since it is 303a7c85bcSBram Moolenaar# used by vim, otherwise it should do this: 313a7c85bcSBram Moolenaar# trap "rm -f $OUTFILE" 0 1 2 3 9 11 13 15 323a7c85bcSBram Moolenaar 33071d4279SBram Moolenaar 34071d4279SBram Moolenaar# 35071d4279SBram Moolenaar# local spellings 36071d4279SBram Moolenaar# 37071d4279SBram MoolenaarLOCAL_DICT=${LOCAL_DICT-$HOME/local/lib/local_dict} 38071d4279SBram Moolenaar 39071d4279SBram Moolenaarif [ -f $LOCAL_DICT ] 40071d4279SBram Moolenaarthen 41071d4279SBram Moolenaar SPELL_ARGS="+$LOCAL_DICT" 42071d4279SBram Moolenaarfi 43071d4279SBram Moolenaar 44071d4279SBram Moolenaarspell $SPELL_ARGS $INFILE | sort -u | 45071d4279SBram Moolenaarawk ' 46071d4279SBram Moolenaar { 47071d4279SBram Moolenaar printf "syntax match SpellErrors \"\\<%s\\>\"\n", $0 ; 48071d4279SBram Moolenaar } 49071d4279SBram Moolenaar 50071d4279SBram MoolenaarEND { 51071d4279SBram Moolenaar printf "highlight link SpellErrors ErrorMsg\n\n" ; 52071d4279SBram Moolenaar } 53071d4279SBram Moolenaar' > $OUTFILE 54071d4279SBram Moolenaarecho "!rm $OUTFILE" >> $OUTFILE 55071d4279SBram Moolenaarecho $OUTFILE 56