aboutsummaryrefslogtreecommitdiff
path: root/plugin/KarlMarks.vim
blob: a36ecab0ea25bef74a79a492a4592da0f6bdd738 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
let g:markerbar_additional =   '"'   " position in buffer when left
let g:markerbar_additional .=  '<>'  " start/end last selection
let g:markerbar_additional .=  '{}'  " start/end paragraph
let g:markerbar_additional .=  '()'  " start/end sentence
let g:markerbar_additional .=  '.'   " last change
let g:markerbar_additional .=  "^"   " insert mode stopped
let g:markerbar_additional .=  "'`"

function! KarlMarks()
    for c in map(split(g:markerbar_additional, '\zs'), "char2nr(v:val)") + 
                \ range(char2nr('a'), char2nr('z')) +
                \ range(char2nr('A'), char2nr('Z')) +
                \ range(char2nr('0'), char2nr('9'))

        let p = getpos("'".nr2char(c)) 

        if (p[0] == 0 || p[0] == winbufnr(0)) && p[1] > 0 
            exec "sign unplace ".c
            exec "sign define mark_".c." text=".nr2char(c)." texthl=linenr"
            exec "sign place ".c." name=mark_".c." line=".p[1]." buffer=".winbufnr(0)
        endif  
    endfor 
endfunction

autocmd CursorHold * call KarlMarks()

" important for distraction free reading while changing windows
set signcolumn=yes
..