From 41845218c2dd24eea1c07a52a8ffb16abe8da2b6 Mon Sep 17 00:00:00 2001 From: Iain Patterson Date: Tue, 28 Jan 2014 18:15:18 +0000 Subject: [PATCH] Added cursor sign highlight. New, highest priority, sign to show the line with the cursor. --- .vim/colors/iain.vim | 1 + .vimrc | 27 ++++++++++++++++++--------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/.vim/colors/iain.vim b/.vim/colors/iain.vim index 2161f3d..38dcc24 100644 --- a/.vim/colors/iain.vim +++ b/.vim/colors/iain.vim @@ -337,6 +337,7 @@ if has("gui_running") || &t_Co == 88 || &t_Co == 256 call X("MarkLine", "", "#303030", "") call X("MarkDot", "red", "#303030", "") call X("MarkSign", "lightblue", "#303030", "") + call X("MarkArrow", "#00ff00", "#303030", "") hi! link SignColumn LineNr " Fix up NERDTree stuff. diff --git a/.vimrc b/.vimrc index 6de8038..b15c78f 100644 --- a/.vimrc +++ b/.vimrc @@ -885,13 +885,13 @@ fun! Highlight_Signs(...) "{{{2 let l:sign = "" let l:i = 0 while strlen(l:signs) - let l:sign = matchstr(l:signs, '^[A-Za-z]\+\(:.\)*[.=-][^ ]\+') + let l:sign = matchstr(l:signs, '^[A-Za-z]\+\(:.\)*[.=>-][^ ]\+') - let l:name = substitute(l:sign, '[:.=-].*', "", "") + let l:name = substitute(l:sign, '[:.=>-].*', "", "") let l:var = tolower(l:name) let l:sign = substitute(l:sign, '^[A-Za-z]\+', "", "") let l:ascii = matchstr(l:sign, '^:.') - let l:mark = substitute(l:sign, '^\(:.\)*[.=-]', "", "") + let l:mark = substitute(l:sign, '^\(:.\)*[.=>-]', "", "") if strlen(l:ascii) let l:ascii = substitute(l:ascii, '^:', "", "") else @@ -899,8 +899,14 @@ fun! Highlight_Signs(...) "{{{2 endif let l:ascii = substitute(l:ascii, '"', '\\"', "") + if l:ascii == "o" + let l:line = "." + else + let l:line = "'" . l:ascii + endif + call Prep_Sign(l:var) - exe "let " . l:var . " = Place_Sign(" . l:i . ", line(\"'" . l:ascii . "\"), b:sign" . l:var . ", \"Mark" . l:name . "\")" + exe "let " . l:var . " = Place_Sign(" . l:i . ", line(\"" . l:line . "\"), b:sign" . l:var . ", \"Mark" . l:name . "\")" let l:i = l:i + 1 let l:signs = substitute(l:signs, '^[^ ]\+ *', "", "") @@ -925,12 +931,13 @@ fun! Cycle_Signs(resize) "{{{2 " Signs with Type '=' will be highlighted with the MarkSign group. " Signs with Type '-' will be highlighted with the MarkLine group. " Signs with Type '.' will be highlighted with the MarkDot group. + " Signs with Type '>' will be highlighted with the MarkArrow group. " Define the Mark where Symbol is not also the mark name, eg "']". let g:iainsigns = "Less=< Greater=> Left=( Right=) SquareLeft=[ SquareRight=] BraceLeft={ BraceRight=} a-a b-b c-c d-d e-e f-f A-A B-B C-C D-D E-E F-F" if Has_Unicode() - let g:iainsigns = g:iainsigns . " Quote:\"=” Dash:'=’ Caret:^.ʌ Dot:..•" + let g:iainsigns = g:iainsigns . " Quote:\"=” Dash:'=’ Caret:^.ʌ Dot:..• Cursor:o>▶" else - let g:iainsigns = g:iainsigns . " Quote=\" Dash=' Caret.^ Dot:..*" + let g:iainsigns = g:iainsigns . " Quote=\" Dash=' Caret.^ Dot:..* Cursor>o " endif endif @@ -940,12 +947,12 @@ fun! Cycle_Signs(resize) "{{{2 let l:signs = g:iainsigns let l:sign = "" while strlen(l:signs) - let l:sign = matchstr(l:signs, '^[A-Za-z]\+\(:.\)*[.=-][^ ]\+') + let l:sign = matchstr(l:signs, '^[A-Za-z]\+\(:.\)*[.=>-][^ ]\+') - let l:name = substitute(l:sign, '[:.=-].*', "", "") + let l:name = substitute(l:sign, '[:.=>-].*', "", "") let l:sign = substitute(l:sign, '^[A-Za-z]\+', "", "") let l:ascii = matchstr(l:sign, '^:.') - let l:mark = substitute(l:sign, '^\(:.\)*[.=-]', "", "") + let l:mark = substitute(l:sign, '^\(:.\)*[.=>-]', "", "") if strlen(l:ascii) let l:ascii = substitute(l:ascii, '^:', "", "") let l:ascii = matchstr(l:ascii, '^.') @@ -963,6 +970,8 @@ fun! Cycle_Signs(resize) "{{{2 let l:hl = "texthl=MarkDot text=" elseif l:type == "-" let l:hl = "texthl=MarkLine text=" + elseif l:type == ">" + let l:hl = "texthl=MarkArrow text=" endif exe "sign define Mark" . l:name . " " . l:hl . l:mark -- 2.20.1