From b0a9ee720a64f4ec1563e7358d58506a714d39fe Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Sun, 14 Nov 2021 13:44:00 +0100 Subject: refactor: more configurable format-on-save (#1937) --- lua/lvim/core/autocmds.lua | 55 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) (limited to 'lua/lvim/core/autocmds.lua') diff --git a/lua/lvim/core/autocmds.lua b/lua/lvim/core/autocmds.lua index 569622be..664c1662 100644 --- a/lua/lvim/core/autocmds.lua +++ b/lua/lvim/core/autocmds.lua @@ -1,4 +1,5 @@ local M = {} +local Log = require "lvim.core.log" --- Load the default set of autogroups and autocommands. function M.load_augroups() @@ -58,6 +59,60 @@ function M.load_augroups() } end +local get_format_on_save_opts = function() + local defaults = require("lvim.config.defaults").format_on_save + -- accept a basic boolean `lvim.format_on_save=true` + if type(lvim.format_on_save) ~= "table" then + return defaults + end + + return { + pattern = lvim.format_on_save.pattern or defaults.pattern, + timeout = lvim.format_on_save.timeout or defaults.timeout, + } +end + +function M.enable_format_on_save(opts) + local fmd_cmd = string.format(":silent lua vim.lsp.buf.formatting_sync({}, %s)", opts.timeout_ms) + M.define_augroups { + format_on_save = { { "BufWritePre", opts.pattern, fmd_cmd } }, + } + Log:debug "enabled format-on-save" +end + +function M.disable_format_on_save() + M.remove_augroup "format_on_save" + Log:debug "disabled format-on-save" +end + +function M.configure_format_on_save() + if lvim.format_on_save then + if vim.fn.exists "#format_on_save#BufWritePre" == 1 then + M.remove_augroup "format_on_save" + Log:debug "reloading format-on-save configuration" + end + local opts = get_format_on_save_opts() + M.enable_format_on_save(opts) + else + M.disable_format_on_save() + end +end + +function M.toggle_format_on_save() + if vim.fn.exists "#format_on_save#BufWritePre" == 0 then + local opts = get_format_on_save_opts() + M.enable_format_on_save(opts) + else + M.disable_format_on_save() + end +end + +function M.remove_augroup(name) + if vim.fn.exists("#" .. name) == 1 then + vim.cmd("au! " .. name) + end +end + function M.define_augroups(definitions) -- {{{1 -- Create autocommand groups based on the passed definitions -- -- cgit v1.2.3 From fe99ee6e42ddec225c46a9d1fcda5c5d76396601 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Fri, 19 Nov 2021 08:20:49 +0100 Subject: fix(windows): autocmd requires forward slashes (#1967) --- lua/lvim/core/autocmds.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'lua/lvim/core/autocmds.lua') diff --git a/lua/lvim/core/autocmds.lua b/lua/lvim/core/autocmds.lua index 664c1662..d982b151 100644 --- a/lua/lvim/core/autocmds.lua +++ b/lua/lvim/core/autocmds.lua @@ -3,7 +3,12 @@ local Log = require "lvim.core.log" --- Load the default set of autogroups and autocommands. function M.load_augroups() - local user_config_file = vim.fn.resolve(require("lvim.config"):get_user_config_path()) + local user_config_file = require("lvim.config"):get_user_config_path() + + if vim.loop.os_uname().version:match "Windows" then + -- autocmds require forward slashes even on windows + user_config_file = vim.fn.resolve(user_config_file:gsub("\\", "/")) + end return { _general_settings = { -- cgit v1.2.3 From 5663c925ebef0d48732e8794c2335c118ee61e55 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Sat, 20 Nov 2021 14:22:04 +0100 Subject: fix(windows): remove redundant `resolve` call (#1974) --- lua/lvim/core/autocmds.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lua/lvim/core/autocmds.lua') diff --git a/lua/lvim/core/autocmds.lua b/lua/lvim/core/autocmds.lua index d982b151..e4577e63 100644 --- a/lua/lvim/core/autocmds.lua +++ b/lua/lvim/core/autocmds.lua @@ -7,7 +7,7 @@ function M.load_augroups() if vim.loop.os_uname().version:match "Windows" then -- autocmds require forward slashes even on windows - user_config_file = vim.fn.resolve(user_config_file:gsub("\\", "/")) + user_config_file = user_config_file:gsub("\\", "/") end return { -- cgit v1.2.3