mirror of
https://github.com/fluffos/fluffos
synced 2026-08-12 18:26:06 -04:00
* lpc auto completion supports in vim * update * update * update * update * update * update
179 lines
6.2 KiB
VimL
179 lines
6.2 KiB
VimL
let data_dir = has('nvim') ? stdpath('data') . '/site' : '~/.vim'
|
|
if empty(glob(data_dir . '/autoload/plug.vim'))
|
|
silent execute '!curl -fLo '.data_dir.'/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
|
|
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
|
|
endif
|
|
call plug#begin('~/.vim/plugged')
|
|
Plug 'neoclide/coc.nvim', {'branch': 'release'}
|
|
Plug 'jiangmiao/auto-pairs'
|
|
Plug 'vim-airline/vim-airline'
|
|
Plug 'vim-airline/vim-airline-themes'
|
|
Plug 'scrooloose/nerdcommenter'
|
|
Plug 'mhinz/vim-signify'
|
|
Plug 'rhysd/vim-clang-format'
|
|
Plug 'lasorda/lpc.vim'
|
|
Plug 'lasorda/vim-snippets'
|
|
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
|
|
Plug 'junegunn/fzf.vim'
|
|
Plug 'antoinemadec/coc-fzf'
|
|
Plug 'jrozner/vim-antlr'
|
|
Plug 'fatih/vim-go'
|
|
call plug#end()
|
|
|
|
let g:coc_global_extensions = ['coc-lpcd', 'coc-snippets', 'coc-pyright', 'coc-go', 'coc-json', 'coc-lists', 'coc-cmake', 'coc-sh', 'coc-clangd', 'coc-tsserver', 'coc-markdownlint', 'coc-rls', 'coc-java']
|
|
|
|
" TextEdit might fail if hidden is not set.
|
|
set hidden
|
|
|
|
" Some servers have issues with backup files, see #649.
|
|
set nobackup
|
|
set nowritebackup
|
|
|
|
" Having longer updatetime (default is 4000 ms = 4 s) leads to noticeable
|
|
" delays and poor user experience.
|
|
set updatetime=300
|
|
|
|
" Don't pass messages to |ins-completion-menu|.
|
|
set shortmess+=c
|
|
|
|
" Use tab for trigger completion with characters ahead and navigate.
|
|
" NOTE: Use command ':verbose imap <tab>' to make sure tab is not mapped by
|
|
" other plugin before putting this into your config.
|
|
inoremap <silent><expr> <TAB>
|
|
\ pumvisible() ? "\<C-n>" :
|
|
\ <SID>check_back_space() ? "\<TAB>" :
|
|
\ coc#refresh()
|
|
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
|
|
|
|
function! s:check_back_space() abort
|
|
let col = col('.') - 1
|
|
return !col || getline('.')[col - 1] =~# '\s'
|
|
endfunction
|
|
|
|
let g:coc_snippet_next = '<tab>'
|
|
|
|
" Use <c-space> to trigger completion.
|
|
if has('nvim')
|
|
inoremap <silent><expr> <c-space> coc#refresh()
|
|
else
|
|
inoremap <silent><expr> <c-@> coc#refresh()
|
|
endif
|
|
|
|
" Make <CR> auto-select the first completion item and notify coc.nvim to
|
|
" format on enter, <cr> could be remapped by other vim plugin
|
|
inoremap <silent><expr> <cr> pumvisible() ? coc#_select_confirm()
|
|
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
|
|
|
|
" GoTo code navigation.
|
|
nmap <silent> <C-]> <Plug>(coc-definition)
|
|
|
|
" Use K to show documentation in preview window.
|
|
nnoremap <silent> K :call <SID>show_documentation()<CR>
|
|
|
|
function! s:show_documentation()
|
|
if (index(['vim','help'], &filetype) >= 0)
|
|
execute 'h '.expand('<cword>')
|
|
elseif (coc#rpc#ready())
|
|
call CocActionAsync('doHover')
|
|
else
|
|
execute '!' . &keywordprg . " " . expand('<cword>')
|
|
endif
|
|
endfunction
|
|
|
|
" Highlight the symbol and its references when holding the cursor.
|
|
autocmd CursorHold * silent call CocActionAsync('highlight')
|
|
|
|
" Symbol renaming.
|
|
nmap <leader>rn <Plug>(coc-rename)
|
|
|
|
" Formatting selected code.
|
|
xmap <leader>f <Plug>(coc-format-selected)
|
|
nmap <leader>f <Plug>(coc-format-selected)
|
|
|
|
augroup mygroup
|
|
autocmd!
|
|
" Setup formatexpr specified filetype(s).
|
|
autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected')
|
|
" Update signature help on jump placeholder.
|
|
autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp')
|
|
augroup end
|
|
|
|
" Add `:Format` command to format current buffer.
|
|
command! -nargs=0 Format :call CocAction('format')
|
|
|
|
" Remap <C-f> and <C-b> for scroll float windows/popups.
|
|
if has('nvim-0.4.0') || has('patch-8.2.0750')
|
|
nnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
|
|
nnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
|
|
inoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>"
|
|
inoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>"
|
|
vnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
|
|
vnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
|
|
endif
|
|
|
|
" mappings
|
|
nnoremap <silent> <space><space> :<C-u>CocFzfList<CR>
|
|
nnoremap <silent> <space>a :<C-u>CocFzfList diagnostics<CR>
|
|
nnoremap <silent> <space>b :<C-u>CocFzfList diagnostics --current-buf<CR>
|
|
nnoremap <silent> <space>c :<C-u>CocFzfList commands<CR>
|
|
nnoremap <silent> <space>e :<C-u>CocFzfList extensions<CR>
|
|
nnoremap <silent> <space>l :<C-u>CocFzfList location<CR>
|
|
nnoremap <silent> <space>o :<C-u>CocFzfList outline<CR>
|
|
nnoremap <silent> <space>s :<C-u>CocFzfList symbols<CR>
|
|
nnoremap <silent> <space>p :<C-u>CocFzfListResume<CR>
|
|
|
|
" Use <leader>x for convert visual selected code to snippet
|
|
xmap <leader>x <Plug>(coc-convert-snippet)
|
|
|
|
" fzf
|
|
let g:fzf_command_prefix = 'Fzf'
|
|
tnoremap <expr> <Esc> (&filetype == "fzf") ? "<Esc>" : "<c-\><c-n>"
|
|
nnoremap <silent><nowait> <space>f :FzfFiles<CR>
|
|
command! -bang -nargs=? -complete=dir FzfFiles call fzf#vim#files(<q-args>, fzf#vim#with_preview({'options': ['--layout=reverse-list']}), <bang>0)
|
|
|
|
" aireline
|
|
let g:airline_theme='simple'
|
|
set t_Co=256
|
|
let g:airline_powerline_fonts = 1
|
|
let g:airline#extensions#tabline#enabled = 1
|
|
let g:airline#extensions#tabline#show_tabs = 1
|
|
let g:airline#extensions#tabline#buffer_nr_show = 1
|
|
let g:airline#extensions#whitespace#enabled = 0
|
|
let g:airline#extensions#whitespace#symbol = '!'
|
|
if !exists('g:airline_symbols')
|
|
let g:airline_symbols = {}
|
|
endif
|
|
|
|
" unicode symbols
|
|
let g:airline_left_sep = '▶'
|
|
let g:airline_right_sep = '◀'
|
|
let g:airline_symbols.linenr = '¶'
|
|
let g:airline_symbols.branch = '⎇'
|
|
let g:airline_symbols.paste = 'Þ'
|
|
let g:airline_symbols.whitespace = 'Ξ'
|
|
|
|
" nerdcommenter
|
|
let g:NERDSpaceDelims = 1
|
|
let g:NERDCompactSexyComs = 1
|
|
let g:NERDDefaultAlign = 'left'
|
|
let g:NERDAltDelims_c = 1
|
|
let g:NERDCommentEmptyLines = 1
|
|
let g:NERDTrimTrailingWhitespace = 1
|
|
let g:NERDToggleCheckAllLines = 1
|
|
|
|
nnoremap <C-N> :bnext<CR>
|
|
nnoremap <C-P> :bprev<CR>
|
|
set number
|
|
set mouse=a
|
|
set smartindent
|
|
set autowrite
|
|
set shiftwidth=4
|
|
set tabstop=4
|
|
set expandtab
|
|
set incsearch
|
|
set hlsearch
|
|
set fileencodings=utf8,gbk
|
|
set wildmenu wildmode=full
|
|
set wildchar=<Tab> wildcharm=<C-Z>
|
|
set backspace=indent,eol,start
|
|
set belloff=all
|