--- @module "config.profile" --- This module configures the profiler for the Neovim configuration. --- This tool can be used to profile specific modules or all modules. --- --- The profiler can be toggled with the leader keybinding `d` --- or with the `NVIM_PROFILE` environment variable. --- --- Specific modules can be selected with the `NVIM_PROFILE_MODULE` --- environment variable. -- ╭─────────────────────────────────────────────────────────╮ -- │ 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('d', function() local prof_name = profile_module if profile_module == '*' then prof_name = 'all' end print('Profiling module: ' .. prof_name) toggle_profile() end, 'Toggle Profiler')