From c9113d3425288b6aa00030c68a29e6ad199d793d Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Mon, 24 Jan 2022 23:26:24 -0700 Subject: [PATCH] make changes for better local changes and modularize nvim configs --- .chezmoiignore | 1 + README.md | 6 + dot_config/nvim/cmp_init.vim | 180 ++--------------------- dot_config/nvim/coc_init.vim | 133 ++--------------- dot_config/nvim/coq_init.vim | 180 ++--------------------- dot_config/nvim/init.vim | 123 ++-------------- dot_config/nvim/templates/general.vim | 155 +++++++++++++++++++ dot_config/nvim/templates/lsp_keymap.vim | 32 ++++ dot_config/nvim/templates/treesitter.vim | 23 +++ dot_zshrc | 4 +- 10 files changed, 265 insertions(+), 572 deletions(-) create mode 100644 dot_config/nvim/templates/general.vim create mode 100644 dot_config/nvim/templates/lsp_keymap.vim create mode 100644 dot_config/nvim/templates/treesitter.vim diff --git a/.chezmoiignore b/.chezmoiignore index 6926795..6f7cabe 100644 --- a/.chezmoiignore +++ b/.chezmoiignore @@ -3,4 +3,5 @@ .zsh_history README.md Dockerfile +*.local diff --git a/README.md b/README.md index 5849c27..0d891ac 100644 --- a/README.md +++ b/README.md @@ -7,3 +7,9 @@ Run `docker build -t alpine-devenv . && docker run -it alpine-devenv` to test it Prereqs: `git curl` - Run `sh -c "$(curl -fsLS git.io/chezmoi)" -- init --apply candrewlee14 && zsh` + +## Local Changes + +To make local changes that won't be overridden on re-applying, make changes in corresponding .local files. + +For example, if you want to make local changes to `~/.config/nvim/coq_init.vim`, edit `~/.config/nvim/coq_init.vim.local`. diff --git a/dot_config/nvim/cmp_init.vim b/dot_config/nvim/cmp_init.vim index ea5978c..d7af672 100644 --- a/dot_config/nvim/cmp_init.vim +++ b/dot_config/nvim/cmp_init.vim @@ -1,30 +1,11 @@ -" 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 +source $HOME/.config/nvim/templates/general.vim +source $HOME/.config/nvim/templates/treesitter.vim +source $HOME/.config/nvim/templates/lsp_keymap.vim + +" Theme +colorscheme OceanicNext 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 'sheerun/vim-polyglot' -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' " LSP resources Plug 'neovim/nvim-lspconfig' Plug 'williamboman/nvim-lsp-installer' @@ -50,39 +31,13 @@ Plug 'hrsh7th/vim-vsnip' " Plug 'dcampos/nvim-snippy' " Plug 'dcampos/cmp-snippy' -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 - call plug#end() -set completeopt=menu,menuone,noselect - -" Set leader to comma -let mapleader="," - -" Set to open tree -nnoremap CHADopen - lua < - 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 + local on_attach = attach_lsp local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) lsp_installer.on_server_ready(function(server) @@ -177,92 +103,12 @@ require'nvim-treesitter.configs'.setup { 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() - -set background=dark -" Or if you have Neovim >= 0.1.5 -if (has("termguicolors")) - set termguicolors +" Local config +if filereadable($HOME . "/.vimrc.local") + source ~/.vimrc.local endif -" Theme -syntax enable -" colorscheme gruvbox -colorscheme onedark -"colorscheme OceanicNext - -" 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 +" Specific Local config +if filereadable($HOME . "/.config/nvim/cmp_init.vim.local") + source ~/.config/nvim/cmp_init.vim.local endif - -" Set termdebug -let g:termdebug_wide=1 - diff --git a/dot_config/nvim/coc_init.vim b/dot_config/nvim/coc_init.vim index d9857de..4615679 100644 --- a/dot_config/nvim/coc_init.vim +++ b/dot_config/nvim/coc_init.vim @@ -1,129 +1,9 @@ -set nocompatible - -" 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 +source $HOME/.config/nvim/templates/general.vim 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 'sheerun/vim-polyglot' -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' -" LSP Resources -Plug 'peitalin/vim-jsx-typescript' Plug 'neoclide/coc.nvim', {'branch': 'release'} call plug#end() -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:asyncrun_open = 8 -let g:asyncrun_status = '' - -command! -bang -nargs=* -complete=file Make AsyncRun -program=make @ - -let g:python3_host_prog = '~/.miniconda3/bin/python3' -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 -let g:airline_section_error = airline#section#create_right(['%{g:asyncrun_status}']) - -" Set leader to comma -let mapleader="," -" 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() - -command! -nargs=0 Prettier :CocCommand prettier.formatFile - -" Or if you have Neovim >= 0.1.5 -if (has("termguicolors")) - set termguicolors -endif - -" Theme -syntax enable -set background=dark -"colorscheme OceanicNext -"colorscheme onedark -colorscheme gruvbox - -" 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=300 - -" 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 - " Use tab for trigger completion with characters ahead and navigate. " NOTE: Use command ':verbose imap ' to make sure tab is not mapped by " other plugin before putting this into your config. @@ -267,5 +147,12 @@ nnoremap p :CocListResume nmap e :CocCommand explorer -" Set termdebug -let g:termdebug_wide=1 +" Local config +if filereadable($HOME . "/.vimrc.local") + source ~/.vimrc.local +endif + +" Specific Local config +if filereadable($HOME . "/.config/nvim/coc_init.vim.local") + source ~/.config/nvim/coc_init.vim.local +endif diff --git a/dot_config/nvim/coq_init.vim b/dot_config/nvim/coq_init.vim index 93fe19e..144e418 100644 --- a/dot_config/nvim/coq_init.vim +++ b/dot_config/nvim/coq_init.vim @@ -1,35 +1,12 @@ -" 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 +source $HOME/.config/nvim/templates/general.vim +source $HOME/.config/nvim/templates/treesitter.vim +source $HOME/.config/nvim/templates/lsp_keymap.vim -set completeopt=menu,menuone,noselect +" Theme +set background=dark +colorscheme onedark 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' @@ -37,14 +14,8 @@ 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', @@ -53,58 +24,14 @@ vim.g.coq_settings = { ['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 coc = require "coq" 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 - +local on_attach = attach_lsp -- 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) @@ -126,91 +53,12 @@ lsp_installer.on_server_ready(function(server) 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 +" Local config +if filereadable($HOME . "/.vimrc.local") + source ~/.vimrc.local 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 +" Specific Local config +if filereadable($HOME . "/.config/nvim/coq_init.vim.local") + source ~/.config/nvim/coq_init.vim.local endif - -" Set termdebug -let g:termdebug_wide=1 - diff --git a/dot_config/nvim/init.vim b/dot_config/nvim/init.vim index 70106d6..f23505a 100644 --- a/dot_config/nvim/init.vim +++ b/dot_config/nvim/init.vim @@ -1,119 +1,14 @@ -set nocompatible +source $HOME/.config/nvim/templates/general.vim -" Automatically install vim plug & plugins -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() -Plug 'vim-test/vim-test' -Plug 'tpope/vim-commentary' -Plug 'tpope/vim-surround' -Plug 'sheerun/vim-polyglot' -Plug 'mhartington/oceanic-next' -Plug 'airblade/vim-gitgutter' -Plug 'tpope/vim-fugitive' -Plug 'mhinz/vim-signify' -Plug 'vim-airline/vim-airline' -Plug 'vim-airline/vim-airline-themes' -Plug 'morhetz/gruvbox' -Plug 'peitalin/vim-jsx-typescript' -Plug 'skywind3000/asyncrun.vim' -Plug 'jiangmiao/auto-pairs' -Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } -Plug 'junegunn/fzf.vim' -call plug#end() - -map :Files - -let g:asyncrun_open = 8 -let g:asyncrun_status = '' - -command! -bang -nargs=* -complete=file Make AsyncRun -program=make @ - -let g:python3_host_prog = '~/.miniconda3/bin/python3' -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 -let g:airline_section_error = airline#section#create_right(['%{g:asyncrun_status}']) - -" Set leader to comma -let mapleader="," -" 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() - -command! -nargs=0 Prettier :CocCommand prettier.formatFile - -set background=dark -" Or if you have Neovim >= 0.1.5 -if (has("termguicolors")) - set termguicolors -endif - -" Theme -syntax enable +"Theme colorscheme gruvbox -" 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=300 - -" 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 +" Local config +if filereadable($HOME . "/.vimrc.local") + source ~/.vimrc.local endif -" Navigate buffers like tabs (gt & gT) -nnoremap gb :bnext -nnoremap gB :bprevious - -" Set termdebug -let g:termdebug_wide=1 +" Specific Local config +if filereadable($HOME . "/.config/nvim/init.vim.local") + source ~/.config/nvim/init.vim.local +endif diff --git a/dot_config/nvim/templates/general.vim b/dot_config/nvim/templates/general.vim new file mode 100644 index 0000000..e3b32a4 --- /dev/null +++ b/dot_config/nvim/templates/general.vim @@ -0,0 +1,155 @@ +" 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 nocompatible +set completeopt=menu,menuone,noselect + +" Set leader to comma +let mapleader="," + +call plug#begin() +" Color Schemes +Plug 'rafi/awesome-vim-colorschemes' +Plug 'mhartington/oceanic-next' +Plug 'morhetz/gruvbox' +Plug 'joshdick/onedark.vim' + +" Navigation +Plug 'tpope/vim-commentary' +Plug 'tpope/vim-surround' + +" Commands +Plug 'vim-test/vim-test' +Plug 'skywind3000/asyncrun.vim' +Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } +Plug 'junegunn/fzf.vim' + +" Extra Appearance Features +Plug 'airblade/vim-gitgutter' +Plug 'tpope/vim-fugitive' +Plug 'mhinz/vim-signify' +Plug 'vim-airline/vim-airline' +Plug 'vim-airline/vim-airline-themes' + +" File Navigation +Plug 'ms-jpq/chadtree', {'branch': 'chad', 'do': 'python3 -m chadtree deps'} +" Vista Sidebar +Plug 'liuchengxu/vista.vim' +" Syntax Highlighting +Plug 'sheerun/vim-polyglot' + +call plug#end() + +" Set to open tree +nnoremap CHADopen + +" Set to open Vista Sidebar +nnoremap ; Vista!! + +let g:vista#renderer#enable_icon = 1 +let g:vista#renderer#icons = { +\ "function": "\uf794", +\ "variable": "\uf71b", +\ } +" To enable fzf's preview window set g:vista_fzf_preview. +" The elements of g:vista_fzf_preview will be passed as arguments to fzf#vim#with_preview() +" For example: +let g:vista_fzf_preview = ['right:50%'] + + + +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() + +set background=dark +" Or if you have Neovim >= 0.1.5 +if (has("termguicolors")) + set termguicolors +endif + +" Theme +syntax enable + +" 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 + +" Allow mouse input +set mouse=a + +" 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 + + +nnoremap "+p diff --git a/dot_config/nvim/templates/lsp_keymap.vim b/dot_config/nvim/templates/lsp_keymap.vim new file mode 100644 index 0000000..0e16d3a --- /dev/null +++ b/dot_config/nvim/templates/lsp_keymap.vim @@ -0,0 +1,32 @@ +lua << EOF +local function attach_lsp(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 +EOF diff --git a/dot_config/nvim/templates/treesitter.vim b/dot_config/nvim/templates/treesitter.vim new file mode 100644 index 0000000..da297b3 --- /dev/null +++ b/dot_config/nvim/templates/treesitter.vim @@ -0,0 +1,23 @@ +call plug#begin() +" Highlighting +Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} " We recommend updating the parsers on update +call plug#end() + +lua << EOF + +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, + }, +} + +EOF diff --git a/dot_zshrc b/dot_zshrc index d25eb46..80797ce 100644 --- a/dot_zshrc +++ b/dot_zshrc @@ -120,5 +120,5 @@ nvimp() { # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh -export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" -[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm +# Local config +[[ -f ~/.zshrc.local ]] && source ~/.zshrc.local