vim/vimrc
Kenneth Benzie (Benie) 64c8bc6b40 Use upstream YouCompleteMe on macOS
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.
2018-10-04 10:20:02 +01:00

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()