67142Re: Functions with [range] do not preserve the cursor line
- Nov 19, 2012Am 19.11.2012 22:52, schrieb So8res:
> I think functions with [range] should preserve the cursor line.Don't break scripts that count on this.
> Assume you have:Example: remove trailing white space in range (default `%'), keeping
> function RangeTest() range
> echo line('.')
> And you put the cursor on line 2 and :%call RangeTest()
> This function will echo 1, because the cursor is moved to the
> beginning of the range *before* entering the function.
> I was attempting to create a function which does a search-replace (:s)
> without moving the cursor (using winsaveview() and winrestview()). It
> turns out this is not possible, because the cursor is moved before
> winsaveview() can be called.
> Is this the intended behavior, or is it a bug? If it's intended, is
> there a way to save the winview before entering a function with
cursor position, last search pattern etc.
:no <Leader>ss :v/^-- $/s/\s\+$//e<C-B>KeepView InFunc! <C-E>
:ou <Leader>ss|sunm <Leader>ss
" final <CR> could be added
for :KeepView and :InFunc, see
:KeepView does winsaveview() and winrestview()
:InFunc does no more than executing the argument within a function
to make use of :h function-search-undo
You can insert any other command instead of
that accepts a range.
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
- << Previous post in topic Next post in topic >>