On 2023-06-15, Bram Moolenaar wrote:
> > On 2023-06-15, Bram Moolenaar wrote:
> > > > Help for :map-<silent> says that with <silent>, the right side of
> > > > a mapping will not be echoed on the command line, but messages from
> > > > the executed command are still given. This works with :nmap but not
> > > > with :vmap. I would expect it to work with :vmap as well.
> > > >
> > > > Steps to reproduce
> > > >
> > > > 1. Put the following in a file, say foo.vim.
> > > >
> > > > nmap <silent> gx :call DebugSilent()<CR>
> > > > vmap <silent> gx :call DebugSilent()<CR>
> > > > function DebugSilent()
> > > > echomsg "from DebugSilent"
> > > > endfunction
> > > >
> > > > 2. Start vim and source that file.
> > > >
> > > > $ vim -N --clean
> > > > :so foo.vim
> > > >
> > > > 3. Enter some word into the current buffer.
> > > >
> > > > 4. Visually select that word.
> > > >
> > > > viw
> > > >
> > > > 5. Type the mapping.
> > > >
> > > > gx
> > > >
> > > > 6. Note that no message appears, or just flashes by briefly.
> > > >
> > > > 7. Execute :messages to verify that the message was generated and
> > > > saved in message history.
> > > >
> > > > 8. Without visually selecting the word, type the mapping.
> > > >
> > > > gx
> > > >
> > > > 9. Note that the message does appear in the command line and
> > > > remains there.
> > > >
> > > > Expected behavior
> > > >
> > > > I expect the message to remain in the command line after the
> > > > execution of the vmap just as it does for a normal map.
> > >
> > > It appears to work as you expect when 'cmdheight' is 2 or more.
> > >
> > > Most likely the message is cleared when the "-- VISUAL --" mode message
> > > is removed. Setting 'noshowmode' helps.
> > >
> > > This should not happen though, when the message overwrites the mode then
> > > there is no need later to clear the mode message.
> >
> > I would expect it to work like gf (which itself is inconsistent).
> > If I put the cursor over "later" in the paragraph above and type
> > gf, I get a persistent error message in the command line:
> >
> > E447: Can't find file "later" in path
> >
> > If I visually-select "later" with viw and type gf, I get the same
> > message, but it appears for only about one second. It seems like it
> > should also persist, but at least I see it and can look in :messages
> > to read it again.
> >
> > 'cmdheight' doesn't seem to affect the behavior of gf, but setting
> > 'noshowmode' does "fix" it. It would be nice if visual mode could
> > be made smarter about clearing "-- VISUAL --" when that message has
> > been overwritten, or at least leave it for a second or two as
> > {Visual}gf does.
>
> The patch I made first had a strict condition of where the message is
> displayed. The "gf" error message is on a different line, causing that
> condition not to be true. I'll fix that.
Your second patch seems to work fine, but the problem in my original
mapping and function remained. I finally found and fixed the
problem, but I don't understand what's going on.
This test mapping and function (from the original problem report)
now works fine when I move the cursor over a word and type "viwgx".
vmap <silent> gx :call DebugSilent()<CR>
function DebugSilent()
echomsg "from DebugSilent"
endfunction
But if I add this :normal command to the function, the message
disappears.
function DebugSilent()
normal gvy
echomsg "from DebugSilent"
endfunction
If I add :silent in front of the :normal command, the message
persists again as desired.
function DebugSilent()
silent normal gvy
echomsg "from DebugSilent"
endfunction
I don't understand why the :normal command affects a message echoed
_after_ the :normal command.
Regards,
Gary
--
--
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/20230615204451.GE6600%40phoenix.