Compare commits

...

81 Commits

Author SHA1 Message Date
Julian Ospald cc39580382
Fast fold 2020-02-02 00:04:00 +01:00
Julian Ospald 523dd1ad3a
Use single quotes 2020-01-30 01:07:59 +01:00
Julian Ospald 08d59860f5
Enable vint for vim 2020-01-30 01:02:30 +01:00
Julian Ospald 0eea46beae
Fix map 2020-01-28 02:10:39 +01:00
Julian Ospald bf7c114395
Add rusty-tags support 2020-01-25 19:22:37 +01:00
Julian Ospald 34abb66cc9
Trash coc.nvim 2020-01-25 19:22:22 +01:00
Julian Ospald f99343ca6e
Update 2020-01-16 01:48:59 +01:00
Julian Ospald d30df125c5
Disable neosnippet 2020-01-14 13:05:47 +01:00
Julian Ospald 1c2e0fccc3
Tweak diagnostics in coc.nvim 2020-01-14 13:05:33 +01:00
Julian Ospald 6e62775c1d
Add dhall 2020-01-14 13:05:17 +01:00
Julian Ospald c403eb2e73
Clean up plugins 2020-01-11 16:08:12 +01:00
Julian Ospald e99f6129db
Fix python LSP 2020-01-11 04:18:43 +01:00
Julian Ospald e2505ecfc8
Enable shellcheck for sh 2020-01-11 04:18:30 +01:00
Julian Ospald 3dac35b6cf
Update 2020-01-11 03:51:56 +01:00
Julian Ospald 5d64f2d58a
Updates for haskell and rust 2020-01-09 00:37:57 +01:00
Julian Ospald e94bbdb593
Update coc-settings.json 2020-01-09 00:37:34 +01:00
Julian Ospald 31ad2f7f7a
Update LSP for haskell 2020-01-08 20:03:38 +01:00
Julian Ospald 3ff7565a49
Update Plug 2019-05-28 17:07:39 +08:00
Julian Ospald 4b5bc96115
Add typescript support 2019-05-28 17:07:12 +08:00
Julian Ospald 1ce2e893f4
Add vimwiki plugin 2019-02-25 12:28:40 +08:00
Julian Ospald ab04e82f56
Add bufferize plugin 2019-02-25 12:28:26 +08:00
Julian Ospald 0432585de0
Add some scm plugins 2019-02-20 18:53:32 +08:00
Julian Ospald 98657d610b
Add gruvbox colorscheme 2019-02-11 11:24:10 +08:00
Julian Ospald 0361e83857
Add some useful python plugins 2019-02-11 11:23:58 +08:00
Julian Ospald e463bb7846
Enable rainbow for python 2019-02-11 11:23:11 +08:00
Julian Ospald 4bc374c640
Disable ycm completely 2018-10-11 14:54:55 +08:00
Julian Ospald d5490493af
More python stuff 2018-10-11 14:54:47 +08:00
Julian Ospald 2fa24865db
Make rainbow config global 2018-10-11 14:54:16 +08:00
Julian Ospald 2ac0658755
Add gitgutter plugin 2018-10-11 14:53:50 +08:00
Julian Ospald d32bc4751b
Rm unnecessary syntax/filetype thing
I think this also fixed a bug with vim-airline being broken on
initial startup and with rainbow.
2018-10-11 14:52:59 +08:00
Julian Ospald 7efad8aba1
Try to fix clojurescript plugins 2018-09-17 15:44:46 +08:00
Julian Ospald 353281ff32
Enable vim-rainbow for haskell as well 2018-09-17 15:44:18 +08:00
Julian Ospald 649f4db641
Add neoformat 2018-09-17 15:42:18 +08:00
Julian Ospald 275a07bf4e
Fix Rag and add <leader>ag shortcut 2018-08-19 14:15:09 +08:00
Julian Ospald 3adeb5e04e
Utilize fzf tag jump too
* ctg -> create tags
* gd -> classic ctags jump
* tg -> fzf tags jump with list
2018-08-19 14:14:22 +08:00
Julian Ospald 77a5eb5742
Restructure colorschemes to bottom 2018-08-16 01:09:29 +08:00
Julian Ospald e7c9a509c6
Add vim-code-dark VSCode like colorscheme 2018-08-16 01:09:19 +08:00
Julian Ospald fcf39e4352
Use correct repo for cpsm 2018-08-16 01:08:36 +08:00
Julian Ospald 4eca702e94
Add Rag command for fzf 2018-08-16 00:19:38 +08:00
Julian Ospald 8ca26b851d
Update vim-plug 2018-08-15 00:57:55 +08:00
Julian Ospald 841afeb278
Fix fzf 2018-08-15 00:57:32 +08:00
Julian Ospald 056d16651d
Silence ATTENTION messages when swap file already exists 2018-08-14 23:55:58 +08:00
Julian Ospald 0b2a3aa3fc
Use ctrlP caching 2018-08-13 20:36:02 +08:00
Julian Ospald 60ea3da091
Add fzf 2018-08-13 20:35:35 +08:00
Julian Ospald 5f149871f7
Add ctrlp 2018-08-12 17:41:31 +08:00
Julian Ospald 7a8a1f425f
Unfuck haskell config for large projects 2018-08-04 19:42:36 +08:00
Julian Ospald ea4275de9c
Use stack for lushtags 2018-08-04 19:42:09 +08:00
Julian Ospald 728fc1cc94
Add custom snippets 2018-08-04 19:41:56 +08:00
Julian Ospald cb32e85d5c
Enable deoplete at startup 2018-08-04 19:41:47 +08:00
Julian Ospald fd0ec0ec30
Disable sume clojure stuff 2018-08-04 19:41:12 +08:00
Julian Ospald 2f8ea2f5bc
Disable liquidtypes 2018-07-08 16:56:34 +08:00
Julian Ospald aa30843b94
Add hoogle support 2018-07-08 16:54:57 +08:00
Julian Ospald 9347f35352
Fix hasktags and hscope 2018-07-08 16:54:08 +08:00
Julian Ospald 6fb310f1f4
Use hie-wrapper 2018-07-03 18:27:21 +08:00
Julian Ospald 37f6c79332
Remove remnants of powerline 2018-06-27 12:04:03 +02:00
Julian Ospald 7e7201f6d7
Deoplete logging 2018-06-20 15:50:00 +02:00
Julian Ospald 2f0190fad6
Update argon 2018-06-20 15:49:50 +02:00
Julian Ospald c58eab1c0e
Brittany 2018-06-20 15:49:42 +02:00
Julian Ospald c5c5364205
Style fix 2018-06-18 12:03:43 +02:00
Julian Ospald 23e2f09a8b
Configure argon 2018-06-18 12:03:43 +02:00
Julian Ospald 901d336d82
Add argon ale linter and allow local linters 2018-06-18 12:03:43 +02:00
Julian Ospald 6b6c3628bb
Fix cabal indenting 2018-06-18 12:03:43 +02:00
Julian Ospald 635cc5748c
Allow textDocument_hover() in visual mode for LSP haskell 2018-06-16 15:54:56 +02:00
Julian Ospald cf05781c02
Set <C-p> mapping for closing preview window 2018-06-16 15:54:34 +02:00
Julian Ospald 23abdd12ac
Use vim-airline instead of powerline 2018-06-16 11:27:10 +02:00
Julian Ospald b1e614cddc
Add patch to fuzzyfinder 2018-06-16 11:26:55 +02:00
Julian Ospald 47a0889a7d
Don't disable runtime snippets 2018-06-16 01:43:16 +02:00
Julian Ospald a356fa835c
Add snippets support 2018-06-16 00:47:36 +02:00
Julian Ospald 282cea9bab
Rust completion with deoplete 2018-06-15 22:05:00 +02:00
Julian Ospald 9ebf392548
Allow tab for selection completion in deoplete 2018-06-15 20:11:41 +02:00
Julian Ospald a63673b783
Re-enable haskell doc 2018-06-15 19:40:09 +02:00
Julian Ospald 2ed664cb27
Remap LSP bindings 2018-06-15 19:39:59 +02:00
Julian Ospald 1e62563e18
Use ALE for diagnostics 2018-06-15 19:39:52 +02:00
Julian Ospald 548e45da01
Use proper lusty 2018-06-15 19:39:17 +02:00
Julian Ospald 239646b2ae
Use deoplete and LSP for haskell 2018-06-15 19:02:14 +02:00
Julian Ospald 184072280d
Fix remote repo for haskell-vim 2018-06-15 17:11:20 +02:00
Julian Ospald 42670e50af
Use python3 for powerline 2018-06-15 17:11:02 +02:00
Julian Ospald 4457d21b1f
Use stack for intero-neovim 2018-06-14 21:09:03 +02:00
Julian Ospald 3a053ca5c7
Try to use intero-neovim 2018-06-14 02:28:01 +02:00
Julian Ospald 5960256ae0
Fix colorschemes 2018-06-14 02:27:09 +02:00
Julian Ospald 75731d35c2
Make config compatible with neovim 2018-06-14 01:54:38 +02:00
17 changed files with 940 additions and 349 deletions

