404 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			404 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
" ===== hasufell's vimrc ))))
 | 
						|
 | 
						|
 | 
						|
" plugin stuff
 | 
						|
filetype plugin on
 | 
						|
filetype indent on
 | 
						|
 | 
						|
" Section pathogen
 | 
						|
" let g:pathogen_disabled = []
 | 
						|
" call add(g:pathogen_disabled, 'syntastic')
 | 
						|
" call pathogen#infect()
 | 
						|
 | 
						|
 | 
						|
" vim-plug settings (Plugin declaration)
 | 
						|
call plug#begin('~/.vim/plugged')
 | 
						|
 | 
						|
Plug 'mileszs/ack.vim'
 | 
						|
Plug 'romainl/Apprentice'
 | 
						|
Plug 'chriskempson/base16-vim'
 | 
						|
Plug 'fneu/breezy'
 | 
						|
Plug 'vim-scripts/cmdalias.vim'
 | 
						|
Plug 'Raimondi/delimitMate'
 | 
						|
Plug 'romainl/Disciple'
 | 
						|
Plug 'vim-scripts/genindent.vim'
 | 
						|
Plug 'sjl/gundo.vim'
 | 
						|
Plug 'idris-hackers/idris-vim'
 | 
						|
Plug 'wimstefan/Lightning'
 | 
						|
Plug 'vim-scripts/LustyJuggler'
 | 
						|
Plug 'yegappan/mru'
 | 
						|
Plug 'scrooloose/nerdcommenter'
 | 
						|
Plug 'scrooloose/nerdtree', { 'on':  'NERDTreeToggle' }
 | 
						|
Plug 'NLKNguyen/papercolor-theme'
 | 
						|
Plug 'powerline/powerline', {
 | 
						|
    \ 'branch': 'develop',
 | 
						|
    \ 'do': 'python setup.py install --user',
 | 
						|
    \ 'rtp': 'powerline/bindings/vim',
 | 
						|
    \ }
 | 
						|
Plug 'vim-scripts/promela.vim'
 | 
						|
Plug 'AndrewRadev/simple_bookmarks.vim'
 | 
						|
Plug 'Keithbsmiley/swift.vim'
 | 
						|
Plug 'majutsushi/tagbar'
 | 
						|
Plug 'ternjs/tern_for_vim'
 | 
						|
Plug 'flazz/vim-colorschemes'
 | 
						|
Plug 'reedes/vim-colors-pencil'
 | 
						|
Plug 'altercation/vim-colors-solarized'
 | 
						|
Plug 'xolox/vim-easytags'
 | 
						|
Plug 'tpope/vim-fugitive'
 | 
						|
Plug 'whatyouhide/vim-gotham'
 | 
						|
Plug 'noahfrederick/vim-hemisu'
 | 
						|
Plug 'nathanaelkane/vim-indent-guides'
 | 
						|
Plug 'xolox/vim-misc'
 | 
						|
Plug 'Shougo/vimproc.vim', {'do' : 'make'}
 | 
						|
Plug 'tpope/vim-rhubarb'
 | 
						|
 | 
						|
" LSP
 | 
						|
" Plug 'autozimu/LanguageClient-neovim', {
 | 
						|
    " \ 'branch': 'next',
 | 
						|
    " \ 'do': 'bash install.sh',
 | 
						|
    " \ 'for': 'haskell',
 | 
						|
    " \ }
 | 
						|
" (Optional) Multi-entry selection UI.
 | 
						|
" Plug 'junegunn/fzf', { 'for': 'haskell' }
 | 
						|
" autocomplet
 | 
						|
" Plug 'Shougo/deoplete.nvim', { 'for': 'haskell' }
 | 
						|
" Plug 'roxma/nvim-yarp', { 'for': 'haskell' }
 | 
						|
" Plug 'roxma/vim-hug-neovim-rpc', { 'for': 'haskell' }
 | 
						|
 | 
						|
" linting/compilation
 | 
						|
Plug 'w0rp/ale'
 | 
						|
 | 
						|
" completion
 | 
						|
