diff --git a/autoload/option.vim b/autoload/option.vim new file mode 100644 index 0000000..6744e61 --- /dev/null +++ b/autoload/option.vim @@ -0,0 +1,19 @@ +" From https://sanctum.geek.nz/cgit/dotfiles.git/tree/vim/autoload/option.vim + +" Split a comma-separated option value into parts, accounting for escaped +" commas and leading whitespace as Vim itself does internally +" +function! option#Split(expr, ...) abort + if a:0 > 1 + echoerr 'Too many arguments' + endif + let keepempty = a:0 ? a:1 : 0 + let parts = split(a:expr, '\\\@ " set wildignore+=*/Deploy/*,*/node_modules/*,*/build/*,*/lib/*,*/bower_components/*,*/jspm_packages/* set completeopt=longest,menuone,preview - -" Stolen from maralla/dotvim -function! EnsureExists(path) abort - if !isdirectory(expand(a:path)) - call mkdir(expand(a:path)) - endif -endfunction - -" persistent undo -if exists('+undofile') - set undofile - set undodir=~/.vim/.cache/undo -endif - -" backups -set backup -set backupdir=~/.vim/.cache/backup - -" swap files -set directory=~/.vim/.cache/swap -set noswapfile - -call EnsureExists('~/.vim/.cache') -call EnsureExists(&undodir) -call EnsureExists(&backupdir) -call EnsureExists(&directory) - - " Set up CtrlP with faster alternative, if possible - if executable('ag') - " Use The Silver Searcher https://github.com/ggreer/the_silver_searcher - set grepprg=ag\ --nogroup\ --nocolor - " Use ag in CtrlP for listing files. Lightning fast, respects .gitignore - " and .agignore. Ignores hidden files by default. - let g:ctrlp_user_command = 'ag %s -l --nocolor -f -g ""' - let g:ctrlp_use_caching = 0 - else - if executable('rg') - set grepprg=rg\ --color=never - - let g:ctrlp_user_command = 'rg %s --files --color=never --glob ""' - let g:ctrlp_use_caching = 0 - else - "ctrl+p ignore files in .gitignore - let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files . -co --exclude-standard', 'find %s -type f'] - endif - endif - - if has('gui_running') - set guioptions-=mTr " disable toolbar, menubar and scrollbar - if has('win32') - set guifont=Source_Code_Pro:h12:cANSI - endif - if has('osx') - set guifont=Source_Code_Pro:h13 - endif - else - if(has('mouse')) - set mouse=a - endif - if $TERM_PROGRAM ==? 'iTerm.app' - " different cursors for insert vs normal mode - if exists('$TMUX') - let &t_SI = "\Ptmux;\\]50;CursorShape=1\x7\\\" - let &t_EI = "\Ptmux;\\]50;CursorShape=0\x7\\\" - else - let &t_SI = "\]50;CursorShape=1\x7" - let &t_EI = "\]50;CursorShape=0\x7" - endif - endif - - " Windows-specific setting allowing for 256-colors etc - if($ConEmuANSI ==? 'ON') - set term=xterm - set t_Co=256 - let &t_AB='\e[48;5;%dm' " background color - let &t_AF='\e[38;5;%dm' " foreground color - inoremap [62~ - inoremap [63~ - nnoremap [62~ - nnoremap [63~ - endif - endif diff --git a/config/04-autocmds.vim b/config/04-autocmds.vim index 4bf5e30..ae338e0 100644 --- a/config/04-autocmds.vim +++ b/config/04-autocmds.vim @@ -80,7 +80,7 @@ autocmd FileType cs nnoremap :OmniSharpGetCodeActions augroup END - + augroup Signs autocmd BufEnter * sign define dummy autocmd BufEnter * execute 'sign place 9999 line=1 name=dummy buffer=' . bufnr('') diff --git a/plugin/folders.vim b/plugin/folders.vim new file mode 100644 index 0000000..c8a6eb0 --- /dev/null +++ b/plugin/folders.vim @@ -0,0 +1,30 @@ +" Stolen from maralla/dotvim +function! s:EnsureExists(path) abort + let l:path = expand(a:path) + if !isdirectory(l:path) + try + call mkdir(l:path) + catch + echom "Could not create directory " . l:path + endtry + endif +endfunction + +call s:EnsureExists(resolve($MYVIM . '/.cache')) + +" persistent undo +if exists('+undofile') + let &undodir = resolve($MYVIM . '/.cache/undo') + set undofile + call s:EnsureExists(&undodir) +endif + +" backups +let &backupdir=resolve($MYVIM . '/.cache/backup') +set backup +call s:EnsureExists(&backupdir) + +" swap files +let &directory=resolve($MYVIM . '/.cache/swap') +set noswapfile +call s:EnsureExists(&directory) diff --git a/plugin/grep.vim b/plugin/grep.vim new file mode 100644 index 0000000..6692a2b --- /dev/null +++ b/plugin/grep.vim @@ -0,0 +1,21 @@ + " Set up CtrlP with faster alternative, if possible +if executable('ag') + " Use The Silver Searcher https://github.com/ggreer/the_silver_searcher + set grepprg=ag\ --nogroup\ --nocolor + " Use ag in CtrlP for listing files. Lightning fast, respects .gitignore + " and .agignore. Ignores hidden files by default. + let g:ctrlp_user_command = 'ag %s -l --nocolor -f -g ""' + let g:ctrlp_use_caching = 0 + finish +endif + +if executable('rg') + set grepprg=rg\ --color=never + + let g:ctrlp_user_command = 'rg %s --files --color=never --glob ""' + let g:ctrlp_use_caching = 0 + finish +endif + +"ctrl+p ignore files in .gitignore +let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files . -co --exclude-standard', 'find %s -type f'] diff --git a/plugin/gui.vim b/plugin/gui.vim new file mode 100644 index 0000000..7344513 --- /dev/null +++ b/plugin/gui.vim @@ -0,0 +1,13 @@ +if has('gui_running') + set guioptions-=mTr " disable toolbar, menubar and scrollbar + if has('win32') + set guifont=Source_Code_Pro:h12:cANSI + endif + if has('osx') + set guifont=Source_Code_Pro:h13 + endif +else + if(has('mouse')) + set mouse=a + endif +endif diff --git a/plugin/ui.vim b/plugin/ui.vim new file mode 100644 index 0000000..2c9d585 --- /dev/null +++ b/plugin/ui.vim @@ -0,0 +1,30 @@ +if $TERM_PROGRAM ==? 'iTerm.app' + " different cursors for insert vs normal mode + if exists('$TMUX') + let &t_SI = "\Ptmux;\\]50;CursorShape=1\x7\\\" + let &t_EI = "\Ptmux;\\]50;CursorShape=0\x7\\\" + else + let &t_SI = "\]50;CursorShape=1\x7" + let &t_EI = "\]50;CursorShape=0\x7" + endif +endif + +" Windows-specific setting allowing for 256-colors etc +if($ConEmuANSI ==? 'ON') + set term=xterm + set t_Co=256 + let &t_AB='\e[48;5;%dm' " background color + let &t_AF='\e[38;5;%dm' " foreground color + inoremap [62~ + inoremap [63~ + nnoremap [62~ + nnoremap [63~ +endif + +if(exists('$WT_SESSION')) + set t_Co=256 + inoremap [62~ + inoremap [63~ + nnoremap [62~ + nnoremap [63~ +endif diff --git a/setup.bat b/setup.bat index 0e44ed5..2ae9218 100644 --- a/setup.bat +++ b/setup.bat @@ -5,10 +5,13 @@ cd /d %0\.. ver | find "XP" > nul if %ERRORLEVEL% == 0 goto vXp +ver | find "Version 10." > nul +if %ERRORLEVEL% == 0 goto vTen -goto vOver +goto done :vXp +echo "Windows XP" set target=%UserProfile%\vimfiles set cmd=junction "%target%" "%cd%" start /I %cmd% @@ -16,9 +19,17 @@ set cmd=fsutil hardlink create "%UserProfile%\_vimrc" "%cd%\vimrc" start /I %cmd% goto done - -:vOver +:vTen +echo "Windows 10" +set target=%UserProfile%\vimfiles +set cmd=mklink /D "%target%" "%cd%" +start /I %cmd% +set target=%UserProfile%\_vimrc +set cmd=mklink "%target%" "%cd%"\vimrc +start /I %cmd% goto done +echo "Done" + :done diff --git a/vimrc b/vimrc index c070bc3..0d52c7d 100644 --- a/vimrc +++ b/vimrc @@ -1,16 +1,9 @@ set encoding=utf-8 scriptencoding utf-8 -let g:vim_files=fnamemodify(resolve(expand('$MYVIMRC')), ':p:h') +if &runtimepath ==# '' + throw 'Empty ''runtimepath''' +endif +let $MYVIM = resolve(option#Split(&runtimepath)[0]) -function! SourceConfig(name) - " exec "echo 'Loading " . a:name . "'" - exec 'source ' . expand(g:vim_files . '/config/' . a:name) -endfunction - -call SourceConfig('01-plugins.vim') -call SourceConfig('02-general.vim') -call SourceConfig('03-mappings.vim') -call SourceConfig('04-autocmds.vim') - -unlet g:vim_files +runtime! config/**/*.vim