Loading ...
Sorry, an error occurred while loading the content.
 

PATCH: Many VIM warnings do not set v:warningmsg

Expand Messages
  • Ingo Karkat
    ... Actually, the only (!) message that sets v:warningmsg is the search hit BOTTOM, continuing at TOP (and its reverse) warning. While grepping through the
    Message 1 of 6 , Mar 3, 2009
      On 26-Feb-09 4:21, Bram Moolenaar wrote:
      > Ingo Karkat wrote:
      >> According to the help, v:warningmsg contains the last given warning message.
      >> I've encountered multiple VIM warnings which do not update this variable:
      >>
      >> vim -N -u NONE
      >> :setl ro
      >> :normal! oFoobar
      >> W10: Warning: Changing a readonly file-- INSERT --
      >> :echo v:warningmsg
      >>
      >> " I would have expected that v:warningmsg now contains W10: ...
      >> /Foo
      >> search hit BOTTOM, continuing at TOP
      >> :echo v:warningmsg
      >> search hit BOTTOM, continuing at TOP
      >> " OK here, the wrapscan message sets v:warningmsg as expected.
      >> :w foo
      >> W10: Warning: Changing a readonly file
      >> :echo v:warningmsg
      >> search hit BOTTOM, continuing at TOP
      >> " v:warningmsg not set, still contains the old warning.
      >> :normal! oMore text
      >> :!echo "Changed" >> foo
      >> [No write since last change]
      >> W12: Warning: File "foo" has changed and the buffer was changed in Vim as well
      >> See ":help W12" for more info.
      >> [O]K, (L)oad File:
      >> :echo v:warningmsg
      >> search hit BOTTOM, continuing at TOP
      >> " It's not just W10, W12 also doesn't set v:warningmsg.
      >>
      >> I can reproduce this with VIM 7.2.127 on Linux and the default VIM 7.0
      >> - 7.2 on Windows.
      >
      > I'll add it to the todo list. Note that you need to mention every
      > message you are missing, there probably is no generic solution.

      Actually, the only (!) message that sets v:warningmsg is the "search hit BOTTOM,
      continuing at TOP" (and its reverse) warning.

      While grepping through the source code, I found out that there are different
      kinds of warning: With or without highlighting, with /W\d\+:/ prefix and/or
      prefixed with "Warning:", echoed to the command line or (in some (correct)
      cases) to stderr. Many purported warnings are actually echoed as errors, BTW.
      Thus, I actually found surprisingly few warnings that should be stored in
      v:warningmsg.

      Attached patch adds the setting of v:warningmsg for:
      - W10: Warning: Changing a readonly file
      - The W11, W12, W13, W16 "file has changed" warnings
      - W17: Arabic requires UTF-8, do ':set encoding=utf-8' (just for completeness'
      sake, not sure why someone would be interested in this)

      Please review the patch, my C is a bit rusty, and I'm not well versed in the
      string types and message translation macros used in the sources.

      -- regards, ingo

      --
      -- Ingo Karkat -- /^-- /^-- /^-- /^-- /^-- /^-- http://ingo-karkat.de/ --

      --~--~---------~--~----~------------~-------~--~----~
      You received this message from the "vim_dev" maillist.
      For more information, visit http://www.vim.org/maillist.php
      -~----------~----~----~----~------~----~------~--~---
    • Bram Moolenaar
      ... Thanks for the patch. I ll look into it later. -- hundred-and-one symptoms of being an internet addict: 159. You get excited whenever discussing your hard
      Message 2 of 6 , Mar 3, 2009
        Ingo Karkat wrote:

        > On 26-Feb-09 4:21, Bram Moolenaar wrote:
        > > Ingo Karkat wrote:
        > >> According to the help, v:warningmsg contains the last given warning message.
        > >> I've encountered multiple VIM warnings which do not update this variable:
        > >>
        > >> vim -N -u NONE
        > >> :setl ro
        > >> :normal! oFoobar
        > >> W10: Warning: Changing a readonly file-- INSERT --
        > >> :echo v:warningmsg
        > >>
        > >> " I would have expected that v:warningmsg now contains W10: ...
        > >> /Foo
        > >> search hit BOTTOM, continuing at TOP
        > >> :echo v:warningmsg
        > >> search hit BOTTOM, continuing at TOP
        > >> " OK here, the wrapscan message sets v:warningmsg as expected.
        > >> :w foo
        > >> W10: Warning: Changing a readonly file
        > >> :echo v:warningmsg
        > >> search hit BOTTOM, continuing at TOP
        > >> " v:warningmsg not set, still contains the old warning.
        > >> :normal! oMore text
        > >> :!echo "Changed" >> foo
        > >> [No write since last change]
        > >> W12: Warning: File "foo" has changed and the buffer was changed in Vim as well
        > >> See ":help W12" for more info.
        > >> [O]K, (L)oad File:
        > >> :echo v:warningmsg
        > >> search hit BOTTOM, continuing at TOP
        > >> " It's not just W10, W12 also doesn't set v:warningmsg.
        > >>
        > >> I can reproduce this with VIM 7.2.127 on Linux and the default VIM 7.0
        > >> - 7.2 on Windows.
        > >
        > > I'll add it to the todo list. Note that you need to mention every
        > > message you are missing, there probably is no generic solution.
        >
        > Actually, the only (!) message that sets v:warningmsg is the "search hit BOTTOM,
        > continuing at TOP" (and its reverse) warning.
        >
        > While grepping through the source code, I found out that there are different
        > kinds of warning: With or without highlighting, with /W\d\+:/ prefix and/or
        > prefixed with "Warning:", echoed to the command line or (in some (correct)
        > cases) to stderr. Many purported warnings are actually echoed as errors, BTW.
        > Thus, I actually found surprisingly few warnings that should be stored in
        > v:warningmsg.
        >
        > Attached patch adds the setting of v:warningmsg for:
        > - W10: Warning: Changing a readonly file
        > - The W11, W12, W13, W16 "file has changed" warnings
        > - W17: Arabic requires UTF-8, do ':set encoding=utf-8' (just for completeness'
        > sake, not sure why someone would be interested in this)
        >
        > Please review the patch, my C is a bit rusty, and I'm not well versed in the
        > string types and message translation macros used in the sources.

        Thanks for the patch. I'll look into it later.

        --
        hundred-and-one symptoms of being an internet addict:
        159. You get excited whenever discussing your hard drive.

        /// Bram Moolenaar -- Bram@... -- http://www.Moolenaar.net \\\
        /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
        \\\ download, build and distribute -- http://www.A-A-P.org ///
        \\\ help me help AIDS victims -- http://ICCF-Holland.org ///

        --~--~---------~--~----~------------~-------~--~----~
        You received this message from the "vim_dev" maillist.
        For more information, visit http://www.vim.org/maillist.php
        -~----------~----~----~----~------~----~------~--~---
      • Tony Mechelynck
        On 03/03/09 16:33, Ingo Karkat wrote: [...] ... [...] maybe to prevent bug reports in case someone tried to edit Arabic with encoding set to ISO-8859-6 and
        Message 3 of 6 , Mar 4, 2009
          On 03/03/09 16:33, Ingo Karkat wrote:
          [...]
          > - W17: Arabic requires UTF-8, do ':set encoding=utf-8' (just for completeness'
          > sake, not sure why someone would be interested in this)
          [...]

          maybe to prevent bug reports in case someone tried to edit Arabic with
          'encoding' set to ISO-8859-6 and wondered why only isolated forms were
          shown?

          Best regards,
          Tony.
          --
          People will do tomorrow what they did today because that is what they
          did yesterday.

          --~--~---------~--~----~------------~-------~--~----~
          You received this message from the "vim_dev" maillist.
          For more information, visit http://www.vim.org/maillist.php
          -~----------~----~----~----~------~----~------~--~---
        Your message has been successfully submitted and would be delivered to recipients shortly.