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

Wow, nice! Honestly I never though to bind the completition function with Curses::UI directly, Many thanks! Regards, Edoardo Mantovani
  • Comment on Re^2: word auto-corrector in Curses::UI

Replies are listed 'Best First'.
Re^3: word auto-corrector in Curses::UI
by Bpl (Scribe) on Jan 09, 2021 at 12:21 UTC
    EDIT:
    Aww, small problem now, it doesn't work! unfortunately when I double click TAB seems that the program pass to another perlio layer and not to STDIN! infact when I try to click the upside buttons (given by Curses::UI), I obtain the printing of the following lines to the screen:
    [M %! [ M#%![ M% ecc..

    which seems to be malformed input strings, probably there must be some
    pack($input)
    solution
    Regards,
    Edoardo Mantovani

      The problem is that after the first <Tab> Curses::UI gives control of the terminal to Term::Complete. It acts directly on the terminal, and Curses::UI is not aware of what it does. It is not another perlio layer. Curses::UI is not aware of any keystrokes whilst in Term::Complete::Complete(). From the POD of Term::Complete:

      The tty driver is put into raw mode and restored using an operating system specific command, in UNIX-like environments "stty".

      So, Curses::UI and Term::Complete are not aware of each other. Term::Complete doesn't define up/down keys. It is tricky to integrate both...

      With the snippet as provided, <Tab> must be pressed before attempting a completion; then you type the chars of a word you intend to complete. Subseqent <Tab> presses advance the completion until it is unambiguous. Then you press <Return> - completion done. Refresh the screen with ^L.

      perl -le'print map{pack c,($-++?1:13)+ord}split//,ESEL'
        Oh, that's unexpected,
        Initially I thought that Curses::UI used a custom perlio layer for its purposes, but effectively in the source code there is no XS ( || perlio library ), So the question remain the same,
        How I could create an auto-correcting text-editor application?
        There is something better or similar than Ncurses || Curses::UI on CPAN?
        regards,
        Edoardo Mantovani