Compare commits
4 Commits
main
...
61b877286b
| Author | SHA1 | Date | |
|---|---|---|---|
| 61b877286b | |||
| ff20ba6bd2 | |||
| 8bdb7b7054 | |||
| ae30cf3a09 |
9
.conduit.yaml
Normal file
9
.conduit.yaml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
- location: ~/.vim
|
||||||
|
- pip:
|
||||||
|
- vim-vint
|
||||||
|
- yamllint
|
||||||
|
- cmakelint
|
||||||
|
- repo:
|
||||||
|
- remote: https://github.com/k-takata/minpac.git
|
||||||
|
location: ~/.vim/pack/minpac/opt/minpac
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -2,4 +2,3 @@ local.vim
|
|||||||
.netrwhist
|
.netrwhist
|
||||||
pack/*
|
pack/*
|
||||||
spell/*
|
spell/*
|
||||||
*.pyc
|
|
||||||
|
|||||||
@@ -27,15 +27,18 @@ class Comment(object):
|
|||||||
endglobal
|
endglobal
|
||||||
|
|
||||||
snippet todo "TODO commment"
|
snippet todo "TODO commment"
|
||||||
`!p comment=Comment();snip.rv=comment.before()`TODO${1/.+/(/}$1${1/.+/)/}: $0`!p snip.rv=comment.after()`
|
`!p comment=Comment()
|
||||||
|
snip.rv=comment.before()`TODO${1/.+/(/}$1${1/.+/)/}: $0`!p snip.rv=comment.after()`
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet fixme "FIXME comment"
|
snippet fixme "FIXME comment"
|
||||||
`!p comment=Comment();snip.rv=comment.before()`FIXME${1/.+/(/}$1${1/.+/)/}: $0`!p snip.rv=comment.after()`
|
`!p comment=Comment()
|
||||||
|
snip.rv=comment.before()`FIXME${1/.+/(/}$1${1/.+/)/}: $0`!p snip.rv=comment.after()`
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet note "NOTE comment"
|
snippet note "NOTE comment"
|
||||||
`!p comment=Comment();snip.rv=comment.before()`NOTE: $0`!p snip.rv=comment.after()`
|
`!p comment=Comment()
|
||||||
|
snip.rv=comment.before()`NOTE: $0`!p snip.rv=comment.after()`
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
global !p
|
global !p
|
||||||
|
|||||||
@@ -1,3 +1,13 @@
|
|||||||
|
snippet _template "help file template"
|
||||||
|
*`!p snip.rv = snip.fn`* For Vim version 8.0 Last change: `!p
|
||||||
|
from datetime import datetime
|
||||||
|
snip.rv = datetime.now().strftime('%B %d, %Y')`
|
||||||
|
|
||||||
|
$0
|
||||||
|
|
||||||
|
vim:tw=78:ts=8:ft=help:norl:
|
||||||
|
endsnippet
|
||||||
|
|
||||||
snippet s "help section"
|
snippet s "help section"
|
||||||
==============================================================================
|
==============================================================================
|
||||||
${1:1}. ${2:Section}`!p
|
${1:1}. ${2:Section}`!p
|
||||||
|
|||||||
@@ -3,15 +3,20 @@ snippet #! "Shebang"
|
|||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet main "Python main stub"
|
snippet main "Python main stub"
|
||||||
|
from argparse import ArgumentParser
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
${0:pass}
|
parser = ArgumentParser()
|
||||||
|
parser.add_argument('${0:argument}')
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
try:
|
try:
|
||||||
main()
|
main()
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
exit(130)
|
pass
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
snippet debug "Set ipdb breakpoint"
|
snippet debug "Set ipdb breakpoint"
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
function! s:set_lit_cfg_filetype()
|
function! s:set_lit_cfg_filetype()
|
||||||
set filetype=python
|
set filetype=python
|
||||||
|
ALEDisableBuffer
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
au BufNewFile,BufReadPost lit.cfg call s:set_lit_cfg_filetype()
|
au BufNewFile,BufReadPost lit.cfg call s:set_lit_cfg_filetype()
|
||||||
|
|||||||
@@ -9,7 +9,11 @@ setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:///,://
|
|||||||
setlocal commentstring=//%s
|
setlocal commentstring=//%s
|
||||||
" Stop automatic new lines which typing long single liners.
|
" Stop automatic new lines which typing long single liners.
|
||||||
setlocal textwidth=0
|
setlocal textwidth=0
|
||||||
|
" Map K to get YouCompleteMe documentation.
|
||||||
|
nnoremap K :YcmCompleter GetDoc<CR>
|
||||||
" "ys{motion}t" turns "word" -> "TODO(word):"
|
" "ys{motion}t" turns "word" -> "TODO(word):"
|
||||||
let b:surround_{char2nr("t")} = "TODO(\r):"
|
let b:surround_{char2nr("t")} = "TODO(\r):"
|
||||||
" "ys{motion}/" turns "text" into "/*text*/"
|
" "ys{motion}/" turns "text" into "/*text*/"
|
||||||
let b:surround_{char2nr("/")} = "/*\r*/"
|
let b:surround_{char2nr("/")} = "/*\r*/"
|
||||||
|
" Map K to get YouCompleteMe documentation.
|
||||||
|
nnoremap K :YcmCompleter GetDoc<CR>
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
" Add omnifunc completion plugin.
|
||||||
|
packadd vim-cmake-completion
|
||||||
|
|
||||||
" Enable syntax folding, see .vim/after/syntax/cmake.vim
|
" Enable syntax folding, see .vim/after/syntax/cmake.vim
|
||||||
setlocal foldmethod=syntax
|
setlocal foldmethod=syntax
|
||||||
" Set comment string
|
" Set comment string
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
vim.bo.commentstring = '//%s'
|
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
" Add Doxygen documentation generation plugin.
|
" Add Doxygen documentation generation plugin.
|
||||||
packadd DoxygenToolkit.vim
|
packadd DoxygenToolkit.vim
|
||||||
nnoremap <leader>d :Dox<CR>
|
nnoremap <leader>d :Dox<CR>
|
||||||
|
" Map K to get YouCompleteMe documentation
|
||||||
|
nnoremap K :YcmCompleter GetDoc<CR>
|
||||||
|
|||||||
@@ -5,4 +5,4 @@ setlocal nospell
|
|||||||
setlocal scrolloff=0
|
setlocal scrolloff=0
|
||||||
|
|
||||||
" Don't display line numbers
|
" Don't display line numbers
|
||||||
setlocal nonumber norelativenumber signcolumn=no
|
setlocal nonumber norelativenumber
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
setlocal showbreak=
|
|
||||||
set signcolumn=no
|
|
||||||
@@ -25,3 +25,6 @@ setlocal encoding=utf-8
|
|||||||
" Set up file format
|
" Set up file format
|
||||||
setlocal fileformat=unix
|
setlocal fileformat=unix
|
||||||
let g:python_highlight_all=1
|
let g:python_highlight_all=1
|
||||||
|
|
||||||
|
" Mappings
|
||||||
|
nnoremap K :YcmCompleter GetDoc<CR>
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
" Add omnifunc completion package.
|
" Add omnifunc completion package.
|
||||||
packadd vimomni
|
packadd vimomni
|
||||||
|
|
||||||
|
" Mapping for Vim help of the word under cursor.
|
||||||
|
nnoremap K :help <C-r><C-w><CR>
|
||||||
|
|
||||||
" Set custom fold expression
|
" Set custom fold expression
|
||||||
setlocal foldmethod=expr
|
setlocal foldmethod=expr
|
||||||
setlocal foldexpr=VimFold(v:lnum)
|
setlocal foldexpr=VimFold(v:lnum)
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ if exists('g:c_doxygen') && g:c_doxygen
|
|||||||
|
|
||||||
" Match: @param name description. @retval name description.
|
" Match: @param name description. @retval name description.
|
||||||
" ^^^^ ^^^^
|
" ^^^^ ^^^^
|
||||||
syn region cDoxygenSpecial matchgroup=cDoxygenComment start='@\(param\(\[\(\|in\|out\|in,out\)\]\)\?\|retval\)\=\s\+' end='\(\s\|$\)' contained display
|
syn region cDoxygenSpecial matchgroup=cDoxygenComment start='@\(param\(\[\(\|in\|out\|in,out\)\]\)\|retval\)\=\s\+' end='\(\s\|$\)' contained display
|
||||||
|
|
||||||
" Match: @tparam name description.
|
" Match: @tparam name description.
|
||||||
" ^^^^
|
" ^^^^
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
hi link jsonKeyword Function
|
hi link jsonKeyword Function
|
||||||
hi link jsonNull Constant
|
hi link jsonNull Constant
|
||||||
hi link jsonQuote Delimiter
|
hi link jsonQuote Delimiter
|
||||||
setlocal conceallevel=0
|
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
setlocal tabstop=2
|
|
||||||
setlocal shiftwidth=2
|
|
||||||
setlocal softtabstop=2
|
|
||||||
|
|
||||||
highlight link yamlBlockMappingKey Keyword
|
|
||||||
highlight link yamlAnchor PreProc
|
|
||||||
highlight link yamlAlias PreProc
|
|
||||||
73
autoload/airline/themes/fresh.vim
Normal file
73
autoload/airline/themes/fresh.vim
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
" fresh palette
|
||||||
|
let g:airline#themes#fresh#palette = {}
|
||||||
|
|
||||||
|
" NORMAL mode
|
||||||
|
let s:N1 = ['#005f00', '#afdf00', 22, 148, '']
|
||||||
|
let s:N2 = ['#ffffff', '#005f00', 15, 22, '']
|
||||||
|
let s:N3 = ['#ffffff', '#121212', 15, 233, 'bold']
|
||||||
|
let s:W = ['#000000', '#8700df', 232, 92, '']
|
||||||
|
let s:E = ['#000000', '#990000', 232, 160]
|
||||||
|
let g:airline#themes#fresh#palette.normal =
|
||||||
|
\ airline#themes#generate_color_map(s:N1, s:N2, s:N3)
|
||||||
|
let g:airline#themes#fresh#palette.normal.airline_warning = s:W
|
||||||
|
let g:airline#themes#fresh#palette.normal.airline_error = s:E
|
||||||
|
let g:airline#themes#fresh#palette.normal_modified = {
|
||||||
|
\ 'airline_c': ['#ffffff', '#5f0087', 15, 53, 'bold'], }
|
||||||
|
|
||||||
|
" INSERT mode
|
||||||
|
let s:I1 = ['#0000df', '#00dfff', 20, 45, '']
|
||||||
|
let s:I2 = ['#ffffff', '#005fdf', 15, 26, '']
|
||||||
|
let s:I3 = ['#ffffff', '#121212', 15, 233, 'bold']
|
||||||
|
let g:airline#themes#fresh#palette.insert =
|
||||||
|
\ airline#themes#generate_color_map(s:I1, s:I2, s:I3)
|
||||||
|
let g:airline#themes#fresh#palette.insert.airline_warning = s:W
|
||||||
|
let g:airline#themes#fresh#palette.insert.airline_error = s:E
|
||||||
|
let g:airline#themes#fresh#palette.insert_modified =
|
||||||
|
\ g:airline#themes#fresh#palette.normal_modified
|
||||||
|
let g:airline#themes#fresh#palette.insert_paste = {
|
||||||
|
\ 'airline_a': [s:I1[0], '#ffff00', s:I1[2], 11, ''], }
|
||||||
|
|
||||||
|
" REPLACE mode
|
||||||
|
let s:R1 = [s:I2[0], '#af0000', s:I2[2], 124, '']
|
||||||
|
let s:R2 = ['#ffffff', '#5f0000', 15, 52, '']
|
||||||
|
let s:R3 = ['#ffffff', '#121212', 15, 233, 'bold']
|
||||||
|
let g:airline#themes#fresh#palette.replace =
|
||||||
|
\ airline#themes#generate_color_map(s:R1, s:R2, s:R3)
|
||||||
|
let g:airline#themes#fresh#palette.replace.airline_warning = s:W
|
||||||
|
let g:airline#themes#fresh#palette.replace.airline_error = s:E
|
||||||
|
let g:airline#themes#fresh#palette.replace_modified =
|
||||||
|
\ g:airline#themes#fresh#palette.normal_modified
|
||||||
|
|
||||||
|
" VISAUL mode
|
||||||
|
let s:V1 = ['#ff5f00', '#ff5f00', 52, 208, '']
|
||||||
|
let s:V2 = ['#ffffff', '#005f00', 15, 124, '']
|
||||||
|
let s:V3 = ['#ffffff', '#121212', 15, 233, 'bold']
|
||||||
|
let g:airline#themes#fresh#palette.visual =
|
||||||
|
\ airline#themes#generate_color_map(s:V1, s:V2, s:V3)
|
||||||
|
let g:airline#themes#fresh#palette.visual.airline_warning = s:W
|
||||||
|
let g:airline#themes#fresh#palette.visual.airline_error = s:E
|
||||||
|
let g:airline#themes#fresh#palette.visual_modified =
|
||||||
|
\ g:airline#themes#fresh#palette.normal_modified
|
||||||
|
|
||||||
|
" INACTIVE mode
|
||||||
|
let s:IA1 = ['#4e4e4e', '#1c1c1c', 239, 234, '']
|
||||||
|
let s:IA2 = ['#4e4e4e', '#262626', 239, 235, '']
|
||||||
|
let s:IA3 = ['#ffffff', '#121212', 15, 233, 'bold']
|
||||||
|
let g:airline#themes#fresh#palette.inactive =
|
||||||
|
\ airline#themes#generate_color_map(s:IA1, s:IA2, s:IA3)
|
||||||
|
let g:airline#themes#fresh#palette.inactive.airline_warning = s:IA2
|
||||||
|
let g:airline#themes#fresh#palette.inactive.airline_error = s:IA2
|
||||||
|
let g:airline#themes#fresh#palette.inactive_modified = {
|
||||||
|
\ 'airline_c': ['#875faf', '', 97, '', ''], }
|
||||||
|
|
||||||
|
let g:airline#themes#fresh#palette.accents = {
|
||||||
|
\ 'red': [ '#ff0000' , '' , 160 , '' ] }
|
||||||
|
|
||||||
|
if !get(g:, 'loaded_ctrlp', 0)
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let g:airline#themes#fresh#palette.ctrlp =
|
||||||
|
\ airline#extensions#ctrlp#generate_color_map(
|
||||||
|
\ ['#d7d7ff', '#5f00af', 189, 55, ''],
|
||||||
|
\ ['#ffffff', '#875fd7', 231, 98, ''],
|
||||||
|
\ ['#5f00af', '#ffffff', 55, 231, 'bold'] )
|
||||||
@@ -10,26 +10,12 @@ function! build#dir(...) abort
|
|||||||
let l:dir = s:dirs[0]
|
let l:dir = s:dirs[0]
|
||||||
unlet s:dirs
|
unlet s:dirs
|
||||||
else
|
else
|
||||||
" Multiple build directories found, select one.
|
" Multiple build directories found, create popup menu to select one.
|
||||||
if exists('*popup_menu')
|
" Set the callback to this function on completion, handled below.
|
||||||
" Create popup menu to select the build directory. Callback to this
|
call popup_menu(s:dirs, #{
|
||||||
" function on completion, handled in the else branch below.
|
\ filter: 'popup_filter_menu',
|
||||||
call popup_menu(s:dirs, #{
|
\ callback: 'build#dir',
|
||||||
\ filter: 'popup_filter_menu',
|
\ })
|
||||||
\ callback: 'build#dir',
|
|
||||||
\ })
|
|
||||||
else
|
|
||||||
" Fallback to inputlist when popup_menu is not available.
|
|
||||||
let l:choices = []
|
|
||||||
let l:index = 1
|
|
||||||
for l:dir in s:dirs
|
|
||||||
call add(l:choices, string(l:index).': '.l:dir)
|
|
||||||
let l:index += 1
|
|
||||||
endfor
|
|
||||||
let l:index = inputlist(l:choices)
|
|
||||||
let l:dir = s:dirs[l:index - 1]
|
|
||||||
echomsg ' '.l:dir
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
if a:0 == 1
|
if a:0 == 1
|
||||||
@@ -49,30 +35,12 @@ function! build#dir(...) abort
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
if exists('l:dir')
|
if exists('l:dir')
|
||||||
" Set build directory.
|
" Set build directory and restart YouCompleteMe.
|
||||||
let l:cwd = substitute(getcwd(), '\\', '\/', 'g')
|
let $BUILD_DIR = getcwd().'/'.substitute(l:dir, '\/$', '', '')
|
||||||
let $BUILD_DIR = l:cwd.'/'.substitute(l:dir, '\/$', '', '')
|
" TODO: Check .vim/coc-settings.json exists, create it if not
|
||||||
if executable('compdb')
|
let l:coc_settings = json_decode(join(readfile('.vim/coc-settings.json'), ''))
|
||||||
" Post-process compile_commands.json with compdb, adds header files to
|
let l:coc_settings['clangd.compilationDatabasePath'] = $BUILD_DIR
|
||||||
" missing compile_commands.json for more accurate diagnostics.
|
|
||||||
let l:database_dir = l:cwd.'/.vim'
|
|
||||||
let l:compile_commands = l:database_dir.'/compile_commands.json'
|
|
||||||
call systemlist('compdb -p '.$BUILD_DIR.' list > '.l:compile_commands)
|
|
||||||
else
|
|
||||||
let l:database_dir = $BUILD_DIR
|
|
||||||
endif
|
|
||||||
" Read/create .vim/coc-settings.json
|
|
||||||
let l:coc_settings = {}
|
|
||||||
if isdirectory('.vim')
|
|
||||||
let l:coc_settings = json_decode(join(readfile('.vim/coc-settings.json'), ''))
|
|
||||||
else
|
|
||||||
call mkdir('.vim')
|
|
||||||
endif
|
|
||||||
" Update .vim/coc-settings.json with new build directory.
|
|
||||||
let l:coc_settings['clangd.compilationDatabasePath'] = l:database_dir
|
|
||||||
let l:coc_settings['cmake.lsp.buildDirectory'] = $BUILD_DIR
|
|
||||||
call writefile([json_encode(l:coc_settings)], '.vim/coc-settings.json')
|
call writefile([json_encode(l:coc_settings)], '.vim/coc-settings.json')
|
||||||
" Finally restart coc.nvim with new config.
|
|
||||||
CocRestart
|
CocRestart
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -100,14 +100,3 @@ endfunction
|
|||||||
" A sink for mappings to do nothing
|
" A sink for mappings to do nothing
|
||||||
function! do#sink() abort
|
function! do#sink() abort
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Used by normal mode K mapping to show documentation
|
|
||||||
function! do#show_documentation()
|
|
||||||
if index(['vim','help'], &filetype) >= 0
|
|
||||||
execute 'help '.expand('<cword>')
|
|
||||||
elseif coc#rpc#ready() " TODO: Check if the LS supports doHover
|
|
||||||
call CocActionAsync('doHover')
|
|
||||||
else
|
|
||||||
execute '!'.&keywordprg.' '.expand('<cword>')
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
if !has('pythonx')
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
" set debug=msg,throw
|
|
||||||
pythonx import format
|
|
||||||
|
|
||||||
function! format#clang_format() abort
|
|
||||||
pythonx format.clang_format()
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! format#yapf() abort
|
|
||||||
pythonx format.yapf()
|
|
||||||
endfunction
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
" Use the OSC 52 escape sequence to copy text to the local system clipboard
|
|
||||||
" when connected to a remote machine.
|
|
||||||
|
|
||||||
" Add an autocmd to run after text is yanked.
|
|
||||||
function! osc52#autocmd()
|
|
||||||
augroup osc52
|
|
||||||
autocmd!
|
|
||||||
autocmd TextYankPost * call osc52#copy()
|
|
||||||
augroup END
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! osc52#copy()
|
|
||||||
" Only use OSC 52 when text is yanked with the z register.
|
|
||||||
if v:event['regname'] ==# 'z'
|
|
||||||
" Get the register contents and join the list into a string.
|
|
||||||
let l:content = join(v:event['regcontents'], "\n")
|
|
||||||
if v:event['regtype'] ==# 'V'
|
|
||||||
" Append a new line in linewise-visual mode to avoid surprises.
|
|
||||||
let l:content = l:content."\n"
|
|
||||||
endif
|
|
||||||
" Get the parent tty while being compatible with vim and neovim, originally
|
|
||||||
" from https://github.com/greymd/oscyank.vim
|
|
||||||
let l:tty = system('(tty || tty < /proc/$PPID/fd/0) 2> /dev/null | grep /dev/')
|
|
||||||
" Base 64 encode the content, and print OSC 52 escape sequence to the tty.
|
|
||||||
call system('base64 | xargs -0 printf "\\033]52;c;%s\\a" > '.l:tty, l:content)
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
16
autoload/snippet.vim
Normal file
16
autoload/snippet.vim
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
" Description: Expand snippet on file creation.
|
||||||
|
|
||||||
|
" Attempt to expand the _template snippet if this is a new file.
|
||||||
|
" https://noahfrederick.com/log/vim-templates-with-ultisnips-and-projectionist
|
||||||
|
function! snippet#template() abort
|
||||||
|
" Return if non-empty buffer or file exists.
|
||||||
|
if !(line('$') == 1 && getline('$') ==# '') || filereadable(expand('%'))
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
" Attempt to expand the _template snippet.
|
||||||
|
execute "normal! i_template\<C-r>=UltiSnips#ExpandSnippet()\<CR>"
|
||||||
|
if g:ulti_expand_res == 0
|
||||||
|
" Expansions failed, undo insert.
|
||||||
|
silent! undo
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
@@ -16,6 +16,6 @@ function! tmux#isOption(option, value) abort
|
|||||||
if !tmux#inSession()
|
if !tmux#inSession()
|
||||||
return 0
|
return 0
|
||||||
endif
|
endif
|
||||||
let l:option = trim(system('tmux show-options -g '.a:option))
|
let l:set_clipboard = trim(system('tmux show-options -g '.a:option))
|
||||||
return l:option ==# a:option.' '.a:value
|
return l:set_clipboard ==# 'set-clipboard '.a:value
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
function! wsl#isDetected() abort
|
|
||||||
return $WSLENV !=# ''
|
|
||||||
endfunction
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
{
|
|
||||||
"cmake.lsp.enable": true,
|
|
||||||
"diagnostic.enableHighlightLineNumber": false,
|
|
||||||
"diagnostic.errorSign": "▸",
|
|
||||||
"diagnostic.hintSign": "▸",
|
|
||||||
"diagnostic.infoSign": "▸",
|
|
||||||
"diagnostic.warningSign": "▸",
|
|
||||||
"inlayHint.enable": false,
|
|
||||||
"powershell.integratedConsole.showOnStartup": false,
|
|
||||||
"snippets.priority": 100,
|
|
||||||
"suggest.noselect": true,
|
|
||||||
"yaml.schemas": {
|
|
||||||
"https://gitlab.com/gitlab-org/gitlab/-/raw/master/app/assets/javascripts/editor/schema/ci.json": [
|
|
||||||
".gitlab-ci.yml",
|
|
||||||
".gitlab/ci.yml",
|
|
||||||
".gitlab/ci/*.yml"
|
|
||||||
],
|
|
||||||
"https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/ansible-lint-config.json": [
|
|
||||||
".ansible-lint",
|
|
||||||
".config/ansible-lint.yml",
|
|
||||||
".config/ansible-lint.yaml"
|
|
||||||
],
|
|
||||||
"https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/ansible-navigator.json": [
|
|
||||||
"ansible-navigator.yml",
|
|
||||||
"ansible-navigator.yaml"
|
|
||||||
],
|
|
||||||
"https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/execution-environment.json": [
|
|
||||||
"execution-environment.yml",
|
|
||||||
"execution-environment.yaml"
|
|
||||||
],
|
|
||||||
"https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/galaxy.json": [
|
|
||||||
"galaxy.yml",
|
|
||||||
"galaxy.yaml"
|
|
||||||
],
|
|
||||||
"https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/inventory.json": [
|
|
||||||
"inventory.yaml",
|
|
||||||
"inventory.yml",
|
|
||||||
"inventory/*.yml",
|
|
||||||
"inventory/*.yaml"
|
|
||||||
],
|
|
||||||
"https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/meta-runtime.json": [
|
|
||||||
"meta/runtime.yml",
|
|
||||||
"meta/runtime.yaml"
|
|
||||||
],
|
|
||||||
"https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/molecule.json": [
|
|
||||||
"molecule/*/molecule.yml",
|
|
||||||
"molecule/*/molecule.yaml"
|
|
||||||
],
|
|
||||||
"https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/playbook.json": [
|
|
||||||
"playbooks/*.yml",
|
|
||||||
"playbooks/*.yaml"
|
|
||||||
],
|
|
||||||
"https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/requirements.json": [
|
|
||||||
"requirements.yml",
|
|
||||||
"requirements.yaml"
|
|
||||||
],
|
|
||||||
"https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/rulebook.json": [
|
|
||||||
"rulebooks/*.yml",
|
|
||||||
"rulebooks/*.yaml"
|
|
||||||
],
|
|
||||||
"https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/tasks.json": [
|
|
||||||
"tasks/*.yml",
|
|
||||||
"tasks/*.yaml",
|
|
||||||
"handlers/*.yml",
|
|
||||||
"handlers/*.yaml"
|
|
||||||
],
|
|
||||||
"https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/vars.json": [
|
|
||||||
"playbooks/vars/*.yml",
|
|
||||||
"playbooks/vars/*.yaml",
|
|
||||||
"vars/*.yml",
|
|
||||||
"vars/*.yaml",
|
|
||||||
"defaults/*.yml",
|
|
||||||
"defaults/*.yaml",
|
|
||||||
"host_vars/*.yml",
|
|
||||||
"host_vars/*.yaml",
|
|
||||||
"group_vars/*.yml",
|
|
||||||
"group_vars/*.yaml"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"snippets.ultisnips.pythonPrompt": false
|
|
||||||
}
|
|
||||||
@@ -126,9 +126,7 @@ if has('gui_running') || &t_Co == 256
|
|||||||
call s:hi('SpellLocal', '5', '', '')
|
call s:hi('SpellLocal', '5', '', '')
|
||||||
call s:hi('SpellRare', '3', '', '')
|
call s:hi('SpellRare', '3', '', '')
|
||||||
call s:hi('StatusLine', '15', '233', '')
|
call s:hi('StatusLine', '15', '233', '')
|
||||||
call s:hi('StatusLineTerm', '15', '233', '')
|
|
||||||
call s:hi('StatusLineNC', '', '235', '')
|
call s:hi('StatusLineNC', '', '235', '')
|
||||||
call s:hi('StatusLineTermNC', '', '235', '')
|
|
||||||
call s:hi('TabLine', '246', '235', 'bold')
|
call s:hi('TabLine', '246', '235', 'bold')
|
||||||
call s:hi('TabLineFill', '', '235', '')
|
call s:hi('TabLineFill', '', '235', '')
|
||||||
call s:hi('TabLineSel', '248', '', 'bold')
|
call s:hi('TabLineSel', '248', '', 'bold')
|
||||||
@@ -187,10 +185,6 @@ if has('gui_running') || &t_Co == 256
|
|||||||
call s:hi('Todo', '202', '', 'bold')
|
call s:hi('Todo', '202', '', 'bold')
|
||||||
"" }}}
|
"" }}}
|
||||||
|
|
||||||
"" NVIM Groups {{
|
|
||||||
call s:hi('NormalFloat', '', '235', '')
|
|
||||||
"" }}
|
|
||||||
|
|
||||||
"" Terminal Groups {{{
|
"" Terminal Groups {{{
|
||||||
call s:hi('debugBreakpoint', '1', '', 'reverse')
|
call s:hi('debugBreakpoint', '1', '', 'reverse')
|
||||||
call s:hi('debugPC', '25', '', 'reverse')
|
call s:hi('debugPC', '25', '', 'reverse')
|
||||||
@@ -202,15 +196,10 @@ if has('gui_running') || &t_Co == 256
|
|||||||
call s:hi('Important', '220', '', 'bold')
|
call s:hi('Important', '220', '', 'bold')
|
||||||
call s:hi('Research', '202', '', 'bold')
|
call s:hi('Research', '202', '', 'bold')
|
||||||
|
|
||||||
call s:hi('CocErrorSign', '160', '233', '')
|
call s:hi('ALEError', '160', '', '')
|
||||||
call s:hi('CocErrorFloat', '160', '235', '')
|
call s:hi('ALEWarning', '129', '', '')
|
||||||
call s:hi('CocWarningSign', '129', '233', '')
|
call s:hi('ALEErrorSign', '160', '233', 'bold')
|
||||||
call s:hi('CocWarningFloat', '129', '235', '')
|
call s:hi('ALEWarningSign', '129', '233', 'bold')
|
||||||
call s:hi('CocInfoSign', '8', '233', '')
|
|
||||||
call s:hi('CocInfoFloat', '8', '235', '')
|
|
||||||
call s:hi('CocHintSign', '33', '233', '')
|
|
||||||
call s:hi('CocHintFloat', '33', '235', '')
|
|
||||||
call s:hi('CocInlayHint', '8', '', '')
|
|
||||||
|
|
||||||
call s:hi('SyntasticErrorSign', '160', '233', 'bold')
|
call s:hi('SyntasticErrorSign', '160', '233', 'bold')
|
||||||
call s:hi('SyntasticWarningSign', '129', '233', 'bold')
|
call s:hi('SyntasticWarningSign', '129', '233', 'bold')
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
autocmd BufNewFile,BufReadPost */requirements.txt set filetype=requirements
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
if has('pythonx')
|
|
||||||
setlocal formatexpr=format#clang_format()
|
|
||||||
endif
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
" Add <> to % matches
|
|
||||||
setlocal matchpairs+=<:>
|
|
||||||
|
|
||||||
if has('pythonx')
|
|
||||||
setlocal formatexpr=format#clang_format()
|
|
||||||
endif
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
if has('pythonx')
|
|
||||||
setlocal formatexpr=format#clang_format()
|
|
||||||
endif
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
if has('pythonx')
|
|
||||||
setlocal formatexpr=format#clang_format()
|
|
||||||
endif
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
if has('pythonx')
|
|
||||||
setlocal formatexpr=format#clang_format()
|
|
||||||
endif
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
if has('pythonx')
|
|
||||||
setlocal formatexpr=format#clang_format()
|
|
||||||
endif
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
if has('pythonx')
|
|
||||||
setlocal formatexpr=format#clang_format()
|
|
||||||
endif
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
if has('pythonx')
|
|
||||||
setlocal formatexpr=format#yapf()
|
|
||||||
endif
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
set commentstring=#%s
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
if exists(':GuiFont')
|
|
||||||
GuiFont! CaskaydiaCove\ Nerd\ Font\ Mono:h9
|
|
||||||
endif
|
|
||||||
|
|
||||||
if exists(':GuiTabline')
|
|
||||||
" Don't use GUI tabline, matches terminal tabline.
|
|
||||||
GuiTabline 0
|
|
||||||
endif
|
|
||||||
2
gvimrc
2
gvimrc
@@ -6,7 +6,7 @@
|
|||||||
set guioptions=aegi
|
set guioptions=aegi
|
||||||
|
|
||||||
if platform#is_windows()
|
if platform#is_windows()
|
||||||
set guifont=Source\ Code\ Pro:h10
|
set guifont=Consolas:h10:cDEFAULT
|
||||||
else
|
else
|
||||||
" Set default font
|
" Set default font
|
||||||
set guifont=Source\ Code\ Pro\ Medium\ 9
|
set guifont=Source\ Code\ Pro\ Medium\ 9
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
---
|
|
||||||
- name: nodejs get json containing latest version
|
|
||||||
uri:
|
|
||||||
url: https://nodejs.org/dist/index.json
|
|
||||||
register: latest
|
|
||||||
|
|
||||||
- name: nodejs create directory for downloaded package
|
|
||||||
file:
|
|
||||||
state: directory
|
|
||||||
dest: ~/.local/src
|
|
||||||
|
|
||||||
- name: nodejs download latest package
|
|
||||||
get_url:
|
|
||||||
url: 'https://nodejs.org/dist/{{latest.json[0].version}}/node-{{latest.json[0].version}}-linux-x64.tar.gz'
|
|
||||||
dest: ~/.local/src/node.tar.gz
|
|
||||||
|
|
||||||
- name: nodejs extract downloaded package
|
|
||||||
unarchive:
|
|
||||||
src: ~/.local/src/node.tar.gz
|
|
||||||
dest: ~/.local/src
|
|
||||||
remote_src: true
|
|
||||||
|
|
||||||
- name: nodejs create symlink links
|
|
||||||
file:
|
|
||||||
state: link
|
|
||||||
src: '~/.local/src/node-{{latest.json[0].version}}-linux-x64/bin/{{item}}'
|
|
||||||
dest: '~/.local/bin/{{item}}'
|
|
||||||
with_items: [corepack, node, npm, npx]
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
augroup benieAugroup
|
augroup benieAugroup
|
||||||
autocmd!
|
autocmd!
|
||||||
|
|
||||||
if tmux#inSession()
|
if $TMUX !=# ''
|
||||||
" [Un]set tmux window option to detect when to change pane.
|
" [Un]set tmux window option to detect when to change pane.
|
||||||
call tmux#setNavigationFlag()
|
call tmux#setNavigationFlag()
|
||||||
au FocusGained * silent call tmux#setNavigationFlag()
|
au FocusGained * silent call tmux#setNavigationFlag()
|
||||||
@@ -12,31 +12,20 @@ augroup benieAugroup
|
|||||||
au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
|
au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
|
||||||
\ | exe "normal! g'\"" | endif
|
\ | exe "normal! g'\"" | endif
|
||||||
|
|
||||||
|
" Highlight conflict markers in any filetype
|
||||||
|
au FileType * call matchadd('Todo', '^\(<<<<<<<\s.*\||||||||\|=======\|>>>>>>>\s.*\)$')
|
||||||
|
|
||||||
" Update `Last change: <date>` on write & go back previous cursor position
|
" Update `Last change: <date>` on write & go back previous cursor position
|
||||||
au FileType help au BufWritePre <buffer>
|
au FileType help au BufWritePre <buffer>
|
||||||
\ 1s/Last change: \zs.*$/\=strftime('%Y %b %d')/e|norm!``
|
\ 1s/Last change: \zs.*$/\=strftime('%Y %b %d')/e|norm!``
|
||||||
|
|
||||||
" Read template into buffer then send line 1 to the black hold register
|
" Read template into buffer then send line 1 to the black hold register
|
||||||
au BufNewFile todo.md read ~/.vim/templates/skeleton.todo.md | 1delete _
|
au BufNewFile todo.md read ~/.vim/templates/skeleton.todo.md | 1delete _
|
||||||
|
" Attempt to expand snippet named `_template` if it exists
|
||||||
|
au BufNewFile * silent! call snippet#template()
|
||||||
|
" Do the same when filetype changes to help
|
||||||
|
au FileType help silent! call snippet#template()
|
||||||
|
|
||||||
" Augment vim-signify by modifying it's autocmds
|
" Augment vim-signify by modifying it's autocmds
|
||||||
au User SignifyAutocmds call do#signify()
|
au User SignifyAutocmds call do#signify()
|
||||||
|
|
||||||
if has('nvim')
|
|
||||||
" Start in terminal-insert mode.
|
|
||||||
autocmd TermOpen term://* startinsert
|
|
||||||
" Don't show the line number column in terminal-insert mode.
|
|
||||||
autocmd TermEnter term://*
|
|
||||||
\ set nonumber | set norelativenumber | set signcolumn=no
|
|
||||||
" But do show the line number column in terminal-normal mode.
|
|
||||||
autocmd TermLeave term://*
|
|
||||||
\ set number | set relativenumber | set signcolumn=auto
|
|
||||||
" Automatically press enter when the terminal process exits.
|
|
||||||
autocmd TermClose term://*
|
|
||||||
\ if (expand('<afile>') !~ "fzf") &&
|
|
||||||
\ (expand('<afile>') !~ "ranger") &&
|
|
||||||
\ (expand('<afile>') !~ "coc") |
|
|
||||||
\ call nvim_input('<CR>') |
|
|
||||||
\ endif
|
|
||||||
endif
|
|
||||||
augroup END
|
augroup END
|
||||||
|
|||||||
@@ -8,5 +8,7 @@ if !platform#is_windows() &&
|
|||||||
echo "Setup the shell to do something similar on load"
|
echo "Setup the shell to do something similar on load"
|
||||||
echo "env TERM=xterm-256color /usr/bin/zsh"
|
echo "env TERM=xterm-256color /usr/bin/zsh"
|
||||||
endif
|
endif
|
||||||
colorscheme fresh
|
if !platform#is_windows() || has("gui_running")
|
||||||
|
colorscheme fresh
|
||||||
|
endif
|
||||||
syntax sync minlines=1000
|
syntax sync minlines=1000
|
||||||
|
|||||||
@@ -1,3 +1,11 @@
|
|||||||
|
" minpac
|
||||||
|
function! s:minpac_init() abort
|
||||||
|
packadd minpac | call minpac#init() | source $MYVIMRC
|
||||||
|
endfunction
|
||||||
|
command! PackUpdate call s:minpac_init() | call minpac#update('', {'do': 'call minpac#status()'})
|
||||||
|
command! PackStatus call s:minpac_init() | call minpac#status()
|
||||||
|
command! PackClean call s:minpac_init() | call minpac#clean()
|
||||||
|
|
||||||
" Sort Python Imports
|
" Sort Python Imports
|
||||||
command! ISort call do#isort()
|
command! ISort call do#isort()
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
if !has('pythonx')
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
let g:clang_format_path = get(g:, 'clang_format_path', 'clang-format')
|
|
||||||
let g:clang_format_style = get(g:, 'clang_format_style', 'google')
|
|
||||||
let g:yapf_path = get(g:, 'yapf_path', 'yapf')
|
|
||||||
let g:yapf_style = get(g:, 'yapf_style', 'pep8')
|
|
||||||
@@ -1,19 +1,8 @@
|
|||||||
" coc.nvim
|
" coc.nvim
|
||||||
inoremap <silent><expr> <TAB> coc#pum#visible() ? coc#pum#confirm() : "\<TAB>"
|
nnoremap <leader>fi <Plug>(coc-fix-current)
|
||||||
nnoremap <silent> <leader>fi <Plug>(coc-fix-current)
|
nnoremap <leader>gd <Plug>(coc-definition)
|
||||||
nnoremap <silent> <leader>gd <Plug>(coc-definition)
|
nnoremap <leader>gt <Plug>(coc-type-definition)
|
||||||
nnoremap <silent> <leader>gt <Plug>(coc-type-definition)
|
nnoremap <leader>sd <Plug>(coc-diagnostic-info)
|
||||||
nnoremap <silent> <leader>sd <Plug>(coc-diagnostic-info)
|
|
||||||
nnoremap <silent> <leader>gr <Plug>(coc-references)
|
|
||||||
nnoremap <silent> <leader>gu <Plug>(coc-references-used)
|
|
||||||
nnoremap <silent> K :call do#show_documentation()<CR>
|
|
||||||
nnoremap <silent> <C-n> <Plug>(coc-diagnostic-next)
|
|
||||||
nnoremap <silent> <C-p> <Plug>(coc-diagnostic-prev)
|
|
||||||
|
|
||||||
if has('nvim')
|
|
||||||
" Make nvim :terminal more like vim :terminal
|
|
||||||
tnoremap <C-w>N <C-\><C-n>
|
|
||||||
endif
|
|
||||||
|
|
||||||
" termdebug
|
" termdebug
|
||||||
" TODO: Detecet if termdebug is loaded, if not do the default action.
|
" TODO: Detecet if termdebug is loaded, if not do the default action.
|
||||||
@@ -24,6 +13,10 @@ tnoremap <C-G> :Gdb<CR>
|
|||||||
tnoremap <C-E> :Program<CR>
|
tnoremap <C-E> :Program<CR>
|
||||||
tnoremap <C-S> :Source<CR>
|
tnoremap <C-S> :Source<CR>
|
||||||
|
|
||||||
|
" GitGutter
|
||||||
|
nnoremap <leader>gn :GitGutterNextHunk<CR>
|
||||||
|
nnoremap <leader>gp :GitGutterPrevHunk<CR>
|
||||||
|
|
||||||
" Quickfix list
|
" Quickfix list
|
||||||
nnoremap <leader>qo :copen<CR>
|
nnoremap <leader>qo :copen<CR>
|
||||||
nnoremap <leader>qc :cclose<CR>
|
nnoremap <leader>qc :cclose<CR>
|
||||||
@@ -65,33 +58,14 @@ nnoremap k gk
|
|||||||
" Quick write
|
" Quick write
|
||||||
nnoremap <leader>w :w!<CR>
|
nnoremap <leader>w :w!<CR>
|
||||||
|
|
||||||
" Switch panes in a tmux aware way
|
" Switch panes
|
||||||
if !tmux#inSession() || has('win32')
|
nnoremap <C-h> <C-w>h
|
||||||
nnoremap <silent> <C-h> <C-w>h
|
nnoremap <C-j> <C-w>j
|
||||||
nnoremap <silent> <C-j> <C-w>j
|
nnoremap <C-k> <C-w>k
|
||||||
nnoremap <silent> <C-k> <C-w>k
|
nnoremap <C-l> <C-w>l
|
||||||
nnoremap <silent> <C-l> <C-w>l
|
|
||||||
else
|
" Redraw window
|
||||||
nnoremap <silent> <C-h> :TmuxNavigateLeft<CR>
|
nnoremap <C-w>l <C-l>
|
||||||
nnoremap <silent> <C-j> :TmuxNavigateDown<CR>
|
|
||||||
nnoremap <silent> <C-k> :TmuxNavigateUp<CR>
|
|
||||||
nnoremap <silent> <C-l> :TmuxNavigateRight<CR>
|
|
||||||
nnoremap <silent> <C-w>h :TmuxNavigateLeft<CR>
|
|
||||||
nnoremap <silent> <C-w>j :TmuxNavigateDown<CR>
|
|
||||||
nnoremap <silent> <C-w>k :TmuxNavigateUp<CR>
|
|
||||||
nnoremap <silent> <C-w>l :TmuxNavigateRight<CR>
|
|
||||||
if has('nvim')
|
|
||||||
tnoremap <silent> <C-w>h <C-\><C-n>:TmuxNavigateLeft<CR>
|
|
||||||
tnoremap <silent> <C-w>j <C-\><C-n>:TmuxNavigateDown<CR>
|
|
||||||
tnoremap <silent> <C-w>k <C-\><C-n>:TmuxNavigateUp<CR>
|
|
||||||
tnoremap <silent> <C-w>l <C-\><C-n>:TmuxNavigateRight<CR>
|
|
||||||
else
|
|
||||||
tnoremap <silent> <C-w>h <C-w>N:TmuxNavigateLeft<CR>
|
|
||||||
tnoremap <silent> <C-w>j <C-w>N:TmuxNavigateDown<CR>
|
|
||||||
tnoremap <silent> <C-w>k <C-w>N:TmuxNavigateUp<CR>
|
|
||||||
tnoremap <silent> <C-w>l <C-w>N:TmuxNavigateRight<CR>
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Quick tabs
|
" Quick tabs
|
||||||
nnoremap <leader>tn :tabnew<Space>
|
nnoremap <leader>tn :tabnew<Space>
|
||||||
@@ -102,14 +76,8 @@ nnoremap <leader>tm :tabmove<Space>
|
|||||||
" Clear search highlights
|
" Clear search highlights
|
||||||
nnoremap <leader><Space> :nohlsearch<CR>
|
nnoremap <leader><Space> :nohlsearch<CR>
|
||||||
|
|
||||||
if tmux#isOption('set-clipboard', 'on') || $SSH_CONNECTION !=# ''
|
if exists('loaded_oscyank')
|
||||||
" When connected to a remote session the + selection register is not
|
noremap <leader>y :Oscyank<CR>
|
||||||
" available and the unnamed register is used instead. Add mappings using the
|
|
||||||
" z register instead.
|
|
||||||
noremap <leader>y "zy
|
|
||||||
noremap <leader>Y "zY
|
|
||||||
" Enable OSC 52 copy on yank.
|
|
||||||
call osc52#autocmd()
|
|
||||||
else
|
else
|
||||||
" System clipboard yank/put
|
" System clipboard yank/put
|
||||||
noremap <leader>y "+y
|
noremap <leader>y "+y
|
||||||
@@ -117,10 +85,6 @@ else
|
|||||||
noremap <leader>p "+p
|
noremap <leader>p "+p
|
||||||
noremap <leader>P "+P
|
noremap <leader>P "+P
|
||||||
endif
|
endif
|
||||||
if has('nvim-0.5.2')
|
|
||||||
" Undo neovim's default mapping of Y to y$
|
|
||||||
unmap Y
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Quickly access spelling menu
|
" Quickly access spelling menu
|
||||||
inoremap <C-s> <C-g>u<C-X>s
|
inoremap <C-s> <C-g>u<C-X>s
|
||||||
@@ -128,6 +92,8 @@ nnoremap <C-s> i<C-g>u<C-X>s
|
|||||||
|
|
||||||
" Disable 'Q' from opening Ex mode
|
" Disable 'Q' from opening Ex mode
|
||||||
nnoremap Q <nop>
|
nnoremap Q <nop>
|
||||||
|
" Disable 'K' from loading man pages
|
||||||
|
noremap K <nop>
|
||||||
|
|
||||||
" Split line at the cursor
|
" Split line at the cursor
|
||||||
nnoremap [j i<CR><Esc>
|
nnoremap [j i<CR><Esc>
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
" TODO: Move these settings to vimrc when after switching to vim8 packages
|
||||||
|
scriptencoding 'utf-8'
|
||||||
|
|
||||||
" Copy indent from current line
|
" Copy indent from current line
|
||||||
set autoindent
|
set autoindent
|
||||||
|
|
||||||
@@ -13,6 +16,12 @@ if !has('nvim') && &ttimeoutlen == -1
|
|||||||
set ttimeoutlen=100
|
set ttimeoutlen=100
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" TODO: These might be irrelevant with vim-airline
|
||||||
|
" Show 2 line status
|
||||||
|
set laststatus=2
|
||||||
|
" Show the line and colum number of a cursor position
|
||||||
|
set ruler
|
||||||
|
|
||||||
" Enhanced command line completion
|
" Enhanced command line completion
|
||||||
set wildmenu
|
set wildmenu
|
||||||
" Command line history
|
" Command line history
|
||||||
@@ -85,6 +94,7 @@ if exists('+relativenumber')
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
" Keep cursor from buffer edges
|
" Keep cursor from buffer edges
|
||||||
|
set scrolloff=8
|
||||||
set sidescrolloff=5
|
set sidescrolloff=5
|
||||||
|
|
||||||
" Turn backup off
|
" Turn backup off
|
||||||
@@ -112,8 +122,6 @@ set isfname-=:
|
|||||||
set hlsearch incsearch
|
set hlsearch incsearch
|
||||||
" Set ignore search case unless mixed
|
" Set ignore search case unless mixed
|
||||||
set ignorecase smartcase
|
set ignorecase smartcase
|
||||||
" Don't ignore case in command line file completions
|
|
||||||
set nofileignorecase
|
|
||||||
|
|
||||||
" Allow buffers with changes to be hidden
|
" Allow buffers with changes to be hidden
|
||||||
set hidden
|
set hidden
|
||||||
@@ -174,7 +182,7 @@ if &t_Co == 8 && $TERM !~# '^linux\|^Eterm'
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
" Change cursor dependant on current mode
|
" Change cursor dependant on current mode
|
||||||
if !has('nvim') && has('cursorshape') && has('unix') && !has('gui_running')
|
if has('cursorshape') && has('unix') && !has('gui_running')
|
||||||
if $TMUX ==# '' && $ITERM_PROFILE !=# ''
|
if $TMUX ==# '' && $ITERM_PROFILE !=# ''
|
||||||
let &t_SI = "\<Esc>]50;CursorShape=1\x7"
|
let &t_SI = "\<Esc>]50;CursorShape=1\x7"
|
||||||
let &t_EI = "\<Esc>]50;CursorShape=0\x7"
|
let &t_EI = "\<Esc>]50;CursorShape=0\x7"
|
||||||
|
|||||||
@@ -1,174 +0,0 @@
|
|||||||
" Show the statusline above the commandline.
|
|
||||||
scriptencoding utf-8
|
|
||||||
set laststatus=2
|
|
||||||
|
|
||||||
" Define color variables.
|
|
||||||
let g:statusline#light_green = {'fg': ['235', '#262626'], 'bg': [ '35', '#00af5f']}
|
|
||||||
let g:statusline#light_blue = {'fg': ['235', '#262626'], 'bg': [ '33', '#0087ff']}
|
|
||||||
let g:statusline#light_orange = {'fg': ['235', '#262626'], 'bg': ['209', '#ff875f']}
|
|
||||||
let g:statusline#light_red = {'fg': ['235', '#262626'], 'bg': ['124', '#af0000']}
|
|
||||||
let g:statusline#light_grey = {'fg': ['235', '#262626'], 'bg': ['246', '#949494']}
|
|
||||||
let g:statusline#light_violet = {'fg': ['235', '#262626'], 'bg': [ '99', '#875fff']}
|
|
||||||
let g:statusline#dark_white = {'fg': [ '15', '#ffffff'], 'bg': ['233', '#121212']}
|
|
||||||
let g:statusline#dark_yellow = {'fg': ['179', '#dfaf5f'], 'bg': ['233', '#121212']}
|
|
||||||
let g:statusline#dark_grey = {'fg': ['244', '#808080'], 'bg': ['233', '#121212']}
|
|
||||||
|
|
||||||
" Create highlight groups.
|
|
||||||
function! s:hi(group, color) abort
|
|
||||||
execute 'highlight '.a:group
|
|
||||||
\.' ctermfg='.a:color['fg'][0].' ctermbg='.a:color['bg'][0]
|
|
||||||
\.' guifg='.a:color['fg'][1].' guibg='.a:color['bg'][1]
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" StatusLineLight is shows the mode and cursor information, it is dynamically
|
|
||||||
" changed by statusline#mode(), give it a default.
|
|
||||||
call s:hi('StatusLineLight', g:statusline#light_grey)
|
|
||||||
" StatusLineDusk is shows additional information which is not always present,
|
|
||||||
" give it a muted color.
|
|
||||||
call s:hi('StatusLineDusk', g:statusline#light_grey)
|
|
||||||
" StatusLineDark shows the filename and filetype and takes up most of the
|
|
||||||
" statusline, give it a dark background.
|
|
||||||
call s:hi('StatusLineDark', g:statusline#dark_white)
|
|
||||||
" StatusLineChange shows changes in the file by changing the colour of the
|
|
||||||
" filename, give if a dark background.
|
|
||||||
call s:hi('StatusLineChange', g:statusline#dark_yellow)
|
|
||||||
" StatusLineFade shows the status of completion engines but using colors which
|
|
||||||
" fade into the background to avoid grabbing attention.
|
|
||||||
call s:hi('StatusLineDuskFade', g:statusline#dark_grey)
|
|
||||||
|
|
||||||
" Construct a statusline for special buffer types.
|
|
||||||
function! statusline#special(group, name, title)
|
|
||||||
" Display current mode with dynamic highlights.
|
|
||||||
let l:mode = '%#'.a:group.'# '.a:name.' '
|
|
||||||
" Display filename with dark highlights.
|
|
||||||
let l:file = '%#StatusLineDark# '.a:title
|
|
||||||
" Display current/total lines and column with dynamic highlights.
|
|
||||||
let l:line = '%#'.a:group.'# ☰ %l/%L ㏑%2c '
|
|
||||||
" Combine the elements into a single string to be evaluated.
|
|
||||||
return l:mode.l:file.'%='.l:line
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Construct a statusline for generic buffer types.
|
|
||||||
function! statusline#generic(group, mode, coc)
|
|
||||||
" Display current mode with dynamic highlights.
|
|
||||||
let l:mode = '%#'.a:group.'# '.a:mode.' '
|
|
||||||
" Display spell or paste if set with dusk highlights in a group to swallow
|
|
||||||
" the spaces when empty.
|
|
||||||
let l:edit = '%#StatusLineDusk#%( '
|
|
||||||
\.'%{&spell ? "Spell " : ""}'
|
|
||||||
\.'%{&paste ? "Paste " : ""}'
|
|
||||||
\.'%)'
|
|
||||||
" Display filename with dark or changed highlights.
|
|
||||||
let l:file = (&modified ? '%#StatusLineChange#' : '%#StatusLineDark#').' %<%f'
|
|
||||||
" Display readonly and nomodifiable if set.
|
|
||||||
let l:state = '%#StatusLineDark#'
|
|
||||||
\.'%{&readonly ? " 🔒" : ""}'
|
|
||||||
\.'%{&modifiable ? "" : " ⛔"}'
|
|
||||||
if a:coc && exists('*coc#status')
|
|
||||||
" Display coc.nvim status.
|
|
||||||
let l:coc = '%#StatusLineDuskFade#%( %{coc#status()}%)'
|
|
||||||
else
|
|
||||||
let l:coc = ''
|
|
||||||
endif
|
|
||||||
" Display filetype if set.
|
|
||||||
let l:type = '%#StatusLineDark# %{&filetype} '
|
|
||||||
" Display fileencoding if not utf-8 and fileformat if not unix with dusk
|
|
||||||
" highlights in a group to swallow spaces when empty.
|
|
||||||
let l:format = '%#StatusLineDusk#%( '
|
|
||||||
\.'%{&fileencoding ==# "utf-8" ? "" : &fileencoding}'
|
|
||||||
\.'%{&fileformat ==# "unix" ? "" : "[".&fileformat."]"}'
|
|
||||||
\.' %)'
|
|
||||||
" Display current/total lines and column with dynamic highlights.
|
|
||||||
let l:line = '%#'.a:group.'# ☰ %l/%L ㏑%2c '
|
|
||||||
" Combine the elements into a single string to be evaluated.
|
|
||||||
return l:mode.l:edit.l:file.l:state.l:coc.'%='.l:type.l:format.l:line
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Define active statusline, this statusline is dynamic with StatusLineLight
|
|
||||||
" being updated based on the current mode and only used for current buffer.
|
|
||||||
function! statusline#active()
|
|
||||||
let l:mode = statusline#mode()
|
|
||||||
if &buftype ==# 'help'
|
|
||||||
if l:mode ==# 'Normal'
|
|
||||||
let l:mode = 'Help'
|
|
||||||
endif
|
|
||||||
return statusline#special('StatusLineLight', l:mode, '%F')
|
|
||||||
elseif &buftype ==# 'quickfix'
|
|
||||||
" Quickfix list and location list have the same buftype, the window has a
|
|
||||||
" loclist flag, query the window info.
|
|
||||||
let l:info = getwininfo(win_getid())[0]
|
|
||||||
if l:mode ==# 'Normal'
|
|
||||||
let l:mode = l:info['loclist'] ? 'Location' : 'Quickfix'
|
|
||||||
endif
|
|
||||||
return statusline#special('StatusLineLight', l:mode,
|
|
||||||
\ get(l:info['variables'], 'quickfix_title', ''))
|
|
||||||
elseif &buftype ==# 'terminal'
|
|
||||||
return statusline#special('StatusLineLight', 'Terminal', '%f')
|
|
||||||
elseif &previewwindow
|
|
||||||
if l:mode ==# 'Normal'
|
|
||||||
let l:mode = 'Preview'
|
|
||||||
endif
|
|
||||||
return statusline#generic('StatusLineLight', l:mode, v:false)
|
|
||||||
elseif &filetype ==# 'man'
|
|
||||||
return statusline#special('StatusLineDusk', 'Manual', '%f')
|
|
||||||
endif
|
|
||||||
return statusline#generic('StatusLineLight', l:mode, v:true)
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Define inactive statusline, this remains static until the buffer gains
|
|
||||||
" focus again.
|
|
||||||
function! statusline#inactive()
|
|
||||||
if &buftype ==# 'help'
|
|
||||||
let l:statusline = statusline#special('StatusLineDusk', 'Help', '%F')
|
|
||||||
elseif &buftype ==# 'quickfix'
|
|
||||||
" Quickfix list and location list have the same buftype, the window has a
|
|
||||||
" loclist flag, query the window info.
|
|
||||||
let l:info = getwininfo(win_getid())[0]
|
|
||||||
let l:statusline = statusline#special('StatusLineDusk',
|
|
||||||
\ l:info['loclist'] ? 'Location' : 'Quickfix',
|
|
||||||
\ get(l:info['variables'], 'quickfix_title', ''))
|
|
||||||
elseif &buftype ==# 'terminal'
|
|
||||||
let l:statusline = statusline#special('StatusLineDusk', 'Terminal', '%f')
|
|
||||||
elseif &previewwindow
|
|
||||||
let l:statusline = statusline#generic('StatusLineDusk', 'Preview', v:false)
|
|
||||||
elseif &filetype ==# 'man'
|
|
||||||
let l:statusline = statusline#special('StatusLineDusk', 'Manual', '%f')
|
|
||||||
else
|
|
||||||
let l:statusline = statusline#generic('StatusLineDusk', 'Idle', v:false)
|
|
||||||
endif
|
|
||||||
" Escape spaces and double quotes for use in setlocal.
|
|
||||||
let l:statusline = substitute(l:statusline, '\([ "]\)', '\\\0', 'g')
|
|
||||||
execute 'setlocal statusline='.l:statusline
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Get statusline mode and update StatusLineLight.
|
|
||||||
function! statusline#mode()
|
|
||||||
" Map modes to a human readable name and a color.
|
|
||||||
let l:mode = {
|
|
||||||
\ 'n': ['Normal', g:statusline#light_green],
|
|
||||||
\ 'i': ['Insert', g:statusline#light_blue],
|
|
||||||
\ 'c': ['Command', g:statusline#light_green],
|
|
||||||
\ 'v': ['Visual', g:statusline#light_orange],
|
|
||||||
\ 'V': ['V-Line', g:statusline#light_orange],
|
|
||||||
\ '': ['V-Block', g:statusline#light_orange],
|
|
||||||
\ 'R': ['Replace', g:statusline#light_red],
|
|
||||||
\ 's': ['Select', g:statusline#light_violet],
|
|
||||||
\ 'S': ['S-Line', g:statusline#light_violet],
|
|
||||||
\ '': ['S-Block', g:statusline#light_violet],
|
|
||||||
\ 't': ['Terminal', g:statusline#light_blue],
|
|
||||||
\ '!': ['Shell', g:statusline#light_grey],
|
|
||||||
\}[mode()]
|
|
||||||
" Update the StatusLineLight color.
|
|
||||||
call s:hi('StatusLineLight', l:mode[1])
|
|
||||||
return l:mode[0]
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Setup autocmds to set the statusline per buffer.
|
|
||||||
augroup benieStatusLine
|
|
||||||
autocmd!
|
|
||||||
" Dynamically update the current buffer mode and color changes using %! to
|
|
||||||
" call a function which is always evaluated on statusline update.
|
|
||||||
autocmd BufEnter,WinEnter,BufWinEnter * setlocal statusline=%!statusline#active()
|
|
||||||
" Statically set the statusline when leaving the buffer.
|
|
||||||
autocmd BufLeave,WinLeave * call statusline#inactive()
|
|
||||||
augroup END
|
|
||||||
@@ -1,117 +0,0 @@
|
|||||||
"""Python formatexpr for clang-format & yapf"""
|
|
||||||
|
|
||||||
import json
|
|
||||||
import sys
|
|
||||||
import subprocess
|
|
||||||
import difflib
|
|
||||||
|
|
||||||
import vim
|
|
||||||
|
|
||||||
|
|
||||||
class FormatError(Exception):
|
|
||||||
"""A formatting error."""
|
|
||||||
|
|
||||||
|
|
||||||
def clang_format():
|
|
||||||
"""Call clang-format on the current text object."""
|
|
||||||
clang_format = vim.vars['clang_format_path']
|
|
||||||
# TODO: The cursor position before gq is invoked is not preserved in the
|
|
||||||
# jump list, this expression will return the cursor position at the
|
|
||||||
# beginning of the motion or text object.
|
|
||||||
# Is there a way to get the cursor position immediately before gq is
|
|
||||||
# invoked? So that we can pass the position to clang-format in order for
|
|
||||||
# it to return the updated position to continue editing.
|
|
||||||
# Query the current absolute cursor positon.
|
|
||||||
cursor = int(vim.eval('line2byte(".") + col(".")')) - 2
|
|
||||||
if cursor < 0:
|
|
||||||
return
|
|
||||||
# Determine the lines to format.
|
|
||||||
startline = int(vim.eval('v:lnum'))
|
|
||||||
endline = startline + int(vim.eval('v:count')) - 1
|
|
||||||
lines = f'{startline}:{endline}'
|
|
||||||
fallback_style = vim.vars['clang_format_style']
|
|
||||||
# Construct the clang-format command to call.
|
|
||||||
command = [
|
|
||||||
clang_format, '-style', 'file', '-cursor',
|
|
||||||
str(cursor), '-lines', lines, '-fallback-style', fallback_style
|
|
||||||
]
|
|
||||||
if vim.current.buffer.name:
|
|
||||||
command += ['-assume-filename', vim.current.buffer.name]
|
|
||||||
# Call the clang-format command.
|
|
||||||
output = call(command)
|
|
||||||
if not output:
|
|
||||||
return
|
|
||||||
# Read the clang-format json header.
|
|
||||||
header = json.loads(output[0])
|
|
||||||
if header.get('IncompleteFormat'):
|
|
||||||
raise FormatError('clang-format: incomplete (syntax errors).')
|
|
||||||
# Replace the formatted regions.
|
|
||||||
replace_regions(output[1:])
|
|
||||||
# Set the updated cursor position.
|
|
||||||
vim.command('goto %d' % (header['Cursor'] + 1))
|
|
||||||
|
|
||||||
|
|
||||||
def yapf():
|
|
||||||
"""Call yapf on the current text object."""
|
|
||||||
yapf = vim.vars['yapf_path']
|
|
||||||
# Determine the lines to format.
|
|
||||||
start = int(vim.eval('v:lnum'))
|
|
||||||
end = start + int(vim.eval('v:count'))
|
|
||||||
lines = '{0}-{1}'.format(start, end)
|
|
||||||
style = vim.vars['yapf_style']
|
|
||||||
# Construct the clang-format command to call.
|
|
||||||
command = [yapf, '--style', style, '--lines', lines]
|
|
||||||
# TODO: Since yapf is a Python package, we could import the module and
|
|
||||||
# call it directly instead. It would then be possible to output better
|
|
||||||
# error messages and act on the buffer directly.
|
|
||||||
# Call the yapf command.
|
|
||||||
output = call(command)
|
|
||||||
if not output:
|
|
||||||
return
|
|
||||||
# Replace the formatted regions.
|
|
||||||
replace_regions(output[:-1])
|
|
||||||
|
|
||||||
|
|
||||||
def call(command):
|
|
||||||
"""Call the command to format the text.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
command (list): Formatting command to call.
|
|
||||||
text (str): Text to be passed to stdin of command.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
list: The output of the formatter split on new lines.
|
|
||||||
None: If the subprocess failed.
|
|
||||||
"""
|
|
||||||
# Don't open a cmd prompt window on Windows.
|
|
||||||
startupinfo = None
|
|
||||||
if sys.platform.startswith('win32'):
|
|
||||||
startupinfo = subprocess.STARTUPINFO()
|
|
||||||
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
|
|
||||||
startupinfo.wShowWindow = subprocess.SW_HIDE
|
|
||||||
# Call the formatting command.
|
|
||||||
process = subprocess.Popen(command,
|
|
||||||
stdout=subprocess.PIPE,
|
|
||||||
stderr=subprocess.PIPE,
|
|
||||||
stdin=subprocess.PIPE,
|
|
||||||
startupinfo=startupinfo)
|
|
||||||
stdout, stderr = process.communicate(
|
|
||||||
input='\n'.join(vim.current.buffer).encode('utf-8'))
|
|
||||||
if stderr:
|
|
||||||
raise FormatError(stderr)
|
|
||||||
if not stdout:
|
|
||||||
raise FormatError('No output from {0}.'.format(command[0]))
|
|
||||||
# Split the lines into a list of elements.
|
|
||||||
return stdout.decode('utf-8').split('\n')
|
|
||||||
|
|
||||||
|
|
||||||
def replace_regions(lines):
|
|
||||||
"""Replace formatted regions in the current buffer.
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
lines (list): The formatted buffer lines.
|
|
||||||
"""
|
|
||||||
matcher = difflib.SequenceMatcher(None, vim.current.buffer, lines)
|
|
||||||
for tag, i1, i2, j1, j2 in reversed(matcher.get_opcodes()):
|
|
||||||
if tag != 'equal':
|
|
||||||
vim.current.buffer[i1:i2] = lines[j1:j2]
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
if exists('b:current_syntax')
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
highlight default link requirementsComment Comment
|
|
||||||
highlight default link requirementsVersion Identifier
|
|
||||||
highlight default link requirementsOperator Operator
|
|
||||||
|
|
||||||
syntax region requirementsComment start='^\w*#' end='$' contains=@Spell
|
|
||||||
syntax match requirementsVersion '\d\+\.\d\+\.\d\+\w*'
|
|
||||||
syntax match requirementsOperator '=='
|
|
||||||
121
tasks.yaml
121
tasks.yaml
@@ -1,121 +0,0 @@
|
|||||||
---
|
|
||||||
- set_fact:
|
|
||||||
plugin_dir: '{{vim_config_dir}}/pack/managed'
|
|
||||||
plugins:
|
|
||||||
# ====================== Completion & Diagnostics ========================
|
|
||||||
|
|
||||||
# Conqueror of Completion
|
|
||||||
- repo: neoclide/coc.nvim
|
|
||||||
branch: release
|
|
||||||
# Snippet collection
|
|
||||||
- repo: honza/vim-snippets
|
|
||||||
# Completion for vimscript
|
|
||||||
- repo: vim-scripts/vimomni
|
|
||||||
mode: opt
|
|
||||||
# Version control differences in the sign column
|
|
||||||
- repo: mhinz/vim-signify
|
|
||||||
# Conflict marker utilities
|
|
||||||
- repo: rhysd/conflict-marker.vim
|
|
||||||
# Doxygen documentation stubs
|
|
||||||
- repo: vim-scripts/DoxygenToolkit.vim
|
|
||||||
mode: opt
|
|
||||||
# Easy table manipulation
|
|
||||||
- repo: dhruvasagar/vim-table-mode
|
|
||||||
|
|
||||||
# =========================== User Interface =============================
|
|
||||||
|
|
||||||
# Sanley numbered tabs in tabline
|
|
||||||
- repo: mkitt/tabline.vim
|
|
||||||
# Fuzzy finder
|
|
||||||
# TODO: Still necessary?
|
|
||||||
- repo: junegunn/fzf
|
|
||||||
- repo: junegunn/fzf.vim
|
|
||||||
# Replay macros with the enter key
|
|
||||||
- repo: wincent/replay
|
|
||||||
# Improved % matching
|
|
||||||
- repo: andymass/vim-matchup
|
|
||||||
# Forgot about this...
|
|
||||||
- repo: kbenzie/note.vim
|
|
||||||
# View term and hex colors
|
|
||||||
- repo: guns/xterm-color-table.vim
|
|
||||||
|
|
||||||
# ============================== Text Objects ============================
|
|
||||||
|
|
||||||
# Library for creating text objects
|
|
||||||
- repo: kana/vim-textobj-user
|
|
||||||
# TODO: Doesn't work with nvim
|
|
||||||
- repo: kana/vim-textobj-entire
|
|
||||||
# Text object for URI's
|
|
||||||
- repo: jceb/vim-textobj-uri
|
|
||||||
# Text object for comment blocks
|
|
||||||
- repo: glts/vim-textobj-comment
|
|
||||||
# Text object for sentences
|
|
||||||
- repo: reedes/vim-textobj-sentence
|
|
||||||
# Text object & bindings for arguments
|
|
||||||
- repo: PeterRincker/vim-argumentative
|
|
||||||
|
|
||||||
# ================================ Tim Pope ==============================
|
|
||||||
|
|
||||||
# Toggle comments
|
|
||||||
- repo: tpope/vim-commentary
|
|
||||||
# Edit delimiters
|
|
||||||
- repo: tpope/vim-surround
|
|
||||||
# Better dot command
|
|
||||||
- repo: tpope/vim-repeat
|
|
||||||
# Git wrapper
|
|
||||||
- repo: tpope/vim-fugitive
|
|
||||||
# Unix command warppers
|
|
||||||
- repo: tpope/vim-eunuch
|
|
||||||
# Improved directory browser
|
|
||||||
- repo: tpope/vim-vinegar
|
|
||||||
# PascalCase to under_score to camelCase
|
|
||||||
# TODO: Copy the good bit remove this plugin
|
|
||||||
- repo: tpope/vim-abolish
|
|
||||||
# Mappings for pairs of tasks
|
|
||||||
- repo: tpope/vim-unimpaired
|
|
||||||
# Sane date manipulation
|
|
||||||
- repo: tpope/vim-speeddating
|
|
||||||
# Wisely add end{if,function} fork with cmake support
|
|
||||||
- repo: godbyk/vim-endwise
|
|
||||||
branch: patch-1
|
|
||||||
# Text object & formatting for json
|
|
||||||
- repo: tpope/vim-jdaddy
|
|
||||||
# Granular project configuration
|
|
||||||
- repo: tpope/vim-projectionist
|
|
||||||
|
|
||||||
# ================================ tmux ==================================
|
|
||||||
|
|
||||||
# Seemless vim/tmux pane navigation
|
|
||||||
- repo: 'christoomey/vim-tmux-navigator'
|
|
||||||
mode: opt
|
|
||||||
# Enable focus events when in tmux session
|
|
||||||
- repo: 'tmux-plugins/vim-tmux-focus-events'
|
|
||||||
mode: opt
|
|
||||||
|
|
||||||
# =============================== Syntax =================================
|
|
||||||
|
|
||||||
- repo: editorconfig/editorconfig-vim
|
|
||||||
- repo: kalekundert/vim-coiled-snake
|
|
||||||
- repo: kbenzie/vim-spirv
|
|
||||||
- repo: rperier/vim-cmake-syntax
|
|
||||||
- repo: tikhomirov/vim-glsl
|
|
||||||
- repo: beyondmarc/hlsl.vim
|
|
||||||
- repo: frasercrmck/opencl.vim
|
|
||||||
- repo: asciidoc/vim-asciidoc
|
|
||||||
- repo: mustache/vim-mustache-handlebars
|
|
||||||
- repo: joshglendenning/vim-caddyfile
|
|
||||||
- repo: kbenzie/vim-khr
|
|
||||||
- repo: jrozner/vim-antlr
|
|
||||||
- repo: sophacles/vim-bundle-mako
|
|
||||||
- repo: Glench/Vim-Jinja2-Syntax
|
|
||||||
|
|
||||||
- name: remove minpac directory
|
|
||||||
when: ansible_os_family != "Windows"
|
|
||||||
file:
|
|
||||||
path: '{{vim_config_dir}}/pack/minpac'
|
|
||||||
state: absent
|
|
||||||
- name: remove minpac directory
|
|
||||||
when: ansible_os_family == "Windows"
|
|
||||||
win_file:
|
|
||||||
path: '{{vim_config_dir}}/pack/minpac'
|
|
||||||
state: absent
|
|
||||||
232
vimrc
232
vimrc
@@ -11,21 +11,140 @@ if has('syntax') && !exists('g:syntax_on')
|
|||||||
syntax enable
|
syntax enable
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if exists('*minpac#init')
|
||||||
|
" When minpac is loaded define the Pack command to add packages.
|
||||||
|
command! -nargs=+ Pack call minpac#add(<args>)
|
||||||
|
else
|
||||||
|
" Otherwise define the Pack command to do nothing.
|
||||||
|
command! -nargs=+ Pack
|
||||||
|
endif
|
||||||
|
|
||||||
" Append work config to runtimepath and packpath.
|
" Append work config to runtimepath and packpath.
|
||||||
set runtimepath+=~/.config/work
|
set runtimepath+=~/.config/work
|
||||||
set packpath+=~/.config/work
|
set packpath+=~/.config/work
|
||||||
|
|
||||||
" Disable unused providers
|
" vim-airline - improved status bar
|
||||||
let g:loaded_node_provider = 0
|
Pack 'vim-airline/vim-airline'
|
||||||
let g:loaded_perl_provider = 0
|
let g:airline#extensions#branch#enabled = 0
|
||||||
let g:loaded_ruby_provider = 0
|
let g:airline#extensions#hunks#enabled = 0
|
||||||
|
let g:airline#extensions#wordcount#enabled = 0
|
||||||
|
for s:setting in ['left_sep', 'right_sep', 'section_error', 'section_warning']
|
||||||
|
exec 'let g:airline_'.s:setting.' = ""'
|
||||||
|
endfor
|
||||||
|
" tabline.vim - sanely numbered tabs
|
||||||
|
Pack 'mkitt/tabline.vim'
|
||||||
|
|
||||||
" Markdown fenced code block languages
|
" coc.nvim Conqueror of Completion
|
||||||
|
Pack 'neoclide/coc.nvim', {'branch': 'release'}
|
||||||
|
|
||||||
|
" ultisnips - snippet engine
|
||||||
|
Pack 'SirVer/ultisnips'
|
||||||
|
Pack 'honza/vim-snippets'
|
||||||
|
" vim-cmake-completion - completion & help
|
||||||
|
Pack 'kbenzie/vim-cmake-completion', {'type': 'opt'}
|
||||||
|
" vimomni - Completion for vimscript
|
||||||
|
Pack 'vim-scripts/vimomni', {'type': 'opt'}
|
||||||
|
|
||||||
|
" ale - Asynchronous Lint Engine
|
||||||
|
Pack 'w0rp/ale'
|
||||||
|
let g:ale_sign_error = '▸'
|
||||||
|
let g:ale_sign_warning = '▸'
|
||||||
|
let g:ale_echo_msg_format = '[%linter%] %s (%code%)'
|
||||||
|
let g:ale_linters = {'c': [], 'cpp': []}
|
||||||
|
let g:ale_cmake_cmakelint_options =
|
||||||
|
\ '-convention/filename,-package/consistency,-package/stdargs'
|
||||||
|
|
||||||
|
" Version control differences in the sign column
|
||||||
|
Pack 'mhinz/vim-signify'
|
||||||
|
|
||||||
|
" format.vim - format with text objects
|
||||||
|
Pack 'git@bitbucket.org:infektor/format.vim.git'
|
||||||
|
|
||||||
|
" vim-textobj-user - library for creating text objects
|
||||||
|
Pack 'kana/vim-textobj-user'
|
||||||
|
" vim-textobj-entire - Entire file text object
|
||||||
|
let g:textobj_entire_no_default_key_mappings = 1
|
||||||
|
Pack 'kana/vim-textobj-entire'
|
||||||
|
xmap a% <Plug>(textobj-entire-a)
|
||||||
|
omap a% <Plug>(textobj-entire-a)
|
||||||
|
xmap i% <Plug>(textobj-entire-i)
|
||||||
|
omap i% <Plug>(textobj-entire-i)
|
||||||
|
" vim-textobj-parameter - Parameter text object
|
||||||
|
Pack 'sgur/vim-textobj-parameter'
|
||||||
|
" vim-textobj-uri - URI text object
|
||||||
|
Pack 'jceb/vim-textobj-uri'
|
||||||
|
" vim-textobj-comment - Comment text object
|
||||||
|
Pack 'glts/vim-textobj-comment'
|
||||||
|
omap a/ <Plug>(textobj-comment-a)
|
||||||
|
xmap a/ <Plug>(textobj-comment-a)
|
||||||
|
omap i/ <Plug>(textobj-comment-i)
|
||||||
|
xmap i/ <Plug>(textobj-comment-i)
|
||||||
|
" vim-textobj-sentence - Improved sentence text object
|
||||||
|
Pack 'reedes/vim-textobj-sentence'
|
||||||
|
|
||||||
|
" vim-commentary - toggle comments
|
||||||
|
Pack 'tpope/vim-commentary'
|
||||||
|
" vim-surround - edit delimiters
|
||||||
|
Pack 'tpope/vim-surround'
|
||||||
|
" vim-repeat - better dot command
|
||||||
|
Pack 'tpope/vim-repeat'
|
||||||
|
" vim-fugitive - git wrapper
|
||||||
|
Pack 'tpope/vim-fugitive'
|
||||||
|
" vim-eunuch - unix command warppers
|
||||||
|
Pack 'tpope/vim-eunuch'
|
||||||
|
" vim-vinegar - improved directory browser
|
||||||
|
Pack 'tpope/vim-vinegar'
|
||||||
|
" vim-abolish - CamelCase to under_score to mixedCase
|
||||||
|
" TODO: Copy the good bit remove this plugin
|
||||||
|
Pack 'tpope/vim-abolish'
|
||||||
|
" vim-unimpaired - for pairs of tasks
|
||||||
|
Pack 'tpope/vim-unimpaired'
|
||||||
|
" vim-speeddating - sane date manipulation
|
||||||
|
Pack 'tpope/vim-speeddating'
|
||||||
|
" vim-endwise - wisely add end{if,function}, fork with cmake support
|
||||||
|
Pack 'godbyk/vim-endwise', {'rev': 'patch-1'}
|
||||||
|
" vim-jdaddy - text object & formatting for json
|
||||||
|
Pack 'tpope/vim-jdaddy'
|
||||||
|
" vim-projectionist - granular project configuration
|
||||||
|
Pack 'tpope/vim-projectionist'
|
||||||
|
|
||||||
|
" fzf.vim - Fuzzy finder
|
||||||
|
Pack 'junegunn/fzf'
|
||||||
|
Pack 'junegunn/fzf.vim'
|
||||||
|
let g:fzf_action = {
|
||||||
|
\ 'ctrl-t': 'tab split',
|
||||||
|
\ 'ctrl-s': 'split',
|
||||||
|
\ 'ctrl-v': 'vsplit'
|
||||||
|
\ }
|
||||||
|
|
||||||
|
Pack 'kbenzie/note.vim'
|
||||||
|
let g:note_directory = '~/Sync/Notes'
|
||||||
|
|
||||||
|
if !has('win32')
|
||||||
|
" Seemless vim/tmux pane navigation
|
||||||
|
Pack 'christoomey/vim-tmux-navigator'
|
||||||
|
" Enable focus events when in tmux session
|
||||||
|
Pack 'tmux-plugins/vim-tmux-focus-events'
|
||||||
|
endif
|
||||||
|
|
||||||
|
" replay macros with the enter key
|
||||||
|
Pack 'wincent/replay'
|
||||||
|
" vim-matchit - Improved % matching
|
||||||
|
Pack 'andymass/vim-matchup'
|
||||||
|
let g:matchup_matchparen_offscreen = {'method': 'status_manual'}
|
||||||
|
|
||||||
|
" vim-table-mode - Easy table manipulation
|
||||||
|
Pack 'dhruvasagar/vim-table-mode'
|
||||||
|
let g:table_mode_map_prefix = '<leader>t'
|
||||||
|
let g:table_mode_toggle_map = 'M'
|
||||||
|
|
||||||
|
" DoxygenToolkit.vim - documentation stubs
|
||||||
|
Pack 'vim-scripts/DoxygenToolkit.vim', {'type': 'opt'}
|
||||||
|
let g:DoxygenToolkit_commentType = 'C++'
|
||||||
|
|
||||||
|
" markdown fenced code block languages
|
||||||
let g:markdown_fenced_languages =
|
let g:markdown_fenced_languages =
|
||||||
\ ['cpp', 'c', 'cmake', 'console', 'sh', 'vim', 'python', 'yaml']
|
\ ['cpp', 'c', 'cmake', 'console', 'sh', 'vim', 'python', 'yaml']
|
||||||
|
|
||||||
" reStructedText enable code styles
|
|
||||||
let g:rst_style = 1
|
|
||||||
" reStructuredText code block languages
|
" reStructuredText code block languages
|
||||||
let g:rst_syntax_code_list = {
|
let g:rst_syntax_code_list = {
|
||||||
\ 'vim': ['vim'],
|
\ 'vim': ['vim'],
|
||||||
@@ -36,81 +155,34 @@ let g:rst_syntax_code_list = {
|
|||||||
\ 'python': ['python']
|
\ 'python': ['python']
|
||||||
\ }
|
\ }
|
||||||
|
|
||||||
|
" Python folding
|
||||||
|
Pack 'kalekundert/vim-coiled-snake'
|
||||||
|
|
||||||
|
" reStructedText
|
||||||
|
let g:rst_style = 1
|
||||||
|
|
||||||
" Enable builtin syntax folding
|
" Enable builtin syntax folding
|
||||||
let g:xml_syntax_folding = 1
|
let g:xml_syntax_folding = 1
|
||||||
let g:sh_fold_enabled = 1
|
let g:sh_fold_enabled = 1
|
||||||
|
|
||||||
if wsl#isDetected()
|
" xterm-color-table.vim - view term and hex colors
|
||||||
" Make gx work in WSL
|
Pack 'guns/xterm-color-table.vim'
|
||||||
let g:netrw_browsex_viewer='cmd.exe /C start'
|
|
||||||
endif
|
|
||||||
|
|
||||||
if tmux#inSession()
|
" Syntax plugins
|
||||||
" Seemless vim/tmux pane navigation
|
Pack 'kbenzie/vim-spirv'
|
||||||
packadd vim-tmux-navigator
|
|
||||||
let g:tmux_navigator_no_mappings = 1
|
|
||||||
" Enable focus events when in tmux session
|
|
||||||
packadd vim-tmux-focus-events
|
|
||||||
endif
|
|
||||||
|
|
||||||
" coc.nvim
|
|
||||||
let g:coc_global_extensions = [
|
|
||||||
\ 'coc-clangd',
|
|
||||||
\ 'coc-cmake',
|
|
||||||
\ 'coc-css',
|
|
||||||
\ 'coc-docker',
|
|
||||||
\ 'coc-html',
|
|
||||||
\ 'coc-jedi',
|
|
||||||
\ 'coc-json',
|
|
||||||
\ 'coc-marketplace',
|
|
||||||
\ 'coc-pyright',
|
|
||||||
\ 'coc-snippets',
|
|
||||||
\ 'coc-vimlsp',
|
|
||||||
\ 'coc-yaml',
|
|
||||||
\]
|
|
||||||
if has("win32")
|
|
||||||
let g:coc_global_extensions += [
|
|
||||||
\ 'coc-powershell'
|
|
||||||
\]
|
|
||||||
endif
|
|
||||||
let g:coc_default_semantic_highlight_groups = 0
|
|
||||||
|
|
||||||
" vim-signify
|
|
||||||
let g:signify_sign_change = '~'
|
|
||||||
|
|
||||||
" vim-textobj-entire
|
|
||||||
let g:textobj_entire_no_default_key_mappings = 1
|
|
||||||
xmap a% <Plug>(textobj-entire-a)
|
|
||||||
omap a% <Plug>(textobj-entire-a)
|
|
||||||
xmap i% <Plug>(textobj-entire-i)
|
|
||||||
omap i% <Plug>(textobj-entire-i)
|
|
||||||
" vim-textobj-comment
|
|
||||||
omap a/ <Plug>(textobj-comment-a)
|
|
||||||
xmap a/ <Plug>(textobj-comment-a)
|
|
||||||
omap i/ <Plug>(textobj-comment-i)
|
|
||||||
xmap i/ <Plug>(textobj-comment-i)
|
|
||||||
|
|
||||||
" fzf.vim
|
|
||||||
let g:fzf_action = {
|
|
||||||
\ 'ctrl-t': 'tab split',
|
|
||||||
\ 'ctrl-s': 'split',
|
|
||||||
\ 'ctrl-v': 'vsplit'
|
|
||||||
\ }
|
|
||||||
|
|
||||||
" note.vim
|
|
||||||
let g:note_directory = '~/Sync/Notes'
|
|
||||||
|
|
||||||
" vim-matchit
|
|
||||||
let g:matchup_matchparen_offscreen = {'method': 'status_manual'}
|
|
||||||
|
|
||||||
" vim-table-mode
|
|
||||||
let g:table_mode_map_prefix = '<leader>t'
|
|
||||||
let g:table_mode_toggle_map = 'M'
|
|
||||||
|
|
||||||
" DoxygenToolkit.vim
|
|
||||||
let g:DoxygenToolkit_commentType = 'C++'
|
|
||||||
|
|
||||||
" vim-spirv
|
|
||||||
let g:spirv_enable_current_id = 0
|
|
||||||
let g:spirv_enable_extinst_error = 0
|
|
||||||
let g:spirv_current_id_highlight = 'ctermbg=234, guibg=#1c1c1c'
|
let g:spirv_current_id_highlight = 'ctermbg=234, guibg=#1c1c1c'
|
||||||
|
Pack 'rperier/vim-cmake-syntax'
|
||||||
|
Pack 'tikhomirov/vim-glsl'
|
||||||
|
Pack 'beyondmarc/hlsl.vim'
|
||||||
|
Pack 'frasercrmck/opencl.vim'
|
||||||
|
Pack 'asciidoc/vim-asciidoc'
|
||||||
|
Pack 'mustache/vim-mustache-handlebars'
|
||||||
|
Pack 'joshglendenning/vim-caddyfile'
|
||||||
|
Pack 'kbenzie/vim-khr'
|
||||||
|
Pack 'jrozner/vim-antlr'
|
||||||
|
|
||||||
|
" Plugins for remote integrations
|
||||||
|
Pack 'greymd/oscyank.vim', {'type': 'opt'}
|
||||||
|
if tmux#isOption('set-clipboard', 'on')
|
||||||
|
packadd oscyank.vim
|
||||||
|
endif
|
||||||
|
|||||||
Reference in New Issue
Block a user