feat: add profiling support with environment variable configuration
This commit is contained in:
@@ -51,6 +51,9 @@
|
|||||||
-- ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
|
-- ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
|
||||||
-- The rootiest NeoVim configuration!
|
-- The rootiest NeoVim configuration!
|
||||||
|
|
||||||
|
-- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ OPTIONS ━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
-- Options are configured in the lua/config/options.lua file
|
||||||
|
|
||||||
-- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ROOTIEST ━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
-- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ROOTIEST ━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
-- Rootiest Configuration
|
-- Rootiest Configuration
|
||||||
require("config.rootiest").setup()
|
require("config.rootiest").setup()
|
||||||
@@ -62,3 +65,16 @@ require("config.lazy")
|
|||||||
-- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ROCKS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
-- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ROCKS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
-- Load LuaRocks package manager and plugins
|
-- Load LuaRocks package manager and plugins
|
||||||
require("config.rocks")
|
require("config.rocks")
|
||||||
|
|
||||||
|
-- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ PROFILING ━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
-- Load profiling package
|
||||||
|
require("config.profile")
|
||||||
|
|
||||||
|
-- Profiling options: Set by environment variable
|
||||||
|
-- ──────────────────────────────────────────────────────────────────────
|
||||||
|
-- NVIM_PROFILE=1 Start profiling at startup
|
||||||
|
-- NVIM_PROFILE_MODILE="lualine" Set profiling target to lualine
|
||||||
|
-- ──────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
-- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ KEYMAPS ━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
-- Keymaps are configured in the lua/config/keymaps.lua file
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
-- ╭─────────────────────────────────────────────────────────╮
|
||||||
|
-- │ PROFILER │
|
||||||
|
-- ╰─────────────────────────────────────────────────────────╯
|
||||||
|
|
||||||
|
-- Check if the environment variable is set
|
||||||
|
local should_profile = os.getenv("NVIM_PROFILE")
|
||||||
|
local profile_module = os.getenv("NVIM_PROFILE_MODULE") or "*"
|
||||||
|
|
||||||
|
-- Start the profiler
|
||||||
|
if should_profile then
|
||||||
|
require("profile").instrument_autocmds()
|
||||||
|
if should_profile:lower():match("^start") then
|
||||||
|
require("profile").start(profile_module)
|
||||||
|
else
|
||||||
|
require("profile").instrument(profile_module)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Function to toggle the profiler
|
||||||
|
local function toggle_profile()
|
||||||
|
local prof = require("profile")
|
||||||
|
if prof.is_recording() then
|
||||||
|
prof.stop()
|
||||||
|
vim.ui.input({
|
||||||
|
prompt = "Save profile to:",
|
||||||
|
completion = "file",
|
||||||
|
default = "profile.json",
|
||||||
|
}, function(filename)
|
||||||
|
if filename then
|
||||||
|
prof.export(filename)
|
||||||
|
vim.notify(string.format("Wrote %s", filename))
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
else
|
||||||
|
prof.start(profile_module)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Add the keybind to toggle the profiler
|
||||||
|
require("data").func.add_keymap("<leader>d<f1>", function()
|
||||||
|
local prof_name = profile_module
|
||||||
|
if profile_module == "*" then
|
||||||
|
prof_name = "all"
|
||||||
|
end
|
||||||
|
print("Profiling module: " .. prof_name)
|
||||||
|
toggle_profile()
|
||||||
|
end, "Toggle Profiler")
|
||||||
Reference in New Issue
Block a user