From 405af0f02036f809c4ef193268c35da16390f529 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 6 Jun 2024 10:39:41 +0200 Subject: [PATCH] nvim: Move util to core.util module Moved all utility functions from their own directory into the core functionality direcotyr as a single file. --- nvim/.config/nvim/after/ftplugin/quarto.lua | 2 +- nvim/.config/nvim/lua/core/mappings.lua | 2 +- .../lua/{util/pyenv.lua => core/util.lua} | 30 ++++++++++++++----- nvim/.config/nvim/lua/plugins/config/lsp.lua | 6 ++-- nvim/.config/nvim/lua/plugins/core.lua | 2 +- nvim/.config/nvim/lua/plugins/ide.lua | 2 +- nvim/.config/nvim/lua/plugins/prose.lua | 2 +- nvim/.config/nvim/lua/plugins/telescope.lua | 2 +- nvim/.config/nvim/lua/plugins/ui.lua | 2 +- nvim/.config/nvim/lua/util/highlight.lua | 17 ----------- nvim/.config/nvim/lua/util/init.lua | 24 --------------- 11 files changed, 32 insertions(+), 59 deletions(-) rename nvim/.config/nvim/lua/{util/pyenv.lua => core/util.lua} (50%) delete mode 100644 nvim/.config/nvim/lua/util/highlight.lua delete mode 100644 nvim/.config/nvim/lua/util/init.lua diff --git a/nvim/.config/nvim/after/ftplugin/quarto.lua b/nvim/.config/nvim/after/ftplugin/quarto.lua index fff645a..18d1d03 100644 --- a/nvim/.config/nvim/after/ftplugin/quarto.lua +++ b/nvim/.config/nvim/after/ftplugin/quarto.lua @@ -13,7 +13,7 @@ end -- Start quarto session local startsession = function(file, args) file = file or default_buffer_session() - local path = require("util").get_python_venv() + local path = require("core.util").get_python_venv() vim.g["python3_host_prog"] = path if vim.fn.executable("jupyter-console") ~= 1 then diff --git a/nvim/.config/nvim/lua/core/mappings.lua b/nvim/.config/nvim/lua/core/mappings.lua index 2e8a6dc..a4d3028 100644 --- a/nvim/.config/nvim/lua/core/mappings.lua +++ b/nvim/.config/nvim/lua/core/mappings.lua @@ -1,5 +1,5 @@ local map = vim.keymap.set -local is_available = require("util").is_available +local is_available = require("core.util").is_available if is_available("which-key") then local prefix = require("which-key").register diff --git a/nvim/.config/nvim/lua/util/pyenv.lua b/nvim/.config/nvim/lua/core/util.lua similarity index 50% rename from nvim/.config/nvim/lua/util/pyenv.lua rename to nvim/.config/nvim/lua/core/util.lua index c3e89b6..d83d8f0 100644 --- a/nvim/.config/nvim/lua/util/pyenv.lua +++ b/nvim/.config/nvim/lua/core/util.lua @@ -1,22 +1,37 @@ local T = {} -local exepath = vim.fn.exepath -local function path_join(...) -return table.concat(vim.tbl_flatten { ... }, '/') +-- from astronvim util function +--- Check if a plugin is defined in lazy. Useful with lazy loading when a plugin is not necessarily loaded yet +---@param plugin string The plugin to search for +---@return boolean available # Whether the plugin is available +function T.is_available(plugin) + return T.get_plugin(plugin) and true or false +end + +-- Get the plugin file handle if it exists, return nil otherwise +function T.get_plugin(plugin) + local status, lib = pcall(require, plugin) + if status then + return lib + end + return nil end -- from https://github.com/ray-x/navigator.lua/issues/247#issue-1465308677 -T.get_path = function(workspace) +local function path_join(...) + return table.concat(vim.tbl_flatten({ ... }), "/") +end +-- return the current python environment path +function T.get_python_venv(workspace) -- Use activated virtualenv. if vim.env.VIRTUAL_ENV then return path_join(vim.env.VIRTUAL_ENV, "bin", "python") end - -- Find and use virtualenv in workspace directory. for _, pattern in ipairs({ "*", ".*" }) do local match = vim.fn.glob(path_join(workspace, pattern, "pyvenv.cfg")) if match ~= "" then - local py = path_join("bin", "python") + local py = path_join("bin", "python") match = string.gsub(match, "pyvenv.cfg", py) return match end @@ -26,9 +41,8 @@ T.get_path = function(workspace) return path_join(venv_base_folder, "bin", "python") end end - -- Fallback to system Python. - return exepath("python3") or exepath("python") or "python" + return vim.fn.exepath("python3") or vim.fn.exepath("python") or "python" end return T diff --git a/nvim/.config/nvim/lua/plugins/config/lsp.lua b/nvim/.config/nvim/lua/plugins/config/lsp.lua index 68eb1ca..d4e42a7 100644 --- a/nvim/.config/nvim/lua/plugins/config/lsp.lua +++ b/nvim/.config/nvim/lua/plugins/config/lsp.lua @@ -165,7 +165,7 @@ local python_path lspconfig.pyright.setup({ on_attach = function(client, bufnr) if python_path == nil then - python_path, _ = require("util").get_python_venv(client.config.root_dir) + python_path, _ = require("core.util").get_python_venv(client.config.root_dir) end -- print(string.format("[PYTHON VENV]: %s", vim.inspect(python_path))) client.config.settings.python.pythonPath = python_path @@ -176,14 +176,14 @@ lspconfig.ruff_lsp.setup({ on_attach = function(client, bufnr) on_attach(client, bufnr) if python_path == nil then - python_path, _ = require("util").get_python_venv(client.config.root_dir) + python_path, _ = require("core.util").get_python_venv(client.config.root_dir) end client.config.settings.python.pythonPath = python_path end, }) -- set up arduino with the help of arduino.nvim plugin -if require("util").is_available("arduino") then +if require("core.util").is_available("arduino") then lspconfig.arduino_language_server.setup({ on_new_config = require("arduino").on_new_config, }) diff --git a/nvim/.config/nvim/lua/plugins/core.lua b/nvim/.config/nvim/lua/plugins/core.lua index 839a1c4..92414dc 100644 --- a/nvim/.config/nvim/lua/plugins/core.lua +++ b/nvim/.config/nvim/lua/plugins/core.lua @@ -111,7 +111,7 @@ return { hooks = { pre = function() -- use treesitter commentstring functionality if it's installed - if require("util").is_available("ts_context_commentstring") then + if require("core.util").is_available("ts_context_commentstring") then require("ts_context_commentstring.internal").update_commentstring() end end, diff --git a/nvim/.config/nvim/lua/plugins/ide.lua b/nvim/.config/nvim/lua/plugins/ide.lua index 193d998..c13ff31 100644 --- a/nvim/.config/nvim/lua/plugins/ide.lua +++ b/nvim/.config/nvim/lua/plugins/ide.lua @@ -265,7 +265,7 @@ return { }), }, }) - if require("util").is_available("which-key") then + if require("core.util").is_available("which-key") then require("which-key").register({ ["t"] = { name = "+test" } }) end end, diff --git a/nvim/.config/nvim/lua/plugins/prose.lua b/nvim/.config/nvim/lua/plugins/prose.lua index 17d9646..29b60c6 100644 --- a/nvim/.config/nvim/lua/plugins/prose.lua +++ b/nvim/.config/nvim/lua/plugins/prose.lua @@ -60,7 +60,7 @@ local prose_plugs = { { "mickael-menu/zk-nvim", config = function() - if require("util").is_available("which-key") then + if require("core.util").is_available("which-key") then local prefix = require("which-key").register prefix({ ["n"] = { name = "+notes" } }) prefix({ ["n"] = { name = "+note" } }) diff --git a/nvim/.config/nvim/lua/plugins/telescope.lua b/nvim/.config/nvim/lua/plugins/telescope.lua index 91e3e97..08fa63c 100644 --- a/nvim/.config/nvim/lua/plugins/telescope.lua +++ b/nvim/.config/nvim/lua/plugins/telescope.lua @@ -9,7 +9,7 @@ return { }, cmd = "Telescope", config = function() - if require("util").is_available("which-key") then + if require("core.util").is_available("which-key") then require("which-key").register({ ["f"] = { name = "+find" } }) end -- Setup up telescope fuzzy finding settings diff --git a/nvim/.config/nvim/lua/plugins/ui.lua b/nvim/.config/nvim/lua/plugins/ui.lua index 7e5690a..069051a 100644 --- a/nvim/.config/nvim/lua/plugins/ui.lua +++ b/nvim/.config/nvim/lua/plugins/ui.lua @@ -136,7 +136,7 @@ return { local Terminal = require("toggleterm.terminal").Terminal -- need to disable indentlines since they obscure first line of terminal - if require("util").is_available("mini.nvim") then + if require("core.util").is_available("mini.nvim") then vim.api.nvim_create_autocmd({ "TermOpen" }, { pattern = "*", callback = function() diff --git a/nvim/.config/nvim/lua/util/highlight.lua b/nvim/.config/nvim/lua/util/highlight.lua deleted file mode 100644 index d4c2e99..0000000 --- a/nvim/.config/nvim/lua/util/highlight.lua +++ /dev/null @@ -1,17 +0,0 @@ --- helper for easily defining highlight groups --- --- usage example - italicize comments: --- set_hl("Comment", { gui = "italic" }) -return function(group, options) - local bg = options.bg == nil and "" or "guibg=" .. options.bg - local fg = options.fg == nil and "" or "guifg=" .. options.fg - local gui = options.gui == nil and "" or "gui=" .. options.gui - local link = options.link or false - local target = options.target - - if not link then - vim.cmd(string.format("hi %s %s %s %s", group, bg, fg, gui)) - else - vim.cmd(string.format("hi! link", group, target)) - end -end diff --git a/nvim/.config/nvim/lua/util/init.lua b/nvim/.config/nvim/lua/util/init.lua deleted file mode 100644 index c200e2f..0000000 --- a/nvim/.config/nvim/lua/util/init.lua +++ /dev/null @@ -1,24 +0,0 @@ -local T = {} - --- from astronvim util function ---- Check if a plugin is defined in lazy. Useful with lazy loading when a plugin is not necessarily loaded yet ----@param plugin string The plugin to search for ----@return boolean available # Whether the plugin is available -function T.is_available(plugin) - return T.get_plugin(plugin) and true or false -end - --- Get the plugin file handle if it exists, return nil otherwise -function T.get_plugin(plugin) - local status, lib = pcall(require, plugin) - if(status) then return lib end - return nil -end - --- get the current python environment --- return its path -function T.get_python_venv(workspace) - return require("util.pyenv").get_path(workspace) -end - -return T