I wrote:
> > In xterm, the terminal option `'t_RV'` needs to be cleared to reproduce the
> > issue. Run this shell command
> >
> > vim -Nu NONE -S <(cat <<'EOF'
> > set t_RV=
> > call writefile([], '/tmp/somefile')
> > autocmd QuickFixCmdPost * !less /tmp/somefile
> > doautocmd QuickFixCmdPost
> > EOF
> > )
> >
> > Then, press `q` to close `less(1)`, then press `<Left>`; `E349` is
> > unexpectedly raised:
> >
> > E349: No identifier under cursor
>
> Thanks for the info. I can also reproduce it without the autocommand,
> just typing ":!less /tmp/somefile" does the same.
>
> What happens is that Vim receives ESC [ D for the Left cursor key.
> This is not recognized, the Left key is expected to produce ESC O D.
> The Esc key is then used to leave the Enter prompt and the remaining [ D
> is a command to search for the identifier under the cursor.
>
> At the Enter prompt the terminal hasn't been switched back to termcap
> mode yet, because that might switch to the alternate screen and you
> can't see the shell command output. Making the Left key produce a
> different Escape sequence is a side effect.
>
> This could perhaps be fixed by going to half-termcap mode, only
> outputting some of the codes and sending t_ti later. However, the
> effect is unpredictable, the termcap codes may contain anything.
>
> Another way would be to also recognize the alternate form of the Left
> key. But we would need to do the same for many special keys.
>
> Since it's been like this for ages without complaints, and trying to fix
> this will most likely have side effects, I think we should just leave
> it.
Actually, we do have a set of termcap entries for the other form of the
cursor keys, but they start with Esc [ 1. I'm not sure why the
requirement for that number one comes from, perhaps it works if we leave
it out:
--- ../prev/term.c 2020-12-18 19:49:52.389571687 +0100
+++ term.c 2020-12-29 14:50:48.493170891 +0100
@@ -914,10 +914,10 @@
{K_RIGHT, IF_EB("\033O*C", ESC_STR "O*C")},
{K_LEFT, IF_EB("\033O*D", ESC_STR "O*D")},
// An extra set of cursor keys for vt100 mode
- {K_XUP, IF_EB("\033[1;*A", ESC_STR "[1;*A")},
- {K_XDOWN, IF_EB("\033[1;*B", ESC_STR "[1;*B")},
- {K_XRIGHT, IF_EB("\033[1;*C", ESC_STR "[1;*C")},
- {K_XLEFT, IF_EB("\033[1;*D", ESC_STR "[1;*D")},
+ {K_XUP, IF_EB("\033[;*A", ESC_STR "[;*A")},
+ {K_XDOWN, IF_EB("\033[;*B", ESC_STR "[;*B")},
+ {K_XRIGHT, IF_EB("\033[;*C", ESC_STR "[;*C")},
+ {K_XLEFT, IF_EB("\033[;*D", ESC_STR "[;*D")},
// An extra set of function keys for vt100 mode
{K_XF1, IF_EB("\033O*P", ESC_STR "O*P")},
{K_XF2, IF_EB("\033O*Q", ESC_STR "O*Q")},
--
It was recently discovered that research causes cancer in rats.
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vim_dev/202012291403.0BTE3dk8638835%40masaka.moolenaar.net.