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

Re: jumping to errors in non-existent files

Expand Messages
  • Karthick Gururaj
    ... See :help errorformat Try, ... -- You received this message from the vim_use maillist. Do not top-post! Type your reply below the text you are replying
    Message 1 of 6 , Oct 1, 2010
    • 0 Attachment
      On Fri, Oct 1, 2010 at 7:30 PM, Jeff Perry <jeffsp@...> wrote:
      >
      > When I run my program from within vim
      >
      >      :./xyz
      >
      > and the program errors out with a runtime error, e.g.:
      >
      >     myprog: myprog.cpp:123: assertion 'x==1' failed
      >
      > vim tries to interpret the the output and jump to the offending line number.
      >
      > The problem is that in the example above it incorrectly interprets the filename as "myprog: myprog.cpp", so it opens a file with that name, which doesn't exist, and then tries to jump to line 123 in that non-existent file.
      >
      > My question is:  Where in vim is this behaviour specified and how can I tweak it to do the right thing?

      See :help errorformat

      Try,
      :set efm=%*[^\ ]%f:%l:%m

      --
      You received this message from the "vim_use" 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
    • Benjamin R. Haskell
      ... So, that addresses one aspect of the problem. But I want to ask: is it ever useful to have quickfix jump to an error in a nonexistent file in the first
      Message 2 of 6 , Oct 1, 2010
      • 0 Attachment
        On Fri, 1 Oct 2010, Karthick Gururaj wrote:

        > On Fri, Oct 1, 2010 at 7:30 PM, Jeff Perry wrote:
        >>
        >> When I run my program from within vim
        >>
        >>      :./xyz
        >>
        >> and the program errors out with a runtime error, e.g.:
        >>
        >>     myprog: myprog.cpp:123: assertion 'x==1' failed
        >>
        >> vim tries to interpret the the output and jump to the offending line
        >> number.
        >>
        >> The problem is that in the example above it incorrectly interprets
        >> the filename as "myprog: myprog.cpp", so it opens a file with that
        >> name, which doesn't exist, and then tries to jump to line 123 in that
        >> non-existent file.
        >>
        >> My question is:  Where in vim is this behaviour specified and how can
        >> I tweak it to do the right thing?
        >
        > See :help errorformat
        >
        > Try,
        > :set efm=%*[^\ ]%f:%l:%m
        >

        So, that addresses one aspect of the problem. But I want to ask: is
        it ever useful to have quickfix jump to an error in a nonexistent file
        in the first place?

        And if there's not a good use case for it, can this be changed at a
        lower level? If quickfix is told to open a file that doesn't exist,
        throw an error, instead of trying to open it.

        --
        Best,
        Ben

        --
        You received this message from the "vim_use" 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
      • Étienne Faure
        ... You also have to get the output of xyz into a file: ./xyz 2 &1 | tee xyz.err And for the rest see: man tee ... Tinou -- You received this message from the
        Message 3 of 6 , Oct 1, 2010
        • 0 Attachment
          On Fri, Oct 1, 2010 at 16:48, Benjamin R. Haskell <vim@...> wrote:
          >
          > On Fri, 1 Oct 2010, Karthick Gururaj wrote:
          >
          >> On Fri, Oct 1, 2010 at 7:30 PM, Jeff Perry wrote:
          >>>
          >>> When I run my program from within vim
          >>>
          >>>      :./xyz
          >>>
          >>> and the program errors out with a runtime error, e.g.:
          >>>
          >>>     myprog: myprog.cpp:123: assertion 'x==1' failed
          >>>
          >>> vim tries to interpret the the output and jump to the offending line number.
          >>>
          >>> The problem is that in the example above it incorrectly interprets the filename as "myprog: myprog.cpp", so it opens a file with that name, which doesn't exist, and then tries to jump to line 123 in that non-existent file.
          >>>
          >>> My question is:  Where in vim is this behaviour specified and how can I tweak it to do the right thing?
          >>
          >> See :help errorformat
          >>
          >> Try,
          >> :set efm=%*[^\ ]%f:%l:%m
          >>

          You also have to get the output of xyz into a file:
          ./xyz 2>&1 | tee xyz.err

          And for the rest see:
          man tee
          :help errorfile

          Tinou

          --
          You received this message from the "vim_use" 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
        • Benjamin R. Haskell
          ... (and run via :make) It handles the redirects you suggest ( 2 &1 | tee ) via the shellpipe option. -- Best, Ben [1] depends on what kind of program it is
          Message 4 of 6 , Oct 1, 2010
          • 0 Attachment
            On Fri, 1 Oct 2010, Étienne Faure wrote:

            > On Fri, Oct 1, 2010 at 16:48, Benjamin R. Haskell wrote:
            >>
            >> On Fri, 1 Oct 2010, Karthick Gururaj wrote:
            >>
            >>> On Fri, Oct 1, 2010 at 7:30 PM, Jeff Perry wrote:
            >>>>
            >>>> When I run my program from within vim
            >>>>
            >>>>      :./xyz
            >>>>
            >>>> and the program errors out with a runtime error, e.g.:
            >>>>
            >>>>     myprog: myprog.cpp:123: assertion 'x==1' failed
            >>>>
            >>>> vim tries to interpret the the output and jump to the offending line number.
            >>>>
            >>>> The problem is that in the example above it incorrectly interprets
            >>>> the filename as "myprog: myprog.cpp", so it opens a file with that
            >>>> name, which doesn't exist, and then tries to jump to line 123 in
            >>>> that non-existent file.
            >>>>
            >>>> My question is:  Where in vim is this behaviour specified and how
            >>>> can I tweak it to do the right thing?
            >>>
            >>> See :help errorformat
            >>>
            >>> Try,
            >>> :set efm=%*[^\ ]%f:%l:%m
            >>>
            >
            > You also have to get the output of xyz into a file:
            > ./xyz 2>&1 | tee xyz.err

            It might be[1] easier to:

            :set makeprg=./xyz

            (and run via :make)

            It handles the redirects you suggest ('2>&1 | tee') via the 'shellpipe'
            option.

            --
            Best,
            Ben

            [1] depends on what kind of program it is -- if it's compiled, you might
            not want to coöpt the 'make' mechanism.

            --
            You received this message from the "vim_use" 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
          • jeffsp
            ... Thanks for all the helpful comments. Actually, I had simplified the problem: I am running :make and my Makefile calls ./xyz, so the redirection stuff is
            Message 5 of 6 , Oct 7, 2010
            • 0 Attachment
              On Oct 1, 4:24 pm, "Benjamin R. Haskell" <v...@...> wrote:
              > On Fri, 1 Oct 2010, Étienne Faure wrote:
              > > On Fri, Oct 1, 2010 at 16:48, Benjamin R. Haskell wrote:
              >
              > >> On Fri, 1 Oct 2010, Karthick Gururaj wrote:
              >
              > >>> On Fri, Oct 1, 2010 at 7:30 PM, Jeff Perry wrote:
              >
              > >>>> When I run my program from within vim
              >
              > >>>>      :./xyz
              >
              > >>>> and the program errors out with a runtime error, e.g.:
              >
              > >>>>     myprog: myprog.cpp:123: assertion 'x==1' failed
              >
              > >>>> vim tries to interpret the the output and jump to the offending line number.
              >
              > >>>> The problem is that in the example above it incorrectly interprets
              > >>>> the filename as "myprog: myprog.cpp", so it opens a file with that
              > >>>> name, which doesn't exist, and then tries to jump to line 123 in
              > >>>> that non-existent file.
              >
              > >>>> My question is:  Where in vim is this behaviour specified and how
              > >>>> can I tweak it to do the right thing?
              >
              > >>> See :help errorformat
              >
              > >>> Try,
              > >>> :set efm=%*[^\ ]%f:%l:%m
              >
              > > You also have to get the output of xyz into a file:
              > > ./xyz 2>&1 | tee xyz.err
              >
              > It might be[1] easier to:
              >
              > :set makeprg=./xyz
              >
              > (and run via :make)
              >
              > It handles the redirects you suggest ('2>&1 | tee') via the 'shellpipe'
              > option.
              >
              > --
              > Best,
              > Ben
              >
              > [1] depends on what kind of program it is -- if it's compiled, you might
              > not want to coöpt the 'make' mechanism.

              Thanks for all the helpful comments. Actually, I had simplified the
              problem: I am running :make and my Makefile calls ./xyz, so the
              redirection stuff is taken care of.

              My solution was to use Karthick Gururaj's suggestion, slightly
              modified:

              :set efm^=%*[^\ ]:%f:%l:%m

              This, of course, won't work if you put spaces in your filenames.

              --
              You received this message from the "vim_use" 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
            Your message has been successfully submitted and would be delivered to recipients shortly.