36 Commits
v1.2 ... master

Author SHA1 Message Date
Victor Schneuwly
0ce2d843d6 Fix MaySet detection for Lua following Neovim update (#195)
With version v0.10.0 of Neovim, the `:verbose` output added
"(run Nvim with -V1 for more details)" to the previous message,
which was simply "Last set from Lua".
2024-06-08 12:27:52 -04:00
Übertreiber
3e878abfd6 Fix MaySet detection for Neovim init.lua users
Neovim users since version 0.5 can write their global configuration in
an ~/.config/nvim/init.lua file instead of ~/.config/nvim/init.vim.

Unfortunately, `:verbose` support for Lua is still lacking even in
Neovim 0.8: instead of reporting the file and line that last changed an
option, it will simply say "last set in Lua" if that change happened in
a Lua script.

The regex used in MaySet does not recognize this case and so MaySet
falsely assumes that all Lua config comes from the system and not from
the user.

I've gone for a somewhat hacky solution and simply added the alternative
`/ Lua$/` to the regex. This assumes that the system-wide vimrc file is
always written in VimScript – which is true to this day according to the
[Neovim documentation][1].

[1]: https://github.com/neovim/neovim/blob/ce0fddf5/runtime/doc/starting.txt#L468-L472

Co-authored-by: Nico Madysa <nico.madysa@cern.ch>
2023-03-29 09:31:54 -04:00
Tim Pope
624c7549a5 sensible.vim 2.0
* Try to avoid overriding options set in user vimrc.
* Provide :DiffOrig, as found in the example at `:help :DiffOrig`.
* Enable Vim's included :Man command.
* Enable g:is_posix, for better highlighting of sh filetype.
* Break undo with <C-G>u before delete word with <C-W>.
* Add `set viewoptions-=options`.
* Add `set display+=truncate`.
* Add `set nolangremap`.
* Add `set nocompatible`.
* Replace `set sidescrolloff=5` with `set sidescroll=1 sidescrolloff=2`.
* Remove `set autoindent`.
* Remove conditional `set encoding=utf-8`.
* Don't run `filetype plugin indent on` a second time.
2023-03-17 23:56:54 -04:00
Tim Pope
5693bb650a Set nocompatible 2023-03-08 17:07:35 -05:00
Tim Pope
a7eea09ba6 Favor execute() over :redir, for performance
Resolves: https://github.com/tpope/vim-sensible/issues/186
2023-02-23 07:31:11 -05:00
Tim Pope
16283468be Fix startup error on nvim 2023-01-05 21:41:44 -05:00
Tim Pope
947f613a09 Avoid moving screen cursor during Vim startup
Search for "did_show" in Vim's do_set() to see why this works.

Resolves: https://github.com/tpope/vim-sensible/issues/182
2023-01-05 18:17:59 -05:00
Tim Pope
8e274c23e4 Favor execute() over :redir to minimize side effects
If this is still unacceptable for users of ancient versions of Vim, we
could further change the else clause to `return 1`.

Resolves: https://github.com/tpope/vim-sensible/issues/182
2023-01-03 11:52:22 -05:00
Tim Pope
eb59f45508 Provide g:is_posix default
Resolves: https://github.com/tpope/vim-sensible/issues/140
Resolves: https://github.com/tpope/vim-sensible/pull/127
2022-12-30 01:01:40 -05:00
Tim Pope
dad453eb1b Adjust 'sidescroll' and 'sidescrolloff'
Resolves: https://github.com/tpope/vim-sensible/pull/124
References: https://github.com/tpope/vim-sensible/issues/129
2022-12-30 01:01:22 -05:00
Tim Pope
cdb380156f Don't override user configured value of options
While `:runtime plugin/sensible.vim` does allow for effectively
superseding any option set by sensible.vim, it has never sat right with
me that this was necessary.  This change attempt to use the output of
`:verbose set` to determine if an option should be overridden or not.

Excluded from this change is options we alter, rather than override,
since a user could conceivably have their own alterations that do not
conflict with sensible.vim.  If any of these alterations were to receive
pushback, I would reconsider this decision.

References: https://github.com/tpope/vim-sensible/issues/129
References: https://github.com/tpope/vim-sensible/issues/88
2022-12-29 00:04:56 -05:00
Tim Pope
c597927613 Add a few more comments 2022-12-29 00:02:37 -05:00
Tim Pope
0b53989c02 Provide :DiffOrig
This seems like a weirdly specific thing to provide in a set of
defaults, but since defaults.vim provides it I guess we can too.

References: https://github.com/tpope/vim-sensible/issues/86
2022-12-27 23:42:10 -05:00
Tim Pope
d2613eeaa1 Add "display" to 'truncate' when available
This matches what defaults.vim does.  We could omit "lastline" in this
case, but it doesn't hurt anything, and keeping it out of an if
statement allows it to be set without +eval.
2022-12-27 22:55:33 -05:00
Tim Pope
d4b12eaf84 Don't override 'tags' without "./tags"
References: https://github.com/tpope/vim-sensible/issues/94
2022-12-27 07:59:51 -05:00
Tim Pope
1415c5b66d Move fish 'shell' override down with other reparative behaviors 2022-12-27 07:59:51 -05:00
Tim Pope
c48736b2c3 Enable Vim's built-in :Man command
Also move the other :runtime to the bottom, because that feels like it
should be the last thing we do.

Resolves: https://github.com/tpope/vim-sensible/issues/120
2022-12-26 02:08:44 -05:00
Tim Pope
d5617d0279 Disable 'langremap'
Resolves: https://github.com/tpope/vim-sensible/pull/93
2022-12-26 02:08:44 -05:00
Tim Pope
489e9bf885 Don't set 'encoding'
Vim 8.2.2912 changes the default on Windows, eliminating the primary
issue this was intended to fix.  Changing 'encoding' can prevent
previously defined maps from working, so let's rip this out sooner
rather than later.

References: https://github.com/tpope/vim-sensible/issues/69
2022-12-26 02:08:40 -05:00
Tim Pope
c28d1ad848 Don't override backspace=nostop 2022-12-26 01:30:34 -05:00
Tim Pope
c6fe4c33b8 Remove modeline 2022-12-26 01:30:15 -05:00
Tim Pope
1be4e4e540 Never run "filetype plugin indent on" a second time
Resolves: https://github.com/tpope/vim-sensible/issues/126
2022-12-03 00:26:42 -05:00
Tim Pope
8985da7669 Don't set autoindent
It's only very rarely that I want this off, but since file type plugins
tend to turn it on when it's desirable, the argument for forcing it
globally is pretty weak.
2022-08-25 21:32:43 -04:00
Tim Pope
226203be17 Don't disable global statusline
References: https://github.com/tpope/vim-sensible/issues/102
2022-04-11 13:01:50 -04:00
Tim Pope
2d9f34c09f Revert "Lower 'synmaxcol'"
This reverts commit c176d13789.
2019-11-24 15:45:22 -05:00
Tim Pope
bb75c2ec73 Add sponsor button 2019-11-12 19:29:02 -05:00
Tim Pope
4a7159a300 Linux terminal supports 16 colors now 2019-10-17 20:59:16 -04:00
Tim Pope
5dc6eb2d80 Remove cargo culted helptags invocation
Closes https://github.com/tpope/vim-sensible/issues/165
2019-08-31 23:29:58 -04:00
Enno
b9febff7aa Make :mkview not save options
References https://github.com/tpope/vim-sensible/issues/163#issuecomment
2019-08-22 18:12:55 -05:00
Tim Pope
c176d13789 Lower 'synmaxcol'
Closes https://github.com/tpope/vim-sensible/issues/142
2019-08-07 00:07:00 -04:00
Tim Pope
67fe033b2b Break undo before delete word
Closes https://github.com/tpope/vim-sensible/issues/161
2019-07-28 21:39:56 -04:00
Ammar Alakkad
8db5a732ef Fix typo 2019-02-14 17:23:45 -05:00
Roberto V. Alfieri
7f46e82fc7 Take bash path from /usr/bin/env for non Linux environment 2018-10-27 18:43:43 -04:00
Tim Pope
679e53d615 Revert "Include local options in sessions"
This reverts commit c82c6d4978.
2018-09-17 11:37:21 -04:00
Tim Pope
340a5e1f32 Update installation instructions 2018-08-19 18:43:08 -04:00
Tim Pope
c82c6d4978 Include local options in sessions
Closes https://github.com/tpope/vim-sensible/issues/153
2018-07-16 15:58:53 -04:00
3 changed files with 148 additions and 75 deletions

2
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,2 @@
github: tpope
custom: ["https://www.paypal.me/vimpope"]

View File

@@ -15,12 +15,12 @@ set of defaults that (hopefully) everyone can agree on.
## Installation
If you don't have a preferred installation method, I recommend
installing [pathogen.vim](https://github.com/tpope/vim-pathogen), and
then simply copy and paste:
Install using your favorite package manager, or use Vim's built-in package
support:
cd ~/.vim/bundle
git clone git://github.com/tpope/vim-sensible.git
mkdir -p ~/.vim/pack/tpope/start
cd ~/.vim/pack/tpope/start
git clone https://tpope.io/vim/sensible.git
## Features
@@ -51,7 +51,7 @@ documentation for an option. If you install [scriptease.vim][], you can press
Normally, sensible.vim loads after your vimrc, making it a bit tricky to
override (although you could use `after/plugin/sensible.vim`). If you want to
load it earlier, add the following line to you vimrc, then put your overrides
load it earlier, add the following line to your vimrc, then put your overrides
below.
runtime! plugin/sensible.vim

View File

@@ -1,6 +1,6 @@
" sensible.vim - Defaults everyone can agree on
" Maintainer: Tim Pope <http://tpo.pe/>
" Version: 1.2
" Version: 2.0
if exists('g:loaded_sensible') || &compatible
finish
@@ -8,81 +8,151 @@ else
let g:loaded_sensible = 'yes'
endif
if has('autocmd')
" Use :help 'option' to see the documentation for the given option.
" Disable vi compatibility, if for some reason it's on.
if &compatible
set nocompatible
endif
" Check if an option was set from a file in $HOME. This lets us avoid
" overriding options in the user's vimrc, but still override options in the
" system vimrc.
function! s:MaySet(option) abort
if exists('*execute')
let out = execute('verbose setglobal all ' . a:option . '?')
else
redir => out
silent verbose execute 'setglobal all' a:option . '?'
redir END
endif
return out !~# " \\(\\~[\\/]\\|Lua\\)[^\n]*$"
endfunction
if s:MaySet('backspace')
set backspace=indent,eol,start
endif
" Disable completing keywords in included files (e.g., #include in C). When
" configured properly, this can result in the slow, recursive scanning of
" hundreds of files of dubious relevance.
set complete-=i
if s:MaySet('smarttab')
set smarttab
endif
set nrformats-=octal
" Make the escape key more responsive by decreasing the wait time for an
" escape sequence (e.g., arrow keys).
if !has('nvim') && &ttimeoutlen == -1
set ttimeout
set ttimeoutlen=100
endif
if has('reltime') && s:MaySet('incsearch')
set incsearch
endif
" Use CTRL-L to clear the highlighting of 'hlsearch' (off by default) and call
" :diffupdate.
if maparg('<C-L>', 'n') ==# ''
nnoremap <silent> <C-L> :nohlsearch<C-R>=has('diff')?'<Bar>diffupdate':''<CR><CR><C-L>
endif
if s:MaySet('laststatus')
set laststatus=2
endif
if s:MaySet('ruler')
set ruler
endif
if s:MaySet('wildmenu')
set wildmenu
endif
if s:MaySet('scrolloff')
set scrolloff=1
endif
if s:MaySet('sidescroll') && s:MaySet('sidescrolloff')
set sidescroll=1
set sidescrolloff=2
endif
set display+=lastline
if has('patch-7.4.2109')
set display+=truncate
endif
if s:MaySet('listchars')
set listchars=tab:>\ ,trail:-,extends:>,precedes:<,nbsp:+
endif
" Delete comment character when joining commented lines.
if v:version > 703 || v:version == 703 && has("patch541")
set formatoptions+=j
endif
" Replace the check for a tags file in the parent directory of the current
" file with a check in every ancestor directory.
if has('path_extra') && (',' . &g:tags . ',') =~# ',\./tags,'
setglobal tags-=./tags tags-=./tags; tags^=./tags;
endif
if s:MaySet('autoread')
set autoread
endif
if s:MaySet('history')
set history=1000
endif
if s:MaySet('tabpagemax')
set tabpagemax=50
endif
" Persist g:UPPERCASE variables, used by some plugins, in .viminfo.
if !empty(&viminfo)
set viminfo^=!
endif
" Saving options in session and view files causes more problems than it
" solves, so disable it.
set sessionoptions-=options
set viewoptions-=options
" Allow color schemes to do bright colors without forcing bold.
if &t_Co == 8 && $TERM !~# '^Eterm'
set t_Co=16
endif
" If the running Vim lacks support for the Fish shell, use Bash instead.
if &shell =~# 'fish$' && (v:version < 704 || v:version == 704 && !has('patch276'))
set shell=/usr/bin/env\ bash
endif
" Disable a legacy behavior that can break plugin maps.
if has('langmap') && exists('+langremap') && &langremap && s:MaySet('langremap')
set nolangremap
endif
if !(exists('g:did_load_filetypes') && exists('g:did_load_ftplugin') && exists('g:did_indent_on'))
filetype plugin indent on
endif
if has('syntax') && !exists('g:syntax_on')
syntax enable
endif
" Use :help 'option' to see the documentation for the given option.
set autoindent
set backspace=indent,eol,start
set complete-=i
set smarttab
set nrformats-=octal
if !has('nvim') && &ttimeoutlen == -1
set ttimeout
set ttimeoutlen=100
if empty(mapcheck('<C-U>', 'i'))
inoremap <C-U> <C-G>u<C-U>
endif
if empty(mapcheck('<C-W>', 'i'))
inoremap <C-W> <C-G>u<C-W>
endif
set incsearch
" Use <C-L> to clear the highlighting of :set hlsearch.
if maparg('<C-L>', 'n') ==# ''
nnoremap <silent> <C-L> :nohlsearch<C-R>=has('diff')?'<Bar>diffupdate':''<CR><CR><C-L>
" From `:help :DiffOrig`.
if exists(":DiffOrig") != 2
command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_
\ | diffthis | wincmd p | diffthis
endif
set laststatus=2
set ruler
set wildmenu
if !&scrolloff
set scrolloff=1
endif
if !&sidescrolloff
set sidescrolloff=5
endif
set display+=lastline
if &encoding ==# 'latin1' && has('gui_running')
set encoding=utf-8
endif
if &listchars ==# 'eol:$'
set listchars=tab:>\ ,trail:-,extends:>,precedes:<,nbsp:+
endif
if v:version > 703 || v:version == 703 && has("patch541")
set formatoptions+=j " Delete comment character when joining commented lines
endif
if has('path_extra')
setglobal tags-=./tags tags-=./tags; tags^=./tags;
endif
if &shell =~# 'fish$' && (v:version < 704 || v:version == 704 && !has('patch276'))
set shell=/bin/bash
endif
set autoread
if &history < 1000
set history=1000
endif
if &tabpagemax < 50
set tabpagemax=50
endif
if !empty(&viminfo)
set viminfo^=!
endif
set sessionoptions-=options
" Allow color schemes to do bright colors without forcing bold.
if &t_Co == 8 && $TERM !~# '^linux\|^Eterm'
set t_Co=16
" Correctly highlight $() and other modern affordances in filetype=sh.
if !exists('g:is_posix') && !exists('g:is_bash') && !exists('g:is_kornshell') && !exists('g:is_dash')
let g:is_posix = 1
endif
" Load matchit.vim, but only if the user hasn't installed a newer version.
@@ -90,6 +160,7 @@ if !exists('g:loaded_matchit') && findfile('plugin/matchit.vim', &rtp) ==# ''
runtime! macros/matchit.vim
endif
inoremap <C-U> <C-G>u<C-U>
" vim:set ft=vim et sw=2:
" Enable the :Man command shipped inside Vim's man filetype plugin.
if exists(':Man') != 2 && !exists('g:loaded_man') && &filetype !=? 'man' && !has('nvim')
runtime ftplugin/man.vim
endif