" Automatically install vim plug 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 set completeopt=menu,menuone,noselect call plug#begin() " Color Schemes Plug 'rafi/awesome-vim-colorschemes' Plug 'mhartington/oceanic-next' Plug 'morhetz/gruvbox' Plug 'joshdick/onedark.vim' Plug 'vim-test/vim-test' Plug 'tpope/vim-commentary' Plug 'tpope/vim-surround' Plug 'airblade/vim-gitgutter' Plug 'tpope/vim-fugitive' Plug 'mhinz/vim-signify' Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' Plug 'skywind3000/asyncrun.vim' Plug 'jiangmiao/auto-pairs' Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } Plug 'junegunn/fzf.vim' " Highlighting and File Navigation Plug 'ms-jpq/chadtree', {'branch': 'chad', 'do': 'python3 -m chadtree deps'} Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} " We recommend updating the parsers on update Plug 'sheerun/vim-polyglot' " LSP resources Plug 'neovim/nvim-lspconfig' Plug 'williamboman/nvim-lsp-installer' Plug 'ms-jpq/coq_nvim', {'branch': 'coq'} Plug 'ms-jpq/coq.artifacts', {'branch': 'artifacts'} call plug#end() " Set leader to comma let mapleader="," set omnifunc=v:lua.vim.lsp.omnifunc " Set to open tree nnoremap CHADopen lua << EOF vim.g.coq_settings = { auto_start = 'shut-up', ['keymap.jump_to_mark'] = '', ['display.icons.mode'] = 'none', ['clients.third_party.enabled'] = false, } require'nvim-treesitter.configs'.setup { ensure_installed = { "zig", "python", "c", "bash", "json" }, -- one of "all", "maintained" (parsers with maintainers), or a list of languages sync_install = false, -- install languages synchronously (only applied to `ensure_installed`) ignore_install = { "javascript" }, -- List of parsers to ignore installing highlight = { enable = true, -- false will disable the whole extension -- disable = { "c", "rust" }, -- list of language that will be disabled -- Setting this to true will run `:h syntax` and tree-sitter at the same time. -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). -- Using this option may slow down your editor, and you may see some duplicate highlights. -- Instead of true it can also be a list of languages additional_vim_regex_highlighting = false, }, } local nvim_lsp = require('lspconfig') local coc = require "coq" -- add this local lsp_installer = require("nvim-lsp-installer") -- Use an on_attach function to only map the following keys -- after the language server attaches to the current buffer local on_attach = function(client, bufnr) local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end -- Enable completion triggered by buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') -- Mappings. local opts = { noremap=true, silent=true } -- See `:help vim.lsp.*` for documentation on any of the below functions buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) buf_set_keymap('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) buf_set_keymap('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) buf_set_keymap('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) buf_set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', opts) buf_set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', opts) buf_set_keymap('n', 'e', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) buf_set_keymap('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) buf_set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) buf_set_keymap('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) buf_set_keymap('n', 'f', 'lua vim.lsp.buf.formatting()', opts) end -- Register a handler that will be called for all installed servers. -- Alternatively, you may also register handlers on specific server instances instead (see example below). lsp_installer.on_server_ready(function(server) -- (optional) Customize the options passed to the server -- local opts = {} -- if server.name == "tsserver" then -- opts.root_dir = function() ... end -- end -- This setup() function is exactly the same as lspconfig's setup function. -- Refer to https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md -- Without coq.nvim: -- server:setup(opts) -- With coq.nvim: server:setup(coq.lsp_ensure_capabilities{on_attach = on_attach}) end) EOF map :Files let g:cpp_class_scope_highlight = 1 let g:cpp_member_variable_highlight = 1 let g:cpp_class_decl_highlight = 1 let g:cpp_posix_standard = 1 let g:cpp_experimental_template_highlight = 1 let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#buffer_nr_show = 1 let g:airline_powerline_fonts = 1 let g:airline_theme='tomorrow' let g:airline_solarized_bg='dark' let g:airline#extensions#hunks#enabled=1 let g:airline#extensions#branch#enabled=1 " Quick edit init.vim nnoremap v :n $MYVIMRC " For vim-test: these Ctrl mappings work well when Caps Lock is mapped to Ctrl nmap t :TestNearest nmap t :TestFile nmap t :TestSuite nmap t :TestLast nmap t :TestVisit let test#strategy = "asyncrun" " Reloads vimrc after saving but keep cursor position if !exists('*ReloadVimrc') fun! ReloadVimrc() let save_cursor = getcurpos() source $MYVIMRC call setpos('.', save_cursor) endfun endif autocmd! BufWritePost $MYVIMRC call ReloadVimrc() " Or if you have Neovim >= 0.1.5 if (has("termguicolors")) set termguicolors endif " Theme set t_Co=256 syntax enable set background=dark colorscheme onedark " Navigate buffers like tabs (gt & gT) nnoremap gb :bnext nnoremap gB :bprevious " TextEdit might fail if hidden is not set. set hidden set number set tabstop=4 set shiftwidth=4 set softtabstop=4 set expandtab set smarttab " Some servers have issues with backup files, see #649. set nobackup set nowritebackup " Give more space for displaying messages. set cmdheight=2 " Having longer updatetime (default is 4000 ms = 4 s) leads to noticeable " delays and poor user experience. set updatetime=1000 " Don't pass messages to |ins-completion-menu|. set shortmess+=c " Always show the signcolumn, otherwise it would shift the text each time " diagnostics appear/become resolved. if has("patch-8.1.1564") " Recently vim can merge signcolumn and number column into one set signcolumn=number else set signcolumn=yes endif " Set termdebug let g:termdebug_wide=1