How I could create an auto-correcting text-editor application?
You tried to integrate Term::Complete into your curses UI, but that's not about auto-correction.
First thing you have to do is get the snippet of text which has to be examined as e.g. $candidate:
$cui->add_callback( 'editor', \¤t_word);
my $candidate; # word to build a complete list from, or to spell-check
sub current_word {
my ($x, $y);
Curses::UI::TextEditor::getsyx($y, $x); # not $editor->getsyx($foo
+), this would overwrite $editor. BUG!
$y--; # there's 1 padding line
chomp (my $line = $editor->getline_at_ypos($y-1)); # first line is
+ 0
my $part = substr $line, 0, $x;
($candidate) = $part =~ /\b(\w+)$/; # caveat locale, utf8
warn $fh "x: $x y: $y '$line' - '$part' candidate: '$candidate'\n"
+;
}
This will give you information to STDERR about the current word under the cursor at every keystroke.
You can build a list of completion candidates based on that word, or check the spelling with e.g. the aspell library.
Based on that word, you could decide wether adding a <Tab> to the text, or attempt completion.
You could mark misspelled words in terms of Term::ANSIColor or such, do completion with either Term::Complete or Term::ReadLine::Gnu (with both you have to shoehorn the results into your $editor widget) - or just do your own completion routine with Curses::UI using Curses::UI::Listbox to display possible completions.
Way to go yet...
PS: why? are you trying to re-implement vi or emacs in perl? ;)
PS2: "Find and Replace" comes first in functionality, then more sophisticated things like (auto-)completion and spellcheck.
perl -le'print map{pack c,($-++?1:13)+ord}split//,ESEL'
|