feat: add profiling support with environment variable configuration
This commit is contained in:
@@ -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