From 12c0a7441e6a18ee140b68cf8fc6d1c6468fd699 Mon Sep 17 00:00:00 2001 From: Luc Sinet Date: Mon, 26 Jul 2021 19:14:23 +0200 Subject: [Refactor] remove lv prefix (#1112) * Rename lv-utils into utils * Move commands defined in utils into core/commands.lua --- lua/core/autocmds.lua | 2 +- lua/core/commands.lua | 21 +++++++ lua/core/which-key.lua | 2 +- lua/keymappings.lua | 12 ++-- lua/lsp/init.lua | 2 +- lua/lv-utils/init.lua | 161 ------------------------------------------------- lua/utils/init.lua | 149 +++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 179 insertions(+), 170 deletions(-) create mode 100644 lua/core/commands.lua delete mode 100644 lua/lv-utils/init.lua create mode 100644 lua/utils/init.lua (limited to 'lua') diff --git a/lua/core/autocmds.lua b/lua/core/autocmds.lua index f4cb4369..d337f71a 100644 --- a/lua/core/autocmds.lua +++ b/lua/core/autocmds.lua @@ -27,7 +27,7 @@ lvim.autocommands = { "*", "setlocal formatoptions-=c formatoptions-=r formatoptions-=o", }, - { "BufWritePost", "lv-config.lua", "lua require('lv-utils').reload_lv_config()" }, + { "BufWritePost", "lv-config.lua", "lua require('utils').reload_lv_config()" }, { "FileType", "qf", diff --git a/lua/core/commands.lua b/lua/core/commands.lua new file mode 100644 index 00000000..c42b385d --- /dev/null +++ b/lua/core/commands.lua @@ -0,0 +1,21 @@ +local M = {} + +M.defaults = { + [[ + function! QuickFixToggle() + if empty(filter(getwininfo(), 'v:val.quickfix')) + copen + else + cclose + endif + endfunction + ]], +} + +M.load = function(commands) + for _, command in ipairs(commands) do + vim.cmd(command) + end +end + +return M diff --git a/lua/core/which-key.lua b/lua/core/which-key.lua index 55db694c..9d4e7744 100644 --- a/lua/core/which-key.lua +++ b/lua/core/which-key.lua @@ -95,7 +95,7 @@ M.config = function() name = "Packer", c = { "PackerCompile", "Compile" }, i = { "PackerInstall", "Install" }, - r = { "lua require('lv-utils').reload_lv_config()", "Reload" }, + r = { "lua require('utils').reload_lv_config()", "Reload" }, s = { "PackerSync", "Sync" }, u = { "PackerUpdate", "Update" }, }, diff --git a/lua/keymappings.lua b/lua/keymappings.lua index 5e09dc7d..c791418e 100644 --- a/lua/keymappings.lua +++ b/lua/keymappings.lua @@ -1,4 +1,4 @@ -local lv_utils = require "lv-utils" +local utils = require "utils" local opts = { nnoremap = { noremap = true, silent = true }, @@ -103,11 +103,11 @@ local function get_user_keys(mode) end end -lv_utils.add_keymap_normal_mode(opts.nnoremap, get_user_keys "normal_mode") -lv_utils.add_keymap_insert_mode(opts.inoremap, get_user_keys "insert_mode") -lv_utils.add_keymap_visual_mode(opts.vnoremap, get_user_keys "visual_mode") -lv_utils.add_keymap_visual_block_mode(opts.xnoremap, get_user_keys "visual_block_mode") -lv_utils.add_keymap_term_mode(opts.generic, get_user_keys "term_mode") +utils.add_keymap_normal_mode(opts.nnoremap, get_user_keys "normal_mode") +utils.add_keymap_insert_mode(opts.inoremap, get_user_keys "insert_mode") +utils.add_keymap_visual_mode(opts.vnoremap, get_user_keys "visual_mode") +utils.add_keymap_visual_block_mode(opts.xnoremap, get_user_keys "visual_block_mode") +utils.add_keymap_term_mode(opts.generic, get_user_keys "term_mode") -- navigate tab completion with and -- runs conditionally diff --git a/lua/lsp/init.lua b/lua/lsp/init.lua index 827753c6..75d2d3a6 100644 --- a/lua/lsp/init.lua +++ b/lua/lsp/init.lua @@ -301,7 +301,7 @@ end function lsp_config.setup(lang) local lang_server = lvim.lang[lang].lsp local provider = lang_server.provider - if require("lv-utils").check_lsp_client_active(provider) then + if require("utils").check_lsp_client_active(provider) then return end diff --git a/lua/lv-utils/init.lua b/lua/lv-utils/init.lua deleted file mode 100644 index f76d0de2..00000000 --- a/lua/lv-utils/init.lua +++ /dev/null @@ -1,161 +0,0 @@ -local lv_utils = {} - --- recursive Print (structure, limit, separator) -local function r_inspect_settings(structure, limit, separator) - limit = limit or 100 -- default item limit - separator = separator or "." -- indent string - if limit < 1 then - print "ERROR: Item limit reached." - return limit - 1 - end - if structure == nil then - io.write("-- O", separator:sub(2), " = nil\n") - return limit - 1 - end - local ts = type(structure) - - if ts == "table" then - for k, v in pairs(structure) do - -- replace non alpha keys wih ["key"] - if tostring(k):match "[^%a_]" then - k = '["' .. tostring(k) .. '"]' - end - limit = r_inspect_settings(v, limit, separator .. "." .. tostring(k)) - if limit < 0 then - break - end - end - return limit - end - - if ts == "string" then - -- escape sequences - structure = string.format("%q", structure) - end - separator = separator:gsub("%.%[", "%[") - if type(structure) == "function" then - -- don't print functions - io.write("-- lvim", separator:sub(2), " = function ()\n") - else - io.write("lvim", separator:sub(2), " = ", tostring(structure), "\n") - end - return limit - 1 -end - -function lv_utils.generate_settings() - -- Opens a file in append mode - local file = io.open("lv-settings.lua", "w") - - -- sets the default output file as test.lua - io.output(file) - - -- write all `lvim` related settings to `lv-settings.lua` file - r_inspect_settings(lvim, 10000, ".") - - -- closes the open file - io.close(file) -end - --- autoformat -local toggle_autoformat = function() - if lvim.format_on_save then - require("core.autocmds").define_augroups { - autoformat = { - { - "BufWritePre", - "*", - ":silent lua vim.lsp.buf.formatting_sync()", - }, - }, - } - end - - if not lvim.format_on_save then - vim.cmd [[if exists('#autoformat#BufWritePre') - :autocmd! autoformat - endif]] - end -end - -function lv_utils.toggle_autoformat() - toggle_autoformat() -end - -function lv_utils.reload_lv_config() - vim.cmd "source ~/.local/share/lunarvim/lvim/lua/settings.lua" - vim.cmd "source ~/.config/lvim/lv-config.lua" - vim.cmd "source ~/.local/share/lunarvim/lvim/lua/plugins.lua" - local plugins = require "plugins" - local plugin_loader = require("plugin-loader").init() - toggle_autoformat() - plugin_loader:load { plugins, lvim.plugins } - vim.cmd ":PackerCompile" - vim.cmd ":PackerInstall" - -- vim.cmd ":PackerClean" -end - -function lv_utils.check_lsp_client_active(name) - local clients = vim.lsp.get_active_clients() - for _, client in pairs(clients) do - if client.name == name then - return true - end - end - return false -end - -function lv_utils.add_keymap(mode, opts, keymaps) - for _, keymap in ipairs(keymaps) do - vim.api.nvim_set_keymap(mode, keymap[1], keymap[2], opts) - end -end - -function lv_utils.add_keymap_normal_mode(opts, keymaps) - lv_utils.add_keymap("n", opts, keymaps) -end - -function lv_utils.add_keymap_visual_mode(opts, keymaps) - lv_utils.add_keymap("v", opts, keymaps) -end - -function lv_utils.add_keymap_visual_block_mode(opts, keymaps) - lv_utils.add_keymap("x", opts, keymaps) -end - -function lv_utils.add_keymap_insert_mode(opts, keymaps) - lv_utils.add_keymap("i", opts, keymaps) -end - -function lv_utils.add_keymap_term_mode(opts, keymaps) - lv_utils.add_keymap("t", opts, keymaps) -end - -function lv_utils.unrequire(m) - package.loaded[m] = nil - _G[m] = nil -end - -function lv_utils.gsub_args(args) - if args == nil or type(args) ~= "table" then - return args - end - local buffer_filepath = vim.fn.fnameescape(vim.api.nvim_buf_get_name(0)) - for i = 1, #args do - args[i] = string.gsub(args[i], "${FILEPATH}", buffer_filepath) - end - return args -end - -vim.cmd [[ - function! QuickFixToggle() - if empty(filter(getwininfo(), 'v:val.quickfix')) - copen - else - cclose - endif -endfunction -]] - -return lv_utils - --- TODO: find a new home for these autocommands diff --git a/lua/utils/init.lua b/lua/utils/init.lua new file mode 100644 index 00000000..94058487 --- /dev/null +++ b/lua/utils/init.lua @@ -0,0 +1,149 @@ +local utils = {} + +-- recursive Print (structure, limit, separator) +local function r_inspect_settings(structure, limit, separator) + limit = limit or 100 -- default item limit + separator = separator or "." -- indent string + if limit < 1 then + print "ERROR: Item limit reached." + return limit - 1 + end + if structure == nil then + io.write("-- O", separator:sub(2), " = nil\n") + return limit - 1 + end + local ts = type(structure) + + if ts == "table" then + for k, v in pairs(structure) do + -- replace non alpha keys wih ["key"] + if tostring(k):match "[^%a_]" then + k = '["' .. tostring(k) .. '"]' + end + limit = r_inspect_settings(v, limit, separator .. "." .. tostring(k)) + if limit < 0 then + break + end + end + return limit + end + + if ts == "string" then + -- escape sequences + structure = string.format("%q", structure) + end + separator = separator:gsub("%.%[", "%[") + if type(structure) == "function" then + -- don't print functions + io.write("-- lvim", separator:sub(2), " = function ()\n") + else + io.write("lvim", separator:sub(2), " = ", tostring(structure), "\n") + end + return limit - 1 +end + +function utils.generate_settings() + -- Opens a file in append mode + local file = io.open("lv-settings.lua", "w") + + -- sets the default output file as test.lua + io.output(file) + + -- write all `lvim` related settings to `lv-settings.lua` file + r_inspect_settings(lvim, 10000, ".") + + -- closes the open file + io.close(file) +end + +-- autoformat +function utils.toggle_autoformat() + if lvim.format_on_save then + require("core.autocmds").define_augroups { + autoformat = { + { + "BufWritePre", + "*", + ":silent lua vim.lsp.buf.formatting_sync()", + }, + }, + } + end + + if not lvim.format_on_save then + vim.cmd [[ + if exists('#autoformat#BufWritePre') + :autocmd! autoformat + endif + ]] + end +end + +function utils.reload_lv_config() + vim.cmd "source ~/.local/share/lunarvim/lvim/lua/settings.lua" + vim.cmd "source ~/.config/lvim/lv-config.lua" + vim.cmd "source ~/.local/share/lunarvim/lvim/lua/plugins.lua" + local plugins = require "plugins" + local plugin_loader = require("plugin-loader").init() + utils.toggle_autoformat() + plugin_loader:load { plugins, lvim.plugins } + vim.cmd ":PackerCompile" + vim.cmd ":PackerInstall" + -- vim.cmd ":PackerClean" +end + +function utils.check_lsp_client_active(name) + local clients = vim.lsp.get_active_clients() + for _, client in pairs(clients) do + if client.name == name then + return true + end + end + return false +end + +function utils.add_keymap(mode, opts, keymaps) + for _, keymap in ipairs(keymaps) do + vim.api.nvim_set_keymap(mode, keymap[1], keymap[2], opts) + end +end + +function utils.add_keymap_normal_mode(opts, keymaps) + utils.add_keymap("n", opts, keymaps) +end + +function utils.add_keymap_visual_mode(opts, keymaps) + utils.add_keymap("v", opts, keymaps) +end + +function utils.add_keymap_visual_block_mode(opts, keymaps) + utils.add_keymap("x", opts, keymaps) +end + +function utils.add_keymap_insert_mode(opts, keymaps) + utils.add_keymap("i", opts, keymaps) +end + +function utils.add_keymap_term_mode(opts, keymaps) + utils.add_keymap("t", opts, keymaps) +end + +function utils.unrequire(m) + package.loaded[m] = nil + _G[m] = nil +end + +function utils.gsub_args(args) + if args == nil or type(args) ~= "table" then + return args + end + local buffer_filepath = vim.fn.fnameescape(vim.api.nvim_buf_get_name(0)) + for i = 1, #args do + args[i] = string.gsub(args[i], "${FILEPATH}", buffer_filepath) + end + return args +end + +return utils + +-- TODO: find a new home for these autocommands -- cgit v1.2.3