Plug 'Valloric/YouCompleteMe', { 'do': './install.py --clang-completer --go-completer --rust-completer --system-boost --system-libclang',
 | 
						|
    \ 'for': ['haskell', 'c', 'python', 'sh', 'go', 'clojure'],
 | 
						|
    \ }
 | 
						|
 | 
						|
" haskell
 | 
						|
Plug 'eagletmt/ghcmod-vim', { 'for': 'haskell' }
 | 
						|
Plug 'eagletmt/neco-ghc', { 'for': 'haskell' }
 | 
						|
Plug 'lukerandall/haskellmode-vim', { 'for': 'haskell' }
 | 
						|
Plug 'raichoo/haskell-vim', { 'for': 'haskell' }
 | 
						|
Plug 'ucsd-progsys/liquid-types.vim', { 'for': 'haskell' }
 | 
						|
Plug 'bitc/lushtags', {
 | 
						|
    \ 'do': 'bash -c \"cabal clean && cabal sandbox delete && cabal sandbox init && cabal install && cp .cabal-sandbox/bin/lushtags ~/.cabal/bin/lushtags\"',
 | 
						|
    \ 'for': 'haskell',
 | 
						|
    \ }
 | 
						|
" Plug 'timmytofu/vim-cabal-context', { 'for': 'haskell' }
 | 
						|
Plug 'itchyny/vim-haskell-indent', { 'for': 'haskell' }
 | 
						|
Plug 'dan-t/vim-hsimport', { 'for': 'haskell' }
 | 
						|
 | 
						|
" clojure
 | 
						|
" Plug '~/.vim/unmanaged-vim-plug/paredit', { 'for': 'clojure' }
 | 
						|
" Plug '~/.vim/unmanaged-vim-plug/tslime', { 'for': 'clojure' }
 | 
						|
Plug 'tpope/vim-salve', { 'for': 'clojure' }
 | 
						|
Plug 'tpope/vim-projectionist', { 'for': 'clojure' }
 | 
						|
Plug 'tpope/vim-dispatch', { 'for': 'clojure' }
 | 
						|
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }
 | 
						|
 | 
						|
" go
 | 
						|
Plug 'garyburd/go-explorer', { 'for': 'go' }
 | 
						|
Plug 'fatih/vim-go', { 'do': ':GoInstallBinaries', 'for': 'go' }
 | 
						|
 | 
						|
" rust
 | 
						|
Plug 'rhysd/rust-doc.vim', { 'for': 'rust' }
 | 
						|
Plug 'rust-lang/rust.vim', { 'for': 'rust' }
 | 
						|
 | 
						|
" javascript
 | 
						|
Plug 'moll/vim-node', { 'for': 'javascript' }
 | 
						|
Plug 'pangloss/vim-javascript', { 'for': 'javascript' }
 | 
						|
 | 
						|
" python
 | 
						|
Plug 'icedwater/vimpython', { 'for': 'python' }
 | 
						|
 | 
						|
" scala
 | 
						|
Plug 'derekwyatt/vim-scala', { 'for': 'scala' }
 | 
						|
 | 
						|
" unmanaged
 | 
						|
Plug '~/.vim/unmanaged-vim-plug/bufonly'
 | 
						|
Plug '~/.vim/unmanaged-vim-plug/colorschemedegrade'
 | 
						|
Plug '~/.vim/unmanaged-vim-plug/fontzoom'
 | 
						|
Plug '~/.vim/unmanaged-vim-plug/fuzzyfinder'
 | 
						|
Plug '~/.vim/unmanaged-vim-plug/L9'
 | 
						|
Plug '~/.vim/unmanaged-vim-plug/log'
 | 
						|
Plug '~/.vim/unmanaged-vim-plug/ScrollColor'
 | 
						|
Plug '~/.vim/unmanaged-vim-plug/txtfmt'
 | 
						|
 | 
						|
 | 
						|
" Initialize plugin system
 | 
						|
call plug#end()
 | 
						|
 | 
						|
 | 
						|
" ===== further plugin initialization =====
 | 
						|
