diff options
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/autocmds.lua | 42 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/utils.lua | 22 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/utils/buffer.lua | 2 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/utils/fs.lua | 20 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/utils/job.lua | 2 |
5 files changed, 49 insertions, 39 deletions
diff --git a/nvim/.config/nvim/lua/tobyvin/autocmds.lua b/nvim/.config/nvim/lua/tobyvin/autocmds.lua index 74a8566..369b62a 100644 --- a/nvim/.config/nvim/lua/tobyvin/autocmds.lua +++ b/nvim/.config/nvim/lua/tobyvin/autocmds.lua @@ -1,10 +1,10 @@ +local utils = require("tobyvin.utils") +local Path = require("plenary").path local M = {} M.setup = function() - local augroup_hl = vim.api.nvim_create_augroup("tobyvin_hl", { clear = true }) - vim.api.nvim_create_autocmd("TextYankPost", { - group = augroup_hl, + group = vim.api.nvim_create_augroup("tobyvin_hl", { clear = true }), pattern = "*", callback = function() vim.highlight.on_yank() @@ -12,10 +12,20 @@ M.setup = function() desc = "Highlight yank", }) - local augroup_fmt = vim.api.nvim_create_augroup("tobyvin_fmt", { clear = true }) + vim.api.nvim_create_autocmd("BufWritePre", { + group = vim.api.nvim_create_augroup("tobyvin_mkdir", { clear = true }), + callback = function(args) + local parent = Path:new(args.file):parent() + local prompt = string.format("%s does not exist. Create it?", parent:make_relative()) + if not parent:is_dir() and vim.fn.confirm(prompt, "&Yes\n&No") == 1 then + parent:mkdir() + end + end, + desc = "Check for missing directory on write", + }) vim.api.nvim_create_autocmd("BufWritePre", { - group = augroup_fmt, + group = vim.api.nvim_create_augroup("tobyvin_whitespace", { clear = true }), pattern = "*", callback = function() local cursor = vim.api.nvim_win_get_cursor(0) @@ -26,7 +36,7 @@ M.setup = function() }) vim.api.nvim_create_autocmd("FileType", { - group = augroup_fmt, + group = vim.api.nvim_create_augroup("tobyvin_tabstop", { clear = true }), pattern = { "sh", "zsh", "xml", "html", "xhtml", "css", "scss", "javascript", "lua", "dart", "markdown" }, callback = function(args) vim.bo[args.buf].tabstop = 2 @@ -34,10 +44,8 @@ M.setup = function() desc = "Set tabstop", }) - local augroup_view = vim.api.nvim_create_augroup("tobyvin_view", { clear = true }) - vim.api.nvim_create_autocmd("FileType", { - group = augroup_view, + group = vim.api.nvim_create_augroup("tobyvin_unlisted", { clear = true }), pattern = { "qf", "help", "gitcommit", "gitrebase", "Neogit*" }, callback = function(args) vim.bo[args.buf].buflisted = false @@ -46,7 +54,7 @@ M.setup = function() }) vim.api.nvim_create_autocmd("FileType", { - group = augroup_view, + group = vim.api.nvim_create_augroup("tobyvin_help", { clear = true }), pattern = "help", callback = function(args) vim.wo.wrap = true @@ -58,16 +66,16 @@ M.setup = function() desc = "Setup and resize help window", }) - vim.api.nvim_create_autocmd("FileType", { - group = vim.api.nvim_create_augroup("tobyvin_reload", { clear = true }), - pattern = "lua", + vim.api.nvim_create_autocmd("BufWritePost", { + group = vim.api.nvim_create_augroup("tobyvin_auto_reload", { clear = true }), + pattern = "*.lua", callback = function(args) - local utils = require("tobyvin.utils") - if utils.fs.module_from_path(args.file) then - vim.keymap.set("n", "<leader>R", utils.fs.reload, { desc = "reload lua module" }) + local module_name = utils.fs.module_from_path(args.match) + if module_name then + utils.fs.reload(module_name) end end, - desc = "Setup lua module reloader", + desc = "Reload lua module on write", }) end diff --git a/nvim/.config/nvim/lua/tobyvin/utils.lua b/nvim/.config/nvim/lua/tobyvin/utils.lua index 316cbae..45772fb 100644 --- a/nvim/.config/nvim/lua/tobyvin/utils.lua +++ b/nvim/.config/nvim/lua/tobyvin/utils.lua @@ -1,12 +1,14 @@ -local M = { - buffer = require("tobyvin.utils.buffer"), - debug = require("tobyvin.utils.debug"), - diagnostic = require("tobyvin.utils.diagnostic"), - documentation = require("tobyvin.utils.documentation"), - fs = require("tobyvin.utils.fs"), - job = require("tobyvin.utils.job"), - keymap = require("tobyvin.utils.keymap"), - status = require("tobyvin.utils.status"), -} +-- Lazy load +local M = setmetatable({}, { + __index = function(t, k) + local ok, val = pcall(require, string.format("tobyvin.utils.%s", k)) + + if ok then + rawset(t, k, val) + end + + return val + end, +}) return M diff --git a/nvim/.config/nvim/lua/tobyvin/utils/buffer.lua b/nvim/.config/nvim/lua/tobyvin/utils/buffer.lua index 30abd09..2035fc2 100644 --- a/nvim/.config/nvim/lua/tobyvin/utils/buffer.lua +++ b/nvim/.config/nvim/lua/tobyvin/utils/buffer.lua @@ -1,4 +1,4 @@ -local Path = require("plenary.path") +local Path = require("plenary").path local M = {} M.get_visual_range = function() diff --git a/nvim/.config/nvim/lua/tobyvin/utils/fs.lua b/nvim/.config/nvim/lua/tobyvin/utils/fs.lua index cef48fe..f2c2f05 100644 --- a/nvim/.config/nvim/lua/tobyvin/utils/fs.lua +++ b/nvim/.config/nvim/lua/tobyvin/utils/fs.lua @@ -1,6 +1,6 @@ -local Job = require("plenary.job") -local Path = require("plenary.path") -local Reload = require("plenary.reload") +local Job = require("plenary").job +local Path = require("plenary").path +local Reload = require("plenary").reload local M = {} M.config_path = function(package) @@ -18,18 +18,18 @@ M.module_from_path = function(path) end M.reload = function(module_name, starts_with_only) - module_name = vim.F.if_nil(module_name, M.module_from_path()) + module_name = vim.F.if_nil(module_name, "") starts_with_only = vim.F.if_nil(starts_with_only, "tobyvin") + module = package.loaded[module_name] + Reload.reload_module(module_name, starts_with_only) - local notify_opts = { title = string.format("[utils] reload: '%s'", module_name) } - local status_ok, module = pcall(require, module_name) - if not status_ok then - vim.notify("Failed to require module", vim.log.levels.ERROR, notify_opts) + if not pcall(require, module_name) then + package.loaded[module_name] = module end - vim.notify("Reloaded module", vim.log.levels.INFO, notify_opts) - return module + + return package.loaded[module_name] end M.select_exe = function(cwd, callback) diff --git a/nvim/.config/nvim/lua/tobyvin/utils/job.lua b/nvim/.config/nvim/lua/tobyvin/utils/job.lua index d5ac03e..231a9bb 100644 --- a/nvim/.config/nvim/lua/tobyvin/utils/job.lua +++ b/nvim/.config/nvim/lua/tobyvin/utils/job.lua @@ -28,7 +28,7 @@ M.cmd = function(cmd, args, quiet) end M.with_notify = function(cmd, args, quiet) - local Job = require("plenary.job") + local Job = require("plenary").job local notification local win, height local output = "" |