Features by Gerhard
[shutils.git] / dotfiles / vim / .vimrc
index 1afa776496a204596986348607661b3d96ab2a07..7006e83799b08f28e43c06c9e9f2664f7e1af422 100644 (file)
@@ -5,12 +5,12 @@
 "profile func *
 "profile file *
 
-
-set nocompatible
 set encoding=utf8
 set number
 set backspace=indent,eol,start
 
+set mouse=a
+
 set tagstack
 set grepprg=grep\ -nH\ $*
 set foldcolumn=1
@@ -43,20 +43,67 @@ set tags=./tags;/
 syntax on
 filetype plugin indent on
 
-" Pathogen runtime path manipulation
-"call pathogen#infect() "Using the infect method breaks ft detection
-call pathogen#runtime_append_all_bundles()
-call pathogen#helptags()
+runtime! autoload/plug.vim
+" Check if there is vim-plug installed
+if exists('g:loaded_plug')
+    call plug#begin('~/.config/nvim/plugged')
+        Plug 'Glench/Vim-Jinja2-Syntax'
+        Plug 'LaTeX-Box-Team/LaTeX-Box'
+        Plug 'benekastah/neomake'
+        Plug 'vim-airline/vim-airline'
+        Plug 'vim-airline/vim-airline-themes'
+        Plug 'chrisbra/csv.vim'
+        Plug 'craigemery/vim-autotag'
+        Plug 'derekwyatt/vim-fswitch'
+        Plug 'godlygeek/tabular'
+        "Plug 'kien/ctrlp.vim'
+        Plug 'junegunn/fzf'
+        Plug 'majutsushi/tagbar'
+        Plug 'mhinz/vim-signify'
+        Plug 'msanders/snipmate.vim'
+        Plug 'scrooloose/nerdcommenter'
+        Plug 'scrooloose/nerdtree'
+        " Plug 'scrooloose/syntastic'
+        Plug 'sjl/splice.vim'
+        Plug 'Shougo/deoplete.nvim'
+        Plug 'suan/vim-instant-markdown'
+        Plug 'StanAngeloff/php.vim'
+        Plug 't4ku/marktag'
+        Plug 'thinca/vim-fontzoom'
+        Plug 'tpope/vim-ragtag'
+        Plug 'vim-scripts/CSApprox'
+        Plug 'vim-scripts/DetectIndent'
+        Plug 'vim-scripts/git_patch_tags.vim'
+        Plug 'vim-scripts/loremipsum'
+    call plug#end()
+
+    autocmd! BufWritePost,BufEnter * Neomake
+
+" If there is no vim-plug, try pathogen
+else
+    runtime autoload/pathogen.vim
+    if exists("g:loaded_pathogen")
+        " Pathogen runtime path manipulation
+        call pathogen#runtime_append_all_bundles()
+        call pathogen#helptags()
+    endif
+endif
 
 
-"Power saving tip: powertop-homepage
-"let &guicursor = &guicursor . ",a:blinkon0"
-"According to vim help -- enable mouse in xterm...
-set mouse=a
+if has('nvim')
+    set rtp^=/usr/share/vim/vimfiles
+else
+    set nocompatible
+endif
 
-" Use 256 colors
-set t_Co=256
+" Color settings
+if !has('nvim')
+    set t_Co=256
+else
+    let $NVIM_TUI_ENABLE_TRUE_COLOR=1
+endif
 let g:CSApprox_attr_map = { 'bold' : 'bold', 'italic' : 'underline', 'sp' : 'bg' }
+
 colorscheme shuber-wombat
 
 
@@ -73,9 +120,6 @@ if exists(":DetectIndent")
 endif
 
 
-let g:syntastic_mode_map = { 'mode' : 'active', 'active_filetypes' : [], 'passive_filetypes' : ['html'] }
-
-
 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 "  Airline
 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
@@ -107,7 +151,6 @@ nmap <s-PageDown> :bn<CR>
 nmap <s-PageUp>   :bp<CR>
 
 map <a-c> <plug>NERDCommenterToggle
-nmap <F9> :NERDTreeToggle<CR>
 nmap <F10> :TagbarToggle<CR>
 
 "nmap <c-q> :q<CR>
@@ -116,6 +159,16 @@ nmap <F10> :TagbarToggle<CR>
 "imap <c-s> <c-o><c-s>
 
 
+
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+"  NERDTree
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+nmap <F9> :NERDTreeToggle<CR>
+let g:NERDTreeDirArrows = 1
+let g:NERDTreeDirArrowExpandable = '▸'
+let g:NERDTreeDirArrowCollapsible = '▾'
+
+
 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 "  fortran
 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