so ~/.vim/plugged/cmdalias.vim/plugin/cmdalias.vim
 | 
						|
 | 
						|
"powerline
 | 
						|
python from powerline.vim import setup as powerline_setup
 | 
						|
python powerline_setup()
 | 
						|
python del powerline_setup
 | 
						|
set laststatus=2
 | 
						|
 | 
						|
" lj
 | 
						|
let g:LustyJugglerSuppressRubyWarning = 1
 | 
						|
 | 
						|
 | 
						|
" global settings
 | 
						|
set foldmethod=syntax   "fold based on indent
 | 
						|
set foldnestmax=10      "deepest fold is 10 levels
 | 
						|
set nofoldenable        "dont fold by default
 | 
						|
set foldlevel=1         "this is just what i useset directory=~/.vimtmp
 | 
						|
set mouse=a
 | 
						|
set autoread
 | 
						|
set number
 | 
						|
set encoding=utf8
 | 
						|
set guifont=Monospace\ 14
 | 
						|
set clipboard=unnamedplus
 | 
						|
set textwidth=0
 | 
						|
set tabstop=4
 | 
						|
set shiftwidth=4
 | 
						|
set directory=~/.vimtmp
 | 
						|
set modeline
 | 
						|
set modelines=1
 | 
						|
 | 
						|
let g:nickID = "hasufell"
 | 
						|
 | 
						|
 | 
						|
" haskellmode, needs to load early
 | 
						|
let g:haddock_browser='/usr/bin/firefox'
 | 
						|
let g:haddock_browser_callformat='%s file://%s >/dev/null 2>&1 &'
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
" ==== conque ====
 | 
						|
" command aliases
 | 
						|
call CmdAlias('t','tabnew')
 | 
						|
" call CmdAlias('cmd','ConqueTermSplit')
 | 
						|
" call CmdAlias('bash','ConqueTermSplit bash<CR>')
 | 
						|
call CmdAlias('openall','tab sball')
 | 
						|
call CmdAlias('stripw','call StripTrailingWhitespaces()<CR>')
 | 
						|
call CmdAlias('hotkeys', 'tabnew ~/.vim/hotkeys')
 | 
						|
call CmdAlias('TC', 'call ToggleComment()<CR>')
 | 
						|
call CmdAlias('TF', 'call ToggleFoldText()<CR>')
 | 
						|
call CmdAlias('ctags', '!/usr/bin/ctags -R --langmap=c:.c.h --c++-kinds=+p --c-kinds=+p+x --fields=+i+a+S+t+l+m+n --extra=+q .<CR>')
 | 
						|
 | 
						|
 | 
						|
" cabbrev git Git
 | 
						|
 | 
						|
 | 
						|
 | 
						|
" Disable annoying auto line break
 | 
						|
fu! DisableBr()
 | 
						|
	set wrap
 | 
						|
	set linebreak
 | 
						|
	set nolist  " list disables linebreak
 | 
						|
	set textwidth=0
 | 
						|
	set wrapmargin=0
 | 
						|
	set fo-=t
 | 
						|
endfu
 | 
						|
 | 
						|
" Disable line breaks for all file types
 | 
						|
au BufNewFile,BufRead *.* call DisableBr()
 | 
						|
 | 
						|
 | 
						|
" ==========copy/paste===========
 | 
						|
function! Paste(mode)
 | 
						|
	if a:mode == "v"
 | 
						|
		normal gv
 | 
						|
		normal "_d
 | 
						|
		normal "+gP
 | 
						|
		normal l
 | 
						|
	elseif a:mode == "i"
 | 
						|
		set virtualedit=all
 | 
						|
		normal `^"+gP
 | 
						|
		let &virtualedit = ""
 | 
						|
	endif
 | 
						|
endfunction
 | 
						|
 | 
						|
 | 
						|
" ======select all=======
 | 
						|
function! Select()
 | 
						|
	set virtualedit=all
 | 
						|
	normal `^ggVG
 | 
						|
	let &virtualedit = ""
 | 
						|
