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

Re: Issue 121 in vim: cursor jumps to the end of closed fold when executing a register

Expand Messages
  • glts
    ... I can reproduce this on the current Vim version 7.3.854 on Ubuntu Linux 12.04. David -- -- You received this message from the vim_dev maillist. Do not
    Message 1 of 7 , Mar 12 10:31 AM
    • 0 Attachment
      On Tuesday, March 12, 2013 5:22:12 PM UTC+1, Christian Brabandt wrote:
      > I don't see this with Vim. Can you reproduce the issue with vim -u
      > NONE -N ?

      I can reproduce this on the current Vim version 7.3.854 on Ubuntu Linux
      12.04.

      David

      --
      --
      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 vim_dev+unsubscribe@....
      For more options, visit https://groups.google.com/groups/opt_out.
    • Christian Brabandt
      Hi glts! ... Ah, I see, this only happens when sourcing as a script. The problem here is, that there is a subtle difference between the :@ command and the ...
      Message 2 of 7 , Mar 12 1:16 PM
      • 0 Attachment
        Hi glts!

        On Di, 12 Mär 2013, glts wrote:

        > On Tuesday, March 12, 2013 5:22:12 PM UTC+1, Christian Brabandt wrote:
        > > I don't see this with Vim. Can you reproduce the issue with vim -u
        > > NONE -N ?
        >
        > I can reproduce this on the current Vim version 7.3.854 on Ubuntu Linux
        > 12.04.

        Ah, I see, this only happens when sourcing as a script. The problem here
        is, that there is a subtle difference between the :@ command and the
        :normal! @ command. When using the :@ command, the register will be
        called for the range of the folded lines and therefore implicitly sets
        the range to the first and lastline of the fold and then the ex_at()
        function explicitly sets the cursorline to the endline of the register.

        We could change it, but the documentation explicitly states, that in the
        future the register will be executed for the range given, so we should
        rather just implement this ;)

        Mit freundlichen Grüßen
        Christian
        --
        Geistliche sind daran interessiert, die Völker in Unwissenheit zu
        erhalten, man würde sonst, da das Evangelium einfach ist, ihnen sagen:
        Wir wissen das alles so gut wie ihr.
        -- Charles-Louis Baron de Montesquieu (Gedanken, Über die Religion)

        --
        --
        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 vim_dev+unsubscribe@....
        For more options, visit https://groups.google.com/groups/opt_out.
      • Christian Brabandt
        Hi ... Attached is a patch regards, Christian -- Wer freudig ist, hat zu allen Dingen den rechten Stand. -- Romano Guardini -- -- You received this message
        Message 3 of 7 , Mar 12 1:39 PM
        • 0 Attachment
          Hi

          On Di, 12 Mär 2013, Christian Brabandt wrote:

          > Ah, I see, this only happens when sourcing as a script. The problem here
          > is, that there is a subtle difference between the :@ command and the
          > :normal! @ command. When using the :@ command, the register will be
          > called for the range of the folded lines and therefore implicitly sets
          > the range to the first and lastline of the fold and then the ex_at()
          > function explicitly sets the cursorline to the endline of the register.
          >
          > We could change it, but the documentation explicitly states, that in the
          > future the register will be executed for the range given, so we should
          > rather just implement this ;)

          Attached is a patch


          regards,
          Christian
          --
          Wer freudig ist, hat zu allen Dingen den rechten Stand.
          -- Romano Guardini

          --
          --
          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 vim_dev+unsubscribe@....
          For more options, visit https://groups.google.com/groups/opt_out.
        • glts
          Hi Christian, ... yes, I saw the problem. ... Unfortunately, the expression in the future is very relative generally speaking and with Vim in particular. For
          Message 4 of 7 , Mar 12 1:40 PM
          • 0 Attachment
            Hi Christian,

            On Tuesday, March 12, 2013 9:16:04 PM UTC+1, Christian Brabandt wrote:
            > Ah, I see, this only happens when sourcing as a script. The problem here
            > is, that there is a subtle difference between the :@ command and the
            > :normal! @ command. When using the :@ command, the register will be
            > called for the range of the folded lines and therefore implicitly sets
            > the range to the first and lastline of the fold and then the ex_at()
            > function explicitly sets the cursorline to the endline of the register.

            yes, I saw the problem.

            > We could change it, but the documentation explicitly states, that in the
            > future the register will be executed for the range given, so we should
            > rather just implement this ;)

            Unfortunately, the expression "in the future" is very relative generally
            speaking and with Vim in particular.

            For the present, the documentation only requires that the cursor will be
            set to [addr]: "set cursor at line [addr] (default is current line)".
            So, as far as I understand, this issue is easily fixed by removing the
            WHOLEFOLD flag from CMD_at and CMD_star, at least until somebody
            actually implements the promised functionality. See the attached patch.

            --
            --
            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 vim_dev+unsubscribe@....
            For more options, visit https://groups.google.com/groups/opt_out.
          • Vlad Irnov
            ... Thanks! I hope this patch will be included. So, when on a closed fold, :@{register} currently behaves like an Ex command that accepts a range as explained
            Message 5 of 7 , Mar 13 5:24 AM
            • 0 Attachment
              On 3/12/13, glts <676c7473@...> wrote:
              > Hi Christian,
              >
              > On Tuesday, March 12, 2013 9:16:04 PM UTC+1, Christian Brabandt wrote:
              >> Ah, I see, this only happens when sourcing as a script. The problem here
              >> is, that there is a subtle difference between the :@ command and the
              >> :normal! @ command. When using the :@ command, the register will be
              >> called for the range of the folded lines and therefore implicitly sets
              >> the range to the first and lastline of the fold and then the ex_at()
              >> function explicitly sets the cursorline to the endline of the register.
              >
              > yes, I saw the problem.
              >
              >> We could change it, but the documentation explicitly states, that in the
              >> future the register will be executed for the range given, so we should
              >> rather just implement this ;)
              >
              > Unfortunately, the expression "in the future" is very relative generally
              > speaking and with Vim in particular.
              >
              > For the present, the documentation only requires that the cursor will be
              > set to [addr]: "set cursor at line [addr] (default is current line)".
              > So, as far as I understand, this issue is easily fixed by removing the
              > WHOLEFOLD flag from CMD_at and CMD_star, at least until somebody
              > actually implements the promised functionality. See the attached patch.

              Thanks! I hope this patch will be included.

              So, when on a closed fold, :@{register} currently behaves like an Ex
              command that accepts a range as explained in doc/fold.txt:
              For Ex commands the range is adjusted to always start at the first
              line of a closed fold and end at the last line of a closed fold.
              But since :@ does not actually do anything with the range, this is
              unexpected and inappropriate.

              Personally, I would prefer that :@{register} did not operate on ranges.
              That is the future feature in ":help :@" should be scrapped:
              {Vi: only in some versions} Future: Will execute the register for
              each line in the address range.

              I use :@{register} a lot to run small snippets of VimScript instead of
              sourcing a file or putting them into functions. It rarely makes sense to
              execute such scripts for each line in a range.

              Regards,
              Vlad

              --
              --
              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 vim_dev+unsubscribe@....
              For more options, visit https://groups.google.com/groups/opt_out.
            Your message has been successfully submitted and would be delivered to recipients shortly.