Re: Porting Vim to new platform: problem with terminal
- Problem solved with
if( time != -1 )
at the beginning of mch_inchar. Could this cause problems? I don't
know how to test for the presence of keypresses on this system.
Oscar Fuentes <ofv@...> writes:
- Oscar Fuentes wrote:
> I'm porting Vim 5.5 to EPOC R5 using the EpocEmx development kit, wichYou should use the "time" argument here. If it's a small number, like
> provides a terminal emulating the vt100.
> This is a sample sesion that shows the problem:
> start vim without vim_rc file
> press 'a'.
> press 'h' 3 times. Nothing is shown.
> press ESC. Now the screen shows 'hhh', with the cursor under the third 'h'.
> press ESC again. Nothing happens.
> press ESC again. Beep.
> press ':'. Beep. An ':' appears on the right place.
> press 'q', then '!'. A 'q!' appears as nornal.
> press Enter. Vim exits.
> This is with a vim_rc file that sets nocompatible:
> press 'a'.
> press 'h'. The modeline changes to "-- INSERT --". No 'h' is shown.
> press two more times 'h'. Nothing changes on the terminal.
> press ESC. Nothing changes.
> press ESC again. The "-- INSERT --" dissappears and the 'h's we wrote
> appears on the screen.
> press ':'. Beep. No ':' is shown on the command line.
> press 'q'. On the command line ':q' is shown.
> press '!'. Now the command line shows ':q!'
> pres Enter. Vim exits.
> Seems that Vim is holding characters somewhere before they take
> The os_epoc.c file is simplistic to the maximum. These are the
> terminal I/O functions:
> char_u *buf,
> int maxlen,
> long time)
> buf = ttgetc();
> buf = '\0';
> return 1;
> 'ttgetc' simply waits until a key is pressed and returns its code. It
> doesn't work for cursor keys, PgDn/PgUp, etc but that is not a
> problem yet.
100 or 1000, then mch_inchar() should not block. Only when "time" is -1
mch_inchar() may block. In your situation you might want to return 0
whenever "time" is >= 0.
There will still be a problem: when 'timeoutlen' is 1000 Vim will not
wait a second for a mapping to complete. If this system has some
polling function and a delay function you should use that. Perhaps
os_amiga.c is a good example for you.
I suggest you have a good look at the other os_*.c files to find out how
they implemented the machine specific functions.
hundred-and-one symptoms of being an internet addict:
37. You start looking for hot HTML addresses in public restrooms.
/// Bram Moolenaar -- Bram@... -- http://www.Moolenaar.net \\\
/// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ Project leader for A-A-P -- http://www.A-A-P.org ///
\\\ Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html ///