@@ -129,14 +182,32 @@ au Filetype fortran     set cindent cst csto=0
 "  C, C++, C#, objc, java
 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
-au Filetype c,cpp,cs,objc,java map <buffer> <F4> :cnext <CR>
-au Filetype c,cpp,cs,objc,java map <buffer> <S-F4> :cprevious <CR>
-au Filetype c,cpp,cs,objc,java map <buffer> <F11> :AS <CR>
-au Filetype c,cpp,cs,objc,java map <buffer> <S-F11> :A <CR>
 au Filetype c,cpp,cs,objc,java set cindent cst csto=0
-au Filetype c,cpp,cs,objc map <buffer> <F7> :make <CR>
-au Filetype java map <buffer> <F7> :!ant -f ../build.xml <CR>
+
+au Filetype c,cpp,cs,objc,java map <buffer> <F4> :cnext<CR>
+au Filetype c,cpp,cs,objc,java map <buffer> <S-F4> :cprevious<CR>
+
 au Filetype c,cpp,cs,objc set makeprg=make
+au Filetype c,cpp,cs,objc map <buffer> <F7> :make<CR>
+au Filetype java map <buffer> <F7> :!ant -f ../build.xml<CR>
+
+" If FSwitch exists
+runtime! plugin/fswitch.vim
+if exists(":FSHere")
+    au Filetype c,cpp,objc map <buffer> <F11> :vsplit<CR>:FSRight<CR>
+    au Filetype c,cpp,objc map <buffer> <S-F11> :FSHere<CR>
+
+    " Substitute lib <-> include, otherwise take the same directory
+    au BufEnter *.c* let b:fswitchlocs='reg:/lib/include/,rel:.'
+    au BufEnter *.h* let b:fswitchlocs='reg:/include/lib/,rel:.'
+    "au BufEnter *.c* let b:fswitchlocs='rel:.,rel:../inc*/**,rel:../../inc*/**'
+
+    au BufEnter *.cpp,*.cc,*.cxx let b:fswitchdst='h,hxx,hpp,hh'
+    au BufEnter *.h,*.hh,*.hxx let b:fswitchdst='cc,c,cxx,cpp'
+else
+    au Filetype c,cpp,cs,objc,java map <buffer> <F11> :AS<CR>
+    au Filetype c,cpp,cs,objc,java map <buffer> <S-F11> :A<CR>
+endif
 
 
 "Prepend the namespace to an identifier, e.g. 'std::' before 'map' excluding
@@ -251,7 +322,6 @@ au BufRead,BufNewFile *.wxm set filetype=maxima
 "  LaTeX
 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
-
 let g:LatexBox_split_side = "rightbelow"
 "let g:LatexBox_split_resize = 1
 let g:LatexBox_ref_pattern = '\c\\\a*ref\*\?\_\s*{'
@@ -264,13 +334,13 @@ let g:LatexBox_latexmk_preview_continuously = 1
 "let g:LatexBox_show_warnings = 0
 let g:LatexBox_quickfix = 4
 
-
 if version >= 700
     au Filetype tex set spell
 endif
 
 au BufRead,BufNewFile *.cls set filetype=tex
 au Filetype tex set textwidth=80
+au Filetype tex set shiftwidth=2
 au Filetype tex set smartindent
 " Override Tagbar Toggle with LatexBox TOC
 au Filetype tex nmap <buffer> <F10> :LatexTOCToggle<CR>
@@ -312,6 +382,7 @@ au Filetype python set expandtab
 " Wrap text after a certain number of characters
 au Filetype python set textwidth=79
 
+let g:syntastic_python_checkers = ["pyflakes"]
 
 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 "  XML, Ipe
@@ -389,11 +460,20 @@ if executable('marktag')
 end
 
 
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+"  deoplete
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+if has('nvim')
+    let g:deoplete#enable_at_startup = 1
+end
+
 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 "  youcompleteme
 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
 let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'
+let g:ycm_confirm_extra_conf = 0
 
 let g:ycm_min_num_of_chars_for_completion = 4
 let g:ycm_collect_identifiers_from_tags_files = 1
@@ -412,6 +492,7 @@ let g:ycm_filetype_whitelist = { 'c' : 1, 'cpp' : 1, 'cs' : 1, 'objc' : 1, 'java
 "  syntastic
 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
+let g:syntastic_mode_map = { 'mode' : 'active', 'active_filetypes' : [], 'passive_filetypes' : ['html'] }
 let g:ycm_show_diagnostics_ui = 0
 let g:syntastic_c_checkers = ["cppcheck"]
 let g:syntastic_cpp_checkers = g:syntastic_c_checkers