Hi Bram, On Thu, May 2, 2019 at 9:25 AM Yegappan Lakshmanan <yegapp...@gmail.com> 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. >
I have addressed this issue in the updated PR. The get_address() function was not properly returning the count passed to commands with ADDR_NONE. It was returning MAXLNUM - {count}. I have modified it to return the actual count supplied by the user. - 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 vim_dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.