diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index 568ab8d..8820aa7 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -1,34 +1,27 @@ -- SECTION: Options -vim.o.number = true -- Show line numbers -vim.o.wrap = true -- Soft-wrap lines -vim.o.tabstop = 2 -- 2 space tab width -vim.o.shiftwidth = 2 -- 2 space tab width -vim.o.swapfile = false -- Disable swap files (annoying) -vim.o.undofile = true -- Enable undo between sessions -vim.o.mouse = 'a' -- Enable mouse support -vim.o.showmode = false -- Don't show mode in status bar -vim.o.inccommand = 'split' -- Preview replace commands inline -vim.o.scrolloff = 20 -- Scroll if cursor is X lines to edge -vim.o.confirm = true -- Add confirmation on some destructive actions -vim.o.ignorecase = true -- Case insensitive search -vim.o.smartcase = true -- Case sensitive when caps is used -vim.o.cursorline = true -- Highlight current line -vim.o.winborder = "single" -- Borders around popups like when you press leader for keybinds +vim.o.number = true -- Show line numbers +vim.o.wrap = true -- Soft-wrap lines +vim.o.tabstop = 2 -- 2 space tab width +vim.o.shiftwidth = 2 -- 2 space tab width +vim.o.swapfile = false -- Disable swap files (annoying) +vim.o.undofile = true -- Enable undo between sessions +vim.o.mouse = 'a' -- Enable mouse support +vim.o.showmode = false -- Don't show mode in status bar +vim.o.inccommand = 'split' -- Preview replace commands inline +vim.o.scrolloff = 20 -- Scroll if cursor is X lines to edge +vim.o.confirm = true -- Add confirmation on some destructive actions +vim.o.ignorecase = true -- Case insensitive search +vim.o.smartcase = true -- Case sensitive when caps is used +vim.o.cursorline = true -- Highlight current line +vim.o.winborder = "single" -- Borders around popups like when you press leader for keybinds vim.opt.signcolumn = -'yes' -- TEST: Prohibit layout shifting by always showing the sign column (left of line numbers), you should see an icon there on this row. -vim.o.autocomplete = true -- Turn on builtin autocomplete -vim.o.complete = "o,.,w,b,u" -- Indicates what kind of items to show in the autocomplete -vim.o.completeopt = "fuzzy,menuone,noselect,popup" -- Options for autocomplete -vim.o.pumheight = 7 -- Max items to show in autocomplete -vim.o.pummaxwidth = 80 -- Max width of autocomplete +'yes' -- TEST: Prohibit layout shifting by always showing the sign column (left of line numbers), you should see an icon there on this row. vim.o.updatetime = 250 vim.o.timeoutlen = 300 - -- SECTION: Globals vim.g.mapleader = ' ' -- Mapping leader to space. vim.g.maplocalleader = ' ' -- Mapping leader to space. vim.g.have_nerd_font = true -- Enable nerd font - -- SECTION: Lazy settings -- INFO: Lines in this function will be executed after main event loop is free, prohibiting startup lag. vim.schedule(function() @@ -67,6 +60,9 @@ vim.pack.add({ 'https://github.com/nvim-mini/mini.pick', -- File picker, grep 'https://github.com/nvim-mini/mini.pairs', -- Auto create {}, (), [] - pairs etc. 'https://github.com/nvim-mini/mini.notify', -- Popup notifications + 'https://github.com/nvim-mini/mini.completion', -- Autocomplete, needs snippets and icons + 'https://github.com/nvim-mini/mini.snippets', -- Snippets + 'https://github.com/nvim-mini/mini.icons', -- Icons 'https://github.com/neovim/nvim-lspconfig', -- Language servers 'https://github.com/mason-org/mason.nvim', -- LSP deps installer 'https://github.com/mason-org/mason-lspconfig.nvim', -- Lets you install mason tooling using lsp names @@ -112,6 +108,10 @@ local MiniPicker = require('mini.pick').setup({ require('mini.pairs').setup() require('mini.notify').setup() +require('mini.icons').setup() +MiniIcons.tweak_lsp_kind() +require('mini.snippets').setup() +require('mini.completion').setup() require('oil').setup() @@ -123,7 +123,7 @@ require('nvim-treesitter').setup({ require("mason").setup() require("mason-lspconfig").setup({ -- Install lsp deps here - ensure_installed = { 'lua_ls', 'ts_ls', 'ansiblels' }, + ensure_installed = { 'lua_ls', 'ts_ls', 'ansiblels', 'eslint' }, automatic_enable = true }) require("mason-tool-installer").setup({ @@ -134,6 +134,15 @@ require("mason-tool-installer").setup({ } }) +-- SECTION: Helpers +local function client_supports_method(client, method, bufnr) + if vim.fn.has 'nvim-0.11' == 1 then + return client:supports_method(method, bufnr) + else + return client.supports_method(method, { bufnr = bufnr }) + end +end + -- SECTION: Autocommands vim.api.nvim_create_autocmd('TextYankPost', { desc = 'Highlight when yanking (copying) text', @@ -142,26 +151,12 @@ vim.api.nvim_create_autocmd('TextYankPost', { vim.highlight.on_yank() end, }) - -- Actions on LspAttach vim.api.nvim_create_autocmd('LspAttach', { group = vim.api.nvim_create_augroup('my.lsp', {}), callback = function(ev) - -- INFO: Helpers - local function client_supports_method(client, method, bufnr) - if vim.fn.has 'nvim-0.11' == 1 then - return client:supports_method(method, bufnr) - else - return client.supports_method(method, { bufnr = bufnr }) - end - end - local client = assert(vim.lsp.get_client_by_id(ev.data.client_id)) - -- Enable auto-completion - if client:supports_method('textDocument/completion') then - vim.lsp.completion.enable(true, client.id, ev.buf, { autotrigger = true }) - end -- Auto-format ("lint") on save. -- Usually not needed if server supports "textDocument/willSaveWaitUntil". if not client:supports_method('textDocument/willSaveWaitUntil') diff --git a/.config/nvim/nvim-pack-lock.json b/.config/nvim/nvim-pack-lock.json index b688b4b..58da534 100644 --- a/.config/nvim/nvim-pack-lock.json +++ b/.config/nvim/nvim-pack-lock.json @@ -20,6 +20,14 @@ "rev": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65", "src": "https://github.com/mason-org/mason.nvim" }, + "mini.completion": { + "rev": "4f94cafdeef02bf3ef9997cd6862658801caa22c", + "src": "https://github.com/nvim-mini/mini.completion" + }, + "mini.icons": { + "rev": "5b9076dae1bfbe47ba4a14bc8b967cde0ab5d77e", + "src": "https://github.com/nvim-mini/mini.icons" + }, "mini.notify": { "rev": "e506fb6da26c0a31ee6b1d2eb99626cb147f28ca", "src": "https://github.com/nvim-mini/mini.notify" @@ -36,6 +44,10 @@ "rev": "8521fe21df86e08d9e4b3c3f3a7d50e47954e1af", "src": "https://github.com/nvim-mini/mini.pick" }, + "mini.snippets": { + "rev": "0d0b435e3f9563965f73703a6a6d17acb432a93c", + "src": "https://github.com/nvim-mini/mini.snippets" + }, "nvim": { "rev": "384f304c8b04664c9e0091fbfb3923c5f97c1bcf", "src": "https://github.com/catppuccin/nvim" diff --git a/package.json b/package.json index 0c4c99a..964ef87 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "license": "ISC", "dependencies": { "@vue/typescript-plugin": "^3.2.2", + "jiti": "^2.6.1", "neovim": "^5.4.0" } }