123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- " neovim config
- " Set up plugin manager
- " https://github.com/junegunn/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
- call plug#begin(stdpath('data') . '/plugged')
- Plug 'chriskempson/base16-vim'
- Plug 'pangloss/vim-javascript'
- Plug 'elzr/vim-json'
- Plug 'rust-lang/rust.vim'
- Plug 'tpope/vim-fugitive'
- Plug 'tpope/vim-surround'
- Plug 'tpope/vim-characterize'
- Plug 'tpope/vim-commentary'
- Plug 'tpope/vim-unimpaired'
- Plug 'tpope/vim-speeddating'
- Plug 'tpope/vim-dadbod'
- " Older ale code feedback.
- "Plugin 'dense-analysis/ale'
- " Newer built-in language server.
- Plug 'neovim/nvim-lspconfig'
- " Finalize plugin system initialization
- call plug#end()
- " Hook up language servers
- lua << EOF
- local nvim_lsp = require('lspconfig')
- -- 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 <c-x><c-o>
- 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', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts)
- buf_set_keymap('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)
- buf_set_keymap('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
- buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
- buf_set_keymap('n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
- buf_set_keymap('n', '<space>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
- buf_set_keymap('n', '<space>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
- buf_set_keymap('n', '<space>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
- buf_set_keymap('n', '<space>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
- buf_set_keymap('n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
- buf_set_keymap('n', '<space>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
- buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
- buf_set_keymap('n', '<space>e', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>', opts)
- buf_set_keymap('n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts)
- buf_set_keymap('n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts)
- buf_set_keymap('n', '<space>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts)
- buf_set_keymap('n', '<space>f', '<cmd>lua vim.lsp.buf.formatting()<CR>', opts)
- end
- -- install the C/C++ server with `apt-get install clangd`
- -- or `dnf install clang-tools-extra`
- -- install the python server with `npm install pyright`
- -- Yes, the python language server is in typescript.
- -- Use a loop to conveniently call 'setup' on multiple servers and
- -- map buffer local keybindings when the language server attaches.
- local servers = { 'clangd', 'pyright', 'rust_analyzer' }
- for _, lsp in ipairs(servers) do
- nvim_lsp[lsp].setup {
- on_attach = on_attach,
- flags = {
- debounce_text_changes = 150,
- }
- }
- end
- EOF
- "set clipboard+=autoselect
- set clipboard+=unnamed
- set ruler
- set expandtab
- set shiftwidth=2
- " Spelling
- set spelllang=en
- autocmd FileType markdown setlocal spell
- autocmd FileType gitcommit setlocal spell
- set background=dark
- " Enable base16 swatch-based colour theme.
- set termguicolors
- "colorscheme base16-black-metal-bathory
- "colorscheme base16-atelier-savanna
- "colorscheme base16-3024
- "colorscheme base16-twilight
- "colorscheme base16-eighties
- "colorscheme base16-mocha
- "colorscheme base16-nord
- colorscheme base16-ia-dark
|