From 2dce8e032b9c1989a41296aaeccc8f17dc83c707 Mon Sep 17 00:00:00 2001 From: Andy Stewart Date: Tue, 8 Jan 2019 12:47:10 +0000 Subject: [PATCH] Add commands to enable/disable/toggle GitGutter per buffer. --- README.mkd | 8 +++++++- autoload/gitgutter.vim | 21 +++++++++++++++++++++ autoload/gitgutter/utility.vim | 1 + plugin/gitgutter.vim | 4 ++++ 4 files changed, 33 insertions(+), 1 deletion(-) diff --git a/README.mkd b/README.mkd index 60c1020..a7a2233 100644 --- a/README.mkd +++ b/README.mkd @@ -17,7 +17,7 @@ Features: * Handles line endings correctly, even with repos that do CRLF conversion. * Optional line highlighting. * Fully customisable (signs, sign column, line highlights, mappings, extra git-diff arguments, etc). -* Can be toggled on/off. +* Can be toggled on/off, globally or per buffer. * Preserves signs from other plugins. * Easy to integrate diff stats into status line; built-in integration with [vim-airline](https://github.com/bling/vim-airline/). * Works with fish shell (in addition to the usual shells). @@ -119,6 +119,12 @@ You can explicitly turn vim-gitgutter off and on (defaults to on): * turn on with `:GitGutterEnable` * toggle with `:GitGutterToggle`. +To toggle vim-gitgutter per buffer: + +* turn off with `:GitGutterBufferDisable` +* turn on with `:GitGutterBufferEnable` +* toggle with `:GitGutterBufferToggle` + You can turn the signs on and off (defaults to on): * turn on with `:GitGutterSignsEnable` diff --git a/autoload/gitgutter.vim b/autoload/gitgutter.vim index 65b40e8..2e17fdb 100644 --- a/autoload/gitgutter.vim +++ b/autoload/gitgutter.vim @@ -85,6 +85,27 @@ function! gitgutter#toggle() abort endif endfunction + +function! gitgutter#buffer_disable() abort + let bufnr = bufnr('') + call gitgutter#utility#setbufvar(bufnr, 'enabled', 0) + call s:clear(bufnr) +endfunction + +function! gitgutter#buffer_enable() abort + let bufnr = bufnr('') + call gitgutter#utility#setbufvar(bufnr, 'enabled', 1) + call gitgutter#process_buffer(bufnr, 1) +endfunction + +function! gitgutter#buffer_toggle() abort + if gitgutter#utility#getbufvar(bufnr(''), 'enabled', 1) + call gitgutter#buffer_disable() + else + call gitgutter#buffer_enable() + endif +endfunction + " }}} function! s:setup_maps() diff --git a/autoload/gitgutter/utility.vim b/autoload/gitgutter/utility.vim index 6486fa4..470f222 100644 --- a/autoload/gitgutter/utility.vim +++ b/autoload/gitgutter/utility.vim @@ -53,6 +53,7 @@ endfunction " This function does not and should not make any system calls. function! gitgutter#utility#is_active(bufnr) abort return g:gitgutter_enabled && + \ gitgutter#utility#getbufvar(a:bufnr, 'enabled', 1) && \ !pumvisible() && \ s:is_file_buffer(a:bufnr) && \ s:exists_file(a:bufnr) && diff --git a/plugin/gitgutter.vim b/plugin/gitgutter.vim index aefcf3e..26cc0a5 100644 --- a/plugin/gitgutter.vim +++ b/plugin/gitgutter.vim @@ -97,6 +97,10 @@ command! -bar GitGutterDisable call gitgutter#disable() command! -bar GitGutterEnable call gitgutter#enable() command! -bar GitGutterToggle call gitgutter#toggle() +command! -bar GitGutterBufferDisable call gitgutter#buffer_disable() +command! -bar GitGutterBufferEnable call gitgutter#buffer_enable() +command! -bar GitGutterBufferToggle call gitgutter#buffer_toggle() + " }}} " Line highlights {{{