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

Re: goto line depending on exit code of filter

Expand Messages
  • bill lam
    ... Tony, you are correct. I don t why it seemed to work last time I tested. How can I store content of the current buffer and restore it in case of error?
    Message 1 of 11 , Sep 1, 2009
      On Tue, 01 Sep 2009, Tony Mechelynck wrote:
      > external program generate the required number as a return code: IIRC,
      > return codes are limited to one byte, and those above 127 may have a
      > special meaning (generated by the OS maybe).

      Tony, you are correct. I don't why it seemed to work last time I
      tested.

      How can I store content of the current buffer and restore it in case
      of error? like the following pseudo code

      let tmp=%
      %!filter
      if v:xhell_error | set %=tmp | endif

      --
      regards,
      ====================================================
      GPG key 1024D/4434BAB3 2008-08-24
      gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3

      --~--~---------~--~----~------------~-------~--~----~
      You received this message from the "vim_use" maillist.
      For more information, visit http://www.vim.org/maillist.php
      -~----------~----~----~----~------~----~------~--~---
    • Matt Wozniski
      ... Depends on the OS, but on Unix... Return codes are limited to one byte Applications are free to return any number in that range, none of them are
      Message 2 of 11 , Sep 1, 2009
        On Tue, Sep 1, 2009 at 2:55 AM, Tony Mechelynck wrote:
        >
        > Vim can jump to any line that it can count, the problem is having your
        > external program generate the required number as a return code: IIRC,
        > return codes are limited to one byte, and those above 127 may have a
        > special meaning (generated by the OS maybe).

        Depends on the OS, but on Unix...

        Return codes are limited to one byte

        Applications are free to return any number in that range, none of them
        are "special", but...

        The operating system often uses return codes between 128 and 255 to
        indicate death by signal. The solaris machine I'm sitting in front of
        uses 128 + (signal number) when an app dies of a signal, and Linux
        uses the same. I could swear that an older version of solaris used
        256 - (signal number), but I can't confirm that at the moment, so
        don't quote me on that.

        The 127 return code from bash isn't OS-level special, it's just a
        convenience thing that bash does to make it easier to guess when a
        script failed because it couldn't find a command.

        ~Matt

        --~--~---------~--~----~------------~-------~--~----~
        You received this message from the "vim_use" maillist.
        For more information, visit http://www.vim.org/maillist.php
        -~----------~----~----~----~------~----~------~--~---
      • Tony Mechelynck
        ... what about (untested) %!filter if v:shell_error undo endif ? If it doesn t work you can always do w! /temp/file %!filter if v:shell_error e! /temp/file
        Message 3 of 11 , Sep 1, 2009
          On 01/09/09 12:18, bill lam wrote:
          >
          > On Tue, 01 Sep 2009, Tony Mechelynck wrote:
          >> external program generate the required number as a return code: IIRC,
          >> return codes are limited to one byte, and those above 127 may have a
          >> special meaning (generated by the OS maybe).
          >
          > Tony, you are correct. I don't why it seemed to work last time I
          > tested.
          >
          > How can I store content of the current buffer and restore it in case
          > of error? like the following pseudo code
          >
          > let tmp=%
          > %!filter
          > if v:xhell_error | set %=tmp | endif
          >

          what about (untested)

          %!filter
          if v:shell_error
          undo
          endif

          ?

          If it doesn't work you can always do

          w! /temp/file
          %!filter
          if v:shell_error
          e! /temp/file
          saveas #
          endif

          but it isn't very elegant.


          Best regards,
          Tony.
          --
          President Reagan has noted that there are too many economic pundits and
          forecasters and has decided on an excess prophets tax.

          --~--~---------~--~----~------------~-------~--~----~
          You received this message from the "vim_use" maillist.
          For more information, visit http://www.vim.org/maillist.php
          -~----------~----~----~----~------~----~------~--~---
        • bill lam
          ... Thanks Tony, it works. -- regards, ==================================================== GPG key 1024D/4434BAB3 2008-08-24 gpg --keyserver subkeys.pgp.net
          Message 4 of 11 , Sep 2, 2009
            On Wed, 02 Sep 2009, Tony Mechelynck wrote:
            > what about (untested)
            >
            > %!filter
            > if v:shell_error
            > undo
            > endif
            >
            > ?
            >
            > If it doesn't work you can always do

            Thanks Tony, it works.

            --
            regards,
            ====================================================
            GPG key 1024D/4434BAB3 2008-08-24
            gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3

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