1
after/ftplugin/cabal.vim Normal file
View File

@ -0,0 +1 @@
setlocal expandtab

View File

@ -5,3 +5,6 @@ let g:rainbow_active = 1
let g:ScreenImpl = 'Tmux'
let g:sexp_enable_insert_mode_mappings = 0
" cljfmt
let g:clj_fmt_autosave = 0

View File

@ -1,63 +1,60 @@
setlocal ts=2 sw=2 expandtab omnifunc=necoghc#omnifunc
setlocal ts=2 sw=2 expandtab
"set background=light
"set guifont=Neep\ Medium\ Semi-Condensed\ 18
let g:haskell_classic_highlighting = 1
" tags
call CmdAlias('hasktags', '!hasktags -c .<CR>')
let g:ghcmod_hlint_options = ['--ignore=Eta reduce $']
syntax on
filetype plugin indent on
" from
" https://raw.githubusercontent.com/begriffs/haskell-vim-now/master/git-hscope
call CmdAlias('codex', 'call system("haskell-ctags")<CR><CR>call LoadHscope()<CR>')
call CmdAlias('hasktags', '!/home/jule/.cabal/bin/hasktags -c .<CR>')
map <leader>ctg :codex<CR>
set tags=tags;/,codex.tags;/
" classic ctags jump
" nnoremap <leader>gd <C-]>
let g:necoghc_enable_detailed_browse = 1
" nnoremap <silent> <leader>cgd :cs find g <C-R>=expand("<cword>")<CR><CR>
nnoremap <silent> <leader>cgd :Tags <C-R>=expand("<cword>")<CR><CR>
nnoremap <silent> <C-\> :cs find c <C-R>=expand("<cword>")<CR><CR>
" ALE
let g:ale_linters = {'haskell':['ghc-mod', 'hdevtools'], 'c':['clang']}
" let g:ale_fixers = {
" \ 'go': ['gofmt', 'goimports'],
" \}
let g:ale_haskell_hdevtools_options = "-g '-Wall' -g '-Wno-orphans'"
set cscopeprg=do_at_stack_root\ hscope
set csre
set csto=1 " search codex tags first
set nocst
" set cscopequickfix=s-,c-,d-,i-,t-,e-,a-
" neco-ghc
let g:haskellmode_completion_ghc = 0
let g:necoghc_enable_detailed_browse = 1
autocmd FileType haskell setlocal omnifunc=necoghc#omnifunc
let g:ycm_semantic_triggers = {'haskell' : ['.']}
function! HaskellDocCurrentWord()
let word = expand("<cword>")
exe "IDoc " . word
function! LoadHscope()
set nocscopeverbose " suppress 'duplicate connection' error
let hsf = findfile("hscope.out", ".;")
if filereadable(hsf)
exe "cs add " . hsf
elseif $HSCOPE_DB != ""
cs add $HSCOPE_DB
endif
set cscopeverbose
endfunction
au BufEnter /*.hs call LoadHscope()
" clear search
nmap <F2> :noh<CR>:GhcModTypeClear<CR>
imap <F2> <C-O>:noh<CR>:GhcModTypeClear<CR>
" unmap <F3>
" unmap <F4>
nmap <F6> :GhcModType<CR>
nmap <F8> :call HaskellDocCurrentWord()<CR><CR>
nmap <silent> <F3> :silent update <bar> HsimportModule<CR>
nmap <silent> <F4> :silent update <bar> HsimportSymbol<CR>
"hoogle
nnoremap <leader>ho :Hoogle<CR>
nnoremap <leader>hc :HoogleClose<CR>
" haskell-vim
let g:haskell_classic_highlighting = 1
let g:haskell_indent_disable = 1
" let g:haskell_enable_quantification = 1
" let g:haskell_enable_recursivedo = 1
" let g:haskell_enable_arrowsyntax = 1
" let g:haskell_enable_pattern_synonyms = 1
" let g:haskell_enable_typeroles = 1
" let g:haskell_indent_if = 3
" let g:haskell_indent_case = 5
" let g:haskell_indent_let = 4
@ -66,6 +63,19 @@ nmap <silent> <F4> :silent update <bar> HsimportSymbol<CR>
" let g:haskell_indent_in = 1
" haskellmode-vim
function! HaskellDocCurrentWord()
let word = expand("<cword>")
exe "IDoc " . word
endfunction
" done by LSP now
nmap <F7> :call HaskellDocCurrentWord()<CR><CR>
nmap <silent> <F3> :silent update <bar> HsimportModule<CR>
nmap <silent> <F4> :silent update <bar> HsimportSymbol<CR>
" liquid-types
let g:vim_annotations_offset = '/.liquid/'
@ -83,16 +93,119 @@ let g:vim_annotations_offset = '/.liquid/'
" endfunction
" let g:deoplete#enable_at_startup = 1
" set hidden
" nnoremap <leader>ld :call LanguageClient#textDocument_definition()<CR>
" nnoremap <leader>lr :call LanguageClient#textDocument_rename()<CR>
" nnoremap <leader>lf :call LanguageClient#textDocument_formatting()<CR>
" nnoremap <leader>lt :call LanguageClient#textDocument_typeDefinition()<CR>
" nnoremap <leader>lx :call LanguageClient#textDocument_references()<CR>
" nnoremap <leader>la :call LanguageClient_workspace_applyEdit()<CR>
" nnoremap <leader>lc :call LanguageClient#textDocument_completion()<CR>
" nnoremap <leader>lh :call LanguageClient#textDocument_hover()<CR>
" nnoremap <leader>ls :call LanguageClient_textDocument_documentSymbol()<CR>
" nnoremap <leader>lm :call LanguageClient_contextMenu()<CR>
" nnoremap <F6> :call LanguageClient#textDocument_hover()<CR>
" let g:LanguageClient_serverCommands = {
" \ 'haskell': ['hie', '--lsp', '-d', '-l', '/home/hasufell/lang-server.log'],
" \ }
" nnoremap <silent> K :call LanguageClient#textDocument_hover()<CR>
" nnoremap <silent> gd :call LanguageClient#textDocument_definition()<CR>
" nnoremap <silent> <F2> :call LanguageClient#textDocument_rename()<CR>
" deoplete
"call deoplete#custom#option('sources',{
" \ '_': ['buffer'],
" \ 'haskell': ['neosnippet', 'buffer', 'file', 'neco-ghc']
" \ })
" " \ 'haskell': ['neosnippet', 'buffer', 'file', 'neco-ghc']
"call deoplete#enable()
"call deoplete#enable_logging('DEBUG', $HOME . '/deoplete.log')
"" inoremap <expr><tab> pumvisible() ? "\<c-n>" : "\<tab>"
" autocmd VimEnter * LanguageClientStart
let g:ghcmod_hlint_options = ['--ignore=Eta reduce $']
" ALE
let g:ale_enabled = 0
let g:ale_linters = {'haskell':[], 'c':['clang']}
" let g:ale_linters = {'haskell':['ghc-mod', 'hdevtools', 'argon'], 'c':['clang']}
" let g:ale_fixers = {
" \ 'haskell': ['brittany'],
" \}
let g:ale_haskell_hdevtools_options = "-g '-Wall' -g '-Wno-orphans'"
let g:ale_haskell_argon_error_level = 14
let g:ale_haskell_argon_warn_level = 10
let g:ale_haskell_argon_info_level = 6
" completion
"
" neco-ghc
" let g:necoghc_enable_detailed_browse = 1
" let g:haskellmode_completion_ghc = 0
" autocmd FileType haskell setlocal omnifunc=necoghc#omnifunc
" let g:ycm_semantic_triggers = {'haskell' : ['.']}
" let g:ycm_language_server = [ { 'name': 'haskell', 'filetypes': [ 'haskell', 'hs', 'lhs' ], 'cmdline': [ 'hie-wrapper' ], 'project_root_files': [ '.stack.yaml', 'cabal.config', 'package.yaml', 'cabal.project' ] } ]
" clear search
" nmap <F2> :noh<CR>:GhcModTypeClear<CR>
" imap <F2> <C-O>:noh<CR>:GhcModTypeClear<CR>
" unmap <F3>
" unmap <F4>
" nmap <F6> :GhcModType<CR>
" for intero
" if has("nvim")
" let g:ale_enabled = 0
" " let g:intero_backend = {
" " \ 'command': 'cabal new-repl',
" " \ 'options': '',
" " \ 'cwd': expand('%:p:h'),
" " \}
" " Intero starts automatically. Set this if you'd like to prevent that.
" let g:intero_start_immediately = 1
" " Enable type information on hover (when holding cursor at point for ~1 second).
" let g:intero_type_on_hover = 1
" " Change the intero window size; default is 10.
" let g:intero_window_size = 15
" " Sets the intero window to split vertically; default is horizontal
" " let g:intero_vertical_split = 1
" " let g:intero_ghci_options = '-dynamic'
" " OPTIONAL: Make the update time shorter, so the type info will trigger faster.
" set updatetime=1000
let g:neoformat_enabled_haskell = ['brittany']
" map <silent> <leader>t <Plug>InteroGenericType
" nnoremap <silent> <leader>jd :InteroGoToDef<CR>
" map <silent> <leader>T <Plug>InteroType
" nnoremap <silent> <leader>it :InteroTypeInsert<CR>
" nnoremap <leader>ist :InteroSetTargets<SPACE>
" endif
" LSP
let g:LanguageClient_rootMarkers = ['cabal.project', '*.cabal', 'stack.yaml']
" \ 'haskell': ['ghcide', "--lsp"],
let g:LanguageClient_serverCommands = {
\ 'haskell': ['hie-wrapper', '--lsp'],
\ }
let g:echodoc#enable_at_startup = 1
call deoplete#enable()
call deoplete#custom#source('LanguageClient',
\ 'min_pattern_length',
\ 2)
inoremap <expr><tab> pumvisible() ? "\<c-n>" : "\<tab>"

16
after/ftplugin/python.vim Normal file
View File

@ -0,0 +1,16 @@
" let g:ale_linters = {'python':['mypy']}
" let g:ale_python_mypy_options = '--no-warn-incomplete-stub --ignore-missing-imports'
" let g:ale_python_pycodestyle_options = '--ignore=W391'
let g:neoformat_enabled_python = ['autopep8']
augroup fmt
autocmd!
autocmd BufWritePre * undojoin | Neoformat
augroup END
let g:jedi#completions_enabled = 0

View File

@ -1,7 +1,3 @@
let g:rustfmt_autosave = 0
let g:tagbar_ctags_bin = '/usr/bin/universal-ctags'
let g:rust_doc#define_map_K = 0
let g:rust_doc#downloaded_rust_doc_dir = '~/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu'
@ -15,21 +11,43 @@ function! s:search_under_cursor(query) range
endfunction
" keys
nnoremap <buffer><silent><F6> :<C-u>call <SID>search_under_cursor(expand('<cword>'))<CR>
vnoremap <buffer><silent><F6> "gy:call <SID>search_under_cursor(getreg('g'))<CR>
nnoremap <buffer><silent><F7> :<C-u>call <SID>search_under_cursor(expand('<cword>'))<CR>
vnoremap <buffer><silent><F7> "gy:call <SID>search_under_cursor(getreg('g'))<CR>
nnoremap <F3> :call LanguageClient_contextMenu()<CR>
nnoremap <silent> <F4> :call LanguageClient#textDocument_definition()<CR>
nnoremap <silent> <F7> :call LanguageClient#textDocument_hover()<CR>
nnoremap <silent> <F6> :call LanguageClient#textDocument_rename()<CR>
" rusty-tags
autocmd BufRead *.rs :setlocal tags=./rusty-tags.vi;/
autocmd BufWritePost *.rs :silent! exec "!rusty-tags vi --quiet --start-dir=" . expand('%:p:h') . "&" | redraw!
let g:tagbar_ctags_bin = '/usr/bin/exuberant-ctags'
let g:LanguageClient_autoStart = 1
" nnoremap <F3> :call LanguageClient_contextMenu()<CR>
" nnoremap <silent> <F4> :call LanguageClient#textDocument_definition()<CR>
" nnoremap <silent> <F6> :call LanguageClient#textDocument_hover()<CR>
" nnoremap <silent> <F8> :call LanguageClient#textDocument_rename()<CR>
" let g:LanguageClient_autoStart = 1
" let g:LanguageClient_serverCommands = {
" \ 'rust': ['rustup', 'run', 'nightly', 'rls'] }
" let g:LanguageClient_diagnosticsEnable = 0
" let g:ale_linters = {'rust': ['rls']}
" let g:ale_fixers = { 'rust': ['rustfmt'] }
" let g:ale_fix_on_save = 0
" let g:autofmt_autosave = 0
" deoplete
call deoplete#custom#option('sources',{
\ '_': ['buffer'],
\ 'rust': ['ultisnips', 'buffer', 'file', 'LanguageClient']
\ })
inoremap <expr><tab> pumvisible() ? "\<c-n>" : "\<tab>"
call deoplete#enable()
let g:LanguageClient_serverCommands = {
\ 'rust': ['rustup', 'run', 'nightly', 'rls'] }
let g:ale_linters = {'rust': ['rls']}
let g:ale_fixers = { 'rust': ['rustfmt'] }
let g:autofmt_autosave = 0
\ 'rust': ['~/.cargo/bin/ra_lsp_server'],
\ }

8
after/ftplugin/sh.vim Normal file
View File

@ -0,0 +1,8 @@
if (expand("%:e") == "exheres-0")
finish
endif
if (expand("%:e") == "exlib")
finish
endif

View File

@ -0,0 +1,18 @@
nnoremap <leader>gd <C-]>
let g:tsuquyomi_disable_quickfix = 1
let g:ale_linters = {
\ 'typescript': ['tsserver'],
\}
call deoplete#custom#option('sources', {
\ 'typescript': ['ale', 'buffer', 'file', 'around'],
\})
call deoplete#custom#source('ale', 'rank', 999)
call deoplete#custom#source('ale', 'input_pattern', '[^. *\t]\.\w*')
autocmd FileType typescript setlocal balloonexpr=tsuquyomi#balloonexpr()

2
after/ftplugin/vim.vim Normal file
View File

@ -0,0 +1,2 @@
let g:ale_linters = {'vim':['vint']}

View File

@ -0,0 +1,200 @@
" echodoc
set cmdheight=2
let g:echodoc#enable_at_startup = 1
let g:echodoc#type = 'signature'
"LanguageClient-neovim
" Required for operations modifying multiple buffers like rename.
set hidden
nnoremap <silent> lc :call LanguageClient_contextMenu()<CR>
" Or map each action separately
nnoremap <silent> K :call LanguageClient#textDocument_hover()<CR>
nnoremap <silent> gd :call LanguageClient#textDocument_definition()<CR>
nnoremap <silent> <F2> :call LanguageClient#textDocument_rename()<CR>
let g:LanguageClient_autoStart = 0
let g:LanguageClient_diagnosticsEnable = 1
let g:LanguageClient_diagnosticsDisplay = {
\ 1: {
\ "name": "Error",
\ "texthl": "ALEError",
\ "signText": "✖",
\ "signTexthl": "ALEErrorSign",
\ "virtualTexthl": "Error",
\ },
\ 2: {
\ "name": "Warning",
\ "texthl": "ALEWarning",
\ "signText": "⚠",
\ "signTexthl": "ALEWarningSign",
\ "virtualTexthl": "Virtual",
\ },
\ 3: {
\ "name": "Information",
\ "texthl": "ALEInfo",
\ "signText": "",
\ "signTexthl": "ALEInfoSign",
\ "virtualTexthl": "Virtual",
\ },
\ 4: {
\ "name": "Hint",
\ "texthl": "ALEInfo",
\ "signText": "➤",
\ "signTexthl": "ALEInfoSign",
\ "virtualTexthl": "Virtual",
\ },
\ }
" hi link ALEError Error
hi ALEError term=underline cterm=underline ctermfg=Red gui=undercurl guisp=Red
hi link ALEWarning Warning
hi Virtual cterm=italic ctermfg=10 gui=italic guifg=#4b5558
hi link ALEInfo SpellCap
let $LANGUAGECLIENT_DEBUG=1
let g:LanguageClient_loggingLevel='DEBUG'
let g:LanguageClient_virtualTextPrefix = ''
let g:LanguageClient_loggingFile = expand('~/LanguageClient.log')
let g:LanguageClient_serverStderr = expand('~/LanguageServer.log')
if !has("nvim")
" lj
let g:LustyJugglerSuppressRubyWarning = 1
endif
" neosnippet
" Plugin key-mappings.
" Note: It must be "imap" and "smap". It uses <Plug> mappings.
" imap <C-k> <Plug>(neosnippet_expand_or_jump)
" smap <C-k> <Plug>(neosnippet_expand_or_jump)
" xmap <C-k> <Plug>(neosnippet_expand_target)
" SuperTab like snippets behavior.
" Note: It must be "imap" and "smap". It uses <Plug> mappings.
" imap <expr><tab> neosnippet#expandable_or_jumpable() ? "\<Plug>(neosnippet_expand_or_jump)" : pumvisible() ? "\<c-n>" : "\<tab>"
" smap <expr><tab> neosnippet#expandable_or_jumpable() ? "\<Plug>(neosnippet_expand_or_jump)" : "\<tab>"
" For conceal markers.
" if has('conceal')
" set conceallevel=2 concealcursor=niv
" endif
" Enable snipMate compatibility feature.
" let g:neosnippet#enable_snipmate_compatibility = 1
" let g:neosnippet#snippets_directory='~/.vim/custom-snippets'
" rainbow
let g:rainbow_conf = {
\ 'guifgs': ['#DC322F', 'royalblue3', 'darkorange3', 'seagreen3'],
\ 'ctermfgs': ['lightred', 'lightblue', 'lightyellow', 'lightcyan', 'lightmagenta'],
\}
let g:rainbow_active = 1
" vim airline
" let g:airline#extensions#tabline#enabled = 1
" deoplete
let g:deoplete#enable_at_startup = 0
" ==== delimitMate ====
let g:delimitMate_matchpairs = "(:),[:],{:}"
let g:delimitMate_expand_cr = 1
let g:delimitMate_expand_space = 1
let g:delimitMate_autoclose = 1
" 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
" 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
" haskellmode, needs to load early
let g:haddock_browser='/usr/bin/firefox'
let g:haddock_browser_callformat='%s file://%s >/dev/null 2>&1 &'
" ctrlp
let g:ctrlp_user_command = 'fd --type f --color=never "" %s'
let g:ctrlp_use_caching = 1
let g:ctrlp_match_func = { 'match': 'cpsm#CtrlPMatch' }
" fzf
" --column: Show column number
" --line-number: Show line number
" --no-heading: Do not show file headings in results
" --fixed-strings: Search term as a literal string
" --ignore-case: Case insensitive search
" --no-ignore: Do not respect .gitignore, etc...
" --hidden: Search hidden files and folders
" --follow: Follow symlinks
" --glob: Additional conditions for search (in this case ignore everything in the .git/ folder)
" --color: Search color options
command! -bang -nargs=* Find call fzf#vim#grep('rg --column --line-number --no-heading --fixed-strings --ignore-case --no-ignore --hidden --follow --glob "!.git/*" --color "always" '.shellescape(<q-args>), 1, <bang>0)
function! WithGitRoot()
let groot = systemlist('git -C ' . expand('%:p:h') . ' rev-parse --show-toplevel')[0]
return v:shell_error ? {} : {'dir': groot}
endfunction
command! -nargs=* Rag
\ call fzf#vim#ag(<q-args>, WithGitRoot())
" fastfold
nmap zuz <Plug>(FastFoldUpdate)
let g:fastfold_savehook = 1
let g:fastfold_fold_command_suffixes = ['x','X','a','A','o','O','c','C']
let g:fastfold_fold_movement_commands = [']z', '[z', 'zj', 'zk']
let g:markdown_folding = 1
let g:tex_fold_enabled = 1
let g:vimsyn_folding = 'af'
let g:xml_syntax_folding = 1
let g:html_syntax_folding = 1
let g:javaScript_fold = 1
let g:sh_fold_enabled= 7
let g:ruby_fold = 1
let g:perl_fold = 1
let g:perl_fold_blocks = 1
let g:r_syntax_folding = 1
let g:rust_fold = 1
let g:haskell_fold = 1

View File

@ -0,0 +1,69 @@
" Author: Julian Ospald <hasufell@hasufell.de>
" Description: argon for Haskell files
call ale#Set('haskell_argon_executable', 'argon')
call ale#Set('haskell_argon_options', '')
call ale#Set('haskell_argon_error_level', 12)
call ale#Set('haskell_argon_warn_level', 8)
call ale#Set('haskell_argon_info_level', 4)
function! ale_linters#haskell#argon#GetExecutable(buffer) abort
return ale#Var(a:buffer, 'haskell_argon_executable')
endfunction
function! ale_linters#haskell#argon#GetCommand(buffer) abort
return ale#Escape(ale_linters#haskell#argon#GetExecutable(a:buffer))
\ . ' '
\ . ale#Var(a:buffer, 'haskell_argon_options')
\ . ' -m ' . ale#Var(a:buffer, 'haskell_argon_info_level')
\ . ' -j'
\ . ' %t'
endfunction
function! ale_linters#haskell#argon#Handle(buffer, lines) abort
let l:output = []
for l:error in ale#util#FuzzyJSONDecode(a:lines, [])
if !has_key(l:error, 'blocks')
" this cannot be formatted properly into an ALE error
execute 'echom ''[argon] '' l:error.message'
return l:output
endif
for l:block in l:error.blocks
let l:complexity = l:block.complexity
if l:complexity >= ale#Var(a:buffer, 'haskell_argon_error_level')
let l:type = 'E'
let l:max_c = ale#Var(a:buffer, 'haskell_argon_error_level')
elseif l:complexity >= ale#Var(a:buffer, 'haskell_argon_warn_level')
let l:type = 'W'
let l:max_c = ale#Var(a:buffer, 'haskell_argon_warn_level')
else
let l:type = 'I'
let l:max_c = ale#Var(a:buffer, 'haskell_argon_info_level')
endif
call add(l:output, {
\ 'filename': l:error.path,
\ 'lnum': l:block.lineno,
\ 'col': l:block.col,
\ 'text': l:block.name . ': cyclomatic complexity of ' . l:complexity,
\ 'type': l:type,
\})
endfor
endfor
return l:output
endfunction
call ale#linter#Define('haskell', {
\ 'name': 'argon',
\ 'executable_callback': 'ale_linters#haskell#argon#GetExecutable',
\ 'command_callback': 'ale_linters#haskell#argon#GetCommand',
\ 'callback': 'ale_linters#haskell#argon#Handle',
\})

View File

@ -96,10 +96,16 @@ let s:plug_src = 'https://github.com/junegunn/vim-plug.git'
let s:plug_tab = get(s:, 'plug_tab', -1)
let s:plug_buf = get(s:, 'plug_buf', -1)
let s:mac_gui = has('gui_macvim') && has('gui_running')
let s:is_win = has('win32') || has('win64')
let s:is_win = has('win32')
let s:nvim = has('nvim-0.2') || (has('nvim') && exists('*jobwait') && !s:is_win)
let s:vim8 = has('patch-8.0.0039') && exists('*job_start')
let s:me = resolve(expand('<sfile>:p'))
if s:is_win && &shellslash
set noshellslash
let s:me = resolve(expand('<sfile>:p'))
set shellslash
else
let s:me = resolve(expand('<sfile>:p'))
endif
let s:base_spec = { 'branch': 'master', 'frozen': 0 }
let s:TYPE = {
\ 'string': type(''),
@ -110,10 +116,42 @@ let s:TYPE = {
let s:loaded = get(s:, 'loaded', {})
let s:triggers = get(s:, 'triggers', {})
if s:is_win
function! s:plug_call(fn, ...)
let shellslash = &shellslash
try
set noshellslash
return call(a:fn, a:000)
finally
let &shellslash = shellslash
endtry
endfunction
else
function! s:plug_call(fn, ...)
return call(a:fn, a:000)
endfunction
endif
function! s:plug_getcwd()
return s:plug_call('getcwd')
endfunction
function! s:plug_fnamemodify(fname, mods)
return s:plug_call('fnamemodify', a:fname, a:mods)
endfunction
function! s:plug_expand(fmt)
return s:plug_call('expand', a:fmt, 1)
endfunction
function! s:plug_tempname()
return s:plug_call('tempname')
endfunction
function! plug#begin(...)
if a:0 > 0
let s:plug_home_org = a:1
let home = s:path(fnamemodify(expand(a:1), ':p'))
let home = s:path(s:plug_fnamemodify(s:plug_expand(a:1), ':p'))
elseif exists('g:plug_home')
let home = s:path(g:plug_home)
elseif !empty(&rtp)
@ -121,7 +159,7 @@ function! plug#begin(...)
else
return s:err('Unable to determine plug home. Try calling plug#begin() with a path argument.')
endif
if fnamemodify(home, ':t') ==# 'plugin' && fnamemodify(home, ':h') ==# s:first_rtp
if s:plug_fnamemodify(home, ':t') ==# 'plugin' && s:plug_fnamemodify(home, ':h') ==# s:first_rtp
return s:err('Invalid plug home. '.home.' is a standard Vim runtime path and is not allowed.')
endif
@ -139,6 +177,16 @@ function! s:define_commands()
if !executable('git')
return s:err('`git` executable not found. Most commands will not be available. To suppress this message, prepend `silent!` to `call plug#begin(...)`.')
endif
if has('win32')
\ && &shellslash
\ && (&shell =~# 'cmd\.exe' || &shell =~# 'powershell\.exe')
return s:err('vim-plug does not support shell, ' . &shell . ', when shellslash is set.')
endif
if !has('nvim')
\ && (has('win32') || has('win32unix'))
\ && !has('multi_byte')
return s:err('Vim needs +multi_byte feature on Windows to run shell commands. Enable +iconv for best results.')
endif
command! -nargs=* -bar -bang -complete=customlist,s:names PlugInstall call s:install(<bang>0, [<f-args>])
command! -nargs=* -bar -bang -complete=customlist,s:names PlugUpdate call s:update(<bang>0, [<f-args>])
command! -nargs=0 -bar -bang PlugClean call s:clean(<bang>0)
@ -193,6 +241,14 @@ function! s:ask_no_interrupt(...)
endtry
endfunction
function! s:lazy(plug, opt)
return has_key(a:plug, a:opt) &&
\ (empty(s:to_a(a:plug[a:opt])) ||
\ !isdirectory(a:plug.dir) ||
\ len(s:glob(s:rtp(a:plug), 'plugin')) ||
\ len(s:glob(s:rtp(a:plug), 'after/plugin')))
endfunction
function! plug#end()
if !exists('g:plugs')
return s:err('Call plug#begin() first')
@ -214,7 +270,7 @@ function! plug#end()
continue
endif
let plug = g:plugs[name]
if get(s:loaded, name, 0) || !has_key(plug, 'on') && !has_key(plug, 'for')
if get(s:loaded, name, 0) || !s:lazy(plug, 'on') && !s:lazy(plug, 'for')
let s:loaded[name] = 1
continue
endif
@ -326,11 +382,11 @@ function! s:progress_opt(base)
\ s:git_version_requirement(1, 7, 1) ? '--progress' : ''
endfunction
if s:is_win
function! s:rtp(spec)
return s:path(a:spec.dir . get(a:spec, 'rtp', ''))
endfunction
function! s:rtp(spec)
return s:path(a:spec.dir . get(a:spec, 'rtp', ''))
endfunction
if s:is_win
function! s:path(path)
return s:trim(substitute(a:path, '/', '\', 'g'))
endfunction
@ -342,11 +398,33 @@ if s:is_win
function! s:is_local_plug(repo)
return a:repo =~? '^[a-z]:\|^[%~]'
endfunction
else
function! s:rtp(spec)
return s:dirpath(a:spec.dir . get(a:spec, 'rtp', ''))
" Copied from fzf
function! s:wrap_cmds(cmds)
let cmds = [
\ '@echo off',
\ 'setlocal enabledelayedexpansion']
\ + (type(a:cmds) == type([]) ? a:cmds : [a:cmds])
\ + ['endlocal']
if has('iconv')
if !exists('s:codepage')
let s:codepage = libcallnr('kernel32.dll', 'GetACP', 0)
endif
return map(cmds, printf('iconv(v:val."\r", "%s", "cp%d")', &encoding, s:codepage))
endif
return map(cmds, 'v:val."\r"')
endfunction
function! s:batchfile(cmd)
let batchfile = s:plug_tempname().'.bat'
call writefile(s:wrap_cmds(a:cmd), batchfile)
let cmd = plug#shellescape(batchfile, {'shell': &shell, 'script': 0})
if &shell =~# 'powershell\.exe'
let cmd = '& ' . cmd
endif
return [batchfile, cmd]
endfunction
else
function! s:path(path)
return s:trim(a:path)
endfunction
@ -426,8 +504,8 @@ endfunction
function! s:dobufread(names)
for name in a:names
let path = s:rtp(g:plugs[name]).'/**'
for dir in ['ftdetect', 'ftplugin']
let path = s:rtp(g:plugs[name])
for dir in ['ftdetect', 'ftplugin', 'after/ftdetect', 'after/ftplugin']
if len(finddir(dir, path))
if exists('#BufRead')
doautocmd BufRead
@ -546,7 +624,7 @@ function! plug#(repo, ...)
try
let repo = s:trim(a:repo)
let opts = a:0 == 1 ? s:parse_options(a:1) : s:base_spec
let name = get(opts, 'as', fnamemodify(repo, ':t:s?\.git$??'))
let name = get(opts, 'as', s:plug_fnamemodify(repo, ':t:s?\.git$??'))
let spec = extend(s:infer_properties(name, repo), opts)
if !has_key(g:plugs, name)
call add(g:plugs_order, name)
@ -566,7 +644,7 @@ function! s:parse_options(arg)
elseif type == s:TYPE.dict
call extend(opts, a:arg)
if has_key(opts, 'dir')
let opts.dir = s:dirpath(expand(opts.dir))
let opts.dir = s:dirpath(s:plug_expand(opts.dir))
endif
else
throw 'Invalid argument type (expected: string or dictionary)'
@ -577,7 +655,7 @@ endfunction
function! s:infer_properties(name, repo)
let repo = a:repo
if s:is_local_plug(repo)
return { 'dir': s:dirpath(expand(repo)) }
return { 'dir': s:dirpath(s:plug_expand(repo)) }
else
if repo =~ ':'
let uri = repo
@ -730,7 +808,7 @@ function! s:finish_bindings()
endfunction
function! s:prepare(...)
if empty(getcwd())
if empty(s:plug_getcwd())
throw 'Invalid current working directory. Cannot proceed.'
endif
@ -763,6 +841,9 @@ function! s:prepare(...)
execute 'silent! unmap <buffer>' k
endfor
setlocal buftype=nofile bufhidden=wipe nobuflisted nolist noswapfile nowrap cursorline modifiable nospell
if exists('+colorcolumn')
setlocal colorcolumn=
endif
setf vim-plug
if exists('g:syntax_on')
call s:syntax()
@ -783,31 +864,28 @@ endfunction
function! s:chsh(swap)
let prev = [&shell, &shellcmdflag, &shellredir]
if s:is_win
set shell=cmd.exe shellcmdflag=/c shellredir=>%s\ 2>&1
elseif a:swap
if !s:is_win && a:swap
set shell=sh shellredir=>%s\ 2>&1
endif
return prev
endfunction
function! s:bang(cmd, ...)
let batchfile = ''
try
let [sh, shellcmdflag, shrd] = s:chsh(a:0)
" FIXME: Escaping is incomplete. We could use shellescape with eval,
" but it won't work on Windows.
let cmd = a:0 ? s:with_cd(a:cmd, a:1) : a:cmd
if s:is_win
let batchfile = tempname().'.bat'
call writefile(["@echo off\r", cmd . "\r"], batchfile)
let cmd = batchfile
let [batchfile, cmd] = s:batchfile(cmd)
endif
let g:_plug_bang = (s:is_win && has('gui_running') ? 'silent ' : '').'!'.escape(cmd, '#!%')
execute "normal! :execute g:_plug_bang\<cr>\<cr>"
finally
unlet g:_plug_bang
let [&shell, &shellcmdflag, &shellredir] = [sh, shellcmdflag, shrd]
if s:is_win
if s:is_win && filereadable(batchfile)
call delete(batchfile)
endif
endtry
@ -886,7 +964,7 @@ function! s:checkout(spec)
let output = s:system('git rev-parse HEAD', a:spec.dir)
if !v:shell_error && !s:hash_match(sha, s:lines(output)[0])
let output = s:system(
\ 'git fetch --depth 999999 && git checkout '.s:esc(sha).' --', a:spec.dir)
\ 'git fetch --depth 999999 && git checkout '.plug#shellescape(sha).' --', a:spec.dir)
endif
return output
endfunction
@ -1004,10 +1082,12 @@ function! s:update_impl(pull, force, args) abort
let s:clone_opt = get(g:, 'plug_shallow', 1) ?
\ '--depth 1' . (s:git_version_requirement(1, 7, 10) ? ' --no-single-branch' : '') : ''
if has('win32unix')
if has('win32unix') || has('wsl')
let s:clone_opt .= ' -c core.eol=lf -c core.autocrlf=input'
endif
let s:submodule_opt = s:git_version_requirement(2, 8) ? ' --jobs='.threads : ''
" Python version requirement (>= 2.7)
if python && !has('python3') && !ruby && !use_job && s:update.threads > 1
redir => pyv
@ -1081,7 +1161,7 @@ function! s:update_finish()
elseif has_key(spec, 'tag')
let tag = spec.tag
if tag =~ '\*'
let tags = s:lines(s:system('git tag --list '.s:shellesc(tag).' --sort -version:refname 2>&1', spec.dir))
let tags = s:lines(s:system('git tag --list '.plug#shellescape(tag).' --sort -version:refname 2>&1', spec.dir))
if !v:shell_error && !empty(tags)
let tag = tags[0]
call s:log4(name, printf('Latest tag for %s -> %s', spec.tag, tag))
@ -1089,17 +1169,17 @@ function! s:update_finish()
endif
endif
call s:log4(name, 'Checking out '.tag)
let out = s:system('git checkout -q '.s:esc(tag).' -- 2>&1', spec.dir)
let out = s:system('git checkout -q '.plug#shellescape(tag).' -- 2>&1', spec.dir)
else
let branch = s:esc(get(spec, 'branch', 'master'))
call s:log4(name, 'Merging origin/'.branch)
let out = s:system('git checkout -q '.branch.' -- 2>&1'
\. (has_key(s:update.new, name) ? '' : ('&& git merge --ff-only origin/'.branch.' 2>&1')), spec.dir)
let branch = get(spec, 'branch', 'master')
call s:log4(name, 'Merging origin/'.s:esc(branch))
let out = s:system('git checkout -q '.plug#shellescape(branch).' -- 2>&1'
\. (has_key(s:update.new, name) ? '' : ('&& git merge --ff-only '.plug#shellescape('origin/'.branch).' 2>&1')), spec.dir)
endif
if !v:shell_error && filereadable(spec.dir.'/.gitmodules') &&
\ (s:update.force || has_key(s:update.new, name) || s:is_updated(spec.dir))
call s:log4(name, 'Updating submodules. This may take a while.')
let out .= s:bang('git submodule update --init --recursive 2>&1', spec.dir)
let out .= s:bang('git submodule update --init --recursive'.s:submodule_opt.' 2>&1', spec.dir)
endif
let msg = s:format_message(v:shell_error ? 'x': '-', name, out)
if v:shell_error
@ -1138,7 +1218,7 @@ function! s:job_abort()
silent! call job_stop(j.jobid)
endif
if j.new
call s:system('rm -rf ' . s:shellesc(g:plugs[name].dir))
call s:rm_rf(g:plugs[name].dir)
endif
endfor
let s:jobs = {}
@ -1191,22 +1271,17 @@ endfunction
function! s:spawn(name, cmd, opts)
let job = { 'name': a:name, 'running': 1, 'error': 0, 'lines': [''],
\ 'batchfile': (s:is_win && (s:nvim || s:vim8)) ? tempname().'.bat' : '',
\ 'new': get(a:opts, 'new', 0) }
let s:jobs[a:name] = job
let cmd = has_key(a:opts, 'dir') ? s:with_cd(a:cmd, a:opts.dir) : a:cmd
if !empty(job.batchfile)
call writefile(["@echo off\r", cmd . "\r"], job.batchfile)
let cmd = job.batchfile
endif
let argv = add(s:is_win ? ['cmd', '/c'] : ['sh', '-c'], cmd)
let cmd = has_key(a:opts, 'dir') ? s:with_cd(a:cmd, a:opts.dir, 0) : a:cmd
let argv = s:is_win ? ['cmd', '/s', '/c', '"'.cmd.'"'] : ['sh', '-c', cmd]
if s:nvim
call extend(job, {
\ 'on_stdout': function('s:nvim_cb'),
\ 'on_exit': function('s:nvim_cb'),
\ })
let jid = jobstart(argv, job)
let jid = s:plug_call('jobstart', argv, job)
if jid > 0
let job.jobid = jid
else
@ -1249,9 +1324,6 @@ function! s:reap(name)
call s:log(bullet, a:name, empty(result) ? 'OK' : result)
call s:bar()
if has_key(job, 'batchfile') && !empty(job.batchfile)
call delete(job.batchfile)
endif
call remove(s:jobs, a:name)
endfunction
@ -1266,9 +1338,10 @@ function! s:bar()
endfunction
function! s:logpos(name)
for i in range(4, line('$'))
let max = line('$')
for i in range(4, max > 4 ? max : 4)
if getline(i) =~# '^[-+x*] '.a:name.':'
for j in range(i + 1, line('$'))
for j in range(i + 1, max > 5 ? max : 5)
if getline(j) !~ '^ '
return [i, j - 1]
endif
@ -1318,7 +1391,7 @@ while 1 " Without TCO, Vim stack is bound to explode
let name = keys(s:update.todo)[0]
let spec = remove(s:update.todo, name)
let new = !isdirectory(spec.dir)
let new = empty(globpath(spec.dir, '.git', 1))
call s:log(new ? '+' : '*', name, pull ? 'Updating ...' : 'Installing ...')
redraw
@ -1341,8 +1414,8 @@ while 1 " Without TCO, Vim stack is bound to explode
\ printf('git clone %s %s %s %s 2>&1',
\ has_tag ? '' : s:clone_opt,
\ prog,
\ s:shellesc(spec.uri),
\ s:shellesc(s:trim(spec.dir))), { 'new': 1 })
\ plug#shellescape(spec.uri, {'script': 0}),
\ plug#shellescape(s:trim(spec.dir), {'script': 0})), { 'new': 1 })
endif
if !s:jobs[name].running
@ -1969,19 +2042,29 @@ function! s:update_ruby()
EOF
endfunction
function! s:shellesc_cmd(arg)
let escaped = substitute(a:arg, '[&|<>()@^]', '^&', 'g')
let escaped = substitute(escaped, '%', '%%', 'g')
let escaped = substitute(escaped, '"', '\\^&', 'g')
let escaped = substitute(escaped, '\(\\\+\)\(\\^\)', '\1\1\2', 'g')
return '^"'.substitute(escaped, '\(\\\+\)$', '\1\1', '').'^"'
function! s:shellesc_cmd(arg, script)
let escaped = substitute('"'.a:arg.'"', '[&|<>()@^!"]', '^&', 'g')
return substitute(escaped, '%', (a:script ? '%' : '^') . '&', 'g')
endfunction
function! s:shellesc(arg)
if &shell =~# 'cmd.exe$'
return s:shellesc_cmd(a:arg)
function! s:shellesc_ps1(arg)
return "'".substitute(escape(a:arg, '\"'), "'", "''", 'g')."'"
endfunction
function! s:shellesc_sh(arg)
return "'".substitute(a:arg, "'", "'\\\\''", 'g')."'"
endfunction
function! plug#shellescape(arg, ...)
let opts = a:0 > 0 && type(a:1) == s:TYPE.dict ? a:1 : {}
let shell = get(opts, 'shell', s:is_win ? 'cmd.exe' : 'sh')
let script = get(opts, 'script', 1)
if shell =~# 'cmd\.exe'
return s:shellesc_cmd(a:arg, script)
elseif shell =~# 'powershell\.exe' || shell =~# 'pwsh$'
return s:shellesc_ps1(a:arg)
endif
return shellescape(a:arg)
return s:shellesc_sh(a:arg)
endfunction
function! s:glob_dir(path)
@ -2013,23 +2096,23 @@ function! s:format_message(bullet, name, message)
endif
endfunction
function! s:with_cd(cmd, dir)
return printf('cd%s %s && %s', s:is_win ? ' /d' : '', s:shellesc(a:dir), a:cmd)
function! s:with_cd(cmd, dir, ...)
let script = a:0 > 0 ? a:1 : 1
return printf('cd%s %s && %s', s:is_win ? ' /d' : '', plug#shellescape(a:dir, {'script': script}), a:cmd)
endfunction
function! s:system(cmd, ...)
let batchfile = ''
try
let [sh, shellcmdflag, shrd] = s:chsh(1)
let cmd = a:0 > 0 ? s:with_cd(a:cmd, a:1) : a:cmd
if s:is_win
let batchfile = tempname().'.bat'
call writefile(["@echo off\r", cmd . "\r"], batchfile)
let cmd = batchfile
let [batchfile, cmd] = s:batchfile(cmd)
endif
return system(s:is_win ? '('.cmd.')' : cmd)
return system(cmd)
finally
let [&shell, &shellcmdflag, &shellredir] = [sh, shellcmdflag, shrd]
if s:is_win
if s:is_win && filereadable(batchfile)
call delete(batchfile)
endif
endtry
@ -2102,7 +2185,7 @@ endfunction
function! s:rm_rf(dir)
if isdirectory(a:dir)
call s:system((s:is_win ? 'rmdir /S /Q ' : 'rm -rf ') . s:shellesc(a:dir))
call s:system((s:is_win ? 'rmdir /S /Q ' : 'rm -rf ') . plug#shellescape(a:dir))
endif
endfunction
@ -2134,7 +2217,7 @@ function! s:clean(force)
let allowed = {}
for dir in dirs
let allowed[s:dirpath(fnamemodify(dir, ':h:h'))] = 1
let allowed[s:dirpath(s:plug_fnamemodify(dir, ':h:h'))] = 1
let allowed[dir] = 1
for child in s:glob_dir(dir)
let allowed[child] = 1
@ -2207,11 +2290,11 @@ endfunction
function! s:upgrade()
echo 'Downloading the latest version of vim-plug'
redraw
let tmp = tempname()
let tmp = s:plug_tempname()
let new = tmp . '/plug.vim'
try
let out = s:system(printf('git clone --depth 1 %s %s', s:plug_src, tmp))
let out = s:system(printf('git clone --depth 1 %s %s', plug#shellescape(s:plug_src), plug#shellescape(tmp)))
if v:shell_error
return s:err('Error upgrading vim-plug: '. out)
endif
@ -2352,18 +2435,17 @@ function! s:preview_commit()
wincmd P
endif
setlocal previewwindow filetype=git buftype=nofile nobuflisted modifiable
let batchfile = ''
try
let [sh, shellcmdflag, shrd] = s:chsh(1)
let cmd = 'cd '.s:shellesc(g:plugs[name].dir).' && git show --no-color --pretty=medium '.sha
let cmd = 'cd '.plug#shellescape(g:plugs[name].dir).' && git show --no-color --pretty=medium '.sha
if s:is_win
let batchfile = tempname().'.bat'
call writefile(["@echo off\r", cmd . "\r"], batchfile)
let cmd = batchfile
let [batchfile, cmd] = s:batchfile(cmd)
endif
execute 'silent %!' cmd
finally
let [&shell, &shellcmdflag, &shellredir] = [sh, shellcmdflag, shrd]
if s:is_win
if s:is_win && filereadable(batchfile)
call delete(batchfile)
endif
endtry
@ -2407,7 +2489,13 @@ function! s:diff()
call s:append_ul(2, origin ? 'Pending updates:' : 'Last update:')
for [k, v] in plugs
let range = origin ? '..origin/'.v.branch : 'HEAD@{1}..'
let diff = s:system_chomp('git log --graph --color=never '.join(map(['--pretty=format:%x01%h%x01%d%x01%s%x01%cr', range], 's:shellesc(v:val)')), v.dir)
let cmd = 'git log --graph --color=never '
\ . (s:git_version_requirement(2, 10, 0) ? '--no-show-signature ' : '')
\ . join(map(['--pretty=format:%x01%h%x01%d%x01%s%x01%cr', range], 'plug#shellescape(v:val)'))
if has_key(v, 'rtp')
let cmd .= ' -- '.plug#shellescape(v.rtp)
endif
let diff = s:system_chomp(cmd, v.dir)
if !empty(diff)
let ref = has_key(v, 'tag') ? (' (tag: '.v.tag.')') : has_key(v, 'commit') ? (' '.v.commit) : ''
call append(5, extend(['', '- '.k.':'.ref], map(s:lines(diff), 's:format_git_log(v:val)')))
@ -2426,8 +2514,13 @@ function! s:diff()
\ . (cnts[1] ? printf(' %d plugin(s) have pending updates.', cnts[1]) : ''))
if cnts[0] || cnts[1]
nnoremap <silent> <buffer> <cr> :silent! call <SID>preview_commit()<cr>
nnoremap <silent> <buffer> o :silent! call <SID>preview_commit()<cr>
nnoremap <silent> <buffer> <plug>(plug-preview) :silent! call <SID>preview_commit()<cr>
if empty(maparg("\<cr>", 'n'))
nmap <buffer> <cr> <plug>(plug-preview)
endif
if empty(maparg('o', 'n'))
nmap <buffer> o <plug>(plug-preview)
endif
endif
if cnts[0]
nnoremap <silent> <buffer> X :call <SID>revert()<cr>
@ -2448,7 +2541,7 @@ function! s:revert()
return
endif
call s:system('git reset --hard HEAD@{1} && git checkout '.s:esc(g:plugs[name].branch).' --', g:plugs[name].dir)
call s:system('git reset --hard HEAD@{1} && git checkout '.plug#shellescape(g:plugs[name].branch).' --', g:plugs[name].dir)
setlocal modifiable
normal! "_dap
setlocal nomodifiable
@ -2476,7 +2569,7 @@ function! s:snapshot(force, ...) abort
endfor
if a:0 > 0
let fn = expand(a:1)
let fn = s:plug_expand(a:1)
if filereadable(fn) && !(a:force || s:ask(a:1.' already exists. Overwrite?'))
return
endif

View File

@ -0,0 +1,4 @@
snippet docsec
------------------------
--[ ${0:DOCUMENT SECTION} ]--
------------------------

View File

@ -0,0 +1,2 @@
snippet tc
\textcolor{${1:red}}{${0}}

View File

@ -37,6 +37,9 @@ noremap <leader>bd <Esc>:bd<CR>
noremap <leader>wc <Esc>:bd<CR>
noremap <leader>bo <Esc>:Bufonly<CR>
" close preview
nmap <C-p> :pc<CR>
" Remap window commands
" map <leader>ws <Esc>:wincmd s<CR>
" map <leader>wv <Esc>:wincmd v<CR>
@ -150,3 +153,13 @@ inoremap <C-V> <C-O>:call Paste("i")<CR>
" select all
nnoremap <C-A> ggVG<CR>
inoremap <C-A> <C-O>:call Select()<CR>
" fzf
nnoremap <leader>ag :call fzf#vim#ag(expand('<cword>'), WithGitRoot())<CR>
nnoremap <leader>tg :call fzf#vim#tags(expand('<cword>'), {'options': '--exact --select-1 --exit-0'})<CR>
" gitgutter
nmap <leader>ggt <Esc>:GitGutterToggle<CR>
nmap <leader>nh <Plug>GitGutterNextHunk
nmap <leader>bh <Plug>GitGutterPrevHunk

View File

@ -706,6 +706,11 @@ let s:FUF_BUF_NAME = '[fuf]'
"
function s:activateFufBuffer()
" Save the last window number so we can switch back to it later (otherwise,
" at least with more recent versions of Vim, we end up with the top left
" window focused)
let s:fuf_buffer_last_winnr = winnr()
" lcd . : To avoid the strange behavior that unnamed buffer changes its cwd
" if 'autochdir' was set on.
lcd .
@ -733,6 +738,7 @@ function s:deactivateFufBuffer()
AutoComplPopUnlock
endif
call l9#tempbuffer#close(s:FUF_BUF_NAME)
exec s:fuf_buffer_last_winnr . "wincmd w"
endfunction
" }}}1

View File

@ -0,0 +1,36 @@
From fd41e8d68b6774324b58c02692b896a6a36a0397 Mon Sep 17 00:00:00 2001
From: David Wolever <david@wolever.net>
Date: Thu, 1 Jun 2017 10:11:43 -0400
Subject: [PATCH] Fix focus top left window bug
With newer versions of Vim, the top left window will be focused after
opening the fuf menu. This patch restores the window focus after the
menu is closed.
---
autoload/fuf.vim | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/autoload/fuf.vim b/autoload/fuf.vim
index fe9e6eb..78be490 100644
--- a/autoload/fuf.vim
+++ b/autoload/fuf.vim
@@ -706,6 +706,11 @@ let s:FUF_BUF_NAME = '[fuf]'
"
function s:activateFufBuffer()
+ " Save the last window number so we can switch back to it later (otherwise,
+ " at least with more recent versions of Vim, we end up with the top left
+ " window focused)
+ let s:fuf_buffer_last_winnr = winnr()
+
" lcd . : To avoid the strange behavior that unnamed buffer changes its cwd
" if 'autochdir' was set on.
lcd .
@@ -733,6 +738,7 @@ function s:deactivateFufBuffer()
AutoComplPopUnlock
endif
call l9#tempbuffer#close(s:FUF_BUF_NAME)
+ exec s:fuf_buffer_last_winnr . "wincmd w"
endfunction
" }}}1

397
vimrc
View File

@ -1,155 +1,199 @@
" ===== hasufell's vimrc ))))
" no ATTENTION messages when swap file is already found
set shortmess+=A
" 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 'sjl/gundo.vim'
" Plug 'idris-hackers/idris-vim'
"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 '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 'ternjs/tern_for_vim'
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 'nathanaelkane/vim-indent-guides'
Plug 'Shougo/vimproc.vim', {'do' : 'make'}
Plug 'sjbach/lusty'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'kien/ctrlp.vim'
Plug 'nixprime/cpsm', { 'do': 'PY3=ON ./install.sh' }
Plug 'junegunn/fzf', { 'do': './install --bin' }
Plug 'junegunn/fzf.vim'
Plug 'sbdchd/neoformat'
Plug 'AndrewRadev/bufferize.vim'
Plug 'vimwiki/vimwiki'
Plug 'vmchale/dhall-vim'
Plug 'Shougo/echodoc.vim'
Plug 'tpope/vim-scriptease'
Plug 'Konfekt/FastFold'
" scm
Plug 'tpope/vim-fugitive'
Plug 'tpope/vim-rhubarb'
Plug 'tommcdo/vim-fubitive'
Plug 'airblade/vim-gitgutter'
" local_vimrc
Plug 'LucHermitte/lh-vim-lib'
Plug 'LucHermitte/local_vimrc'
" LSP
" setting this per-language breaks "let g:LanguageClient_autoStart = 1",
Plug 'autozimu/LanguageClient-neovim', {
\ 'branch': 'next',
\ 'do': 'bash install.sh',
\ }
" (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', 'rust'],
\ 'for': ['c', 'go', 'clojure'],
\ }
" deoplete for haskell
if has('nvim')
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins',
\ }
else
Plug 'Shougo/deoplete.nvim'
Plug 'roxma/nvim-yarp'
Plug 'roxma/vim-hug-neovim-rpc'
endif
" snippets
"Plug 'Shougo/neosnippet.vim'
"Plug 'honza/vim-snippets'
" LSP
" setting this per-language breaks "let g:LanguageClient_autoStart = 1",
" Use release branch (Recommend)
Plug 'autozimu/LanguageClient-neovim', {
\ 'branch': 'next',
\ 'do': 'bash ./install.sh'
\ }
" linting/compilation
Plug 'w0rp/ale', {
\ 'do': 'bash -c \"cp -R ~/.vim/ale_linters .\"',
\ 'for': ['sh', 'vim'],
\ }
" haskell
Plug 'eagletmt/ghcmod-vim', { 'for': 'haskell' }
Plug 'eagletmt/neco-ghc', { 'for': 'haskell' }
" if has("nvim")
" Plug 'parsonsmatt/intero-neovim'
" endif
" Plug 'eagletmt/ghcmod-vim', { 'for': 'haskell' }
" completion based on ghc-mod, not LSP
" 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 'neovimhaskell/haskell-vim', { 'for': ['haskell', 'cabal'] }
" 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\"',
\ 'do': 'bash -c \"stack install\"',
\ 'for': 'haskell',
\ }
" Plug 'timmytofu/vim-cabal-context', { 'for': 'haskell' }
Plug 'itchyny/vim-haskell-indent', { 'for': 'haskell' }
Plug 'dan-t/vim-hsimport', { 'for': 'haskell' }
Plug 'Twinside/vim-hoogle', { 'for': 'haskell' }
" clojure
" Plug '~/.vim/unmanaged-vim-plug/paredit', { 'for': 'clojure' }
" Plug '~/.vim/unmanaged-vim-plug/tslime', { 'for': 'clojure' }
Plug 'guns/vim-slamhound', {'for': 'clojure'}
Plug 'guns/vim-sexp', {'for': 'clojure'}
Plug 'tpope/vim-sexp-mappings-for-regular-people', {'for': 'clojure'}
Plug 'kovisoft/paredit', {'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' }
Plug 'luochen1990/rainbow', { 'for': 'clojure' }
Plug 'typedclojure/vim-typedclojure', {'for': 'clojure'}
Plug 'luochen1990/rainbow', { 'for': ['clojure', 'haskell', 'python'] }
" go
Plug 'garyburd/go-explorer', { 'for': 'go' }
" Plug 'garyburd/go-explorer', { 'for': 'go' }
Plug 'fatih/vim-go', { 'do': ':GoInstallBinaries', 'for': 'go' }
" rust
Plug 'rhysd/rust-doc.vim', { 'for': 'rust' }
" Plug 'rhysd/rust-doc.vim', { 'for': 'rust' }
Plug 'rust-lang/rust.vim', { 'for': 'rust' }
" javascript
Plug 'moll/vim-node', { 'for': 'javascript' }
" Plug 'moll/vim-node', { 'for': 'javascript' }
Plug 'pangloss/vim-javascript', { 'for': 'javascript' }
" python
Plug 'icedwater/vimpython', { 'for': 'python' }
" Plug 'zchee/deoplete-jedi', { 'for': 'python' }
" Plug 'davidhalter/jedi-vim', { 'for': 'python' }
Plug 'manicmaniac/coconut.vim'
Plug 'alfredodeza/pytest.vim'
Plug 'idanarye/vim-vebugger', { 'for': 'python' }
" scala
Plug 'derekwyatt/vim-scala', { 'for': 'scala' }
" typescript
Plug 'leafgarland/typescript-vim', { 'for': 'typescript' }
Plug 'Quramy/tsuquyomi', { 'for': 'typescript' }
" color and beauty
" Plug 'tomasiser/vim-code-dark'
" Plug 'romainl/Apprentice'
" Plug 'chriskempson/base16-vim'
" Plug 'fneu/breezy'
" Plug 'romainl/Disciple'
" Plug 'wimstefan/Lightning'
" Plug 'NLKNguyen/papercolor-theme'
" Plug 'flazz/vim-colorschemes'
Plug 'altercation/vim-colors-solarized'
" Plug 'reedes/vim-colors-pencil'
" Plug 'whatyouhide/vim-gotham'
if has('nvim')
Plug 'iCyMind/NeoSolarized'
endif
" Plug 'noahfrederick/vim-hemisu'
" Plug 'morhetz/gruvbox'
" 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'
if !has('nvim')
Plug '~/.vim/unmanaged-vim-plug/fontzoom'
endif
" Initialize plugin system
call plug#end()
" ===== further plugin initialization =====
" ===== further plugin initialization and default config =====
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
" lustyexplorer
set hidden
" ==== 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>')
call CmdAlias('Nf', 'Neoformat')
call CmdAlias('NF', 'Neoformat')
call CmdAlias('nf', 'Neoformat')
call CmdAlias('LS', 'LanguageClientStart')
" lj
let g:LustyJugglerSuppressRubyWarning = 1
" global settings
@ -170,70 +214,7 @@ 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
" =======================
let g:nickID = 'hasufell'
" don't yank to buffer on deletion
" vnoremap d "_d
@ -242,21 +223,18 @@ 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
syntax on
" pane navigation
" Use ctrl-[hjkl] to select the active split!
let g:C_Ctrl_j = 'off'
let g:BASH_Ctrl_j = 'off'
try
lang en_US
catch
endtry
" ==========colors===========
"set t_Co=256
@ -267,27 +245,69 @@ if has('gui_running')
else
set background=dark
colorscheme solarized
" colorscheme dante
endif
if has('nvim')
if exists('g:GtkGuiLoaded')
let g:neosolarized_contrast = 'normal'
let g:neosolarized_visibility = 'normal'
let g:neosolarized_vertSplitBgTrans = 0
let g:neosolarized_bold = 1
let g:neosolarized_underline = 1
let g:neosolarized_italic = 1
set background=dark
colorscheme NeoSolarized
else
let g:neosolarized_contrast = 'normal'
let g:neosolarized_visibility = 'normal'
let g:neosolarized_vertSplitBgTrans = 0
let g:neosolarized_bold = 1
let g:neosolarized_underline = 1
let g:neosolarized_italic = 1
set background=dark
colorscheme NeoSolarized
endif
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
" Disable annoying auto line break
fu! DisableBr()
set wrap
set linebreak
set nolist " list disables linebreak
set textwidth=0
set wrapmargin=0
set formatoptions-=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
" =======================
@ -332,40 +352,9 @@ endfun
" ===========================
" LSP
let g:LanguageClient_autoStart = 0
" 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'
return synIDattr(synID(a:lnum, match(getline(a:lnum),'\S')+1, 1),'name') =~? 'comment'
endfun
@ -406,13 +395,13 @@ endfunction
" vim macro to jump to devhelp topics.
""""""""""""""""""""""""""""""
function! DevHelpCurrentWord()
let word = expand("<cword>")
exe "!devhelp -s " . word . " &"
let word = expand('<cword>')
exe '!devhelp -s ' . word . ' &'
endfunction
function! ManCurrentWord()
let word = expand("<cword>")
exe "!man 3 " . word
let word = expand('<cword>')
exe '!man 3 ' . word
endfunction
" vim:foldmethod=marker:foldlevel=0