From 6ad865e527c555e45b95dbfcc1ba887fdab9f21a Mon Sep 17 00:00:00 2001 From: Tobias Bengfort Date: Fri, 22 Feb 2019 17:15:15 +0100 Subject: [PATCH 1/2] use winsaveview instead of getpos getpos messes with startofline --- autoload/limelight.vim | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/autoload/limelight.vim b/autoload/limelight.vim index 2ebfe0f..ed2728e 100644 --- a/autoload/limelight.vim +++ b/autoload/limelight.vim @@ -46,15 +46,15 @@ function! s:getpos() let bop = get(g:, 'limelight_bop', '^\s*$\n\zs') let eop = get(g:, 'limelight_eop', '^\s*$') let span = max([0, get(g:, 'limelight_paragraph_span', 0) - s:empty(getline('.'))]) - let pos = exists('*getcurpos')? getcurpos() : getpos('.') + let win_view = winsaveview() for i in range(0, span) let start = searchpos(bop, i == 0 ? 'cbW' : 'bW')[0] endfor - call setpos('.', pos) + call winrestview(win_view) for _ in range(0, span) let end = searchpos(eop, 'W')[0] endfor - call setpos('.', pos) + call winrestview(win_view) return [start, end] endfunction From 5013b7b3bad8204bac54a86c994e9eeecb90437e Mon Sep 17 00:00:00 2001 From: Tobias Bengfort Date: Fri, 22 Feb 2019 17:16:14 +0100 Subject: [PATCH 2/2] allow to use movements to define paragraphs --- README.md | 5 +++++ autoload/limelight.vim | 13 +++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4a76d81..f110974 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,11 @@ let g:limelight_paragraph_span = 1 let g:limelight_bop = '^\s' let g:limelight_eop = '\ze\n^\s' +" Alternatively, you can use movements to define paragraphs +let g:limelight_mode = 'movement' +let g:limelight_bop = '{' +let g:limelight_eop = '}' + " Highlighting priority (default: 10) " Set it to -1 not to overrule hlsearch let g:limelight_priority = -1 diff --git a/autoload/limelight.vim b/autoload/limelight.vim index ed2728e..b68381a 100644 --- a/autoload/limelight.vim +++ b/autoload/limelight.vim @@ -42,17 +42,26 @@ function! s:unsupported() endif endfunction +function! s:searchline(arg, flags) + if get(g:, 'limelight_mode', 'pattern') == 'movement' + execute 'silent! normal! ' . a:arg + return line('.') + else + return searchpos(a:arg, a:flags)[0] + endif +endfunction + function! s:getpos() let bop = get(g:, 'limelight_bop', '^\s*$\n\zs') let eop = get(g:, 'limelight_eop', '^\s*$') let span = max([0, get(g:, 'limelight_paragraph_span', 0) - s:empty(getline('.'))]) let win_view = winsaveview() for i in range(0, span) - let start = searchpos(bop, i == 0 ? 'cbW' : 'bW')[0] + let start = s:searchline(bop, i == 0 ? 'cbW' : 'bW') endfor call winrestview(win_view) for _ in range(0, span) - let end = searchpos(eop, 'W')[0] + let end = s:searchline(eop, 'W') endfor call winrestview(win_view) return [start, end]