Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: tcsh's autocorrect functionality wanted

On Nov 11,  9:24pm, Matthew Braun wrote:
} Subject: tcsh's autocorrect functionality wanted
} I would like to get this tcsh functionality in zsh:
}      autocorrect (+)
}              If set, the spell-word  editor  command  is  invoked
}              automatically before each completion attempt.

That would be pretty trivial to add, I think, except for the bugs in
spell-word described below.

} What I was thinking:
} function spell-expand-or-complete-prefix {
}   spell-word
}   expand-or-complete-prefix
} }
} bindkey ^i spell-expand-or-complete-prefix

The way you do that sort of thing is like this:

	# bindkey '\es' spell-word	# already the default
	bindkey '\C-x\C-i' expand-or-complete-prefix
	bindkey -s '\t' '\es\C-x\C-i'

However, spell-word isn't clever.  It doesn't deal properly with a path
beginning with a tilde (~) -- I consider this to be a bug, because this
IS handled by `setopt correctall` -- and it does not know how to fix up
the path prefix when the suffix is "too far" from the correct spelling.

Finally, spell-word ignores `setopt completeinword` and always behaves
as if `setopt awaystoend`, so the cursor ends up in what may be a very
wrong place after spelling is completed.

So for now you can try the binding above; or you can look at "multicomp"
in the Functions/ directory of the zsh distribution, write yourself a
little program that does spell checking, and replace `reply=(${~reply})'
in that function with `reply=( $(spellcheck ${~reply}) )'.  For a basis
of the spell-checking program, you can cannibalize Src/utils.c for the
functions spname(), mindist(), and spdist().

Bart Schaefer                             Brass Lantern Enterprises
http://www.well.com/user/barts            http://www.nbn.com/people/lantern

Messages sorted by: Reverse Date, Date, Thread, Author