From 2c42189b1ca415d42868deb390e1aeaee79657f9 Mon Sep 17 00:00:00 2001 From: matt1432 Date: Thu, 20 Jul 2023 23:00:57 -0400 Subject: [PATCH] feat(nvim): add a bunch of plugins --- nixos/home/.nvim/config.lua | 50 ++++++++++++++++++++++ nixos/home/.nvim/lsp.lua | 82 ++++++++++++++++++++++++++++++++++++- nixos/home/nvim.nix | 40 ++++++++++++++---- 3 files changed, 161 insertions(+), 11 deletions(-) diff --git a/nixos/home/.nvim/config.lua b/nixos/home/.nvim/config.lua index 19ad5afb..bf8cd25c 100644 --- a/nixos/home/.nvim/config.lua +++ b/nixos/home/.nvim/config.lua @@ -1,2 +1,52 @@ vim.opt.fillchars = {eob = " "} vim.cmd[[colorscheme dracula]] + +-- Set up nvim-cmp. + local cmp = require'cmp' + local cmp_autopairs = require('nvim-autopairs.completion.cmp') + + cmp.setup({ + snippet = { + -- REQUIRED - you must specify a snippet engine + expand = function(args) + vim.fn["vsnip#anonymous"](args.body) + end, + }, + window = { + -- completion = cmp.config.window.bordered(), + -- documentation = cmp.config.window.bordered(), + }, + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'vsnip' }, -- For vsnip users. + -- { name = 'luasnip' }, -- For luasnip users. + -- { name = 'ultisnips' }, -- For ultisnips users. + -- { name = 'snippy' }, -- For snippy users. + }, { + { name = 'buffer' }, + }) + }) + cmp.event:on( + 'confirm_done', + cmp_autopairs.on_confirm_done() +) + +-- https://github.com/AstroNvim/AstroNvim/issues/648#issuecomment-1511728897 +vim.api.nvim_create_augroup("neotree_autoopen", { clear = true }) +vim.api.nvim_create_autocmd("BufReadPre", { + desc = "Open neo-tree on enter", + group = "neotree_autoopen", + callback = function() + if not vim.g.neotree_opened then + vim.cmd "Neotree show" + vim.g.neotree_opened = true + end + end, +}) diff --git a/nixos/home/.nvim/lsp.lua b/nixos/home/.nvim/lsp.lua index c2b2f4b2..4046de95 100644 --- a/nixos/home/.nvim/lsp.lua +++ b/nixos/home/.nvim/lsp.lua @@ -1,3 +1,81 @@ +local capabilities = require('cmp_nvim_lsp').default_capabilities() local lspconfig = require('lspconfig') -lspconfig.bashls.setup {} -lspconfig.nixd.setup {} +lspconfig.bashls.setup { capabilities = capabilities } +lspconfig.nixd.setup { capabilities = capabilities } +lspconfig.html.setup { capabilities = capabilities } +lspconfig.cssls.setup { capabilities = capabilities } +lspconfig.lua_ls.setup { + settings = { + capabilities = capabilities, + Lua = { + runtime = { + version = 'LuaJIT', + }, + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = {'vim'}, + }, + workspace = { + -- Make the server aware of Neovim runtime files + library = vim.api.nvim_get_runtime_file("", true), + }, + telemetry = { + enable = false, + }, + }, + }, +} + +require("formatter").setup { + filetype = { + ["*"] = { + -- "formatter.filetypes.any" defines default configurations for any + -- filetype + require("formatter.filetypes.any").remove_trailing_whitespace + } + } +} + +require'nvim-treesitter.configs'.setup { + highlight = { + enable = true, + -- Setting this to true will run `:h syntax` and tree-sitter at the same time. + -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). + -- Using this option may slow down your editor, and you may see some duplicate highlights. + -- Instead of true it can also be a list of languages + additional_vim_regex_highlighting = false, + }, +} + +require('gitsigns').setup() +require('lualine').setup { + options = { + theme = 'dracula', + globalstatus = true + } +} +require("neo-tree").setup({ + close_if_last_window = true, + window = { + width = 30, + }, + filesystem = { + filtered_items = { + visible = false, -- when true, they will just be displayed differently than normal items + hide_dotfiles = false, + hide_gitignored = true, + hide_by_name = {}, + hide_by_pattern = {}, + always_show = {}, + never_show = {}, + never_show_by_pattern = {}, + }, + }, + follow_current_file = { + enabled = true, + leave_dirs_open = true, + } +}) +require('nvim-autopairs').setup() +require('todo-comments').setup() +require("scrollbar").setup() diff --git a/nixos/home/nvim.nix b/nixos/home/nvim.nix index a4883aef..86875f23 100644 --- a/nixos/home/nvim.nix +++ b/nixos/home/nvim.nix @@ -33,30 +33,52 @@ in { ]; extraPackages = with pkgs; [ - # used to compile tree-sitter grammar tree-sitter # https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md nodePackages.bash-language-server shellcheck nixd + sumneko-lua-language-server + vscode-langservers-extracted ]; plugins = with pkgs.vimPlugins; [ - # you can use plugins from the pkgs vim-which-key - clangd_extensions-nvim nvim-treesitter.withAllGrammars nvim-treesitter - # or you can use our function to directly fetch plugins from git - (plugin "hrsh7th/nvim-cmp") # completion - (plugin "neovim/nvim-lspconfig") + #telescope-nvim + #telescope-fzf-native-nvim + (plugin "Mofiqul/dracula.nvim") - (plugin "nvim-neo-tree/neo-tree.nvim") - - # this installs the plugin from 'lua' branch + (plugin "neovim/nvim-lspconfig") (plugin "lukas-reineke/indent-blankline.nvim") + (plugin "lewis6991/gitsigns.nvim") + (plugin "nvim-lualine/lualine.nvim") + + # plugins for completion + (plugin "hrsh7th/nvim-cmp") + (plugin "hrsh7th/cmp-nvim-lsp") + (plugin "hrsh7th/cmp-buffer") + (plugin "hrsh7th/cmp-path") + (plugin "hrsh7th/cmp-cmdline") + (plugin "hrsh7th/cmp-vsnip") + (plugin "hrsh7th/vim-vsnip") + + # neo-tree and deps + (plugin "nvim-neo-tree/neo-tree.nvim") + (plugin "nvim-lua/plenary.nvim") + (plugin "nvim-tree/nvim-web-devicons") + (plugin "MunifTanjim/nui.nvim") + + # to explore more + (plugin "iamcco/markdown-preview.nvim") + (plugin "sindrets/diffview.nvim") + (plugin "windwp/nvim-autopairs") + (plugin "mhartington/formatter.nvim") + (plugin "folke/todo-comments.nvim") + (plugin "petertriho/nvim-scrollbar") ]; }; }