Hi Bram,

On Wed, May 1, 2019 at 10:39 PM Yegappan Lakshmanan <[email protected]> wrote:
>
> Hi Bram,
>
> On Wed, May 1, 2019 at 9:20 AM Bram Moolenaar <[email protected]> wrote:
> >
> >
> > Yegappan wrote:
> >
> > > > > > > We will then have the following commands:
> > > > > > >
> > > > > > > cbelow - Go to an error line below the current line in the 
> > > > > > > current file
> > > > > > > cabove - Go to an error line above the current line in the 
> > > > > > > current file
> > > > > > > cbefore - Go to an error before the current column in the current 
> > > > > > > file
> > > > > > > cafter - Go to an error after the current column in the current 
> > > > > > > file
> > > > > >
> > > > > > Right.  And when giving a count to cbelow/cabove it counts all the
> > > > > > errors in the same line as one.  Thus if there are three matches in 
> > > > > > the
> > > > > > line above and one two lines up, then ":2cabove" goes two lines up.
> > > > > >
> > > > >
> > > > > The latest updated pull request implements the above behavior. 
> > > > > Currently
> > > > > only the cabove and cbelow commands are implemented.
> > > > >
> > > > > The current implementation supports count only after the command name
> > > > > and not before the command. I did this to support only positive 
> > > > > numbers
> > > > > for the count and not use the range specification from the buffer.
> > > >
> > > > :2cabove should work.  Use "RANGE" and "ADDR_OTHER" in the command spec.
> > >
> > > I was using RANGE in the command spec. But when a negative count is
> > > supplied to the command, it uses the current line number from the buffer 
> > > and
> > > subtracts the specified count. I wanted to display an error for negative 
> > > values.
> > > I can use RANGE, if the value is negative, it will ignore the supplied 
> > > count.
> >
> > I looked into the way the type of range is specified, but it has a long
> > history of subtle ways things work not quite as expected.  Therefore
> > ADDR_OTHER will default to using buffer lines.
> >
> > We could add a new address type, that does not use the buffer lines.
> > Not sure what to call it.  ADDR_NOT_LINES is not quite right.
> > I did do a bit of cleanup and removed NOTADR from the command flags.
> > It seemed a duplicate of using ADDR_OTHER, but it turns out it isn't
> > quite so.
> >
>
> I updated the PR to use the new ADDR_NONE for the cbelow and cabove
> commands. Now the negative and invalid ranges are properly passed to
> the command function and the function checks for the invalid values and
> displays an error message. This works on Linux and Mac (Travis CI builds).
> But on Windows (Appveyor), the test fails. It looks like on MS-Windows,
> the negative range is still converted into a buffer line number relative to
> the current line number.
>
> https://travis-ci.org/vim/vim/builds/527133913
> https://ci.appveyor.com/project/chrisbra/vim/build/job/iw0t4ik7b28mwq1r
>

This is caused by the difference in size of the long type (64-bit vs 32-bit)
between the Linux/Mac and MS-Windows builds. To check for the negative
values, I am casting the long value to an integer. This works for the
64-bit long value and not for the 32-bit long value.

- Yegappan

-- 
-- 
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].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui