diff options
author | Gustaf Rydholm <gustaf.rydholm@gmail.com> | 2021-11-17 22:24:43 +0100 |
---|---|---|
committer | Gustaf Rydholm <gustaf.rydholm@gmail.com> | 2021-11-17 22:24:43 +0100 |
commit | a3690ed8ca90823787fbaddb72f0a1874f1e999d (patch) | |
tree | 1b79521fdf10c133aa643e6b2e46522ab6b79097 /.config/nvim/lua/core/autocmds.lua | |
parent | e953e2ee53503dcf070a7763743e4a76abb4518d (diff) |
Add lunarvim update to lsp/general
Diffstat (limited to '.config/nvim/lua/core/autocmds.lua')
-rw-r--r-- | .config/nvim/lua/core/autocmds.lua | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/.config/nvim/lua/core/autocmds.lua b/.config/nvim/lua/core/autocmds.lua index 1f50308..ecdcf36 100644 --- a/.config/nvim/lua/core/autocmds.lua +++ b/.config/nvim/lua/core/autocmds.lua @@ -1,4 +1,5 @@ local M = {} +local Log = require "core.log" --- Load the default set of autogroups and autocommands. function M.load_augroups() @@ -62,6 +63,63 @@ function M.load_augroups() } end +local get_format_on_save_opts = function() + local defaults = require("config.defaults").format_on_save + -- accept a basic boolean `format_on_save=true` + if type(options.format_on_save) ~= "table" then + return defaults + end + + return { + pattern = options.format_on_save.pattern or defaults.pattern, + timeout = options.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 options.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 -- |