let g:loaded_netrw = 1 let g:loaded_netrwPlugin = 1 if filereadable('/etc/hostname') let hostname=join(readfile('/etc/hostname')) else let hostname='unknown' endif let g:vsnip_snippet_dir = "~/.config/nvim/snippets" let g:vsnip_snippet_dirs = ["~/.config/nvim/local/snippets"] call plug#begin() if filereadable(printf('%s/.config/nvim/local-plug.vim', $HOME)) exec "source " . printf('%s/.config/nvim/local-plug.vim', $HOME) endif Plug 'dylnmc/synstack.vim' Plug 'folke/trouble.nvim' Plug 'google/vim-codefmt' Plug 'google/vim-glaive' Plug 'google/vim-maktaba' Plug 'hrsh7th/cmp-buffer' Plug 'hrsh7th/cmp-nvim-lsp' Plug 'hrsh7th/cmp-nvim-lua' Plug 'hrsh7th/cmp-path' Plug 'hrsh7th/cmp-vsnip' Plug 'hrsh7th/nvim-cmp' Plug 'hrsh7th/vim-vsnip' Plug 'kyazdani42/nvim-web-devicons' Plug 'neovim/nvim-lspconfig' Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} Plug 'nvim-treesitter/playground' Plug 'onsails/lspkind.nvim' Plug 'nvim-tree/nvim-tree.lua' Plug 'vim-airline/vim-airline' Plug 'nvim-lua/plenary.nvim' Plug 'nvim-telescope/telescope.nvim' Plug 'nvim-treesitter/nvim-treesitter-textobjects' Plug 'stevearc/aerial.nvim' Plug 'tpope/vim-surround' Plug 'nvim-lualine/lualine.nvim' Plug 'linrongbin16/lsp-progress.nvim' Plug 'git://git.josher.dev/fieldmarshal.vim.git' Plug 'git://git.josher.dev/bulletjava.vim.git' if has('rneovim') Plug 'git://git.josher.dev/rneovim-userregs.git' endif Plug 'git@git.josher.dev:config.vim.git', \ { 'dir': g:plug_home . '/config.vim', \ 'do': ':UpdateInitVimHook' } call plug#end() command! UpdateInitVimHook source ~/.config/nvim/init.vim PlugInstall set termguicolors set shiftwidth=2 set tabstop=2 set expandtab set nowrap set splitright set splitbelow set wildmode=longest,list,full set scrolloff=8 set number set relativenumber let mapleader=" " " Make splitting more congruent with how Tmux does it. noremap % v noremap " s " Open a terminal in a split below the current file. noremap sterm " Opens a terminal in the directory the current file is in. noremap sTERM " Fix the yank behavior. noremap Y y$ " Format code. This is noremap ú FormatCode " Synstack to help profile syntax highlighting issues. noremap p (SynStack) " Way to find files. noremap ff Telescope find_files noremap Telescope find_files inoremap (vsnip-expand) " When navigating to the beginning of a line, I want to always reset the screen " to the leftmost position. noremap ^ ^zH noremap t TroubleToggle augroup InitVim au! autocmd BufRead *.java,*.c,*.cpp,*.cxx,*.hs TSBufEnable highlight " Automatically stop highligting things when leaving insert mode. If I want " the highlight back, I can just hit 'n' and it will come back. " " I don't know why it can't just be 'noh' and why I have to do this feedkeys " nonsense, but there appears to be a bug of some kind. autocmd InsertLeave * call feedkeys("\noh\") autocmd TextYankPost * \ lua require'vim.highlight'.on_yank( \ { higroup = "IncSearch", timeout = 100 }); augroup END " Local configuration that can be set by hostname or just a local configuration. " Local files are ignored by .gitignore so they won't be added to the repo, " allowing local (*cough* work) configuration to be separate from general " configuration. if isdirectory(printf('%s/.config/nvim/%s', $HOME, hostname)) exec "set rtp+=" . printf('%s/.config/nvim/%s', $HOME, hostname) endif if isdirectory(printf('%s/.config/nvim/local', $HOME)) exec "set rtp+=" . printf('%s/.config/nvim/local', $HOME) endif if filereadable(printf('%s/.config/nvim/%s.vim', $HOME, hostname)) exec "source " . printf('%s/.config/nvim/%s.vim', $HOME, hostname) endif if filereadable(printf('%s/.config/nvim/local.vim', $HOME)) exec "source " . printf('%s/.config/nvim/local.vim', $HOME) endif if isdirectory(printf('%s/.config/nvim/after', $HOME)) exec "set rtp+=" . printf('%s/.config/nvim/after', $HOME) endif noremap nt NvimTreeToggle noremap :e =escape(expand('%:h'), ' \')/ noremap . lua require('windownav').goto_terminal() noremap I lua require('windownav').goto_initvim() noremap ' lua require('windownav').goto_lastwin() nnoremap term nnoremap TERM nmap œ k nmap ï j omap œ k omap ï j omap aœ ak omap aï aj omap iœ ik omap iï ij vmap œ k vmap ï j set textwidth=80 set colorcolumn=+1 if has('rneovim') function! HighlightColorColumns() abort hi MyColorColumn guifg=#3a3a3a guibg=none gui=None hi MyRedColorColumn guifg=#5a1a1a guibg=none gui=None endfunction call HighlightColorColumns() " Grey color column right after text width is grey and in the background and " a red one after the text width which is red and in the foreground. set colorcolumn=+1/│/MyColorColumn/b,+20/│/MyRedColorColumn/f augroup InitVim au ColorScheme * call HighlightColorColumns() augroup END endif " Opens a terminal in the directory of the current file. command! TERM exec "term sh -c " . shellescape(printf("cd %s && exec ", shellescape(expand('%:p:h')))) . '$SHELL' " W = w. I often click when typing :w command! W w augroup lualine_augroup autocmd! autocmd User LspProgressStatusUpdated lua require("lualine").refresh() augroup END lua << EOF function remove_package(str) for k, v in pairs(package.loaded) do if string.match(k, "^" .. str) then package.loaded[k] = nil end end end -- CiderLSP vim.opt.completeopt = { "menu", "menuone", "noselect" } require("lualine").setup({ sections = { lualine_a = { "mode" }, lualine_b = { "filename" }, lualine_c = { } } }) require("lsp") require("lspconfig") -- Diagnostics require("diagnostics") require("nvim-tree").setup() require("treesitter-textobjects-setup") require('telescope').setup({ defaults = { layout_strategy = "center", results_title = false, sorting_strategy = "ascending", layout_config = { center = { width = 0.5, height = 0.5, }, -- other layout configuration here }, -- other defaults configuration here }, -- other configuration values here }) require('aerial').setup({ -- optionally use on_attach to set keymaps when aerial has attached to a buffer on_attach = function(bufnr) -- Jump forwards/backwards with '[[' and ']]' vim.keymap.set('n', '[[', 'AerialPrev', {buffer = bufnr}) vim.keymap.set('n', ']]', 'AerialNext', {buffer = bufnr}) end }) -- You probably also want to set a keymap to toggle aerial vim.keymap.set('n', 'a', 'AerialToggle!') EOF