dap.configurations.python missing
โ ๏ธ Please verify that this bug has NOT been reported before.
- [x] I checked all existing issues and didn't find a similar issue
Description
I tried setting nvf for python but when I hit SPACE + d +c I get an error about missing dap.configurations.python. It seams that 4 days ago python.nix was changed for exactly that.
๐ Reproduction steps
Config nvf for python and start debug with space+d+c. An error indicates the missing config dap.configurations.python
๐ Expected behavior
Start debuging
๐ Actual Behavior
Error
๐ป Metadata
- system:
"x86_64-linux"- host os:Linux 6.14.1-zen1, NixOS, 25.05 (Warbler), 25.05.20250412.2631b0b- multi-user?:yes- sandbox:yes- version:nix-env (Nix) 2.28.1- channels(root):"nixos-24.11, nixos-unstable"- nixpkgs:/nix/store/5ds20jm3x2s4z7wn3581r6lc9ybmh45b-source
๐ Relevant log output
-- SECTION: theme
-- Catppuccin theme
require('catppuccin').setup {
flavour = "mocha",
transparent_background = false,
term_colors = true,
integrations = {
nvimtree = {
enabled = true,
transparent_panel = false,
show_root = true,
},
hop = true,
gitsigns = true,
telescope = true,
treesitter = true,
treesitter_context = true,
ts_rainbow = true,
fidget = true,
alpha = true,
leap = true,
lsp_saga = true,
markdown = true,
noice = true,
notify = true, -- nvim-notify
which_key = true,
navic = {
enabled = true,
custom_bg = "NONE", -- "lualine" will set background to mantle
},
},
}
-- setup must be called before loading
vim.cmd.colorscheme "catppuccin"
-- SECTION: globalsScript
vim.g.editorconfig = true
vim.g.mapleader = " "
vim.g.maplocalleader = ","
vim.g.zig_fmt_autosave = 0
-- SECTION: basic
vim.opt.clipboard:append("unnamedplus")
vim.o.smartcase = false
vim.o.ignorecase = false
-- SECTION: optionsScript
vim.o.autoindent = true
vim.o.backup = false
vim.o.cmdheight = 1
vim.o.cursorlineopt = "line"
vim.o.encoding = "utf-8"
vim.o.errorbells = false
vim.o.expandtab = true
vim.o.hidden = true
vim.o.mouse = "nvi"
vim.o.number = true
vim.o.relativenumber = true
vim.o.shiftwidth = 2
vim.o.signcolumn = "yes"
vim.o.spell = true
vim.o.spelllang = "en"
vim.o.splitbelow = true
vim.o.splitright = true
vim.o.swapfile = false
vim.o.tabstop = 2
vim.o.termguicolors = true
vim.o.tm = 500
vim.o.updatetime = 300
vim.o.visualbell = false
vim.o.wrap = false
vim.o.writebackup = false
-- SECTION: lazyConfigs
require('lz.n').load({{"cheatsheet-nvim",["after"] = function()
require("cheatsheet").setup({})
end
,["before"] = function()
require('lz.n').trigger_load('telescope')
end
,["cmd"] = {"Cheatsheet","CheatsheetEdit"}},{"cmp-buffer",["after"] = function()
local path = vim.fn.globpath(vim.o.packpath, 'pack/*/opt/cmp-buffer')
require("rtp_nvim").source_after_plugin_dir(path)
end
,["lazy"] = true},{"cmp-luasnip",["after"] = function()
local path = vim.fn.globpath(vim.o.packpath, 'pack/*/opt/cmp-luasnip')
require("rtp_nvim").source_after_plugin_dir(path)
end
,["lazy"] = true},{"cmp-nvim-lsp",["after"] = function()
local path = vim.fn.globpath(vim.o.packpath, 'pack/*/opt/cmp-nvim-lsp')
require("rtp_nvim").source_after_plugin_dir(path)
end
,["lazy"] = true},{"cmp-path",["after"] = function()
local path = vim.fn.globpath(vim.o.packpath, 'pack/*/opt/cmp-path')
require("rtp_nvim").source_after_plugin_dir(path)
end
,["lazy"] = true},{"cmp-treesitter",["after"] = function()
local path = vim.fn.globpath(vim.o.packpath, 'pack/*/opt/cmp-treesitter')
require("rtp_nvim").source_after_plugin_dir(path)
end
,["lazy"] = true},{"comment-nvim",["after"] = function()
require("Comment").setup({["mappings"] = {["basic"] = false,["extra"] = false}})
end
,["keys"] = {{"gc","<Plug>(comment_toggle_linewise)",["desc"] = "Toggle line comment",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"gb","<Plug>(comment_toggle_blockwise)",["desc"] = "Toggle block comment",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"gcc",function()
return vim.api.nvim_get_vvar('count') == 0 and '<Plug>(comment_toggle_linewise_current)'
or '<Plug>(comment_toggle_linewise_count)'
end
,["desc"] = "Toggle current line comment",["expr"] = true,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"gbc",function()
return vim.api.nvim_get_vvar('count') == 0 and '<Plug>(comment_toggle_blockwise_current)'
or '<Plug>(comment_toggle_blockwise_count)'
end
,["desc"] = "Toggle current block comment",["expr"] = true,["mode"] = {"n"},["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"gc","<Plug>(comment_toggle_linewise_visual)",["desc"] = "Toggle selected comment",["expr"] = false,["mode"] = "x",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"gb","<Plug>(comment_toggle_blockwise_visual)",["desc"] = "Toggle selected block",["expr"] = false,["mode"] = "x",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false}}},{"copilot-cmp",["after"] = function()
local path = vim.fn.globpath(vim.o.packpath, 'pack/*/opt/copilot-cmp')
require("rtp_nvim").source_after_plugin_dir(path)
end
,["lazy"] = true},{"copilot-lua",["after"] = function()
require("copilot").setup({["copilot_node_command"] = "/nix/store/ib8pmf37s9nb8gdbv8a71rhp3wgz83k3-nodejs-slim-22.14.0/bin/node",["panel"] = {["enabled"] = false,["keymap"] = {["accept"] = false,["jump_next"] = false,["jump_prev"] = false,["open"] = false,["refresh"] = false},["layout"] = {["position"] = "bottom",["ratio"] = 0.400000}},["suggestion"] = {["enabled"] = false,["keymap"] = {["accept"] = false,["accept_line"] = false,["accept_word"] = false,["dismiss"] = false,["next"] = false,["prev"] = false}}})
require('copilot_cmp').setup()
end
,["cmd"] = {"Copilot","CopilotAuth","CopilotDetach","CopilotPanel","CopilotStop"},["event"] = {{["event"] = "User",["pattern"] = "LazyFile"}},["keys"] = {{"<CR>",function()
local s, _ = pcall(require("copilot.panel").accept)
if not s then
local termcode = vim.api.nvim_replace_termcodes("<CR>", true, false, true)
vim.fn.feedkeys(termcode, 'n')
end
end
,["desc"] = "[copilot] Accept suggestion",["expr"] = false,["mode"] = {"n"},["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"]]",function()
local s, _ = pcall(require("copilot.panel").jump_next)
if not s then
local termcode = vim.api.nvim_replace_termcodes("]]", true, false, true)
vim.fn.feedkeys(termcode, 'n')
end
end
,["desc"] = "[copilot] Next panel suggestion",["expr"] = false,["mode"] = {"n"},["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"[[",function()
local s, _ = pcall(require("copilot.panel").jump_prev)
if not s then
local termcode = vim.api.nvim_replace_termcodes("[[", true, false, true)
vim.fn.feedkeys(termcode, 'n')
end
end
,["desc"] = "[copilot] Previous panel suggestion",["expr"] = false,["mode"] = {"n"},["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"gr",function()
local s, _ = pcall(require("copilot.panel").refresh)
if not s then
local termcode = vim.api.nvim_replace_termcodes("gr", true, false, true)
vim.fn.feedkeys(termcode, 'n')
end
end
,["desc"] = "[copilot] Refresh suggestion",["expr"] = false,["mode"] = {"n"},["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<M-CR>",function()
local s, _ = pcall(function() require("copilot.panel").open({ position = "bottom", ratio = 0.400000, }) end
)
if not s then
local termcode = vim.api.nvim_replace_termcodes("<M-CR>", true, false, true)
vim.fn.feedkeys(termcode, 'n')
end
end
,["desc"] = "[copilot] Open Panel",["expr"] = false,["mode"] = {"n"},["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<M-l>",function() require('copilot.suggestion').accept() end,["desc"] = "[copilot] Accept suggestion",["expr"] = false,["mode"] = {"i"},["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<C-]>",function() require('copilot.suggestion').dismiss() end,["desc"] = "[copilot] dismiss suggestion",["expr"] = false,["mode"] = {"i"},["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<M-]>",function() require('copilot.suggestion').next() end,["desc"] = "[copilot] next suggestion",["expr"] = false,["mode"] = {"i"},["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<M-[>",function() require('copilot.suggestion').prev() end,["desc"] = "[copilot] previous suggestion",["expr"] = false,["mode"] = {"i"},["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false}}},{"diffview-nvim",["after"] = function()
require("diffview").setup({})
end
,["cmd"] = {"DiffviewClose","DiffviewFileHistory","DiffviewFocusFiles","DiffviewLog","DiffviewOpen","DiffviewRefresh","DiffviewToggleFiles"}},{"fidget-nvim",["after"] = function()
require("fidget").setup({["integration"] = {["nvim-tree"] = {["enable"] = false},["xcodebuild-nvim"] = {["enable"] = true}},["logger"] = {["float_precision"] = 0.010000,["level"] = vim.log.levels.WARN,["max_size"] = 10000,["path"] = string.format("%s/fidget.nvim.log", vim.fn.stdpath("cache"))
},["notification"] = {["configs"] = {["default"] = require('fidget.notification').default_config},["filter"] = vim.log.levels.INFO,["history_size"] = 128,["override_vim_notify"] = false,["poll_rate"] = 10,["redirect"] = function(msg, level, opts)
if opts and opts.on_open then
return require("fidget.integration.nvim-notify").delegate(msg, level, opts)
end
end
,["view"] = {["group_separator"] = "---",["group_separator_hl"] = "Comment",["icon_separator"] = " ",["render_message"] = function(msg, cnt)
return cnt == 1 and msg or string.format("(%dx) %s", cnt, msg)
end
,["stack_upwards"] = true},["window"] = {["align"] = "bottom",["border"] = "rounded",["max_height"] = 0,["max_width"] = 0,["normal_hl"] = "Comment",["relative"] = "editor",["winblend"] = 100,["x_padding"] = 1,["y_padding"] = 0,["zindex"] = 45}},["progress"] = {["display"] = {["done_icon"] = "โ",["done_style"] = "Constant",["done_ttl"] = 3,["format_annote"] = function(msg) return msg.title end
,["format_group_name"] = function(group) return tostring(group) end
,["format_message"] = require("fidget.progress.display").default_format_message
,["group_style"] = "Title",["icon_style"] = "Question",["overrides"] = {},["priority"] = 30,["progress_icon"] = {["pattern"] = "dots",["period"] = 1},["progress_style"] = "WarningMsg",["progress_ttl"] = 99999,["render_limit"] = 16,["skip_history"] = true},["ignore"] = {},["ignore_done_already"] = false,["ignore_empty_message"] = false,["lsp"] = {["log_handler"] = false,["progress_ringbuf_size"] = 100},["notification_group"] = function(msg)
return msg.lsp_client.name
end
,["poll_rate"] = 0,["suppress_on_insert"] = false}})
end
,["event"] = "LspAttach"},{"gitlinker-nvim",["after"] = function()
require("gitlinker").setup({})
end
,["cmd"] = {"GitLink"}},{"icon-picker-nvim",["after"] = function()
require("icon-picker").setup({["disable_legacy_commands"] = true})
end
,["cmd"] = {"IconPickerInsert","IconPickerNormal","IconPickerYank"}},{"leap-nvim",["after"] = function()
require('leap').opts = {
max_phase_one_targets = nil,
highlight_unlabeled_phase_one_targets = false,
max_highlighted_traversal_targets = 10,
case_sensitive = false,
equivalence_classes = { ' \t\r\n', },
substitute_chars = {},
safe_labels = {
"s", "f", "n", "u", "t", "/",
"S", "F", "N", "L", "H", "M", "U", "G", "T", "?", "Z"
},
labels = {
"s", "f", "n",
"j", "k", "l", "h", "o", "d", "w", "e", "m", "b",
"u", "y", "v", "r", "g", "t", "c", "x", "/", "z",
"S", "F", "N",
"J", "K", "L", "H", "O", "D", "W", "E", "M", "B",
"U", "Y", "V", "R", "G", "T", "C", "X", "?", "Z"
},
special_keys = {
repeat_search = '<enter>',
next_phase_one_target = '<enter>',
next_target = {'<enter>', ';'},
prev_target = {'<tab>', ','},
next_group = '<space>',
prev_group = '<tab>',
multi_accept = '<enter>',
multi_revert = '<backspace>',
},
}
end
,["keys"] = {{"<leader>ss","<Plug>(leap-forward-to)",["desc"] = "Leap forward to",["expr"] = false,["mode"] = {"n","o","x"},["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>sS","<Plug>(leap-backward-to)",["desc"] = "Leap backward to",["expr"] = false,["mode"] = {"n","o","x"},["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>sx","<Plug>(leap-forward-till)",["desc"] = "Leap forward till",["expr"] = false,["mode"] = {"n","o","x"},["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>sX","<Plug>(leap-backward-till)",["desc"] = "Leap backward till",["expr"] = false,["mode"] = {"n","o","x"},["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"gs","<Plug>(leap-from-window)",["desc"] = "Leap from window",["expr"] = false,["mode"] = {"n","o","x"},["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false}}},{"luasnip",["after"] = function()
require("luasnip").setup({["enable_autosnippets"] = false})
require('luasnip.loaders.from_vscode').lazy_load()
end
,["lazy"] = true},{"neo-tree-nvim",["after"] = function()
require("neo-tree").setup({["add_blank_line_at_top"] = false,["auto_clean_after_session_restore"] = false,["default_source"] = "filesystem",["enable_cursor_hijack"] = false,["enable_diagnostics"] = true,["enable_git_status"] = true,["enable_modified_markers"] = true,["enable_opened_markers"] = true,["enable_refresh_on_write"] = true,["filesystem"] = {["hijack_netrw_behavior"] = "open_default"},["git_status_async"] = false,["hide_root_node"] = false,["log_level"] = "info",["log_to_file"] = false,["open_files_do_not_replace_types"] = {"terminal","Trouble","qf","edgy"},["open_files_in_last_window"] = true,["retain_hidden_root_indent"] = false})
end
,["cmd"] = {"Neotree"}},{"nvim-cmp",["after"] = function()
local luasnip = require('luasnip')
local cmp = require("cmp")
local kinds = require("cmp.types").lsp.CompletionItemKind
local deprio = function(kind)
return function(e1, e2)
if e1:get_kind() == kind then
return false
end
if e2:get_kind() == kind then
return true
end
return nil
end
end
cmp.setup({["completion"] = {["completeopt"] = "menu,menuone,noinsert"},["formatting"] = {["format"] = function(entry, vim_item)
vim_item.menu = ({["copilot"] = "[Copilot]",["luasnip"] = "[LuaSnip]",["nvim_lsp"] = "[LSP]",["treesitter"] = "[Treesitter]"})[entry.source.name]
return vim_item
end
},["mapping"] = {["<C-Space>"] = cmp.mapping.complete(),["<C-d>"] = cmp.mapping.scroll_docs(-4),["<C-e>"] = cmp.mapping.abort(),["<C-f>"] = cmp.mapping.scroll_docs(4),["<CR>"] = cmp.mapping.confirm({ select = true }),["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.locally_jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end)
,["<Tab>"] = cmp.mapping(function(fallback)
local has_words_before = function()
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
end
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.locally_jumpable(1) then
luasnip.jump(1)
elseif has_words_before() then
cmp.complete()
else
fallback()
end
end)
},["sorting"] = {["comparators"] = {deprio(kinds.Text),deprio(kinds.Snippet),cmp.config.compare.offset,cmp.config.compare.exact,cmp.config.compare.score,cmp.config.compare.kind,cmp.config.compare.length,cmp.config.compare.sort_text}},["sources"] = {{["name"] = "copilot"},{["name"] = "luasnip"},{["name"] = "nvim_lsp"},{["name"] = "treesitter"}},["window"] = {["completion"] = {["border"] = "rounded"},["documentation"] = {["border"] = "rounded"}}})
require('lz.n').trigger_load("cmp-luasnip")
require('lz.n').trigger_load("cmp-buffer")
require('lz.n').trigger_load("cmp-path")
require('lz.n').trigger_load("copilot-cmp")
require('lz.n').trigger_load("cmp-treesitter")
require('lz.n').trigger_load("cmp-nvim-lsp")
end
,["event"] = {"InsertEnter","CmdlineEnter"}},{"nvim-surround",["after"] = function()
require("nvim-surround").setup({["keymaps"] = {["change"] = "gzr",["change_line"] = "gZR",["delete"] = "gzd",["insert"] = "<C-g>z",["insert_line"] = "<C-g>Z",["normal"] = "gz",["normal_cur"] = "gZ",["normal_cur_line"] = "gZZ",["normal_line"] = "gzz",["visual"] = "gz",["visual_line"] = "gZ"}})
end
,["event"] = {"BufReadPre","BufNewFile"},["keys"] = {{"<C-g>z",["expr"] = false,["mode"] = "i",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<C-g>Z",["expr"] = false,["mode"] = "i",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"gz",["expr"] = false,["mode"] = "x",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"gZ",["expr"] = false,["mode"] = "x",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"gz",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"gZ",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"gzz",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"gZZ",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"gzd",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"gzr",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"gZR",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false}}},{"telescope",["after"] = function()
require("telescope").setup({["defaults"] = {["color_devicons"] = true,["entry_prefix"] = " ",["file_ignore_patterns"] = {"node_modules","%.git/","dist/","build/","target/","result/"},["initial_mode"] = "insert",["layout_config"] = {["height"] = 0.800000,["horizontal"] = {["preview_width"] = 0.550000,["prompt_position"] = "top"},["preview_cutoff"] = 120,["vertical"] = {["mirror"] = false},["width"] = 0.800000},["layout_strategy"] = "horizontal",["path_display"] = {"absolute"},["prompt_prefix"] = " ๏ข ",["selection_caret"] = " ",["selection_strategy"] = "reset",["set_env"] = {["COLORTERM"] = "truecolor"},["sorting_strategy"] = "ascending",["vimgrep_arguments"] = {"/nix/store/sbn6iya0mr3z14xvrz8s4ink4mi6w7in-ripgrep-14.1.1/bin/rg","--color=never","--no-heading","--with-filename","--line-number","--column","--smart-case","--hidden","--no-ignore"},["winblend"] = 0},["pickers"] = {["find_files"] = {["find_command"] = {"/nix/store/xkxzdvaq86qfww3r8k0a1qaplk8w58aw-fd-10.2.0/bin/fd","--type=file"}}}})
local telescope = require("telescope")
telescope.load_extension('noice')
telescope.load_extension('notify')
telescope.load_extension('projects')
end
,["before"] = function()
vim.g.loaded_telescope = nil
end
,["cmd"] = {"Telescope"},["keys"] = {{"<leader>ff","<cmd>Telescope find_files<CR>",["desc"] = "Find files [Telescope]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>fg","<cmd>Telescope live_grep<CR>",["desc"] = "Live grep [Telescope]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>fb","<cmd>Telescope buffers<CR>",["desc"] = "Buffers [Telescope]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>fh","<cmd>Telescope help_tags<CR>",["desc"] = "Help tags [Telescope]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>ft","<cmd>Telescope<CR>",["desc"] = "Open [Telescope]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>fr","<cmd>Telescope resume<CR>",["desc"] = "Resume (previous search) [Telescope]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>fvcw","<cmd>Telescope git_commits<CR>",["desc"] = "Git commits [Telescope]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>fvcb","<cmd>Telescope git_bcommits<CR>",["desc"] = "Git buffer commits [Telescope]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>fvb","<cmd>Telescope git_branches<CR>",["desc"] = "Git branches [Telescope]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>fvs","<cmd>Telescope git_status<CR>",["desc"] = "Git status [Telescope]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>fvx","<cmd>Telescope git_stash<CR>",["desc"] = "Git stash [Telescope]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>flsb","<cmd>Telescope lsp_document_symbols<CR>",["desc"] = "LSP Document Symbols [Telescope]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>flsw","<cmd>Telescope lsp_workspace_symbols<CR>",["desc"] = "LSP Workspace Symbols [Telescope]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>flr","<cmd>Telescope lsp_references<CR>",["desc"] = "LSP References [Telescope]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>fli","<cmd>Telescope lsp_implementations<CR>",["desc"] = "LSP Implementations [Telescope]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>flD","<cmd>Telescope lsp_definitions<CR>",["desc"] = "LSP Definitions [Telescope]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>flt","<cmd>Telescope lsp_type_definitions<CR>",["desc"] = "LSP Type Definitions [Telescope]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>fld","<cmd>Telescope diagnostics<CR>",["desc"] = "Diagnostics [Telescope]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>fs","<cmd>Telescope treesitter<CR>",["desc"] = "Treesitter [Telescope]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>fp","<cmd>Telescope projects<CR>",["desc"] = "Find projects [Telescope]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false}}},{"trouble",["after"] = function()
require("trouble").setup({})
end
,["cmd"] = "Trouble",["keys"] = {{"<leader>lwd","<cmd>Trouble toggle diagnostics<CR>",["desc"] = "Workspace diagnostics [trouble]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>ld","<cmd>Trouble toggle diagnostics filter.buf=0<CR>",["desc"] = "Document diagnostics [trouble]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>lr","<cmd>Trouble toggle lsp_references<CR>",["desc"] = "LSP References [trouble]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>xq","<cmd>Trouble toggle quickfix<CR>",["desc"] = "QuickFix [trouble]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>xl","<cmd>Trouble toggle loclist<CR>",["desc"] = "LOCList [trouble]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false},{"<leader>xs","<cmd>Trouble toggle symbols<CR>",["desc"] = "Symbols [trouble]",["expr"] = false,["mode"] = "n",["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false}}}})
require('lzn-auto-require').enable()
-- SECTION: pluginConfigs
-- SECTION: autopairs
require('nvim-autopairs').setup({})
-- SECTION: lsp-setup
vim.g.formatsave = true;
local attach_keymaps = function(client, bufnr)
vim.keymap.set('n', '<leader>lgD', vim.lsp.buf.declaration, {buffer=bufnr, noremap=true, silent=true, desc='Go to declaration'})
vim.keymap.set('n', '<leader>lgd', vim.lsp.buf.definition, {buffer=bufnr, noremap=true, silent=true, desc='Go to definition'})
vim.keymap.set('n', '<leader>lgt', vim.lsp.buf.type_definition, {buffer=bufnr, noremap=true, silent=true, desc='Go to type'})
vim.keymap.set('n', '<leader>lgi', vim.lsp.buf.implementation, {buffer=bufnr, noremap=true, silent=true, desc='List implementations'})
vim.keymap.set('n', '<leader>lgr', vim.lsp.buf.references, {buffer=bufnr, noremap=true, silent=true, desc='List references'})
vim.keymap.set('n', '<leader>lgn', vim.diagnostic.goto_next, {buffer=bufnr, noremap=true, silent=true, desc='Go to next diagnostic'})
vim.keymap.set('n', '<leader>lgp', vim.diagnostic.goto_prev, {buffer=bufnr, noremap=true, silent=true, desc='Go to previous diagnostic'})
vim.keymap.set('n', '<leader>le', vim.diagnostic.open_float, {buffer=bufnr, noremap=true, silent=true, desc='Open diagnostic float'})
vim.keymap.set('n', '<leader>lH', vim.lsp.buf.document_highlight, {buffer=bufnr, noremap=true, silent=true, desc='Document highlight'})
vim.keymap.set('n', '<leader>lS', vim.lsp.buf.document_symbol, {buffer=bufnr, noremap=true, silent=true, desc='List document symbols'})
vim.keymap.set('n', '<leader>lwa', vim.lsp.buf.add_workspace_folder, {buffer=bufnr, noremap=true, silent=true, desc='Add workspace folder'})
vim.keymap.set('n', '<leader>lwr', vim.lsp.buf.remove_workspace_folder, {buffer=bufnr, noremap=true, silent=true, desc='Remove workspace folder'})
vim.keymap.set('n', '<leader>lwl', function() vim.notify(vim.inspect(vim.lsp.buf.list_workspace_folders())) end, {buffer=bufnr, noremap=true, silent=true, desc='List workspace folders'})
vim.keymap.set('n', '<leader>lws', vim.lsp.buf.workspace_symbol, {buffer=bufnr, noremap=true, silent=true, desc='List workspace symbols'})
vim.keymap.set('n', '<leader>lh', vim.lsp.buf.hover, {buffer=bufnr, noremap=true, silent=true, desc='Trigger hover'})
vim.keymap.set('n', '<leader>ls', vim.lsp.buf.signature_help, {buffer=bufnr, noremap=true, silent=true, desc='Signature help'})
vim.keymap.set('n', '<leader>ln', vim.lsp.buf.rename, {buffer=bufnr, noremap=true, silent=true, desc='Rename symbol'})
vim.keymap.set('n', '<leader>la', vim.lsp.buf.code_action, {buffer=bufnr, noremap=true, silent=true, desc='Code action'})
vim.keymap.set('n', '<leader>lf', vim.lsp.buf.format, {buffer=bufnr, noremap=true, silent=true, desc='Format'})
vim.keymap.set('n', '<leader>ltf', function() vim.b.disableFormatSave = not vim.b.disableFormatSave end, {buffer=bufnr, noremap=true, silent=true, desc='Toggle format on save'})
end
-- Enable formatting
local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
format_callback = function(client, bufnr)
if vim.g.formatsave then
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
vim.api.nvim_create_autocmd("BufWritePre", {
group = augroup,
buffer = bufnr,
callback = function()
vim.lsp.buf.format({
bufnr = bufnr,
})
end,
})
end
end
default_on_attach = function(client, bufnr)
attach_keymaps(client, bufnr)
format_callback(client, bufnr)
end
local capabilities = vim.lsp.protocol.make_client_capabilities()
-- HACK: copied from cmp-nvim-lsp. If we ever lazy load lspconfig we
-- should re-evaluate whether we can just use `default_capabilities`
capabilities = {
textDocument = {
completion = {
dynamicRegistration = false,
completionItem = {
snippetSupport = true,
commitCharactersSupport = true,
deprecatedSupport = true,
preselectSupport = true,
tagSupport = {
valueSet = {
1, -- Deprecated
}
},
insertReplaceSupport = true,
resolveSupport = {
properties = {
"documentation",
"detail",
"additionalTextEdits",
"sortText",
"filterText",
"insertText",
"textEdit",
"insertTextFormat",
"insertTextMode",
},
},
insertTextModeSupport = {
valueSet = {
1, -- asIs
2, -- adjustIndentation
}
},
labelDetailsSupport = true,
},
contextSupport = true,
insertTextMode = 1,
completionList = {
itemDefaults = {
'commitCharacters',
'editRange',
'insertTextFormat',
'insertTextMode',
'data',
}
}
},
},
}
-- SECTION: lspconfig
local lspconfig = require('lspconfig')
require('lspconfig.ui.windows').default_options.border = "rounded"
-- SECTION: clang-lsp
local clangd_cap = capabilities
-- use same offsetEncoding as null-ls
clangd_cap.offsetEncoding = {"utf-16"}
lspconfig.clangd.setup{
capabilities = clangd_cap;
on_attach=default_on_attach;
cmd = { "/nix/store/lksd9rqdydlm486bihrgk4yh44f03l62-clang-tools-19.1.7/bin/clangd" };
}
-- SECTION: colorizer
require('colorizer').setup({["filetypes"] = {},["user_default_options"] = {}})
-- SECTION: conform-nvim
require("conform").setup({["default_format_opts"] = {["lsp_format"] = "fallback"},["format_after_save"] = {["lsp_format"] = "fallback"},["format_on_save"] = {["lsp_format"] = "fallback",["timeout_ms"] = 500},["formatters"] = {["black"] = {["command"] = "/nix/store/zndwzs4ccfqljwaa5x96vym8isp0y71n-python3.12-black-25.1.0/bin/black"},["deno_fmt"] = {["command"] = "/nix/store/jvp2j7xmnj3fa1b1cjf4drqaiwwnq94a-deno-2.2.8/bin/deno"},["prettier"] = {["command"] = "/nix/store/q8pacnp434vblp7vh5b769fxdismk2qj-prettier-3.5.3/bin/prettier"}},["formatters_by_ft"] = {["markdown"] = {"deno_fmt"},["python"] = {"black"},["typescript"] = {"prettier"},["typescriptreact"] = {"prettier"}}})
-- SECTION: cursorline
require("cinnamon").setup({["keymaps"] = {["basic"] = false,["extra"] = false},["options"] = {["count_only"] = false,["mode"] = "cursor"}})
-- SECTION: dashboard-nvim
require("dashboard").setup({})
-- SECTION: fastaction
require('fastaction').setup({["popup"] = {["border"] = "rounded"},["register_ui_select"] = true})
-- SECTION: git-conflict
require('git-conflict').setup({["default_mappings"] = false})
-- SECTION: gitsigns
require('gitsigns').setup({})
-- SECTION: highlight-undo
require("highlight-undo").setup({["duration"] = 500})
-- SECTION: hop-nvim
require('hop').setup()
-- SECTION: html-autotag
require('nvim-ts-autotag').setup()
-- SECTION: indent-blankline
require("ibl").setup({["debounce"] = 200,["indent"] = {["char"] = "โ",["priority"] = 1,["repeat_linebreak"] = true,["smart_indent_cap"] = true},["scope"] = {["char"] = "โ",["enabled"] = true,["exclude"] = {["language"] = {},["node_type"] = {["*"] = {"source_file","program"},["lua"] = {"chunk"},["python"] = {"module"}}},["include"] = {["node_type"] = {}},["injected_languages"] = true,["priority"] = 1024,["show_end"] = false,["show_exact_scope"] = false,["show_start"] = false},["viewport_buffer"] = {["max"] = 500,["min"] = 30},["whitespace"] = {["remove_blankline_trail"] = true}})
-- SECTION: lightbulb
local nvim_lightbulb = require("nvim-lightbulb")
nvim_lightbulb.setup({})
vim.api.nvim_create_autocmd({"CursorHold","CursorHoldI"}, {
pattern = "*",
callback = function()
nvim_lightbulb.update_lightbulb()
end,
})
-- SECTION: lsp-signature
-- Enable lsp signature viewer
require("lsp_signature").setup({["bind"] = true,["handler_opts"] = {["border"] = "rounded"}})
-- SECTION: lualine
local lualine = require('lualine')
lualine.setup {["extensions"] = {"neo-tree"},["inactive_sections"] = {["lualine_a"] = {},["lualine_b"] = {},["lualine_c"] = {'filename'},["lualine_x"] = {'location'},["lualine_y"] = {},["lualine_z"] = {}},["options"] = {["always_divide_middle"] = true,["component_separators"] = {"",""},["globalstatus"] = true,["icons_enabled"] = true,["refresh"] = {["statusline"] = 1000,["tabline"] = 1000,["winbar"] = 1000},["section_separators"] = {"",""},["theme"] = "catppuccin"},["sections"] = {["lualine_a"] = {{
"mode",
icons_enabled = true,
separator = {
left = 'โ',
right = '๎ผ'
},
}
,{
"",
draw_empty = true,
separator = { left = '๎บ', right = '๎ผ' }
}
},["lualine_b"] = {{
"filetype",
colored = true,
icon_only = true,
icon = { align = 'left' }
}
,{
"filename",
symbols = {modified = '๏ ', readonly = '๎ฉต '},
separator = {right = '๎ผ'}
}
,{
"",
draw_empty = true,
separator = { left = '๎บ', right = '๎ผ' }
}
},["lualine_c"] = {{
"diff",
colored = false,
diff_color = {
-- Same color values as the general color option can be used here.
added = 'DiffAdd', -- Changes the diff's added color
modified = 'DiffChange', -- Changes the diff's modified color
removed = 'DiffDelete', -- Changes the diff's removed color you
},
symbols = {added = '+', modified = '~', removed = '-'}, -- Changes the diff symbols
separator = {right = '๎ผ'}
}
},["lualine_x"] = {{
-- Lsp server name
function()
local buf_ft = vim.bo.filetype
local excluded_buf_ft = { toggleterm = true, NvimTree = true, ["neo-tree"] = true, TelescopePrompt = true }
if excluded_buf_ft[buf_ft] then
return ""
end
local bufnr = vim.api.nvim_get_current_buf()
local clients = vim.lsp.get_clients({ bufnr = bufnr })
if vim.tbl_isempty(clients) then
return "No Active LSP"
end
local active_clients = {}
for _, client in ipairs(clients) do
table.insert(active_clients, client.name)
end
return table.concat(active_clients, ", ")
end,
icon = '๏
',
separator = {left = '๎พ'},
}
,{
"diagnostics",
sources = {'nvim_lsp', 'nvim_diagnostic', 'nvim_diagnostic', 'vim_lsp', 'coc'},
symbols = {error = '๓ฐ
', warn = '๏ฑ ', info = '๏ ', hint = '๓ฐต '},
colored = true,
update_in_insert = false,
always_visible = false,
diagnostics_color = {
color_error = { fg = 'red' },
color_warn = { fg = 'yellow' },
color_info = { fg = 'cyan' },
},
}
},["lualine_y"] = {{
"",
draw_empty = true,
separator = { left = '๎พ', right = '๎ธ' }
}
,{
'searchcount',
maxcount = 999,
timeout = 120,
separator = {left = '๎พ'}
}
,{
"branch",
icon = '๎ฅ โข',
separator = {left = '๎พ'}
}
},["lualine_z"] = {{
"",
draw_empty = true,
separator = { left = '๎พ', right = '๎ธ' }
}
,{
"progress",
separator = {left = '๎พ'}
}
,{"location"}
,{
"fileformat",
color = {fg='black'},
symbols = {
unix = '๎', -- e712
dos = '๎', -- e70f
mac = '๎', -- e711
}
}
}}}
-- SECTION: markdown-lsp
lspconfig.marksman.setup{
capabilities = capabilities;
on_attach = default_on_attach;
cmd = {"/nix/store/fxkkz8fpk6hsjqi9zzag9v82z0nzmmj3-marksman-2024-12-18/bin/marksman", "server"},
}
-- SECTION: neo-tree
vim.api.nvim_create_autocmd("BufEnter", {
group = vim.api.nvim_create_augroup("load_neo_tree", {}),
desc = "Loads neo-tree when opening a directory",
callback = function(args)
local stats = vim.uv.fs_stat(args.file)
if not stats or stats.type ~= "directory" then
return
end
require("lz.n").trigger_load("neo-tree-nvim")
return true
end,
})
-- SECTION: nix-lsp
lspconfig.nil_ls.setup{
capabilities = capabilities,
on_attach = default_on_attach,
cmd = {"/nix/store/fbp9jsyga1kyhxrzrkxlfssd03wgfxyp-nil-2024-08-06/bin/nil"},
settings = {
["nil"] = {
formatting = {
command = {"/nix/store/f8k0rnww886kk4vmr3qrsqqx2dpmv92v-alejandra-4.0.0/bin/alejandra", "--quiet"},
},
},
},
}
-- SECTION: noice-nvim
require("noice").setup({["format"] = {["cmdline"] = {["icon"] = "๏",["lang"] = "vim",["pattern"] = "^:"},["filter"] = {["icon"] = "๏ ",["lang"] = "bash",["pattern"] = "^:%s*!"},["help"] = {["icon"] = "๓ฐ",["pattern"] = "^:%s*he?l?p?%s+"},["lua"] = {["icon"] = "๎ ",["lang"] = "lua",["pattern"] = "^:%s*lua%s+"},["search_down"] = {["icon"] = "๏ ๏",["kind"] = "search",["lang"] = "regex",["pattern"] = "^/"},["search_up"] = {["icon"] = "๏ ๏",["kind"] = "search",["lang"] = "regex",["pattern"] = "^%?"}},["lsp"] = {["override"] = {["cmp.entry.get_documentation"] = true,["vim.lsp.util.convert_input_to_markdown_lines"] = true,["vim.lsp.util.stylize_markdown"] = true},["signature"] = {["enabled"] = false}},["presets"] = {["bottom_search"] = true,["command_palette"] = true,["inc_rename"] = false,["long_message_to_split"] = true,["lsp_doc_border"] = true},["routes"] = {{["filter"] = {["event"] = "msg_show",["find"] = "written",["kind"] = ""},["opts"] = {["skip"] = true}}}})
-- SECTION: nvim-cursorline
require("nvim-cursorline").setup({["cursorline"] = {["enable"] = false,["number"] = false,["timeout"] = 1000},["cursorword"] = {["enable"] = false,["hl"] = {["underline"] = true},["min_length"] = 3,["timeout"] = 1000}})
-- SECTION: nvim-dap
local dap = require("dap")
vim.fn.sign_define("DapBreakpoint", { text = "๐", texthl = "ErrorMsg", linehl = "", numhl = "" })
-- SECTION: nvim-lint
require("lint").linters_by_ft = {["markdown"] = {"markdownlint-cli2"},["nix"] = {"statix","deadnix"},["typescript"] = {"eslint_d"},["typescriptreact"] = {"eslint_d"}}
local linters = require("lint").linters
local nvf_linters = {["deadnix"] = {["cmd"] = "/nix/store/mg0w4wn0dcxz9a4asgnr3nq4v0jmka9s-deadnix-1.2.1/bin/deadnix"},["eslint_d"] = {["cmd"] = "/nix/store/6ywk0iip009ljw0v6cb7174fan3qhazk-eslint_d-14.3.0/bin/eslint_d",["required_files"] = {"eslint.config.js","eslint.config.mjs",".eslintrc",".eslintrc.json",".eslintrc.js",".eslintrc.yml"}},["markdownlint-cli2"] = {["cmd"] = "/nix/store/q18k1wfldz6wlrxdyvc1zvlfcsxgzg62-markdownlint-cli2-0.17.2/bin/markdownlint-cli2"},["statix"] = {["cmd"] = "/nix/store/zwb51xq8svf2ls3ibp5b0037ghkrsjf3-statix-0.5.8/bin/statix"}}
for linter, config in pairs(nvf_linters) do
if linters[linter] == nil then
linters[linter] = config
else
for key, val in pairs(config) do
linters[linter][key] = val
end
end
end
nvf_lint = function(buf)
local ft = vim.api.nvim_get_option_value("filetype", { buf = buf })
local linters = require("lint").linters
local linters_from_ft = require("lint").linters_by_ft[ft]
-- if no linter is configured for this filetype, stops linting
if linters_from_ft == nil then return end
for _, name in ipairs(linters_from_ft) do
local linter = linters[name]
assert(linter, 'Linter with name `' .. name .. '` not available')
if type(linter) == "function" then
linter = linter()
end
-- for require("lint").lint() to work, linter.name must be set
linter.name = linter.name or name
local cwd = linter.required_files
-- if no configuration files are configured, lint
if cwd == nil then
require("lint").lint(linter)
else
-- if configuration files are configured and present in the project, lint
for _, fn in ipairs(cwd) do
local path = vim.fs.joinpath(linter.cwd or vim.fn.getcwd(), fn);
if vim.uv.fs_stat(path) then
require("lint").lint(linter)
break
end
end
end
end
end
-- SECTION: nvim-notify
local notify = require("notify")
notify.setup({["background_colour"] = "NotifyBackground",["icons"] = {["DEBUG"] = "๏",["ERROR"] = "๏",["INFO"] = "๏",["TRACE"] = "๏
",["WARN"] = "๏ฑ"},["position"] = "top_right",["render"] = "compact",["stages"] = "fade_in_slide_out",["timeout"] = 1000})
vim.notify = notify.notify
-- SECTION: nvim-web-devicons
require("nvim-web-devicons").setup({["color_icons"] = true,["override"] = {}})
-- SECTION: nvimBufferline
require("bufferline").setup({["highlights"] = require("catppuccin.groups.integrations.bufferline").get()
,["options"] = {["always_show_bufferline"] = true,["auto_toggle_bufferline"] = true,["buffer_close_icon"] = " ๓ฐ
",["close_command"] = function(bufnum)
require("bufdelete").bufdelete(bufnum, false)
end
,["close_icon"] = " ๏ ",["color_icons"] = true,["diagnostics"] = "nvim_lsp",["diagnostics_indicator"] = function(count, level, diagnostics_dict, context)
local s = " "
for e, n in pairs(diagnostics_dict) do
local sym = e == "error" and " ๏ "
or (e == "warning" and " ๏ฑ " or " ๏ฉ " )
s = s .. n .. sym
end
return s
end
,["diagnostics_update_in_insert"] = false,["duplicates_across_groups"] = true,["enforce_regular_tabs"] = false,["hover"] = {["delay"] = 200,["enabled"] = true,["reveal"] = {"close"}},["indicator"] = {["style"] = "underline"},["left_mouse_command"] = "buffer %d",["left_trunc_marker"] = "๏จ",["max_name_length"] = 18,["max_prefix_length"] = 15,["mode"] = "buffers",["modified_icon"] = "โ ",["move_wraps_at_ends"] = false,["numbers"] = function(opts)
return string.format('%sยท%s', opts.raise(opts.id), opts.lower(opts.ordinal))
end
,["offsets"] = {{["filetype"] = "NvimTree",["highlight"] = "Directory",["separator"] = true,["text"] = "File Explorer"},{["filetype"] = "neo-tree",["highlight"] = "Directory",["separator"] = true,["text"] = "File Explorer"}},["persist_buffer_sort"] = true,["right_mouse_command"] = "vertical sbuffer %d",["right_trunc_marker"] = "๏ฉ",["separator_style"] = "thin",["show_buffer_close_icons"] = true,["show_buffer_icons"] = true,["show_close_icon"] = true,["show_duplicate_prefix"] = true,["show_tab_indicators"] = true,["sort_by"] = "extension",["style_preset"] = require('bufferline').style_preset.default,["tab_size"] = 18,["themable"] = true,["truncate_names"] = true}})
-- SECTION: project-nvim
require('project_nvim').setup({["detection_methods"] = {"lsp","pattern"},["exclude_dirs"] = {},["lsp_ignored"] = {},["manual_mode"] = true,["patterns"] = {".git","_darcs",".hg",".bzr",".svn","Makefile","package.json","flake.nix","cargo.toml"},["scope_chdir"] = "global",["show_hidden"] = false,["silent_chdir"] = true})
-- SECTION: python-debugger
dap.adapters.debugpy = function(cb, config)
if config.request == 'attach' then
---@diagnostic disable-next-line: undefined-field
local port = (config.connect or config).port
---@diagnostic disable-next-line: undefined-field
local host = (config.connect or config).host or '127.0.0.1'
cb({
type = 'server',
port = assert(port, '`connect.port` is required for a python `attach` configuration'),
host = host,
options = {
source_filetype = 'python',
},
})
else
cb({
type = 'executable',
command = '/nix/store/qzx03byphidxhxssn1a33i8qjmqygivk-python3-3.12.9-env/bin/python3.12',
args = { '-m', 'debugpy.adapter' },
options = {
source_filetype = 'python',
},
})
end
end
dap.configurations.debugpy = {
{
-- The first three options are required by nvim-dap
type = 'debugpy'; -- the type here established the link to the adapter definition: `dap.adapters.debugpy`
request = 'launch';
name = "Launch file";
-- Options below are for debugpy, see https://github.com/microsoft/debugpy/wiki/Debug-configuration-settings for supported options
program = "${file}"; -- This configuration will launch the current file if used.
pythonPath = function()
-- debugpy supports launching an application with a different interpreter then the one used to launch debugpy itself.
-- The code below looks for a `venv` or `.venv` folder in the current directly and uses the python within.
-- You could adapt this - to for example use the `VIRTUAL_ENV` environment variable.
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'
elseif vim.fn.executable("python") == 1 then
return vim.fn.exepath("python")
else -- WARNING cfg.dap.package probably has NO libraries other than builtins and debugpy
return '/nix/store/qzx03byphidxhxssn1a33i8qjmqygivk-python3-3.12.9-env/bin/python3.12'
end
end;
},
}
-- SECTION: python-lsp
lspconfig.pyright.setup{
capabilities = capabilities;
on_attach = default_on_attach;
cmd = {"/nix/store/i0zi018agv61nb0smyxa54xbzg881g7v-pyright-1.1.396/bin/pyright-langserver", "--stdio"}
}
-- SECTION: treesitter
require('nvim-treesitter.configs').setup {
-- Disable imperative treesitter options that would attempt to fetch
-- grammars into the read-only Nix store. To add additional grammars here
-- you must use the `config.vim.treesitter.grammars` option.
auto_install = false,
sync_install = false,
ensure_installed = {},
-- Indentation module for Treesitter
indent = {
enable = true,
disable = {},
},
-- Highlight module for Treesitter
highlight = {
enable = true,
disable = {},
additional_vim_regex_highlighting = false,
},
-- Indentation module for Treesitter
-- Keymaps are set to false here as they are
-- handled by `vim.maps` entries calling lua
-- functions achieving the same functionality.
incremental_selection = {
enable = true,
disable = {},
keymaps = {
init_selection = false,
node_incremental = false,
scope_incremental = false,
node_decremental = false,
},
},
}
-- SECTION: treesitter-context
require("treesitter-context").setup({["line_numbers"] = true,["max_lines"] = 0,["min_window_height"] = 0,["mode"] = "cursor",["multiline_threshold"] = 20,["separator"] = "-",["trim_scope"] = "outer",["zindex"] = 20})
-- SECTION: ts-lsp
lspconfig.ts_ls.setup {
capabilities = capabilities,
on_attach = function(client, bufnr)
attach_keymaps(client, bufnr);
client.server_capabilities.documentFormattingProvider = false;
end,
cmd = {"/nix/store/lcpd2bbb0bvxlhm7j7plmbzs73mzgig9-typescript-language-server-4.3.3/bin/typescript-language-server", "--stdio"}
}
-- SECTION: vim-illuminate
require('illuminate').configure({["filetypes_denylist"] = {"dirvish","fugitive","help","neo-tree","notify","NvimTree","TelescopePrompt"}})
-- SECTION: whichkey
local wk = require("which-key")
wk.setup ({["notify"] = true,["preset"] = "modern",["replace"] = {["<cr>"] = "RETURN",["<leader>"] = "SPACE",["<space>"] = "SPACE",["<tab>"] = "TAB"},["win"] = {["border"] = "rounded"}})
wk.add({{ '<leader>b', desc = '+Buffer' },{ '<leader>bm', desc = 'BufferLineMove' },{ '<leader>bs', desc = 'BufferLineSort' },{ '<leader>bsi', desc = 'BufferLineSortById' },{ '<leader>f', desc = '+Telescope' },{ '<leader>fl', desc = 'Telescope LSP' },{ '<leader>fm', desc = 'Cellular Automaton' },{ '<leader>fv', desc = 'Telescope Git' },{ '<leader>fvc', desc = 'Commits' },{ '<leader>g', desc = '+Gitsigns' },{ '<leader>lw', desc = '+Workspace' },{ '<leader>s', desc = '+Leap' },{ '<leader>x', desc = '+Trouble' }})
-- SECTION: zig-lsp
lspconfig.zls.setup {
capabilities = capabilities,
on_attach = default_on_attach,
cmd = {'/nix/store/5k61hv3sv316gp0rnd7h4xn87m2g24mm-zls-0.14.0/bin/zls'}
}
-- SECTION: augroups
local nvf_autogroups = {}
for _, group in ipairs({{["clear"] = true,["enable"] = true,["name"] = "nvf_nvim_lint"},{["clear"] = true,["enable"] = true,["name"] = "nvf_lazy_file_hooks"}}) do
if group.name then
nvf_autogroups[group.name] = { clear = group.clear }
end
end
for group_name, options in pairs(nvf_autogroups) do
vim.api.nvim_create_augroup(group_name, options)
end
-- SECTION: autocmds
local nvf_autocommands = {{["callback"] = function(args)
nvf_lint(args.buf)
end
,["enable"] = true,["event"] = {"BufWritePost"},["nested"] = false,["once"] = false},{["command"] = "doautocmd User LazyFile",["enable"] = true,["event"] = {"BufReadPost","BufNewFile","BufWritePre"},["group"] = "nvf_lazy_file_hooks",["nested"] = false,["once"] = true}}
for _, autocmd in ipairs(nvf_autocommands) do
vim.api.nvim_create_autocmd(
autocmd.event,
{
group = autocmd.group,
pattern = autocmd.pattern,
buffer = autocmd.buffer,
desc = autocmd.desc,
callback = autocmd.callback,
command = autocmd.command,
once = autocmd.once,
nested = autocmd.nested
}
)
end
-- SECTION: mappings
vim.keymap.set("n", "<leader>dc", require('dap').continue, {["desc"] = "Continue",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set("n", "<leader>dR", require('dap').restart, {["desc"] = "Restart",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set("n", "<leader>dq", require('dap').terminate, {["desc"] = "Terminate",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set("n", "<leader>d.", require('dap').run_last, {["desc"] = "Re-run Last Debug Session",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set("n", "<leader>dr", require('dap').repl.toggle, {["desc"] = "Toggle Repl",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set("n", "<leader>dh", require('dap.ui.widgets').hover, {["desc"] = "Hover",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set("n", "<leader>db", require('dap').toggle_breakpoint, {["desc"] = "Toggle breakpoint",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set("n", "<leader>dgc", require('dap').run_to_cursor, {["desc"] = "Continue to the current cursor",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set("n", "<leader>dgi", require('dap').step_into, {["desc"] = "Step into function",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set("n", "<leader>dgo", require('dap').step_out, {["desc"] = "Step out of function",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set("n", "<leader>dgj", require('dap').step_over, {["desc"] = "Next step",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set("n", "<leader>dgk", require('dap').step_back, {["desc"] = "Step back",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set("n", "<leader>dvo", require('dap').up, {["desc"] = "Go up stacktrace",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set("n", "<leader>dvi", require('dap').down, {["desc"] = "Go down stacktrace",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>bc", ":BufferLinePick<CR>", {["desc"] = "Pick buffer",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>bmn", ":BufferLineMoveNext<CR>", {["desc"] = "Move next buffer",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>bmp", ":BufferLineMovePrev<CR>", {["desc"] = "Move previous buffer",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>bn", ":BufferLineCycleNext<CR>", {["desc"] = "Next buffer",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>bp", ":BufferLineCyclePrev<CR>", {["desc"] = "Previous buffer",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>bsd", ":BufferLineSortByDirectory<CR>", {["desc"] = "Sort buffers by directory",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>bse", ":BufferLineSortByExtension<CR>", {["desc"] = "Sort buffers by extension",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>bsi", function() require("bufferline").sort_buffers_by(function (buf_a, buf_b) return buf_a.id < buf_b.id end) end, {["desc"] = "Sort buffers by ID",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>c0", "<Plug>(git-conflict-none)", {["desc"] = "Choose None [Git-Conflict]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>cb", "<Plug>(git-conflict-both)", {["desc"] = "Choose Both [Git-Conflict]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>co", "<Plug>(git-conflict-ours)", {["desc"] = "Choose Ours [Git-Conflict]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>ct", "<Plug>(git-conflict-theirs)", {["desc"] = "Choose Theirs [Git-Conflict]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>h", "<cmd> HopPattern<CR>", {["desc"] = "Jump to occurrences [hop.nvim]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>hD", function() package.loaded.gitsigns.diffthis('~') end, {["desc"] = "Diff project [Gitsigns]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>hP", package.loaded.gitsigns.preview_hunk, {["desc"] = "Preview hunk [Gitsigns]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>hR", package.loaded.gitsigns.reset_buffer, {["desc"] = "Reset buffer [Gitsigns]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>hS", package.loaded.gitsigns.stage_buffer, {["desc"] = "Stage buffer [Gitsigns]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>hb", function() package.loaded.gitsigns.blame_line{full=true} end, {["desc"] = "Blame line [Gitsigns]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>hd", package.loaded.gitsigns.diffthis, {["desc"] = "Diff this [Gitsigns]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>hr", package.loaded.gitsigns.reset_hunk, {["desc"] = "Reset hunk [Gitsigns]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>hs", package.loaded.gitsigns.stage_hunk, {["desc"] = "Stage hunk [Gitsigns]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>hu", package.loaded.gitsigns.undo_stage_hunk, {["desc"] = "Undo stage hunk [Gitsigns]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>tb", package.loaded.gitsigns.toggle_current_line_blame, {["desc"] = "Toggle blame [Gitsigns]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>td", package.loaded.gitsigns.toggle_deleted, {["desc"] = "Toggle deleted [Gitsigns]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "[c", function()
if vim.wo.diff then return "[c" end
vim.schedule(function() package.loaded.gitsigns.prev_hunk() end)
return '<Ignore>'
end
, {["desc"] = "Previous hunk [Gitsigns]",["expr"] = true,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "[x", "<Plug>(git-conflict-next-conflict)", {["desc"] = "Go to the next Conflict [Git-Conflict]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "]c", function()
if vim.wo.diff then return "]c" end
vim.schedule(function() package.loaded.gitsigns.next_hunk() end)
return '<Ignore>'
end
, {["desc"] = "Next hunk [Gitsigns]",["expr"] = true,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "]x", "<Plug>(git-conflict-prev-conflict)", {["desc"] = "Go to the previous Conflict [Git-Conflict]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "gnn", ":lua require('nvim-treesitter.incremental_selection').init_selection()<CR>", {["desc"] = "Init selection [treesitter]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"v"}, "<leader>hr", function() package.loaded.gitsigns.reset_hunk {vim.fn.line('.'), vim.fn.line('v')} end, {["desc"] = "Reset hunk [Gitsigns]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"v"}, "<leader>hs", function() package.loaded.gitsigns.stage_hunk {vim.fn.line('.'), vim.fn.line('v')} end, {["desc"] = "Stage hunk [Gitsigns]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n","x"}, "grc", "<cmd>lua require('nvim-treesitter.incremental_selection').scope_incremental()<CR>", {["desc"] = "Increment selection by scope [treesitter]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n","x"}, "grm", "<cmd>lua require('nvim-treesitter.incremental_selection').node_decremental()<CR>", {["desc"] = "Decrement selection by node [treesitter]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n","x"}, "grn", "<cmd>lua require('nvim-treesitter.incremental_selection').node_incremental()<CR>", {["desc"] = "Increment selection by node [treesitter]",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<F5>", ":lua require\"dap\".continue()<CR>", {["desc"] = "Start / Continue Debug",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"i"}, "jk", "<ESC>", {["desc"] = "Exit insert mode",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>nh", ":nohl<CR>", {["desc"] = "Clear search highlights",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>ff", "<cmd>Telescope find_files<cr>", {["desc"] = "Search files by name",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>lg", "<cmd>Telescope live_grep<cr>", {["desc"] = "Search files by contents",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"n"}, "<leader>fe", "<cmd>Neotree toggle<cr>", {["desc"] = "File browser toggle",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"i"}, "<C-h>", "<Left>", {["desc"] = "Move left in insert mode",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"i"}, "<C-j>", "<Down>", {["desc"] = "Move down in insert mode",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"i"}, "<C-k>", "<Up>", {["desc"] = "Move up in insert mode",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
vim.keymap.set({"i"}, "<C-l>", "<Right>", {["desc"] = "Move right in insert mode",["expr"] = false,["noremap"] = true,["nowait"] = false,["script"] = false,["silent"] = true,["unique"] = false})
-- SECTION: spellcheck
-- Disable spellchecking for certain filetypes
-- as configured by `vim.spellcheck.ignoredFiletypes`
vim.api.nvim_create_augroup("nvf_autocmds", {clear = false})
vim.api.nvim_create_autocmd({ "FileType" }, {
group = "nvf_autocmds",
pattern = { "toggleterm" },
callback = function()
vim.opt_local.spell = false
end,
})
CC @howird on this.
I don't have Python DAP set up, but my guess is we're trying to access dap.adapters.python somewhere after https://github.com/NotAShelf/nvf/pull/841
Hi @cristids , is there possibly a .vscode/launch.json file in the codebase that you're debugging? If so, then it could be that you configured it to "type": "python", and it should be changed to "type": "debugpy" as seen here.
Otherwise, could I take a look at your nvf config?
No, just tested with a new folder and a simple hello world My whole config is at https://github.com/cristids/nixos-config . The nvf file is in modules/home/hom-manager-modules/nvf.nix :
`{ config, pkgs, nvf, ... }: { imports = [ nvf.homeManagerModules.default ];
programs.nvf = { enable = true;
settings.vim = {
vimAlias = true;
viAlias = true;
withNodeJs = true;
useSystemClipboard = true;
theme = {
enable = true;
name = "catppuccin";
style = "mocha";
transparent = false;
};
options = {
tabstop = 2;
shiftwidth = 2;
wrap = false;
};
keymaps = [
{
key = "<F5>";
mode = ["n"];
action = ":lua require\"dap\".continue()<CR>";
desc = "Start / Continue Debug";
}
{
key = "jk";
mode = ["i"];
action = "<ESC>";
desc = "Exit insert mode";
}
{
key = "<leader>nh";
mode = ["n"];
action = ":nohl<CR>";
desc = "Clear search highlights";
}
{
key = "<leader>ff";
mode = ["n"];
action = "<cmd>Telescope find_files<cr>";
desc = "Search files by name";
}
{
key = "<leader>lg";
mode = ["n"];
action = "<cmd>Telescope live_grep<cr>";
desc = "Search files by contents";
}
{
key = "<leader>fe";
mode = ["n"];
action = "<cmd>Neotree toggle<cr>";
desc = "File browser toggle";
}
{
key = "<C-h>";
mode = ["i"];
action = "<Left>";
desc = "Move left in insert mode";
}
{
key = "<C-j>";
mode = ["i"];
action = "<Down>";
desc = "Move down in insert mode";
}
{
key = "<C-k>";
mode = ["i"];
action = "<Up>";
desc = "Move up in insert mode";
}
{
key = "<C-l>";
mode = ["i"];
action = "<Right>";
desc = "Move right in insert mode";
}
];
telescope.enable = true;
spellcheck = {
enable = true;
};
lsp = {
formatOnSave = true;
lspkind.enable = false;
lightbulb.enable = true;
lspsaga.enable = false;
trouble.enable = true;
lspSignature.enable = true;
otter-nvim.enable = false;
# lsplines.enable = false;
nvim-docs-view.enable = false;
};
languages = {
enableLSP = true;
enableFormat = true;
enableTreesitter = true;
enableExtraDiagnostics = true;
nix.enable = true;
clang.enable = true;
zig.enable = true;
python = {
enable = true;
dap.enable = true;
dap.debugger = "debugpy";
format.enable = true;
lsp.enable = true;
lsp.server = "pyright";
treesitter.enable = true;
};
markdown.enable = true;
ts.enable = true;
html.enable = true;
};
visuals = {
nvim-web-devicons.enable = true;
nvim-cursorline.enable = true;
cinnamon-nvim.enable = true;
fidget-nvim.enable = true;
highlight-undo.enable = true;
indent-blankline.enable = true;
};
statusline = {
lualine = {
enable = true;
theme = "catppuccin";
};
};
autopairs.nvim-autopairs.enable = true;
autocomplete.nvim-cmp.enable = true;
snippets.luasnip.enable = true;
tabline = {
nvimBufferline.enable = true;
};
treesitter.context.enable = true;
binds = {
whichKey.enable = true;
cheatsheet.enable = true;
};
git = {
enable = true;
gitsigns.enable = true;
gitsigns.codeActions.enable = false; # throws an annoying debug message
};
projects.project-nvim.enable = true;
dashboard.dashboard-nvim.enable = true;
filetree.neo-tree.enable = true;
notify = {
nvim-notify.enable = true;
# nvim-notify.setupOpts.background_colour = "#${config.lib.stylix.colors.base01}";
};
utility = {
ccc.enable = false;
vim-wakatime.enable = false;
icon-picker.enable = true;
surround.enable = true;
diffview-nvim.enable = true;
motion = {
hop.enable = true;
leap.enable = true;
precognition.enable = false;
};
images = {
image-nvim.enable = false;
};
};
ui = {
borders.enable = true;
noice.enable = true;
colorizer.enable = true;
illuminate.enable = true;
breadcrumbs = {
enable = false;
navbuddy.enable = false;
};
smartcolumn = {
enable = false;
};
fastaction.enable = true;
};
assistant = {
chatgpt.enable = false;
copilot = {
enable = true;
cmp.enable = true;
};
codecompanion-nvim.enable = false;
};
session = {
nvim-session-manager.enable = false;
};
comments = {
comment-nvim.enable = true;
};
};
}; } `
could you try adding programs.nvf.settings.vim.languages.enableDAP = true;?
Tried, same error.
languages = {
enableLSP = true;
enableFormat = true;
enableTreesitter = true;
enableExtraDiagnostics = true;
enableDAP = true;
nix.enable = true;
clang.enable = true;
zig.enable = true;
python = {
enable = true;
dap.enable = true;
dap.debugger = "debugpy";
format.enable = true;
lsp.enable = true;
lsp.server = "pyright";
treesitter.enable = true;
};
markdown.enable = true;
ts.enable = true;
html.enable = true;
};
I found the regression, see this PR if you could test it by changing your flake to: nvf.url = "github:howird/nvf"; that would be appreciated. I've tested on my own machine and it works now
I confirm that it works with this branch: nvf.url = "github:howird/nvf"; but upon starting debug the output window has not opened automatically. Probably this is by design. I also can confirm that adding a .vscode/launch.json like the one below works perfect with nvf.url = "github:notashelf/nvf"; and also showing a menu with launch options and showing the output terminal automaticaly. I only wonder why .vscode ? The same launch.json did not work on root of the project.
{ "configurations": [ { "name": "Python Debugger: Current File (Integrated Terminal)", "type": "debugpy", "request": "launch", "program": "${file}", "console": "integratedTerminal" }, { "name": "Python Debugger: Current File (External Terminal)", "type": "debugpy", "request": "launch", "program": "${file}", "console": "externalTerminal" } ] }
Thanks for all your help.
No prob, thanks for testing it.
If you use dap-ui (vim.debugger.nvim-dap.ui.enable = true;) it should start automatically when you connect by default, you can turn it off with vim.debugger.nvim-dap.ui.autoStart.
Yea i guess it was a standard created by vscode that other daps picked up on since so many people use vscode.
FYI the PR was merged to main so you can swap back to this repo in your flake and close the issue.