From 6eb01f34043293026233c57cfaa4fb144765b88b Mon Sep 17 00:00:00 2001 From: Matt Leong Date: Mon, 28 Mar 2022 14:10:46 -0700 Subject: [PATCH] refactor: more autocmd api updates * feat: add format_timeout user option --- lua/cosmic/config/examples/config.lua | 2 ++ lua/cosmic/core/pluginsInit.lua | 5 ++++- lua/cosmic/core/user.lua | 1 + lua/cosmic/lsp/providers/defaults.lua | 16 ++++++++++------ lua/cosmic/plugins/nvim-tree/init.lua | 9 ++++++++- 5 files changed, 25 insertions(+), 8 deletions(-) diff --git a/lua/cosmic/config/examples/config.lua b/lua/cosmic/config/examples/config.lua index 8fa9f97..a455c4e 100644 --- a/lua/cosmic/config/examples/config.lua +++ b/lua/cosmic/config/examples/config.lua @@ -20,6 +20,8 @@ local config = { lsp = { -- True/false or table of filetypes {'.ts', '.js',} format_on_save = true, + -- Time in MS before format timeout + format_timeout = 3000, -- Set to false to disable rename notification rename_notification = true, -- Enable non-default servers, use default lsp config diff --git a/lua/cosmic/core/pluginsInit.lua b/lua/cosmic/core/pluginsInit.lua index 12422d0..0b72d81 100644 --- a/lua/cosmic/core/pluginsInit.lua +++ b/lua/cosmic/core/pluginsInit.lua @@ -50,6 +50,7 @@ return packer.startup(function() 'NvimTreeToggle', }, disable = vim.tbl_contains(user_config.disable_builtin_plugins, 'nvim-tree'), + event = 'VimEnter', }) use({ @@ -60,6 +61,7 @@ return packer.startup(function() config = function() require('cosmic.plugins.cosmic-ui') end, + event = 'BufWinEnter', }) use({ @@ -88,6 +90,7 @@ return packer.startup(function() disable = vim.tbl_contains(user_config.disable_builtin_plugins, 'lsp_signature'), }, }, + event = 'BufWinEnter', }) -- autocompletion @@ -136,7 +139,7 @@ return packer.startup(function() 'lewis6991/gitsigns.nvim', requires = { 'nvim-lua/plenary.nvim' }, opt = true, - event = 'BufRead', + event = 'BufWinEnter', config = function() require('cosmic.plugins.gitsigns') end, diff --git a/lua/cosmic/core/user.lua b/lua/cosmic/core/user.lua index 1eac956..023bac5 100644 --- a/lua/cosmic/core/user.lua +++ b/lua/cosmic/core/user.lua @@ -12,6 +12,7 @@ local default_config = { theme = 'tokyonight', lsp = { format_on_save = true, -- true/false or table of filetypes {'.ts', '.js',} + format_timeout = 3000, rename_notification = true, servers = { jsonls = { diff --git a/lua/cosmic/lsp/providers/defaults.lua b/lua/cosmic/lsp/providers/defaults.lua index bbcde49..64ae832 100644 --- a/lua/cosmic/lsp/providers/defaults.lua +++ b/lua/cosmic/lsp/providers/defaults.lua @@ -1,4 +1,6 @@ local config = require('cosmic.core.user') +local augroup_name = 'CosmicNvimLspFormat' +local group = vim.api.nvim_create_augroup(augroup_name, { clear = true }) local M = {} local auto_format_lock = false @@ -25,12 +27,14 @@ function M.on_attach(client, bufnr) else format_filetypes = '*' end - vim.cmd(([[ - augroup CosmicFormat - autocmd! - autocmd BufWritePre %s lua vim.lsp.buf.formatting_sync(nil, 3000) - augroup end - ]]):format(format_filetypes)) + + vim.api.nvim_create_autocmd(string.format('BufWritePre %s', format_filetypes), { + callback = function() + vim.lsp.buf.formatting_sync(nil, config.lsp.format_timeout) + end, + group = group, + nested = true, + }) end else client.resolved_capabilities.document_formatting = false diff --git a/lua/cosmic/plugins/nvim-tree/init.lua b/lua/cosmic/plugins/nvim-tree/init.lua index 530b634..50959e5 100644 --- a/lua/cosmic/plugins/nvim-tree/init.lua +++ b/lua/cosmic/plugins/nvim-tree/init.lua @@ -2,6 +2,8 @@ local config = require('cosmic.core.user') local g = vim.g local icons = require('cosmic.theme.icons') local u = require('cosmic.utils') +local augroup_name = 'CosmicNvimNvimTree' +local group = vim.api.nvim_create_augroup(augroup_name, { clear = true }) -- settings g.nvim_tree_git_hl = 1 @@ -27,7 +29,6 @@ g.nvim_tree_respect_buf_cwd = 1 -- set up args local args = { - auto_close = true, diagnostics = { enable = true, }, @@ -49,4 +50,10 @@ local args = { }, } +vim.api.nvim_create_autocmd('BufEnter', { + command = [[if winnr('$') == 1 && bufname() == 'NvimTree_' . tabpagenr() | quit | endif]], + group = group, + nested = true, +}) + require('nvim-tree').setup(u.merge(args, config.nvim_tree or {}))