1 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
   3 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
   4 set nocompatible " get out of horrible vi-compatible mode
 
   5 filetype indent plugin on | syn on
 
   6 set history=1000 " How many lines of history to remember
 
   7 set cf " enable error files and error jumping
 
   8 set ffs=unix,dos,mac " support all three, in this order
 
   9 set viminfo+=! " make sure it can save viminfo
 
  10 set isk+=_,@,- " none of these should be word dividers, so make them not be
 
  13 set completeopt=longest,menuone,preview
 
  14 inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
 
  15 inoremap <expr> <C-n> pumvisible() ? '<C-n>' :
 
  16   \ '<C-n><C-r>=pumvisible() ? "\<lt>Down>" : ""<CR>'
 
  18 inoremap <expr> <M-,> pumvisible() ? '<C-n>' :
 
  19   \ '<C-x><C-o><C-n><C-p><C-r>=pumvisible() ? "\<lt>Down>" : ""<CR>'
 
  21 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
  23 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
  24 syntax on " syntax highlighting on
 
  30 "let g:solarized_termcolors=256
 
  32 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
  34 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
  35 set wildmenu " turn on wild menu
 
  36 set ruler " Always show current positions along the bottom 
 
  37 set number " turn on line numbers
 
  38 set lz " do not redraw while running macros (much faster) (LazyRedraw)
 
  39 set hid " you can change buffer without saving
 
  40 set backspace=eol,start,indent " make backspace work normal    
 
  41 set whichwrap+=<,>,h,l  " backspace and cursor keys wrap to
 
  42 set shortmess=atI " shortens messages to avoid 'press a key' prompt 
 
  43 set report=0 " tell us when anything is changed via :...
 
  44 " make the splitters between windows be blank
 
  45 set fillchars=vert:\ ,stl:\ ,stlnc:\ 
 
  47 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
  49 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
  50 set showmatch " show matching brackets
 
  51 set mat=5 " how many tenths of a second to blink matching brackets for
 
  52 set nohlsearch " highlight searched for phrases
 
  53 set incsearch " do highlight as you type you search phrase
 
  54 set listchars=tab:\|\ ,trail:.,extends:>,precedes:<,eol:$ " what to show when I hit :set list
 
  55 set so=10 " Keep 10 lines (top/bottom) for scope
 
  56 set novisualbell " don't blink
 
  57 set noerrorbells " no noises
 
  58 set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%04l,%04v][%p%%]
 
  59 set laststatus=2 " always show the status line
 
  61 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
  62 " Text Formatting/Layout
 
  63 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
  64 set fo=tcrqn " See Help (complex)
 
  67 set tabstop=4 " tab spacing (settings below are just to unify it)
 
  68 set softtabstop=4 " unify
 
  69 set shiftwidth=4 " unify 
 
  70 set expandtab " space instead of tabs 
 
  71 set smarttab "Use the "shiftwidth" setting for inserting <TAB>s instead of the "tabstop" setting, when at the beginning of a line.
 
  72 set nowrap " do not wrap lines  
 
  74 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
  76 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
  77 set mouse=a                     " mouse support in all modes
 
  78 set mousehide                   " hide the mouse when typing text
 
  80 " ,p and shift-insert will paste the X buffer, even on the command line
 
  81 nmap <LocalLeader>p i<S-MiddleMouse><ESC>
 
  82 imap <S-Insert> <S-MiddleMouse>
 
  83 cmap <S-Insert> <S-MiddleMouse>
 
  85 " map <C-k> to clear search
 
  86 nmap <silent><C-k> :nohlsearch<CR>
 
  88 " this makes the mouse paste a block of text without formatting it 
 
  90 map <MouseMiddle> <esc>"*p
 
  92 " Convenient for non italian keyboard
 
  95 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
  97 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
  98 let b:match_ignorecase = 1
 
 100 " make tab in v mode ident code
 
 104 " make tab in normal mode ident code
 
 105 nmap <tab> I<tab><esc>
 
 106 nmap <s-tab> ^i<bs><esc>
 
 108 "Easy to access esc key
 
 112 " paste mode - this will avoid unexpected effects when you
 
 113 " cut or copy some text from one window and paste it in Vim.
 
 116 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
 118 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
 119 let perl_extended_vars=1 " highlight advanced perl vars inside strings
 
 121 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
 123 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
 124 "switch spellcheck languages
 
 125 let g:myLangList = [ "none", "it", "en_us" ]
 
 126 function! MySpellLang()
 
 127 "loop through languages
 
 128 if !exists( "b:myLang" )
 
 131 let b:myLang = b:myLang + 1
 
 132 if b:myLang >= len(g:myLangList) | let b:myLang = 0 | endif
 
 134 if b:myLang== 0 | setlocal spell nospell | endif
 
 135 if b:myLang== 1 | setlocal spell spelllang=it | endif
 
 136 if b:myLang== 2 | setlocal spell spelllang=en_us | endif
 
 138 echo "language spell:" g:myLangList[b:myLang]
 
 141 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
 143 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
 144 " alt-i (normal mode) inserts a single char, and then switches back to normal
 
 146 " set F4 to toogle number/nonumber
 
 147 map <silent><F4> :set invnumber<CR>
 
 148 " encypt the file (toggle)
 
 150 map <F8> :call MySpellLang()<CR>
 
 151 " Map NERDTree show and hide
 
 152 map <F2> :NERDTreeToggle<CR>
 
 153 imap <F2> <Esc>:NERDTreeToggle<CR>
 
 155 map <F3> :TagbarToggle<CR>
 
 156 imap <F3> <Esc>:TagbarToggle<CR>
 
 158 " Alt-right/left to navigate forward/backward in the tags stack
 
 162 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
 164 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
 166     " Enable file type detection ('filetype on').
 
 167     " Syntax of these languages is fussy over tabs Vs spaces
 
 168     autocmd FileType make setlocal ts=8 sts=8 sw=8 noexpandtab
 
 169     autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab
 
 170     " Customisations based on house-style (arbitrary)
 
 171     autocmd FileType html setlocal ts=2 sts=2 sw=2 expandtab
 
 172     autocmd FileType css setlocal ts=2 sts=2 sw=2 expandtab
 
 174     autocmd FileType sh setlocal ts=4 sts=4 sw=4 expandtab
 
 175     " Treat .rss files as XML
 
 176     autocmd BufNewFile,BufRead *.rss,*.atom setfiletype xml
 
 178     autocmd FileType c,cpp,slang set cindent
 
 179     autocmd FileType c,cpp,slang set textwidth=79
 
 180     autocmd FileType c,cpp,slang set tags=./tags,/usr/src/linux/tags,~/.vim/tags/usr/include/tags 
 
 182     autocmd BufEnter * :syntax sync fromstart " ensure every file does syntax highlighting (full)
 
 183     autocmd BufNewFile *.sh call append(0, "#!/bin/bash")
 
 184     autocmd BufNewFile *.pl call append(0, "#!/usr/bin/perl")
 
 185     autocmd BufNewFile *.py call append(0, "#!/bin/python")
 
 188     " PHP documenter script bound to Control-P
 
 189     autocmd FileType php inoremap <C-p> <ESC>:call PhpDocSingle()<CR>i
 
 190     autocmd FileType php nnoremap <C-p> :call PhpDocSingle()<CR>
 
 191     autocmd FileType php vnoremap <C-p> :call PhpDocRange()<CR> 
 
 193     " When editing a file, always jump to the last known cursor position.
 
 194     " Don't do it when the position is invalid or when inside an event handler
 
 195     " (happens when dropping a file on gvim).
 
 196     autocmd BufReadPost *
 
 197         \ if line("'\"") > 0 && line("'\"") <= line("$") |
 
 198         \ exe "normal g`\"" |
 
 203 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
 205 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
 206 set titlestring=%t%(\ %M%)%(\ (%{expand(\"%:~:h\")})%)%(\ %a%)\ -\ %{v:servername}
 
 211 if &term == "screen" || &term == "xterm"
 
 217 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
 219 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
 222 let vam_install_path = expand('$HOME') . '/.vim/addons'
 
 223 exec 'set runtimepath+='.vam_install_path.'/vim-addon-manager'
 
 224 " Enable addons with vim-addon-manager using file type recognition
 
 226     \ 'always': ['desert', 'gnupg', 'surround', 'checksyntax', 'quickfixsigns', 'LargeFile', 'snipmate', 'snipmate-snippets', 'The_NERD_tree', 'SuperTab%1643', 'fugitive'],
 
 227     \ 'r': [ 'Screen_vim__gnu_screentmux', 'Vim-R-plugin' ],
 
 228     \ '^\%(c\|cpp\|cuda\|javascript\|python\|php\|html\|xml\|r\|sh\|css\|java\|make\|xslt\|vim\)$': [ 'Tagbar', 'checksyntax', 'TagHighlight', 'sleuth'],
 
 229     \ '^\%(c\|cpp\|h\|cuda\)$': [ 'clang_complete' ],
 
 230     \ 'python': [ 'python_pydoc'],
 
 231     \ 'php': ['phpcomplete', 'PDV_-_phpDocumentor_for_Vim'],
 
 234 call vam#ActivateAddons(ft_addons['always'], {'auto_install': 1})
 
 235 au FileType * for l in values(filter(copy(ft_addons), string(expand('<amatch>')).' =~ v:key')) | call vam#ActivateAddons(l, {'force_loading_plugins_now':1}) | endfor
 
 237 " SuperTab option for context aware completion
 
 238 let g:SuperTabDefaultCompletionType = "context"
 
 239 " If you prefer the Omni-Completion tip window to close when a selection is
 
 240 " " made, these lines close it on movement in insert mode or when leaving
 
 243     autocmd CursorMovedI * if pumvisible() == 0|pclose|endif
 
 244     autocmd InsertLeave * if pumvisible() == 0|pclose|endif
 
 247 let g:clang_complete_copen = 1
 
 248 let g:clang_complete_auto = 1
 
 249 let g:clang_user_options='|| exit 0'
 
 255     " add any database in current directory
 
 256     if filereadable("cscope.out")
 
 258     " else add database pointed to by environment
 
 259     elseif $CSCOPE_DB != ""
 
 262     if filereadable("/usr/linux/cscope.out")
 
 263         cs add /usr/linux/cscope.out