let mapleader=" " " ----------------- " Plugins. " ----------------- call plug#begin('~/.nvim/plugged') Plug 'gruvbox-community/gruvbox' Plug 'neovim/nvim-lspconfig' call plug#end() " ----------------- " Setters. " ----------------- set termguicolors set background=dark colorscheme gruvbox set relativenumber set number set expandtab set signcolumn=yes set mouse=a set scrolloff=8 set tabstop=4 set softtabstop=4 set shiftwidth=4 set smartindent set expandtab set list set listchars=tab:>-,trail:- set hidden set nobackup set noswapfile set hlsearch set incsearch if executable('rg') set grepprg=rg\ --vimgrep endif " ----------------- " LSP & Complete. " ----------------- set completeopt=menuone,noinsert,noselect lua << EOF local on_attach = function(_client, bufnr) -- Install `omnifunc` completion handler, get completion with . vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc") -- Key mappings. local opts = { noremap=true, silent=true } vim.api.nvim_buf_set_keymap(bufnr, "n", "K", "lua vim.lsp.buf.hover()", opts) vim.api.nvim_buf_set_keymap(bufnr, "n", "", "lua vim.lsp.buf.definition()", opts) vim.api.nvim_buf_set_keymap(bufnr, "n", "r", "lua vim.lsp.buf.references()", opts) vim.api.nvim_buf_set_keymap(bufnr, "n", "i", "lua vim.lsp.buf.implementation()", opts) end -- Setup rust-analyzer. require'lspconfig'.rust_analyzer.setup { on_attach = on_attach, } -- Setup clangd. require'lspconfig'.clangd.setup { cmd = { "clangd", "--background-index", "--completion-style=detailed" }, on_attach = on_attach, } EOF " ----------------- " Mappings. " ----------------- vnoremap p "_dP " ----------------- " Autogroups. " ----------------- augroup AG_highlight_yank autocmd! autocmd TextYankPost * silent! lua require'vim.highlight'.on_yank({timeout = 300}) augroup END