The oblitum fork of YouCompleteMe is getting dated and uses LLVM 4.0 on macOS, this results in erroneous errors in the system headers on macOS since it's not been updated to match upstream. Use Valloric's repo to avoid these errors on macOS.
200 lines
5.9 KiB
VimL
200 lines
5.9 KiB
VimL
set encoding=utf-8
|
|
scriptencoding 'utf-8'
|
|
|
|
" Set leader to space
|
|
let g:mapleader = ' '
|
|
|
|
if has('autocmd')
|
|
filetype plugin indent on
|
|
endif
|
|
if has('syntax') && !exists('g:syntax_on')
|
|
syntax enable
|
|
endif
|
|
|
|
" Append work config to the runttime path.
|
|
set runtimepath+=~/.config/work
|
|
|
|
" Plugins
|
|
call plug#begin('~/.vim/bundle')
|
|
|
|
" Load local plugins first, allows local dev whilst also being installed.
|
|
if filereadable(expand('~/.vim/local.vim'))
|
|
source ~/.vim/local.vim
|
|
endif
|
|
|
|
" vim-airline - improved status bar
|
|
" TODO: Get rid of airline and roll your own
|
|
Plug 'vim-airline/vim-airline'
|
|
let g:airline#extensions#branch#enabled = 0
|
|
let g:airline#extensions#hunks#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
|
|
Plug 'mkitt/tabline.vim'
|
|
|
|
" YouCompleteMe
|
|
" TODO: Try out neovim completion plugins to see if they are better
|
|
if !platform#is_windows()
|
|
if platform#is_linux()
|
|
" YouCompleteMe with parameter completion
|
|
Plug 'oblitum/YouCompleteMe', {'do': './install.py --clang-completer'}
|
|
else
|
|
" YouCompleteMe upstream works best on macOS
|
|
Plug 'Valloric/YouCompleteMe', {'do': './install.py --clang-completer'}
|
|
endif
|
|
let g:ycm_key_list_select_completion = ['<C-n>', '<Down>']
|
|
let g:ycm_key_list_previous_completion = ['<C-p>', '<Up>']
|
|
let g:ycm_min_num_of_chars_for_completion = 1
|
|
let g:ycm_complete_in_comments = 1
|
|
let g:ycm_complete_in_strings = 1
|
|
let g:ycm_collect_identifiers_from_comments_and_strings = 1
|
|
let g:ycm_seed_identifiers_with_syntax = 1
|
|
let g:ycm_autoclose_preview_window_after_insertion = 1
|
|
let g:ycm_always_populate_location_list = 1
|
|
let g:ycm_error_symbol = '▸'
|
|
let g:ycm_warning_symbol = '▸'
|
|
let g:ycm_goto_buffer_command = 'horizontal-split'
|
|
endif
|
|
if has('python')
|
|
" ultisnips - snippet engine
|
|
Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets'
|
|
endif
|
|
" vim-cmake-completion - completion & help
|
|
Plug 'kbenzie/vim-cmake-completion', {'for': ['cmake']}
|
|
" vimomni - Completion for vimscript
|
|
Plug 'vim-scripts/vimomni', {'for': ['vim']}
|
|
|
|
" ale - Asynchronous Lint Engine
|
|
Plug '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': []}
|
|
|
|
" git diff in the sign column
|
|
Plug 'airblade/vim-gitgutter'
|
|
if exists('&signcolumn')
|
|
set signcolumn=yes
|
|
else
|
|
let g:gitgutter_sign_column_always = 1
|
|
endif
|
|
|
|
if has('python')
|
|
" format.vim - format with text objects
|
|
Plug 'git@bitbucket.org:infektor/format.vim.git'
|
|
endif
|
|
|
|
" vim-textobj-user - library for creating text objects
|
|
Plug 'kana/vim-textobj-user'
|
|
" vim-textobj-entire - Entire file text object
|
|
let g:textobj_entire_no_default_key_mappings = 1
|
|
Plug '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
|
|
Plug 'sgur/vim-textobj-parameter'
|
|
" vim-textobj-uri - URI text object
|
|
Plug 'jceb/vim-textobj-uri'
|
|
" vim-textobj-comment - Comment text object
|
|
Plug '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
|
|
Plug 'reedes/vim-textobj-sentence'
|
|
|
|
" vim-commentary - toggle comments
|
|
Plug 'tpope/vim-commentary'
|
|
" vim-surround - edit delimiters
|
|
Plug 'tpope/vim-surround'
|
|
" vim-repeat - better dot command
|
|
Plug 'tpope/vim-repeat'
|
|
" vim-fugitive - git wrapper
|
|
Plug 'tpope/vim-fugitive'
|
|
" vim-eunuch - unix command warppers
|
|
Plug 'tpope/vim-eunuch'
|
|
" vim-vinegar - improved directory browser
|
|
Plug 'tpope/vim-vinegar'
|
|
" vim-abolish - CamelCase to under_score to mixedCase
|
|
" TODO: Copy the good bit remove this plugin
|
|
Plug 'tpope/vim-abolish'
|
|
" vim-unimpaired - for pairs of tasks
|
|
Plug 'tpope/vim-unimpaired'
|
|
" vim-speeddating - sane date manipulation
|
|
Plug 'tpope/vim-speeddating'
|
|
" vim-endwise - wisely add end{if,function}, fork with cmake support
|
|
Plug 'godbyk/vim-endwise', {'branch': 'patch-1'}
|
|
" vim-jdaddy - text object & formatting for json
|
|
Plug 'tpope/vim-jdaddy'
|
|
" vim-projectionist - granular project configuration
|
|
Plug 'tpope/vim-projectionist'
|
|
|
|
" fzf.vim - Fuzzy finder
|
|
if !platform#is_windows()
|
|
Plug 'junegunn/fzf', {'dir': '~/.fzf', 'do': './install --all --no-update-rc'}
|
|
Plug 'junegunn/fzf.vim'
|
|
let g:fzf_action = {
|
|
\ 'ctrl-t': 'tab split',
|
|
\ 'ctrl-s': 'split',
|
|
\ 'ctrl-v': 'vsplit'
|
|
\ }
|
|
endif
|
|
|
|
Plug 'kbenzie/note.vim'
|
|
let g:note_directory = '~/Sync/Notes'
|
|
|
|
if !platform#is_windows()
|
|
" Seemless vim/tmux pane navigation
|
|
Plug 'christoomey/vim-tmux-navigator'
|
|
" Enable focus events when in tmux session
|
|
Plug 'tmux-plugins/vim-tmux-focus-events'
|
|
endif
|
|
|
|
" replay macros with the enter key
|
|
Plug 'wincent/replay'
|
|
" vim-matchit - Improved % matching
|
|
Plug 'andymass/vim-matchup'
|
|
|
|
" vim-table-mode - Easy table manipulation
|
|
Plug 'dhruvasagar/vim-table-mode'
|
|
let g:table_mode_map_prefix = '<leader>t'
|
|
let g:table_mode_toggle_map = 'M'
|
|
|
|
" DoxygenToolkit.vim - documentation stubs
|
|
Plug 'vim-scripts/DoxygenToolkit.vim', {'for': ['cpp', 'c']}
|
|
let g:DoxygenToolkit_commentType = 'C++'
|
|
|
|
" markdown fenced code block languages
|
|
let g:markdown_fenced_languages =
|
|
\ ['cpp', 'c', 'cmake', 'sh', 'vim', 'python', 'yaml']
|
|
|
|
" Python folding
|
|
Plug 'kalekundert/vim-coiled-snake'
|
|
|
|
" Enable builtin syntax folding
|
|
let g:xml_syntax_folding = 1
|
|
let g:sh_fold_enabled = 1
|
|
|
|
" xterm-color-table.vim - view term and hex colors
|
|
Plug 'guns/xterm-color-table.vim'
|
|
|
|
" SPIR-V syntax
|
|
Plug 'kbenzie/vim-spirv'
|
|
let g:spirv_current_id_highlight = 'ctermbg=234, guibg=#1c1c1c'
|
|
|
|
" CMake, GLSL, HLSL, OpenCL C syntax
|
|
Plug 'rperier/vim-cmake-syntax'
|
|
Plug 'tikhomirov/vim-glsl'
|
|
Plug 'beyondmarc/hlsl.vim'
|
|
Plug 'frasercrmck/opencl.vim'
|
|
Plug 'asciidoc/vim-asciidoc'
|
|
Plug 'mustache/vim-mustache-handlebars'
|
|
Plug 'joshglendenning/vim-caddyfile'
|
|
Plug 'kbenzie/vim-khr'
|
|
|
|
call plug#end()
|