Am 27.02.2010 05:39, schrieb Matt Wozniski:
On Fri, Feb 26, 2010 at 5:23 PM, Jean Johner<jean.joh...@cea.fr>  wrote:
On Feb 26, 6:58 pm, Ben Fritz<fritzophre...@gmail.com>  wrote:

2. Re-map CTRL-F/CTRL-B with an :nnoremap command that issues the
command, then scrolls by 1 line with CTRL-Y/CTRL-E in the correct
direction to get the desired amount of context.

Hi Ben,
CTRL-F CTRL-E does the job but the transition is visible on a slow
connection (VPN).
For CTRL-D, it is more complicated since it depends on the vertical
dimension of the screen.

It is nevertheless surprising that, in a code where everything can be
configured, this two lines overlap between screens seems to be set in
stone.

Perhaps make the map call a function that ensures 'lazyredraw' is set
while scrolling.  This seems to do the trick, afaics, and has no
noticeable delay over the slowest connection I can get.

~Matt

function! s:ScrollLeavingOneLineOffset(dir, insert)
   let savelz =&lz
   set lazyredraw

   try
     if a:dir>  0&&  a:insert
       return "\<PageDown>\<C-o>\<C-e>"
     elseif a:dir>  0
       return "\<PageDown>\<C-e>"
     elseif a:insert
       return "\<PageUp>\<C-o>\<C-y>"
     else
       return "\<PageUp>\<C-y>"
     endif
   finally
     let&lz = savelz
   endtry
endfunction

noremap<expr>  <C-b>       <SID>ScrollLeavingOneLineOffset(-1, 0)
noremap<expr>  <PageUp>    <SID>ScrollLeavingOneLineOffset(-1, 0)
noremap<expr>  <C-f>       <SID>ScrollLeavingOneLineOffset( 1, 0)
noremap<expr>  <PageDown>  <SID>ScrollLeavingOneLineOffset( 1, 0)

inoremap<expr>  <C-b>       <SID>ScrollLeavingOneLineOffset(-1, 1)
inoremap<expr>  <PageUp>    <SID>ScrollLeavingOneLineOffset(-1, 1)
inoremap<expr>  <C-f>       <SID>ScrollLeavingOneLineOffset( 1, 1)
inoremap<expr>  <PageDown>  <SID>ScrollLeavingOneLineOffset( 1, 1)

Can this work?
The actual scroll commands are executed after lazyredraw has been
restored.

--
Andy

--
You received this message from the "vim_use" 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

Reply via email to