diff --git a/dot_config/nvim/init.vim b/dot_config/nvim/init.vim index 9a4049d..c225109 100644 --- a/dot_config/nvim/init.vim +++ b/dot_config/nvim/init.vim @@ -1,12 +1,7 @@ call plug#begin('~/.config/nvim/autoload/plugged') Plug 'junegunn/vim-easy-align' -Plug 'tpope/vim-rails' -Plug 'vim-ruby/vim-ruby' -Plug 'hashivim/vim-terraform' -Plug 'cespare/vim-toml' Plug 'ntpeters/vim-better-whitespace' Plug 'itchyny/vim-gitbranch' -Plug 'rust-lang/rust.vim' Plug 'airblade/vim-gitgutter' Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } Plug 'junegunn/fzf.vim' @@ -15,9 +10,10 @@ Plug 'vim-airline/vim-airline-themes' Plug 'kyazdani42/nvim-web-devicons' Plug 'kyazdani42/nvim-tree.lua' Plug 'svermeulen/vimpeccable' -Plug 'sp5/nvim-colors-solarized' Plug 'NoahTheDuke/vim-just' Plug 'dewyze/vim-tada' +Plug 'neovim/nvim-lspconfig' +Plug 'nvim-treesitter/nvim-treesitter', {'do': 'TSUpdate'} call plug#end() set nocompatible @@ -70,8 +66,6 @@ filetype plugin indent on autocmd FileType make set noexpandtab shiftwidth=8 softtabstop=0 autocmd FileType rust set shiftwidth=4 softtabstop=4 tabstop=4 autocmd FileType terraform set expandtab -let g:rustfmt_autosave = 1 -let g:terraform_fmt_on_save = 1 autocmd FileType html set shiftwidth=4 softtabstop=4 tabstop=4 autocmd FileType javascript set shiftwidth=4 softtabstop=4 tabstop=4 autocmd FileType htmldjango set shiftwidth=4 softtabstop=4 tabstop=4 @@ -102,13 +96,6 @@ autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@(EasyAlign) @@ -148,6 +135,8 @@ noremap :call NumberToggle() nnoremap e :NvimTreeToggle nnoremap r :NvimTreeRefresh +let g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.7 } } + lua << EOF require("nvim-tree").setup({ sort_by = "case_sensitive", @@ -173,3 +162,115 @@ require("nvim-tree").setup({ }, }) EOF + +lua << EOF +require('nvim-treesitter.configs').setup { + highlight = { + enable = true, + disable = {}, + }, + indent = { + enable = false, + disable = {}, + }, + ensure_installed = { + "tsx", + "typescript", + "bash", + "vim", + "json", + "yaml", + "html", + "css", + "scss", + "lua", + "ruby", + "rust", + } + } + +local parser_config = require "nvim-treesitter.parsers".get_parser_configs() +-- parser_config.tsx.parser_to_fil = { "javascript", "typescript.tsx" } +EOF + +lua << EOF +local nvim_lsp = require('lspconfig') +local protocol = require('vim.lsp.protocol') + +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 + + -- Mappings + local opts = { noremap = true, silent = true } + + buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) + buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', 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('i', '', 'lua vim.lsp.buf.signature_help()', opts) + buf_set_keymap('n', 'lwa', 'lua vim.lsp.buf.add_workspace_folder()', opts) + buf_set_keymap('n', 'lwr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) + buf_set_keymap('n', 'lwl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', 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', 'd', 'lua vim.lsp.diagnostic.show_line_diagnostics()', opts) + --buf_set_keymap('n', '', 'lua vim.lsp.diagnostic.goto_prev()', opts) + buf_set_keymap('n', 'lgn', '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) + buf_set_keymap('n', 'td', 'lua vim.lsp.buf.type_definition()', opts) + + --if client.name == 'tsserver' then + -- client.resolved_capabilities.document_formatting = false + --end + + if client.resolved_capabilities.document_formatting then + vim.api.nvim_command [[augroup Format]] + vim.api.nvim_command [[autocmd! * ]] + vim.api.nvim_command [[autocmd BufWritePre lua vim.lsp.buf.formatting_seq_sync()]] + vim.api.nvim_command [[augroup END]] + end + + protocol.CompletionItemKind = { + '', -- Text + '', -- Method + '', -- Function + '', -- Constructor + '', -- Field + '', -- Variable + '', -- Class + 'ﰮ', -- Interface + '', -- Module + '', -- Property + '', -- Unit + '', -- Value + '', -- Enum + '', -- Keyword + '﬌', -- Snippet + '', -- Color + '', -- File + '', -- Reference + '', -- Folder + '', -- EnumMember + '', -- Constant + '', -- Struct + '', -- Event + 'ﬦ', -- Operator + '', -- TypeParameter + } +end + +nvim_lsp.tsserver.setup { + on_attach = on_attach, + filetypes = { "typescript", "typescriptreact", "typescript.tsx" } +} + +nvim_lsp.solargraph.setup { + on_attach = on_attach, + flags = { + debounce_text_changes = 150, + } +} +EOF