diff --git a/README.md b/README.md index 4d09bdc..29b4c82 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ Install the Flog gem like this: `gem install flog`. To install the plugin just run this command in your Terminal: -`curl https://github.com/fousa/vim-flog/raw/master/plugin/flog.vim -o ~/.vim/plugin/flog.vim` +`curl https://raw.github.com/fousa/vim-flog/master/plugin/flog.vim -o ~/.vim/plugin/flog.vim` When this is done add `:silent exe "g:flog_enable"` to your .vimrc file. @@ -39,16 +39,16 @@ Configuration You can set the colors for the complexity indication with the following commands in your .vimrc: * Set the color of for low complexity:
- `:silent exe "let g:flog_low_color=#a5c261"` + `:let g:flog_low_color_hl = "term=standout ctermfg=118 ctermbg=235 guifg=#999999 guibg=#323232"` * Set the color of for medium complexity:
- `:silent exe "let g:flog_medium_color=#ffc66d"` + `:let g:flog_medium_color_hl = "term=standout ctermfg=81 ctermbg=235 guifg=#66D9EF guibg=#323232"` * Set the color of for high complexity:
- `:silent exe "let g:flog_high_color=#cc7833"` + `:let g:flog_high_color_hl = "term=standout cterm=bold ctermfg=199 ctermbg=16 gui=bold guifg=#F92672 guibg=#232526"` * Set the background color:
- `:silent exe "let g:flog_background_color=#323232"` + `:let s:background_hl = "guifg=#999999 guibg=#323232 gui=NONE"` You can set the limits for the complexity indication with the following commands in your .vimrc: @@ -58,6 +58,28 @@ You can set the limits for the complexity indication with the following commands * Set the limit to switch to a high complexity:
:silent exe "`let g:flog_high_limit=20"` +You can hide some levels of complexity: + +* Hide low complexity:
+ `:silent exe "let g:flog_hide_low=1"` + +* Hide medium complexity:
+ `:silent exe "let g:flog_hide_medium=1"` + +You can also turn flog off and on: + +* Turn on flog + `:call EnableFlog()` + +* Turn off flog + `:call DisableFlog()` + +* Toggle flog + `:call ToggleFlog()` + +Additionally, you can map this in your .vimrc: + `:map ,f :call ToggleFlog()` + Credits ------- diff --git a/plugin/flog.vim b/plugin/flog.vim index b760909..4aafcbc 100644 --- a/plugin/flog.vim +++ b/plugin/flog.vim @@ -9,27 +9,37 @@ if !has('signs') || !has('ruby') finish endif -let s:low_color = "#a5c261" -let s:medium_color = "#ffc66d" -let s:high_color = "#cc7833" -let s:background_color = "#323232" +let s:low_color_hl = "term=standout ctermfg=118 ctermbg=235 guifg=#a5c261 guibg=#323232" +let s:medium_color_hl = "term=standout ctermfg=81 ctermbg=235 guifg=#ffc66d guibg=#323232" +let s:high_color_hl = "term=standout cterm=bold ctermfg=199 ctermbg=16 gui=bold guifg=#cc7833 guibg=#232526" +let s:background_hl = "guifg=#999999 guibg=#323232 gui=NONE" let s:medium_limit = 10 let s:high_limit = 20 +let s:hide_low = 0 +let s:hide_medium = 0 -if exists("g:flog_low_color") - let s:low_color = g:flog_low_color +if exists("g:flog_hide_low") + let s:hide_low = g:flog_hide_low endif -if exists("g:flog_medium_color") - let s:medium_color = g:flog_medium_color +if exists("g:flog_hide_medium") + let s:hide_medium = g:flog_hide_medium endif -if exists("g:flog_high_color") - let s:high_color = g:flog_high_color +if exists("g:flog_low_color_hl") + let s:low_color_hl = g:flog_low_color_hl endif -if exists("g:flog_background_color") - let s:background_color = g:flog_background_color +if exists("g:flog_medium_color_hl") + let s:medium_color_hl = g:flog_medium_color_hl +endif + +if exists("g:flog_high_color_hl") + let s:high_color_hl = g:flog_high_color_hl +endif + +if exists("g:flog_background_hl") + let s:high_background_hl = g:flog_high_background_hl endif if exists("g:flog_medium_limit") @@ -132,9 +142,19 @@ def show_complexity(results = {}) when medium_limit..high_limit then "medium_complexity" else "high_complexity" end - value = rest[0].to_i - value = "9+" if value >= 100 - VIM.command ":sign define #{value.to_s} text=#{value.to_s} texthl=#{complexity}" + value = rest[0].to_i + value = "9+" if value >= 100 + VIM.command ":sign define #{value.to_s} text=#{value.to_s} texthl=#{complexity}" + render_score line_number, value, medium_limit, high_limit + end +end + +def render_score(line_number, value, medium_limit, high_limit) + hide_medium = VIM::evaluate 's:hide_medium' + hide_low = VIM::evaluate 's:hide_low' + if (hide_low == 1 && value < medium_limit) || (hide_medium == 1 && value < high_limit) + VIM.command ":sign unplace #{line_number}" + else VIM.command ":sign place #{line_number} line=#{line_number} name=#{value.to_s} file=#{VIM::Buffer.current.name}" end end @@ -142,10 +162,10 @@ end EOF function! s:UpdateHighlighting() - exe 'hi low_complexity guifg='.s:low_color - exe 'hi medium_complexity guifg='.s:medium_color - exe 'hi high_complexity guifg='.s:high_color - exe 'hi SignColumn guifg=#999999 guibg='.s:background_color.' gui=NONE' + exe 'hi low_complexity '.s:low_color_hl + exe 'hi medium_complexity '.s:medium_color_hl + exe 'hi high_complexity '.s:high_color_hl + exe 'hi SignColumn '.s:background_hl endfunction function! ShowComplexity() @@ -168,13 +188,40 @@ call s:UpdateHighlighting() endfunction +function! HideComplexity() + sign unplace * +call s:UpdateHighlighting() + +endfunction + +function! EnableFlog() + let g:flog_enable=1 + if &filetype == 'ruby' + call ShowComplexity() + endif + autocmd! BufReadPost,BufWritePost,FileReadPost,FileWritePost *.rb call ShowComplexity() +endfunction + +function! DisableFlog() + let g:flog_enable=0 + call HideComplexity() + autocmd! BufReadPost,BufWritePost,FileReadPost,FileWritePost *.rb +endfunction + +function! ToggleFlog() + if !exists("g:flog_enable") || g:flog_enable + call DisableFlog() + else + call EnableFlog() + end +endfunction + call s:UpdateHighlighting() sign define low_color text=XX texthl=low_complexity sign define medium_color text=XX texthl=medium_complexity sign define high_color text=XX texthl=high_complexity - -if !exists("g:flow_enable") || g:flog_enable - autocmd! BufReadPost,BufWritePost,FileReadPost,FileWritePost *.rb call ShowComplexity() +if !exists("g:flog_enable") || g:flog_enable + call EnableFlog() endif