endfunction
 | 
						|
" =======================
 | 
						|
 | 
						|
 | 
						|
" don't yank to buffer on deletion
 | 
						|
" vnoremap d "_d
 | 
						|
" nnoremap d "_d
 | 
						|
vnoremap x "_x
 | 
						|
nnoremap x "_x
 | 
						|
 | 
						|
" Syntax
 | 
						|
syntax enable
 | 
						|
 | 
						|
 | 
						|
" ==== delimitMate ====
 | 
						|
let g:delimitMate_matchpairs = "(:),[:],{:}"
 | 
						|
let g:delimitMate_expand_cr = 1
 | 
						|
let g:delimitMate_expand_space = 1
 | 
						|
let g:delimitMate_autoclose = 1
 | 
						|
 | 
						|
 | 
						|
" pane navigation
 | 
						|
" Use ctrl-[hjkl] to select the active split!
 | 
						|
let g:C_Ctrl_j = 'off'
 | 
						|
let g:BASH_Ctrl_j = 'off'
 | 
						|
 | 
						|
 | 
						|
" ==========colors===========
 | 
						|
"set t_Co=256
 | 
						|
"let g:solarized_termcolors=256
 | 
						|
if has('gui_running')
 | 
						|
	set background=dark
 | 
						|
	colorscheme solarized
 | 
						|
else
 | 
						|
	set background=dark
 | 
						|
	colorscheme solarized
 | 
						|
"	colorscheme dante
 | 
						|
endif
 | 
						|
" ===========================
 | 
						|
 | 
						|
" Solarized stuff
 | 
						|
" let g:solarized_termtrans=0
 | 
						|
" let g:solarized_degrade=0
 | 
						|
" let g:solarized_bold=1
 | 
						|
" let g:solarized_underline=1
 | 
						|
" let g:solarized_italic=1
 | 
						|
" let g:solarized_termcolors=16
 | 
						|
" let g:solarized_contrast="normal"
 | 
						|
let g:solarized_visibility="high"
 | 
						|
" let g:solarized_diffmode="normal"
 | 
						|
" let g:solarized_hitrail=0
 | 
						|
let g:solarized_menu=1
 | 
						|
 | 
						|
try
 | 
						|
    lang en_US
 | 
						|
catch
 | 
						|
endtry
 | 
						|
 | 
						|
 | 
						|
 | 
						|
" ====== traling whitespace =====
 | 
						|
fun! ShowTrailingWhitespace(pattern)
 | 
						|
	if &ft == 'conque_term'
 | 
						|
		call clearmatches()
 | 
						|
		return
 | 
						|
	endif
 | 
						|
	if &ft == 'diff'
 | 
						|
		call clearmatches()
 | 
						|
		return
 | 
						|
	endif
 | 
						|
	let str=a:pattern
 | 
						|
	if str == '1'
 | 
						|
		match ExtraWhitespace /\s\+$/
 | 
						|
	elseif str == '2'
 | 
						|
		call clearmatches()
 | 
						|
"		match ExtraWhitespace /\s\+\%#\@<!$/
 | 
						|
	elseif str == '3'
 | 
						|
		match ExtraWhitespace /\s\+$/
 | 
						|
	endif
 | 
						|
endfun
 | 
						|
 | 
						|
 | 
						|
highlight ExtraWhitespace ctermbg=red guibg=red
 | 
						|
match ExtraWhitespace /\s\+$/
 | 
						|
autocmd BufWinEnter * call ShowTrailingWhitespace('1')
 | 
						|
autocmd InsertEnter * call ShowTrailingWhitespace('2')
 | 
						|
autocmd InsertLeave * call ShowTrailingWhitespace('3')
 | 
						|
autocmd BufWinLeave * call clearmatches()
 | 
						|
 | 
						|
 | 
						|
fun! StripTrailingWhitespaces()
 | 
						|
    let l = line(".")
 | 
						|
    let c = col(".")
 | 
						|
    %s/\s\+$//e
 | 
						|
    call cursor(l, c)
 | 
						|
endfun
 | 
						|
 | 
						|
 | 
						|
