aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2019-05-16 23:13:34 +1200
committerTom Ryder <tom@sanctum.geek.nz>2019-05-16 23:13:34 +1200
commit6fbe041164f21a8f5ed1f9d43ade397f51bf7c7e (patch)
tree114e68ff8e4e4e48f1c90b215017589abe29afcd
parentDispense with system-dependent files (diff)
downloaddotfiles-6fbe041164f21a8f5ed1f9d43ade397f51bf7c7e.tar.gz
dotfiles-6fbe041164f21a8f5ed1f9d43ade397f51bf7c7e.zip
Leverage negative 'softtabstop' value
From :help 'softtabstop': > When 'sts' is negative, the value of 'shiftwidth' is used.
-rw-r--r--vim/after/indent/vim.vim11
-rw-r--r--vim/vimrc17
2 files changed, 20 insertions, 8 deletions
diff --git a/vim/after/indent/vim.vim b/vim/after/indent/vim.vim
index 6e2eb7f3..0767bca0 100644
--- a/vim/after/indent/vim.vim
+++ b/vim/after/indent/vim.vim
@@ -1,5 +1,5 @@
-" Remove inapplicable defaults from 'indentkeys'
-" Should only need to undo this if the stock plugin didn't
+" Remove inapplicable defaults from 'indentkeys'; we should only need to undo
+" this if the stock plugin didn't already arrange that (before v7.3.539)
setlocal indentkeys-=0#,0{,0},0),:
if !exists('b:undo_indent')
let b:undo_indent = 'setlocal indentkeys<'
@@ -7,5 +7,8 @@ endif
" Observe VimL conventions for two-space indents
setlocal shiftwidth=2
-setlocal softtabstop=2
-let b:undo_indent .= '|setlocal shiftwidth< softtabstop<'
+let b:undo_indent .= '|setlocal shiftwidth<'
+if &softtabstop != -1
+ let &l:softtabstop = &l:shiftwidth
+ let b:undo_indent .= '|setlocal softtabstop<'
+endif
diff --git a/vim/vimrc b/vim/vimrc
index 6caf77bc..8358b9f4 100644
--- a/vim/vimrc
+++ b/vim/vimrc
@@ -32,10 +32,19 @@ catch
endtry
" The all-important default indent settings; filetypes to tweak
-set autoindent " Use indent of previous line on new lines
-set expandtab " Use spaces instead of tabs
-set shiftwidth=4 " Indent with four spaces
-set softtabstop=4 " Insert four spaces with tab key
+set autoindent " Use indent of previous line on new lines
+set expandtab " Use spaces instead of tabs
+set shiftwidth=4 " Indent with four spaces
+
+" The number of spaces the Tab key should insert should follow 'shiftwidth';
+" if Vim is new enough (v7.3.693), use a negative value to automate this,
+" otherwise just use its present value
+if v:version > 703
+ \ || v:version == 703 && has('patch693')
+ set softtabstop=-1
+else
+ let &softtabstop = &shiftwidth
+endif
" Let me backspace over pretty much anything
set backspace+=eol " Line breaks