From 032ad3197ae58c30e75c1eea7379377eaaa6d69b Mon Sep 17 00:00:00 2001 From: Kevin MacMartin Date: Sun, 11 Mar 2018 19:21:58 -0400 Subject: [PATCH] Split the plugins config separate files for each plugin --- vim/config/keyboard.vim | 18 - vim/config/plugins.vim | 508 +------------------------- vim/config/plugins/MatchTagAlways.vim | 10 + vim/config/plugins/emmet-vim.vim | 6 + vim/config/plugins/goyo.vim | 8 + vim/config/plugins/gundo.vim | 5 + vim/config/plugins/incsearch.vim | 7 + vim/config/plugins/lightline.vim | 175 +++++++++ vim/config/plugins/neocomplete.vim | 28 ++ vim/config/plugins/syntastic.vim | 137 +++++++ vim/config/plugins/tabular.vim | 16 + vim/config/plugins/tagbar.vim | 16 + vim/config/plugins/tcommand.vim | 1 + vim/config/plugins/tcomment.vim | 1 + vim/config/plugins/vim-bookmarks.vim | 2 + vim/config/plugins/vim-easytags.vim | 22 ++ vim/config/plugins/vim-signify.vim | 4 + vim/config/plugins/vimfiler.vim | 27 ++ vimrc | 9 - 19 files changed, 466 insertions(+), 534 deletions(-) create mode 100644 vim/config/plugins/MatchTagAlways.vim create mode 100644 vim/config/plugins/emmet-vim.vim create mode 100644 vim/config/plugins/goyo.vim create mode 100644 vim/config/plugins/gundo.vim create mode 100644 vim/config/plugins/incsearch.vim create mode 100644 vim/config/plugins/lightline.vim create mode 100644 vim/config/plugins/neocomplete.vim create mode 100644 vim/config/plugins/syntastic.vim create mode 100644 vim/config/plugins/tabular.vim create mode 100644 vim/config/plugins/tagbar.vim create mode 100644 vim/config/plugins/tcommand.vim create mode 100644 vim/config/plugins/tcomment.vim create mode 100644 vim/config/plugins/vim-bookmarks.vim create mode 100644 vim/config/plugins/vim-easytags.vim create mode 100644 vim/config/plugins/vim-signify.vim create mode 100644 vim/config/plugins/vimfiler.vim diff --git a/vim/config/keyboard.vim b/vim/config/keyboard.vim index 45228c5..2236ec0 100644 --- a/vim/config/keyboard.vim +++ b/vim/config/keyboard.vim @@ -31,24 +31,6 @@ " :ik | (C) -> add following character to keywords " :iK | (C) -> remove following character from keywords " -" Reference: (view plugin documentation for the full list of commands each offers) -" , | (A) -> enter after emmet 'word' (ie: html:5) -" | (A) -> comment selection/create an empty comment -" b | (A) -> comment the current block(s) -" r | (A) -> comment everything on the line to the right -" p | (A) -> comment the current paragraph -" -" (surround) -" S" | (V) -> surround selection with quotes -" S | (V) -> surround selection -" ds" | (N) -> delete surrounding "" -" dst | (N) -> delete surrounding tag (ie: ) -" cs'" | (N) -> change surrounding '' to "" (any delimiters) -" cs" | (N) -> change surrounding "" to the tag: -" cst" | (N) -> change any surrounding tag to "" -" ysiw' | (N) -> surround the current word with '' -" yss' | (N) -> surround non-whitespace of current line with '' -" " Mappings: " (mouse) " | (A) -> scroll right diff --git a/vim/config/plugins.vim b/vim/config/plugins.vim index 2ef29ad..588e927 100644 --- a/vim/config/plugins.vim +++ b/vim/config/plugins.vim @@ -8,14 +8,6 @@ " License: MIT " " " "============================================================" -" -" Acknowledgements: -" -" The Tabular TableFormat() function is taken from the -" vim-markdown project by plasticboy, which can be found -" at https://github.com/plasticboy/vim-markdown and is -" licensed with the MIT license. -" "use utf-8 encoding to load the script as it contains utf-8 characters scriptencoding utf-8 @@ -34,502 +26,4 @@ scriptencoding utf-8 set tags=./.tags;,~/.vim/tags "}}} -"AUTOFORMAT: {{{ - "use tidy for html instead of html-beautify - let g:formatprg_html = "tidy" - let g:formatprg_args_expr_html = '"-q --show-errors 0 --show-warnings 0 --force-output --indent auto --indent-spaces ".&shiftwidth." --vertical-space yes --tidy-mark no -ashtml -wrap ".&textwidth' -"}} - -"BOOKMARKS: {{{ - let g:bookmark_sign = '★' - let g:bookmark_annotation_sign = '📌' -"}}} - -"EASYTAGS: {{{ - let g:easytags_suppress_ctags_warning=1 - if filereadable(glob("~/.vim/tags"))|let g:easytags_file='~/.vim/tags'|endif - if isdirectory(glob("~/.vim/tags_by_filetype"))|let g:easytags_by_filetype='~/.vim/tags_by_filetype'|endif - - "prevent automatically generating the tagfile and syntax highlighting tags (default: 0) - if !exists("g:disableautotags") - let g:disableautotags=0 - endif - if (g:disableautotags == 1) - let g:easytags_auto_update=0 - let g:easytags_auto_highlight=0 - else - let g:easytags_auto_update=1 - let g:easytags_auto_highlight=1 - endif -"}}} - -"EMMET: {{{ - let g:use_emmet_complete_tag=1 - let g:user_emmet_mode='a' - - if filereadable("~/.vim/snippets.json") - let g:user_emmet_settings = webapi#json#decode(join(readfile(expand('~/.vim/snippets.json')), "\n")) - endif -"}}} - -"GOYO: {{{ - autocmd VimEnter,Filetype * - \ let g:goyo_width = &textwidth | - \ if (g:goyo_width == 0) | - \ let g:goyo_width = max(map(getline(1,'$'), 'len(v:val)')) | - \ if (g:goyo_width < 80) | - \ let g:goyo_width = 80 | - \ endif | - \ endif -"}}} - -"GUNDO: {{{ - let g:gundo_right=0 - let g:gundo_width=35 - let g:gundo_preview_height=10 - - autocmd FileType gundo setlocal nocursorcolumn -"}}} - -"INCSEARCH: {{{ - "use incsearch in place of the default search - map / (incsearch-forward) - map ? (incsearch-backward) - map g/ (incsearch-stay) - - "n and N behavioru is consistant - let g:incsearch#consistent_n_direction=1 -"}}} - -"JSON: {{{ - let g:vim_json_warnings=0 - let g:vim_json_syntax_conceal=0 -"}}} - -"MATCHTAGALWAYS: {{{ - let g:mta_filetypes = { - \ 'aspnet':1, - \ 'html':1, - \ 'xhtml':1, - \ 'php':1, - \ 'xml':1, - \ 'jinja':1, - \ 'vue':1, - \ 'vue.html.javascript.css':1 - \ } -"}}} - -"NEOCOMPLETE AUTOCOMPLETION PLUGIN: {{{ - let g:neocomplete#enable_at_startup=1 - let g:neocomplete#enable_smart_case=1 - let g:neocomplete#sources#syntax#min_keyword_length=3 - - if !exists('g:neocomplete#sources#omni#input_patterns') - let g:neocomplete#sources#omni#input_patterns = {} - endif - - let g:neocomplete#sources#omni#input_patterns.c='[^.[:digit:] *\t]\%(\.\|->\)\%(\h\w*\)\?' - let g:neocomplete#sources#omni#input_patterns.cpp='[^.[:digit:] *\t]\%(\.\|->\)\%(\h\w*\)\?\|\h\w*::\%(\h\w*\)\?' - let g:neocomplete#sources#omni#input_patterns.xml='<[^>]*' - let g:neocomplete#sources#omni#input_patterns.html='<[^>]*' - let g:neocomplete#sources#omni#input_patterns.xhtml='<[^>]*' - let g:neocomplete#sources#omni#input_patterns.markdown='<[^>]*' - let g:neocomplete#sources#omni#input_patterns.css='^\s\+\w+\|\w+[):;]?\s\+\|[@!]' - let g:neocomplete#sources#omni#input_patterns.less='^\s\+\w+\|\w+[):;]?\s\+\|[@!]' - let g:neocomplete#sources#omni#input_patterns.javascript='[^. \t]\.\%(\h\w*\)\?' - let g:neocomplete#sources#omni#input_patterns.json='[^. \t]\.\%(\h\w*\)\?' - let g:neocomplete#sources#omni#input_patterns.python='[^. *\t]\.\h\w*\|\h\w*::' - let g:neocomplete#sources#omni#input_patterns.ruby='[^. *\t]\.\w*\|\h\w*::' - let g:neocomplete#sources#omni#input_patterns.php='[^. \t]->\%(\h\w*\)\?\|\h\w*::\%(\h\w*\)\?' - let g:neocomplete#sources#omni#input_patterns.actionscript='[^. \t][.:]\h\w*' - let g:neocomplete#sources#omni#input_patterns.python3='[^. *\t]\.\h\w*\|\h\w*::' - let g:neocomplete#sources#omni#input_patterns.go='\h\w*\%.' - let g:neocomplete#sources#omni#input_patterns.perl='\h\w*->\h\w*\|\h\w*::' - let g:neocomplete#sources#omni#input_patterns.java='\%(\h\w*\|)\)\.' - let g:neocomplete#sources#omni#input_patterns.objc='\h\w\+\|\h\w*\%(\.\|->\)\h\w*' - let g:neocomplete#sources#omni#input_patterns.objj='[\[ \.]\w\+$\|:\w*$' -"}}} - -"SIGNIFY: {{{ - let g:signify_sign_add='+' - let g:signify_sign_change='!' - let g:signify_sign_delete='-' - let g:signify_sign_delete_first_line='~' -"}}} - -"SYNTASTIC: {{{ - "autostart syntax checking when vim opens to a compatible filetype (default: 0) - if !exists("g:autostartchecker") - let g:autostartchecker=0 - endif - - if &diff - let g:autostartchecker=0 - else - if (g:autostartchecker == 1) - let g:syntastic_mode_map={ - \ 'mode':'active', - \ 'active_filetypes':[], - \ 'passive_filetypes':[] - \ } - let g:syntastic_check_on_open=1 - else - let g:syntastic_mode_map={ - \ 'mode':'passive', - \ 'active_filetypes':[], - \ 'passive_filetypes':[] - \ } - let g:syntastic_check_on_open=0 - endif - - "configure warnings/errors that should be silenced by module - let g:syntastic_less_lessc_quiet_messages={ - \ 'regex':[ - \ 'NameError:.* is undefined', - \ 'FileError:.*' - \ ]} - let g:syntastic_scss_sass_quiet_messages={ - \ 'regex':[ - \ 'File to import not found or unreadable.*' - \ ]} - let g:syntastic_java_javac_quiet_messages={ - \ 'regex':[ - \ 'cannot find symbol.*', - \ 'method does not override or implement a method from a supertype.*', - \ 'package [^\ ]* does not exist.*' - \ ]} - let g:syntastic_javascript_eslint_quiet_messages={ - \ 'regex':[ - \ '.* is defined but never used', - \ "'[^']*' is not defined", - \ 'Missing "use strict" statement', - \ 'Unexpected [^ ]* statement.*' - \ ]} - let g:syntastic_javascript_jshint_quiet_messages={ - \ 'regex':[ - \ 'Expected an assignment or function call and instead saw an expression.' - \ ]} - let g:syntastic_javascript_standard_quiet_messages={ - \ 'regex':[ - \ '.* is defined but never used', - \ "'[^']*' is not defined" - \ ]} - let g:syntastic_markdown_mdl_quiet_messages={ - \ 'regex':[ - \ '.*MD013.*', - \ '.*MD002.*', - \ '.*MD029.*' - \ ]} - let g:syntastic_python_flake8_quiet_messages={ - \ 'regex':[ - \ '.*\[W293\]', - \ '.*\[E501\]' - \ ]} - let g:syntastic_php_phpmd_quiet_messages={ - \ 'regex':[ - \ 'Avoid using short method names like.*', - \ 'Avoid variables with short names like.*', - \ 'The method.*has [0-9][0-9]* lines of code.*', - \ 'The method.*has a Cyclomatic Complexity.*', - \ 'The method.*has an NPath complexity.*', - \ 'The function.*has a Cyclomatic Complexity.*', - \ 'The function.*has an NPath complexity.*', - \ 'The function.*Avoid really long methods\.', - \ 'The class.*has an overall complexity.*', - \ 'The class.*has.*public methods.*', - \ 'The class.*lines of code' - \ ]} - let g:syntastic_sh_bashate_quiet_messages={ - \ 'regex':[ - \ 'Indent not multiple of 4' - \ ]} - let g:syntastic_sh_shellcheck_quiet_messages={ - \ 'regex':[ - \ '.*\[SC1001\]', - \ '.*\[SC2015\]', - \ '.*\[SC2016\]', - \ '.*\[SC2029\]', - \ '.*\[SC2034\]', - \ '.*\[SC2148\]', - \ '.*\[SC2181\]', - \ '.*follow non-constant source', - \ 'Not following:' - \ ]} - autocmd BufNewFile,BufRead PKGBUILD,bash.bashrc,.bashrc let g:syntastic_quiet_messages={"level":"warnings"} - - let g:syntastic_check_on_wq=0 - let g:syntastic_always_populate_loc_list=1 - let g:syntastic_auto_loc_list=1 - let g:syntastic_loc_list_height=5 - endif - - "function to enable syntastic and set check_on_open on - function s:SyntasticToggleOn() - let g:syntastic_check_on_open=1 - if (g:syntastic_mode_map.mode == "passive") - SyntasticToggleMode - endif - endfunction - command! -buffer SyntasticToggleOn call s:SyntasticToggleOn() - - "function to disable syntastic and set check_on_open off - function s:SyntasticToggleOff() - let g:syntastic_check_on_open=0 - if (g:syntastic_mode_map.mode == "active") - SyntasticToggleMode - endif - endfunction - command! -buffer SyntasticToggleOff call s:SyntasticToggleOff() - - "function to toggle syntastic and check_on_open on and off together - function s:SyntasticToggleAll() - if (g:syntastic_check_on_open == 1) - call s:SyntasticToggleOff() - else - call s:SyntasticToggleOn() - endif - endfunction - command! -buffer SyntasticToggleAll call s:SyntasticToggleAll() -"}}} - -"TABULAR: {{{ - "format markdown tables - function! s:TableFormat() - let l:pos = getpos('.') - normal! { - call search('|') - normal! j - s/[^|]//g - Tabularize /| - s/ /-/g - call setpos('.', l:pos) - endfunction - command! -buffer TableFormat call s:TableFormat() -"}}} - -"TAGBAR: {{{ - "autostart tagbar when vim opens to a compatible filetype (default: 0) - if !exists("g:autostarttagbar") - let g:autostarttagbar=0 - endif - if !&diff - if (g:autostarttagbar == 1) - autocmd VimEnter * nested :call tagbar#autoopen(1) - endif - endif - - let g:tagbar_sort=0 - let g:tagbar_compact=1 - let g:tagbar_singleclick=1 - let g:tagbar_width=35 - let g:tagbar_autofocus=1 - - autocmd FileType tagbar setlocal nocursorcolumn -"}}} - -"TCOMMAND: {{{ - let g:tcommand#include_history=0 -"}}} - -"TCOMMENT: {{{ - let g:tcomment#rstrip_on_uncomment=2 "remove right-hand whitespace from all lines on uncomment -"}}} - -"VIM FILER: {{{ - "autostart filer when vim opens to an empty buffer (default: 1) - if !exists("g:autostartfiler")|let g:autostartfiler=1|endif - if (g:autostartfiler == 1) - autocmd VimEnter * if !argc() | VimFiler -quit -project | endif - endif - - let g:vimfiler_as_default_explorer=1 - let g:vimfiler_safe_mode_by_default=0 - let g:vimfiler_enable_auto_cd=1 - - let g:vimfiler_tree_indentation=2 - let g:vimfiler_explorer_columns='type:time' - let g:vimfiler_tree_closed_icon='▸' "['▶', '▼'], ['▸', '▾'], ['▷', '◢'] - let g:vimfiler_tree_opened_icon='▾' - let g:vimfiler_file_icon='-' - let g:vimfiler_marked_file_icon='+' - - "edit files by double clicking them, and justify the cursor on the left - autocmd FileType vimfiler setlocal nonumber nocursorcolumn - - "load the list of file extensions and handlers if it exists - if filereadable(glob("~/.vim/filetypes.vim")) - source ~/.vim/filetypes.vim - endif -"}}} - -"LIGHTLINE: {{{ - let g:unite_force_overwrite_statusline = 0 - let g:vimfiler_force_overwrite_statusline = 0 - - function! LLModified() - return &ft =~ 'help' ? '' : &modified ? '*' : &modifiable ? '' : '-' - endfunction - - function! LLReadonly() - return &ft !~? 'help' && &readonly ? '[RO]' : '' - endfunction - - function! LLFilename() - let fname = expand('%:t') - return - \ fname == '__Tagbar__' ? g:lightline.fname : - \ fname =~ '__Gundo' ? '' : - \ &ft == 'vimfiler' ? vimfiler#get_status_string() : - \ &ft == 'unite' ? unite#get_status_string() : - \ &ft == 'qf' ? '[Error/Location List]' : - \ &ft == 'extradite' ? '[Commit History]' : - \ ('' != LLReadonly() ? LLReadonly() . ' ' : '') . - \ ('' != fname ? fname : '[NEW]') . - \ ('' != LLModified() ? ' ' . LLModified() : '') - endfunction - - function! LLFugitive() - try - if expand('%:t') !~? 'Tagbar\|Gundo' && &ft !~? 'vimfiler' && exists('*fugitive#head') - let mark = '' " edit here for cool mark - let _ = fugitive#head() - return strlen(_) ? mark._ : '' - endif - catch - endtry - return '' - endfunction - - function! LLFileformat() - return winwidth(0) > 70 ? &fileformat : '' - endfunction - - function! LLFiletype() - return winwidth(0) > 70 ? (strlen(&filetype) ? &filetype : 'none') : '' - endfunction - - function! LLFileencoding() - return winwidth(0) > 70 ? (strlen(&fenc) ? &fenc : &enc) : '' - endfunction - - function! LLMode() - let fname = expand('%:t') - return fname == '__Tagbar__' ? 'Tagbar' : - \ fname == '__Gundo__' ? 'Gundo' : - \ fname == '__Gundo_Preview__' ? 'Gundo Preview' : - \ &ft == 'unite' ? 'Unite' : - \ &ft == 'vimfiler' ? 'VimFiler' : - \ winwidth(0) > 60 ? lightline#mode() : '' - endfunction - - let g:tagbar_status_func = 'TagbarStatusFunc' - function! TagbarStatusFunc(current, sort, fname, ...) abort - let g:lightline.fname = 'tags' "a:fname - return lightline#statusline(0) - endfunction - - augroup AutoSyntastic - autocmd! - autocmd BufWritePost * call s:syntastic() - augroup END - - function! s:syntastic() - SyntasticCheck - call lightline#update() - endfunction - - "status bar config with and without powerline fonts (default: 0) - if !exists("g:powerlinefonts") - let g:powerlinefonts=0 - endif - if (g:powerlinefonts == 1) - let g:lightline = { - \ 'colorscheme': 'darkcloud', - \ 'active': { - \ 'left': [ [ 'mode', 'paste' ], [ 'fugitive', 'filename' ], [ 'tagbar' ] ], - \ 'right': [ [ 'syntastic', 'lineinfo' ], [ 'percent' ], [ 'fileformat', 'fileencoding', 'filetype' ] ] - \ }, - \ 'component_function': { - \ 'fugitive': 'LLFugitive', - \ 'filename': 'LLFilename', - \ 'fileformat': 'LLFileformat', - \ 'filetype': 'LLFiletype', - \ 'fileencoding': 'LLFileencoding', - \ 'mode': 'LLMode', - \ }, - \ 'component_expand': { - \ 'syntastic': 'SyntasticStatuslineFlag', - \ }, - \ 'component_type': { - \ 'syntastic': 'error', - \ }, - \ 'separator': {'left': '', 'right': ''}, - \ 'subseparator': {'left': '', 'right': ''}, - \ 'component': { - \ 'tagbar': '%{tagbar#currenttag("[%s]", "", "f")}', - \ }, - \ } - else - let g:lightline = { - \ 'colorscheme': 'darkcloud', - \ 'active': { - \ 'left': [ [ 'mode', 'paste' ], [ 'fugitive', 'filename' ], [ 'tagbar' ] ], - \ 'right': [ [ 'syntastic', 'lineinfo' ], [ 'percent' ], [ 'fileformat', 'fileencoding', 'filetype' ] ] - \ }, - \ 'component_function': { - \ 'fugitive': 'LLFugitive', - \ 'filename': 'LLFilename', - \ 'fileformat': 'LLFileformat', - \ 'filetype': 'LLFiletype', - \ 'fileencoding': 'LLFileencoding', - \ 'mode': 'LLMode', - \ }, - \ 'component_expand': { - \ 'syntastic': 'SyntasticStatuslineFlag', - \ }, - \ 'component_type': { - \ 'syntastic': 'error', - \ }, - \ 'separator': {'left': '', 'right': ''}, - \ 'subseparator': {'left': '|', 'right': '|'}, - \ 'component': { - \ 'tagbar': '%{tagbar#currenttag("[%s]", "", "f")}', - \ } - \ } - endif - - "ligtline theme {{{ - let s:base0 = '#262626' - let s:base1 = '#303030' - let s:base2 = '#767676' - let s:base3 = '#949494' - let s:base4 = '#b2b2b2' - let s:base5 = '#c6c6c6' - let s:base6 = '#eaeaea' - - let s:rcol = '#d75f5f' - let s:ycol = '#ffd787' - let s:bcol = '#87d7ff' - - let s:p = {'normal':{},'inactive':{},'insert':{},'replace':{},'visual':{},'tabline':{}} - - let s:p.normal.left = [[ s:bcol,s:base1 ],[ s:base6,s:base0 ]] - let s:p.normal.right = [[ s:base4,s:base1 ],[ s:base6,s:base0 ]] - let s:p.inactive.left = [[ s:base6,s:base0 ],[ s:base4,s:base1 ]] - let s:p.inactive.right = [[ s:base4,s:base1 ],[ s:base6,s:base0 ]] - let s:p.insert.left = [[ s:rcol,s:base1 ],[ s:base6,s:base0 ]] - let s:p.replace.left = [[ s:base1,s:rcol ],[ s:base6,s:base0 ]] - let s:p.visual.left = [[ s:ycol,s:base1 ],[ s:base6,s:base0 ]] - - let s:p.normal.middle = [[ s:base4,s:base1 ]] - let s:p.inactive.abmiddle = [[ s:base3,s:base1 ]] - let s:p.tabline.left = [[ s:base5,s:base0 ]] - let s:p.tabline.tabsel = [[ s:base5,s:base1 ]] - let s:p.tabline.middle = [[ s:base0,s:base4 ]] - let s:p.tabline.right = copy(s:p.normal.right) - let s:p.normal.error = [[ s:rcol,s:base1 ]] - let s:p.normal.warning = [[ s:ycol,s:base1 ]] - - let g:lightline#colorscheme#darkcloud#palette = lightline#colorscheme#fill(s:p) - "}}} -"}}} +runtime! config/plugins/* diff --git a/vim/config/plugins/MatchTagAlways.vim b/vim/config/plugins/MatchTagAlways.vim new file mode 100644 index 0000000..4855e9a --- /dev/null +++ b/vim/config/plugins/MatchTagAlways.vim @@ -0,0 +1,10 @@ +let g:mta_filetypes = { + \ 'aspnet':1, + \ 'html':1, + \ 'xhtml':1, + \ 'php':1, + \ 'xml':1, + \ 'jinja':1, + \ 'vue':1, + \ 'vue.javascript':1 +\ } diff --git a/vim/config/plugins/emmet-vim.vim b/vim/config/plugins/emmet-vim.vim new file mode 100644 index 0000000..68f3fe7 --- /dev/null +++ b/vim/config/plugins/emmet-vim.vim @@ -0,0 +1,6 @@ +let g:use_emmet_complete_tag=1 +let g:user_emmet_mode='a' + +if filereadable("~/.vim/snippets.json") + let g:user_emmet_settings = webapi#json#decode(join(readfile(expand('~/.vim/snippets.json')), "\n")) +endif diff --git a/vim/config/plugins/goyo.vim b/vim/config/plugins/goyo.vim new file mode 100644 index 0000000..849ad9c --- /dev/null +++ b/vim/config/plugins/goyo.vim @@ -0,0 +1,8 @@ +autocmd VimEnter,Filetype * + \ let g:goyo_width = &textwidth | + \ if (g:goyo_width == 0) | + \ let g:goyo_width = max(map(getline(1,'$'), 'len(v:val)')) | + \ if (g:goyo_width < 80) | + \ let g:goyo_width = 80 | + \ endif | + \ endif diff --git a/vim/config/plugins/gundo.vim b/vim/config/plugins/gundo.vim new file mode 100644 index 0000000..382d342 --- /dev/null +++ b/vim/config/plugins/gundo.vim @@ -0,0 +1,5 @@ +let g:gundo_right=0 +let g:gundo_width=35 +let g:gundo_preview_height=10 + +autocmd FileType gundo setlocal nocursorcolumn diff --git a/vim/config/plugins/incsearch.vim b/vim/config/plugins/incsearch.vim new file mode 100644 index 0000000..c198552 --- /dev/null +++ b/vim/config/plugins/incsearch.vim @@ -0,0 +1,7 @@ +"use incsearch in place of the default search +map / (incsearch-forward) +map ? (incsearch-backward) +map g/ (incsearch-stay) + +"n and N behavioru is consistant +let g:incsearch#consistent_n_direction=1 diff --git a/vim/config/plugins/lightline.vim b/vim/config/plugins/lightline.vim new file mode 100644 index 0000000..b95e4f2 --- /dev/null +++ b/vim/config/plugins/lightline.vim @@ -0,0 +1,175 @@ +let g:unite_force_overwrite_statusline = 0 +let g:vimfiler_force_overwrite_statusline = 0 + +function! LLModified() + return &ft =~ 'help' ? '' : &modified ? '*' : &modifiable ? '' : '-' +endfunction + +function! LLReadonly() + return &ft !~? 'help' && &readonly ? '[RO]' : '' +endfunction + +function! LLFilename() + let fname = expand('%:t') + + return + \ fname == '__Tagbar__' ? g:lightline.fname : + \ fname =~ '__Gundo' ? '' : + \ &ft == 'vimfiler' ? vimfiler#get_status_string() : + \ &ft == 'unite' ? unite#get_status_string() : + \ &ft == 'qf' ? '[Error/Location List]' : + \ &ft == 'extradite' ? '[Commit History]' : + \ ('' != LLReadonly() ? LLReadonly() . ' ' : '') . + \ ('' != fname ? fname : '[NEW]') . + \ ('' != LLModified() ? ' ' . LLModified() : '') +endfunction + +function! LLFugitive() + try + if expand('%:t') !~? 'Tagbar\|Gundo' && &ft !~? 'vimfiler' && exists('*fugitive#head') + let mark = '' " edit here for cool mark + let _ = fugitive#head() + return strlen(_) ? mark._ : '' + endif + catch + + endtry + + return '' +endfunction + +function! LLFileformat() + return winwidth(0) > 70 ? &fileformat : '' +endfunction + +function! LLFiletype() + return winwidth(0) > 70 ? (strlen(&filetype) ? &filetype : 'none') : '' +endfunction + +function! LLFileencoding() + return winwidth(0) > 70 ? (strlen(&fenc) ? &fenc : &enc) : '' +endfunction + +function! LLMode() + let fname = expand('%:t') + + return fname == '__Tagbar__' ? 'Tagbar' : + \ fname == '__Gundo__' ? 'Gundo' : + \ fname == '__Gundo_Preview__' ? 'Gundo Preview' : + \ &ft == 'unite' ? 'Unite' : + \ &ft == 'vimfiler' ? 'VimFiler' : + \ winwidth(0) > 60 ? lightline#mode() : '' +endfunction + +let g:tagbar_status_func = 'TagbarStatusFunc' + +function! TagbarStatusFunc(current, sort, fname, ...) abort + let g:lightline.fname = 'tags' "a:fname + return lightline#statusline(0) +endfunction + +augroup AutoSyntastic + autocmd! + autocmd BufWritePost * call s:syntastic() +augroup END + +function! s:syntastic() + SyntasticCheck + call lightline#update() +endfunction + +"status bar config with and without powerline fonts (default: 0) +if !exists("g:powerlinefonts") + let g:powerlinefonts=0 +endif + +if (g:powerlinefonts == 1) + let g:lightline = { + \ 'colorscheme': 'darkcloud', + \ 'active': { + \ 'left': [ [ 'mode', 'paste' ], [ 'fugitive', 'filename' ], [ 'tagbar' ] ], + \ 'right': [ [ 'syntastic', 'lineinfo' ], [ 'percent' ], [ 'fileformat', 'fileencoding', 'filetype' ] ] + \ }, + \ 'component_function': { + \ 'fugitive': 'LLFugitive', + \ 'filename': 'LLFilename', + \ 'fileformat': 'LLFileformat', + \ 'filetype': 'LLFiletype', + \ 'fileencoding': 'LLFileencoding', + \ 'mode': 'LLMode', + \ }, + \ 'component_expand': { + \ 'syntastic': 'SyntasticStatuslineFlag', + \ }, + \ 'component_type': { + \ 'syntastic': 'error', + \ }, + \ 'separator': {'left': '', 'right': ''}, + \ 'subseparator': {'left': '', 'right': ''}, + \ 'component': { + \ 'tagbar': '%{tagbar#currenttag("[%s]", "", "f")}', + \ }, + \ } +else + let g:lightline = { + \ 'colorscheme': 'darkcloud', + \ 'active': { + \ 'left': [ [ 'mode', 'paste' ], [ 'fugitive', 'filename' ], [ 'tagbar' ] ], + \ 'right': [ [ 'syntastic', 'lineinfo' ], [ 'percent' ], [ 'fileformat', 'fileencoding', 'filetype' ] ] + \ }, + \ 'component_function': { + \ 'fugitive': 'LLFugitive', + \ 'filename': 'LLFilename', + \ 'fileformat': 'LLFileformat', + \ 'filetype': 'LLFiletype', + \ 'fileencoding': 'LLFileencoding', + \ 'mode': 'LLMode', + \ }, + \ 'component_expand': { + \ 'syntastic': 'SyntasticStatuslineFlag', + \ }, + \ 'component_type': { + \ 'syntastic': 'error', + \ }, + \ 'separator': {'left': '', 'right': ''}, + \ 'subseparator': {'left': '|', 'right': '|'}, + \ 'component': { + \ 'tagbar': '%{tagbar#currenttag("[%s]", "", "f")}', + \ } + \ } +endif + +"ligtline theme {{{ + let s:base0 = '#262626' + let s:base1 = '#303030' + let s:base2 = '#767676' + let s:base3 = '#949494' + let s:base4 = '#b2b2b2' + let s:base5 = '#c6c6c6' + let s:base6 = '#eaeaea' + + let s:rcol = '#d75f5f' + let s:ycol = '#ffd787' + let s:bcol = '#87d7ff' + + let s:p = {'normal':{},'inactive':{},'insert':{},'replace':{},'visual':{},'tabline':{}} + + let s:p.normal.left = [[ s:bcol,s:base1 ],[ s:base6,s:base0 ]] + let s:p.normal.right = [[ s:base4,s:base1 ],[ s:base6,s:base0 ]] + let s:p.inactive.left = [[ s:base6,s:base0 ],[ s:base4,s:base1 ]] + let s:p.inactive.right = [[ s:base4,s:base1 ],[ s:base6,s:base0 ]] + let s:p.insert.left = [[ s:rcol,s:base1 ],[ s:base6,s:base0 ]] + let s:p.replace.left = [[ s:base1,s:rcol ],[ s:base6,s:base0 ]] + let s:p.visual.left = [[ s:ycol,s:base1 ],[ s:base6,s:base0 ]] + + let s:p.normal.middle = [[ s:base4,s:base1 ]] + let s:p.inactive.abmiddle = [[ s:base3,s:base1 ]] + let s:p.tabline.left = [[ s:base5,s:base0 ]] + let s:p.tabline.tabsel = [[ s:base5,s:base1 ]] + let s:p.tabline.middle = [[ s:base0,s:base4 ]] + let s:p.tabline.right = copy(s:p.normal.right) + let s:p.normal.error = [[ s:rcol,s:base1 ]] + let s:p.normal.warning = [[ s:ycol,s:base1 ]] + + let g:lightline#colorscheme#darkcloud#palette = lightline#colorscheme#fill(s:p) +"}}} diff --git a/vim/config/plugins/neocomplete.vim b/vim/config/plugins/neocomplete.vim new file mode 100644 index 0000000..877ba0b --- /dev/null +++ b/vim/config/plugins/neocomplete.vim @@ -0,0 +1,28 @@ +let g:neocomplete#enable_at_startup=1 +let g:neocomplete#enable_smart_case=1 +let g:neocomplete#sources#syntax#min_keyword_length=3 + +if !exists('g:neocomplete#sources#omni#input_patterns') + let g:neocomplete#sources#omni#input_patterns = {} +endif + +let g:neocomplete#sources#omni#input_patterns.c='[^.[:digit:] *\t]\%(\.\|->\)\%(\h\w*\)\?' +let g:neocomplete#sources#omni#input_patterns.cpp='[^.[:digit:] *\t]\%(\.\|->\)\%(\h\w*\)\?\|\h\w*::\%(\h\w*\)\?' +let g:neocomplete#sources#omni#input_patterns.xml='<[^>]*' +let g:neocomplete#sources#omni#input_patterns.html='<[^>]*' +let g:neocomplete#sources#omni#input_patterns.xhtml='<[^>]*' +let g:neocomplete#sources#omni#input_patterns.markdown='<[^>]*' +let g:neocomplete#sources#omni#input_patterns.css='^\s\+\w+\|\w+[):;]?\s\+\|[@!]' +let g:neocomplete#sources#omni#input_patterns.less='^\s\+\w+\|\w+[):;]?\s\+\|[@!]' +let g:neocomplete#sources#omni#input_patterns.javascript='[^. \t]\.\%(\h\w*\)\?' +let g:neocomplete#sources#omni#input_patterns.json='[^. \t]\.\%(\h\w*\)\?' +let g:neocomplete#sources#omni#input_patterns.python='[^. *\t]\.\h\w*\|\h\w*::' +let g:neocomplete#sources#omni#input_patterns.ruby='[^. *\t]\.\w*\|\h\w*::' +let g:neocomplete#sources#omni#input_patterns.php='[^. \t]->\%(\h\w*\)\?\|\h\w*::\%(\h\w*\)\?' +let g:neocomplete#sources#omni#input_patterns.actionscript='[^. \t][.:]\h\w*' +let g:neocomplete#sources#omni#input_patterns.python3='[^. *\t]\.\h\w*\|\h\w*::' +let g:neocomplete#sources#omni#input_patterns.go='\h\w*\%.' +let g:neocomplete#sources#omni#input_patterns.perl='\h\w*->\h\w*\|\h\w*::' +let g:neocomplete#sources#omni#input_patterns.java='\%(\h\w*\|)\)\.' +let g:neocomplete#sources#omni#input_patterns.objc='\h\w\+\|\h\w*\%(\.\|->\)\h\w*' +let g:neocomplete#sources#omni#input_patterns.objj='[\[ \.]\w\+$\|:\w*$' diff --git a/vim/config/plugins/syntastic.vim b/vim/config/plugins/syntastic.vim new file mode 100644 index 0000000..4b39fba --- /dev/null +++ b/vim/config/plugins/syntastic.vim @@ -0,0 +1,137 @@ +"autostart syntax checking when vim opens to a compatible filetype (default: 0) +if !exists("g:autostartchecker") + let g:autostartchecker=0 +endif + +if &diff + let g:autostartchecker=0 +else + if (g:autostartchecker == 1) + let g:syntastic_mode_map={ + \ 'mode':'active', + \ 'active_filetypes':[], + \ 'passive_filetypes':[] + \ } + let g:syntastic_check_on_open=1 + else + let g:syntastic_mode_map={ + \ 'mode':'passive', + \ 'active_filetypes':[], + \ 'passive_filetypes':[] + \ } + let g:syntastic_check_on_open=0 + endif + + "configure warnings/errors that should be silenced by module + let g:syntastic_less_lessc_quiet_messages={ + \ 'regex':[ + \ 'NameError:.* is undefined', + \ 'FileError:.*' + \ ]} + let g:syntastic_scss_sass_quiet_messages={ + \ 'regex':[ + \ 'File to import not found or unreadable.*' + \ ]} + let g:syntastic_java_javac_quiet_messages={ + \ 'regex':[ + \ 'cannot find symbol.*', + \ 'method does not override or implement a method from a supertype.*', + \ 'package [^\ ]* does not exist.*' + \ ]} + let g:syntastic_javascript_eslint_quiet_messages={ + \ 'regex':[ + \ '.* is defined but never used', + \ "'[^']*' is not defined", + \ 'Missing "use strict" statement', + \ 'Unexpected [^ ]* statement.*' + \ ]} + let g:syntastic_javascript_jshint_quiet_messages={ + \ 'regex':[ + \ 'Expected an assignment or function call and instead saw an expression.' + \ ]} + let g:syntastic_javascript_standard_quiet_messages={ + \ 'regex':[ + \ '.* is defined but never used', + \ "'[^']*' is not defined" + \ ]} + let g:syntastic_markdown_mdl_quiet_messages={ + \ 'regex':[ + \ '.*MD013.*', + \ '.*MD002.*', + \ '.*MD029.*' + \ ]} + let g:syntastic_python_flake8_quiet_messages={ + \ 'regex':[ + \ '.*\[W293\]', + \ '.*\[E501\]' + \ ]} + let g:syntastic_php_phpmd_quiet_messages={ + \ 'regex':[ + \ 'Avoid using short method names like.*', + \ 'Avoid variables with short names like.*', + \ 'The method.*has [0-9][0-9]* lines of code.*', + \ 'The method.*has a Cyclomatic Complexity.*', + \ 'The method.*has an NPath complexity.*', + \ 'The function.*has a Cyclomatic Complexity.*', + \ 'The function.*has an NPath complexity.*', + \ 'The function.*Avoid really long methods\.', + \ 'The class.*has an overall complexity.*', + \ 'The class.*has.*public methods.*', + \ 'The class.*lines of code' + \ ]} + let g:syntastic_sh_bashate_quiet_messages={ + \ 'regex':[ + \ 'Indent not multiple of 4' + \ ]} + let g:syntastic_sh_shellcheck_quiet_messages={ + \ 'regex':[ + \ '.*\[SC1001\]', + \ '.*\[SC2015\]', + \ '.*\[SC2016\]', + \ '.*\[SC2029\]', + \ '.*\[SC2034\]', + \ '.*\[SC2148\]', + \ '.*\[SC2181\]', + \ '.*follow non-constant source', + \ 'Not following:' + \ ]} + autocmd BufNewFile,BufRead PKGBUILD,bash.bashrc,.bashrc let g:syntastic_quiet_messages={"level":"warnings"} + + let g:syntastic_check_on_wq=0 + let g:syntastic_always_populate_loc_list=1 + let g:syntastic_auto_loc_list=1 + let g:syntastic_loc_list_height=5 +endif + +"function to enable syntastic and set check_on_open on +function s:SyntasticToggleOn() + let g:syntastic_check_on_open=1 + + if (g:syntastic_mode_map.mode == "passive") + SyntasticToggleMode + endif +endfunction + +command! -buffer SyntasticToggleOn call s:SyntasticToggleOn() + +"function to disable syntastic and set check_on_open off +function s:SyntasticToggleOff() + let g:syntastic_check_on_open=0 + + if (g:syntastic_mode_map.mode == "active") + SyntasticToggleMode + endif +endfunction + +command! -buffer SyntasticToggleOff call s:SyntasticToggleOff() + +"function to toggle syntastic and check_on_open on and off together +function s:SyntasticToggleAll() + if (g:syntastic_check_on_open == 1) + call s:SyntasticToggleOff() + else + call s:SyntasticToggleOn() + endif +endfunction + +command! -buffer SyntasticToggleAll call s:SyntasticToggleAll() diff --git a/vim/config/plugins/tabular.vim b/vim/config/plugins/tabular.vim new file mode 100644 index 0000000..bda2082 --- /dev/null +++ b/vim/config/plugins/tabular.vim @@ -0,0 +1,16 @@ +" This Tabular TableFormat() function is taken from the +" vim-markdown project by plasticboy, which can be found +" at https://github.com/plasticboy/vim-markdown and is +" licensed with the MIT license. +function! s:TableFormat() + let l:pos = getpos('.') + normal! { + call search('|') + normal! j + s/[^|]//g + Tabularize /| + s/ /-/g + call setpos('.', l:pos) +endfunction + +command! -buffer TableFormat call s:TableFormat() diff --git a/vim/config/plugins/tagbar.vim b/vim/config/plugins/tagbar.vim new file mode 100644 index 0000000..e006934 --- /dev/null +++ b/vim/config/plugins/tagbar.vim @@ -0,0 +1,16 @@ +"autostart tagbar when vim opens to a compatible filetype (default: 0) +if !exists("g:autostarttagbar") + let g:autostarttagbar=0 +endif + +if !&diff && (g:autostarttagbar == 1) + autocmd VimEnter * nested :call tagbar#autoopen(1) +endif + +let g:tagbar_sort=0 +let g:tagbar_compact=1 +let g:tagbar_singleclick=1 +let g:tagbar_width=35 +let g:tagbar_autofocus=1 + +autocmd FileType tagbar setlocal nocursorcolumn diff --git a/vim/config/plugins/tcommand.vim b/vim/config/plugins/tcommand.vim new file mode 100644 index 0000000..55caff7 --- /dev/null +++ b/vim/config/plugins/tcommand.vim @@ -0,0 +1 @@ +let g:tcommand#include_history=0 diff --git a/vim/config/plugins/tcomment.vim b/vim/config/plugins/tcomment.vim new file mode 100644 index 0000000..232c07e --- /dev/null +++ b/vim/config/plugins/tcomment.vim @@ -0,0 +1 @@ +let g:tcomment#rstrip_on_uncomment=2 "remove right-hand whitespace from all lines on uncomment diff --git a/vim/config/plugins/vim-bookmarks.vim b/vim/config/plugins/vim-bookmarks.vim new file mode 100644 index 0000000..bb04aa0 --- /dev/null +++ b/vim/config/plugins/vim-bookmarks.vim @@ -0,0 +1,2 @@ +let g:bookmark_sign = '★' +let g:bookmark_annotation_sign = '📌' diff --git a/vim/config/plugins/vim-easytags.vim b/vim/config/plugins/vim-easytags.vim new file mode 100644 index 0000000..d884e11 --- /dev/null +++ b/vim/config/plugins/vim-easytags.vim @@ -0,0 +1,22 @@ +let g:easytags_suppress_ctags_warning=1 + +if filereadable(glob("~/.vim/tags")) + let g:easytags_file='~/.vim/tags' +endif + +if isdirectory(glob("~/.vim/tags_by_filetype")) + let g:easytags_by_filetype='~/.vim/tags_by_filetype' +endif + +"prevent automatically generating the tagfile and syntax highlighting tags (default: 0) +if !exists("g:disableautotags") + let g:disableautotags=0 +endif + +if (g:disableautotags == 1) + let g:easytags_auto_update=0 + let g:easytags_auto_highlight=0 +else + let g:easytags_auto_update=1 + let g:easytags_auto_highlight=1 +endif diff --git a/vim/config/plugins/vim-signify.vim b/vim/config/plugins/vim-signify.vim new file mode 100644 index 0000000..6ac1e1f --- /dev/null +++ b/vim/config/plugins/vim-signify.vim @@ -0,0 +1,4 @@ +let g:signify_sign_add='+' +let g:signify_sign_change='!' +let g:signify_sign_delete='-' +let g:signify_sign_delete_first_line='~' diff --git a/vim/config/plugins/vimfiler.vim b/vim/config/plugins/vimfiler.vim new file mode 100644 index 0000000..f7cbf22 --- /dev/null +++ b/vim/config/plugins/vimfiler.vim @@ -0,0 +1,27 @@ +"autostart filer when vim opens to an empty buffer (default: 1) +if !exists("g:autostartfiler") + let g:autostartfiler=1 +endif + +if (g:autostartfiler == 1) + autocmd VimEnter * if !argc() | VimFiler -quit -project | endif +endif + +let g:vimfiler_as_default_explorer=1 +let g:vimfiler_safe_mode_by_default=0 +let g:vimfiler_enable_auto_cd=1 + +let g:vimfiler_tree_indentation=2 +let g:vimfiler_explorer_columns='type:time' +let g:vimfiler_tree_closed_icon='▸' "['▶', '▼'], ['▸', '▾'], ['▷', '◢'] +let g:vimfiler_tree_opened_icon='▾' +let g:vimfiler_file_icon='-' +let g:vimfiler_marked_file_icon='+' + +"edit files by double clicking them, and justify the cursor on the left +autocmd FileType vimfiler setlocal nonumber nocursorcolumn + +"load the list of file extensions and handlers if it exists +if filereadable(glob("~/.vim/filetypes.vim")) + source ~/.vim/filetypes.vim +endif diff --git a/vimrc b/vimrc index f4b940a..427dde0 100644 --- a/vimrc +++ b/vimrc @@ -38,15 +38,6 @@ "Init Plugin Loader: let pathogen_disabled=[] - " disable incompatible plugins - if has('nvim') - call add(pathogen_disabled, 'vim-fixkey') - endif - - if has('nvim') || !has('lua') - call add(pathogen_disabled, 'neocomplete.vim') - endif - if !has('python') call add(pathogen_disabled, 'gundo.vim') call add(pathogen_disabled, 'MatchTagAlways')