From ea3c9c3be1422d4e956afdf72ae63394ef506ca8 Mon Sep 17 00:00:00 2001 From: Trevor Vallender Date: Sun, 5 Feb 2023 21:31:18 +0000 Subject: [PATCH] =?UTF-8?q?Initial=20Neovim=20setup=E2=80=94now=20I=20just?= =?UTF-8?q?=20need=20to=20learn=20how=20to=20use=20it?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- users/tsv/bash_profile | 2 +- users/tsv/home.nix | 4 +++ users/tsv/nvim/init.vim | 76 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 1 deletion(-) diff --git a/users/tsv/bash_profile b/users/tsv/bash_profile index e071e0d..9342fe3 100644 --- a/users/tsv/bash_profile +++ b/users/tsv/bash_profile @@ -33,7 +33,7 @@ BOLD='\033[01m' PS1="\n\n[$GREEN\\]\h$CLEAR\\]] [$BLUE\\]\w$CLEAR\\]]" PS1+=' $(__git_ps1 [$YELLOW%s$CLEAR]) \n' -PS1+="$ \[$BOLD\]" +PS1+="ॐ \[$BOLD\]" trap 'printf "\033[0m" >&2' DEBUG diff --git a/users/tsv/home.nix b/users/tsv/home.nix index 39e75d7..56b357a 100644 --- a/users/tsv/home.nix +++ b/users/tsv/home.nix @@ -26,6 +26,7 @@ }; home.packages = with pkgs; [ + vimPlugins.vim-plug firefox git-crypt gnupg @@ -33,6 +34,7 @@ docker-compose ruby_3_1 rubyPackages_3_1.dip + rubyPackages_3_1.solargraph calibre thunderbird anki @@ -46,6 +48,8 @@ winetricks ]; + + home.file.".bash_profile".source = ./bash_profile; home.file.".tmux.conf".source = ./tmux.conf; xdg.configFile."git/config".source = ./git/config; diff --git a/users/tsv/nvim/init.vim b/users/tsv/nvim/init.vim index 5a47e09..86a4821 100644 --- a/users/tsv/nvim/init.vim +++ b/users/tsv/nvim/init.vim @@ -1,3 +1,25 @@ +if empty(glob('~/.vim/autoload/plug.vim')) + silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs + \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim +endif + +" Run PlugInstall if there are missing plugins +autocmd VimEnter * if len(filter(values(g:plugs), '!isdirectory(v:val.dir)')) + \| PlugInstall --sync | source $MYVIMRC +\| endif + +call plug#begin() +Plug 'morhetz/gruvbox' +Plug 'preservim/nerdtree' +Plug 'ryanoasis/vim-devicons' +Plug 'neovim/nvim-lspconfig' +Plug 'hrsh7th/nvim-cmp' +Plug 'nvim-telescope/telescope.nvim' +Plug 'thoughtbot/vim-rspec' +Plug 'tpope/vim-rails' +Plug 'tpope/vim-endwise' +call plug#end() + set nocompatible set showmatch set ignorecase @@ -10,9 +32,63 @@ set expandtab set shiftwidth=2 set autoindent set number +set relativenumber set wildmode=longest,list set cc=80 filetype plugin indent on set clipboard=unnamedplus set cursorline +colorscheme gruvbox + +lua << EOF +require'lspconfig'.solargraph.setup{} + +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 + 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 + +-- Use a loop to conveniently call 'setup' on multiple servers and +-- map buffer local keybindings when the language server attaches +local servers = { "solargraph" } +for _, lsp in ipairs(servers) do + nvim_lsp[lsp].setup { + on_attach = on_attach, + flags = { + debounce_text_changes = 150, + } +} +end +EOF +