vimrc

My Vim configuration
git clone git://pcardenasb.com/vimrc
Log | Files | Refs | Submodules

marks.vim (1142B)


      1 vim9script 
      2 
      3 var marks_highlight = false
      4 
      5 
      6 def g:GetListMarks(): string
      7     final list_marks = []
      8     for mark in getmarklist('%')
      9         list_marks->add(mark.mark[1 : ])
     10     endfor
     11     return '(' .. list_marks->join(' ') .. ')'
     12 enddef
     13 
     14 
     15 def ToggleHighlightMarks()
     16     marks_highlight = !marks_highlight
     17 
     18     if marks_highlight
     19         prop_type_add('MarksPropType', {highlight: 'Pmenu'})
     20         HighlightMarks()
     21         setlocal statusline=%<%f\ %h%w%m%r%=%{GetListMarks()}\ \ %-14.(%l,%c%V%)\ %P
     22         setlocal laststatus=2
     23     else
     24         prop_type_delete('MarksPropType')
     25         setlocal statusline=
     26         setlocal laststatus=1
     27     endif
     28 enddef
     29 
     30 
     31 def HighlightMarks()
     32     if !marks_highlight
     33         return
     34     endif
     35 
     36     prop_clear(1, line('$'), {type: 'MarksPropType'})
     37 
     38     for mark in getmarklist('%')
     39         mark.pos[2] = min([mark.pos[2], strcharlen(getline(mark.mark)) + 1])
     40         prop_add(mark.pos[1], mark.pos[2], {type: 'MarksPropType', text: mark.mark[1 : ]})
     41     endfor
     42 enddef
     43 
     44 
     45 nnoremap <localleader>` <ScriptCmd>ToggleHighlightMarks()<CR>
     46 autocmd CursorMoved,CursorMovedI * HighlightMarks()
     47 
     48 # vim: et sts=4 sw=4