Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW

Re^6: word auto-corrector in Curses::UI

by shmem (Chancellor)
on Jan 09, 2021 at 15:10 UTC ( #11126657=note: print w/replies, xml ) Need Help??

in reply to Re^5: word auto-corrector in Curses::UI
in thread word auto-corrector in Curses::UI

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', \&current_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'

Replies are listed 'Best First'.
Re^7: word auto-corrector in Curses::UI
by Bpl (Scribe) on Jan 10, 2021 at 19:50 UTC
    Sorry for the late reply, in those days I'll try to do it.
    Still many thanks for everything!
    Edoardo Mantovani

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://11126657]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (5)
As of 2021-03-01 05:30 GMT
Find Nodes?
    Voting Booth?

    No recent polls found