" ===========================
 | 
						|
 | 
						|
 | 
						|
" youcompleteme
 | 
						|
let g:ycm_filetype_blacklist = {
 | 
						|
	\ 'notes' : 1,
 | 
						|
	\ 'markdown' : 1,
 | 
						|
	\ 'text' : 1,
 | 
						|
	\ 'java' : 1,
 | 
						|
	\}
 | 
						|
let g:ycm_confirm_extra_conf = 0
 | 
						|
let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'
 | 
						|
let g:ycm_collect_identifiers_from_tags_files = 1
 | 
						|
let g:ycm_seed_identifiers_with_syntax = 0
 | 
						|
" let g:ycm_always_populate_location_list = 1
 | 
						|
let g:ycm_autoclose_preview_window_after_completion = 1
 | 
						|
let g:ycm_key_invoke_completion = '<C-Space>'
 | 
						|
let g:ycm_key_list_select_completion = ['<TAB>']
 | 
						|
let g:ycm_key_list_previous_completion = ['<S-TAB>']
 | 
						|
" nnoremap <F4> :YcmCompleter GoToDefinition<CR>
 | 
						|
let g:ycm_server_log_level = 'error'
 | 
						|
let g:ycm_semantic_triggers = {'haskell' : ['. ', '$ ']}
 | 
						|
let g:ycm_goto_buffer_command = 'horizontal-split'
 | 
						|
 | 
						|
 | 
						|
" commenting
 | 
						|
let NERDSpaceDelims=1
 | 
						|
let NERDCreateDefaultMappings=0
 | 
						|
 | 
						|
 | 
						|
" comment hiding
 | 
						|
func! IsComment( lnum )
 | 
						|
	return synIDattr(synID(a:lnum, match(getline(a:lnum),'\S')+1, 1),"name") =~? 'comment'
 | 
						|
endfun
 | 
						|
 | 
						|
 | 
						|
"set fdm=expr
 | 
						|
set fde=IsComment(v:lnum)?1:IsComment(prevnonblank(v:lnum))?1:IsComment(nextnonblank\(v:lnum))?1:0
 | 
						|
 | 
						|
 | 
						|
" light #073642 dark #002b36 grey #586e75
 | 
						|
highlight Folded gui=NONE guifg=#586e75 guibg=#002b36
 | 
						|
set foldtext='\ '
 | 
						|
 | 
						|
 | 
						|
let g:folded = 0
 | 
						|
function! ToggleComment()
 | 
						|
	if (g:folded == 0)
 | 
						|
		highlight Comment guifg=#002b36
 | 
						|
		let g:folded=1
 | 
						|
	else
 | 
						|
		highlight Comment guifg=#586e75
 | 
						|
		let g:folded=0
 | 
						|
	endif
 | 
						|
endfunction
 | 
						|
 | 
						|
 | 
						|
let g:myfoldtext = 0
 | 
						|
function! ToggleFoldText()
 | 
						|
	if (g:myfoldtext == 0)
 | 
						|
		set foldtext='--'.v:folddashes.'\ '.getline(v:foldstart).'\ '
 | 
						|
		let g:myfoldtext=1
 | 
						|
	else
 | 
						|
		set foldtext='\ '
 | 
						|
		let g:myfoldtext=0
 | 
						|
	endif
 | 
						|
endfunction
 | 
						|
 | 
						|
 | 
						|
""""""""""""""""""""""""""""""
 | 
						|
" vim macro to jump to devhelp topics.
 | 
						|
""""""""""""""""""""""""""""""
 | 
						|
function! DevHelpCurrentWord()
 | 
						|
        let word = expand("<cword>")
 | 
						|
        exe "!devhelp -s " . word . " &"
 | 
						|
endfunction
 | 
						|
 | 
						|
function! ManCurrentWord()
 | 
						|
        let word = expand("<cword>")
 | 
						|
        exe "!man 3 " . word
 | 
						|
endfunction
 | 
						|
 | 
						|
" vim:foldmethod=marker:foldlevel=0
 |