diff options
| author | pablu <me@pablu.de> | 2026-06-19 00:37:46 +0200 |
|---|---|---|
| committer | pablu <me@pablu.de> | 2026-06-19 00:37:46 +0200 |
| commit | 04d720f6c84d52445a0808fffae553b37408a4a2 (patch) | |
| tree | ab547ec14045b7d647f8ce03a718f3e6ee30764e /dot_config/nvim/init.lua | |
| parent | 9d0e106178a14651f5290dd742761167c353631e (diff) | |
only smart-nav on gentoo, and not on other systems, same with tmux navigation
Diffstat (limited to 'dot_config/nvim/init.lua')
| -rw-r--r-- | dot_config/nvim/init.lua | 260 |
1 files changed, 0 insertions, 260 deletions
diff --git a/dot_config/nvim/init.lua b/dot_config/nvim/init.lua deleted file mode 100644 index b618040..0000000 --- a/dot_config/nvim/init.lua +++ /dev/null @@ -1,260 +0,0 @@ -local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" -if not (vim.uv or vim.loop).fs_stat(lazypath) then - vim.fn.system({ - "git", - "clone", - "--filter=blob:none", - "https://github.com/folke/lazy.nvim.git", - "--branch=stable", -- latest stable release - lazypath, - }) -end -vim.opt.rtp:prepend(lazypath) - -require("vim-options") -require("lazy").setup("plugins") - -vim.o.number = true -vim.o.relativenumber = true - -vim.filetype.add({ - extension = { - gotmpl = 'gotmpl', - }, - pattern = { - [".*%.gohtml"] = "gotmpl", - [".*%.gotmpl"] = "gotmpl" - } -}) - --- Panes -vim.cmd.set("splitright") -vim.keymap.set("n", "<leader>/", function() - vim.cmd.vnew() -end, { desc = "Pane split right" }) - -vim.cmd.set("splitbelow") -vim.keymap.set("n", "<leader>-", function() - vim.cmd.new() -end, { desc = "Pane split down" }) - -local function smart_move(direction, vim_cmd) - return function() - local before = vim.api.nvim_get_current_win() - - vim.cmd("wincmd " .. vim_cmd) - - if before == vim.api.nvim_get_current_win() then - vim.system({ - "hyprctl", - "dispatch", - string.format( - "hl.dsp.focus({direction = '%s' })", - direction - ) - }) - end - end -end - -vim.keymap.set('n', '<D-h>', smart_move("left", "h"), { noremap = true, silent = false, desc = "Move to left windows" }); -vim.keymap.set('n', '<D-l>', smart_move("right", "l"), { noremap = true, silent = false, desc = "Move to right windows" }); -vim.keymap.set('n', '<D-j>', smart_move("down", "j"), { noremap = true, silent = false, desc = "Move to down window" }); -vim.keymap.set('n', '<D-k>', smart_move("up", "k"), { noremap = true, silent = false, desc = "Move to up window" }); - -vim.api.nvim_set_keymap('n', 'gb', ':bnext<CR>', { noremap = true, silent = true, desc = "Go back last buffer" }); - -vim.api.nvim_set_keymap('t', '<c-[><c-[>', '<C-\\><C-n>', { noremap = true, silent = true, desc = "Escape Terminal" }); -vim.api.nvim_create_autocmd('TermOpen', { - group = vim.api.nvim_create_augroup('custom-term-open', { clear = true }), - callback = function() - vim.opt.number = false - vim.opt.relativenumber = false - end, -}); - - --- Telescope -local builtin = require("telescope.builtin") -vim.keymap.set('n', '<leader>fg', function() builtin.live_grep({ glob_pattern = "!*_templ.go" }) end, - { desc = "Telescope live grep" }) -vim.keymap.set('n', 'gl', builtin.lsp_references, { desc = "Telescope show references" }) -vim.keymap.set('n', '<leader>fx', builtin.diagnostics, { desc = "Telescope open diagnostics" }) -vim.keymap.set('n', '<leader>ff', builtin.find_files, { desc = "Telescope find files" }) -vim.keymap.set('n', '<leader>fb', builtin.buffers, { desc = "Telescope open buffers" }) - --- Formating -vim.keymap.set("n", "<leader>gf", function() - require("conform").format({ lsp_format = "fallback" }) -end, { desc = "Format buffer" }) - --- Filesystem -vim.keymap.set("n", "<leader>e", ":Oil<CR>", { desc = "Open file explorer: OIL" }) - --- Neotest -local neotest = require("neotest") -vim.keymap.set("n", "<leader>ts", function() - neotest.summary.toggle() -end, { desc = "Neotest open summary" }) -vim.keymap.set("n", "<leader>to", neotest.output.open, { desc = "Neotest open output" }) -vim.keymap.set("n", "<leader>td", function() neotest.run.run({ suite = false, strategy = "dap" }) end, - { desc = "Neotest debug closest test" }) -vim.keymap.set("n", "<leader>tr", function() neotest.run.run({ suite = false }) end, - { desc = "Neotest run closest test" }) - --- Debugging -local dap = require("dap") -vim.keymap.set("n", "<leader>db", dap.toggle_breakpoint, - { nowait = true, remap = false, desc = "Debug toggle breakpoint" }) -vim.keymap.set("n", "<leader>dc", dap.continue, { nowait = true, remap = false, desc = "Debug continue" }) -vim.keymap.set("n", "<leader>di", dap.step_into, { nowait = true, remap = false, desc = "Debug step into" }) -vim.keymap.set("n", "<leader>do", dap.step_over, { nowait = true, remap = false, desc = "Debug step over" }) -vim.keymap.set("n", "<leader>dr", dap.repl.open, { nowait = true, remap = false, desc = "Debug open repl" }) -vim.keymap.set("n", "<leader>dq", function() - dap.terminate() - require("dapui").close() - require("nvim-dap-virtual-text").toggle() -end, { nowait = true, remap = false, desc = "Debug close" }) -vim.keymap.set("n", "<leader>dl", dap.list_breakpoints, { nowait = true, remap = false, desc = "Debug list breakpoints" }) - -local function read_pyproject() - local results = vim.fs.find("pyproject.toml", { upward = true, stop = vim.loop.os_homedir() }) - local path = results[1] - if not path then - return nil - end - - local ok, lines = pcall(vim.fn.readfile, path) - if not ok then - return nil - end - - return table.concat(lines, "\n") -end - -local function get_scripts_from_pyproject() - local pyproject = read_pyproject() - if not pyproject then - return {} - end - - local scripts = {} - - -- Match [tool.poetry.scripts] - for script_line in pyproject:gmatch("%[tool%.poetry%.scripts%][^\n]*\n([^%[]*)") do - for name, module in script_line:gmatch('([%w_%-]+)%s*=%s*"([^"]+)"') do - scripts[name] = module - end - end - - -- Match [project.scripts] - for script_line in pyproject:gmatch("%[project%.scripts%][^\n]*\n([^%[]*)") do - for name, module in script_line:gmatch('([%w_%-]+)%s*=%s*"([^"]+)"') do - scripts[name] = module - end - end - - return scripts -end - -local function get_python_path() - local cwd = vim.fn.getcwd() - if vim.fn.executable(cwd .. "/venv/bin/python") == 1 then - return cwd .. "/venv/bin/python" - elseif vim.fn.executable(cwd .. "/.venv/bin/python") == 1 then - return cwd .. "/.venv/bin/python" - else - return vim.fn.exepath("python") - end -end - --- Store last used parameters for quick reuse -local last_params = {} - -vim.keymap.set("n", "<leader>dps", function() - local scripts = get_scripts_from_pyproject() - - if vim.tbl_isempty(scripts) then - vim.notify("No scripts found in pyproject.toml", vim.log.levels.WARN) - return - end - - local script_names = vim.tbl_keys(scripts) - table.sort(script_names) - - local function start_debug(script_name, module, args_str) - local package = module:match("^([^:]+)") - - -- Parse arguments string into table - local args = {} - if args_str and args_str ~= "" then - for arg in args_str:gmatch("%S+") do - table.insert(args, arg) - end - end - - -- Store for quick reuse - last_params[script_name] = args_str or "" - - vim.notify( - "Debugging: " .. script_name .. (args_str and (" with args: " .. args_str) or ""), - vim.log.levels.INFO - ) - - local dap = require("dap") - dap.configurations.python = { - { - type = "python", - request = "launch", - name = "Debug: " .. script_name, - module = package, - args = args, - pythonPath = get_python_path(), - justMyCode = false, - console = "integratedTerminal", - }, - } - dap.continue() - end - - local function show_param_input(script_name, module) - -- Show input dialog for parameters - vim.ui.input({ - prompt = "Arguments for " .. script_name .. ": ", - default = last_params[script_name] or "", - completion = "file", - }, function(args_str) - if args_str ~= nil then -- nil = cancelled, "" = empty input is OK - start_debug(script_name, module, args_str) - end - end) - end - - local function select_script() - if #script_names == 1 then - show_param_input(script_names[1], scripts[script_names[1]]) - else - vim.ui.select(script_names, { - prompt = "Select script to debug: ", - format_item = function(item) - return item .. " → " .. scripts[item] - end, - }, function(selected) - if selected then - show_param_input(selected, scripts[selected]) - end - end) - end - end - - select_script() -end, { desc = "Debug Python script from pyproject.toml" }) --- Lsp Config -vim.keymap.set("n", "K", vim.lsp.buf.hover, { desc = "Show hover information" }) -vim.keymap.set("n", "gd", vim.lsp.buf.definition, { desc = "Goto definition" }) -vim.keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, { desc = "LSP code action" }) -vim.keymap.set("n", "<leader>cr", vim.lsp.buf.rename, { desc = "LSP rename" }) - --- Motions -vim.keymap.set("n", "<C-d>", "<C-d>zz", {}) -vim.keymap.set("n", "<C-u>", "<C-u>zz", {}) |
