- added nlua (lua neovim) debug configuration

This commit is contained in:
Erik Mertens
2025-06-26 11:28:50 +02:00
parent f9c8a41cc6
commit bc0e4a1650
8 changed files with 281 additions and 81 deletions

View File

@ -1,49 +1,52 @@
return {
'saghen/blink.cmp',
-- optional: provides snippets for the snippet source
dependencies = { 'rafamadriz/friendly-snippets' },
'saghen/blink.cmp',
-- optional: provides snippets for the snippet source
dependencies = { 'rafamadriz/friendly-snippets' },
version = '1.*',
version = '1.*',
---@module 'blink.cmp'
---@type blink.cmp.Config
opts = {
-- 'default' (recommended) for mappings similar to built-in completions (C-y to accept)
-- 'super-tab' for mappings similar to vscode (tab to accept)
-- 'enter' for enter to accept
-- 'none' for no mappings
--
-- All presets have the following mappings:
-- C-space: Open menu or open docs if already open
-- C-n/C-p or Up/Down: Select next/previous item
-- C-e: Hide menu
-- C-k: Toggle signature help (if signature.enabled = true)
--
-- See :h blink-cmp-config-keymap for defining your own keymap
keymap = { preset = 'default' },
cond = function()
return not vim.g.vscode
end,
appearance = {
-- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
-- Adjusts spacing to ensure icons are aligned
nerd_font_variant = 'normal'
---@module 'blink.cmp'
---@type blink.cmp.Config
opts = {
-- 'default' (recommended) for mappings similar to built-in completions (C-y to accept)
-- 'super-tab' for mappings similar to vscode (tab to accept)
-- 'enter' for enter to accept
-- 'none' for no mappings
--
-- All presets have the following mappings:
-- C-space: Open menu or open docs if already open
-- C-n/C-p or Up/Down: Select next/previous item
-- C-e: Hide menu
-- C-k: Toggle signature help (if signature.enabled = true)
--
-- See :h blink-cmp-config-keymap for defining your own keymap
keymap = { preset = 'default' },
appearance = {
-- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
-- Adjusts spacing to ensure icons are aligned
nerd_font_variant = 'normal'
},
-- (Default) Only show the documentation popup when manually triggered
completion = { documentation = { auto_show = true } },
-- Default list of enabled providers defined so that you can extend it
-- elsewhere in your config, without redefining it, due to `opts_extend`
sources = {
default = { 'lsp', 'path', 'snippets', 'buffer' },
},
-- (Default) Rust fuzzy matcher for typo resistance and significantly better performance
-- You may use a lua implementation instead by using `implementation = "lua"` or fallback to the lua implementation,
-- when the Rust fuzzy matcher is not available, by using `implementation = "prefer_rust"`
--
-- See the fuzzy documentation for more information
fuzzy = { implementation = "prefer_rust_with_warning" }
},
-- (Default) Only show the documentation popup when manually triggered
completion = { documentation = { auto_show = true } },
-- Default list of enabled providers defined so that you can extend it
-- elsewhere in your config, without redefining it, due to `opts_extend`
sources = {
default = { 'lsp', 'path', 'snippets', 'buffer' },
},
-- (Default) Rust fuzzy matcher for typo resistance and significantly better performance
-- You may use a lua implementation instead by using `implementation = "lua"` or fallback to the lua implementation,
-- when the Rust fuzzy matcher is not available, by using `implementation = "prefer_rust"`
--
-- See the fuzzy documentation for more information
fuzzy = { implementation = "prefer_rust_with_warning" }
},
opts_extend = { "sources.default" }
opts_extend = { "sources.default" }
}

177
lua/plugins/debug.lua Normal file
View File

@ -0,0 +1,177 @@
-- debug.lua
--
-- Shows how to use the DAP plugin to debug your code.
--
-- Primarily focused on configuring the debugger for Go, but can
-- be extended to other languages as well. That's why it's called
-- kickstart.nvim and not kitchen-sink.nvim ;)
return {
-- NOTE: Yes, you can install new plugins here!
'mfussenegger/nvim-dap',
-- NOTE: And you can specify dependencies as well
dependencies = {
-- Creates a beautiful debugger UI
'rcarriga/nvim-dap-ui',
-- Required dependency for nvim-dap-ui
'nvim-neotest/nvim-nio',
-- Installs the debug adapters for you
'mason-org/mason.nvim',
'jay-babu/mason-nvim-dap.nvim',
-- Add your own debuggers here
-- 'leoluz/nvim-dap-go',
"jbyuki/one-small-step-for-vimkind"
},
keys = {
-- Basic debugging keymaps, feel free to change to your liking!
{
'<F5>',
function()
require('dap').step_into()
end,
desc = 'Debug: Step Into',
},
{
'<F6>',
function()
require('dap').step_over()
end,
desc = 'Debug: Step Over',
},
{
'<F7>',
function()
require('dap').step_out()
end,
desc = 'Debug: Step Out',
},
{
'<F8>',
function()
require('dap').continue()
end,
desc = 'Debug: Start/Continue',
},
-- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception.
{
'<F9>',
function()
require('dapui').toggle()
end,
desc = 'Debug: See last session result.',
},
{
'<leader>Db',
function()
require('dap').toggle_breakpoint()
end,
desc = '[D]ebug: Toggle [b]reakpoint',
},
{
'<leader>DB',
function()
require('dap').set_breakpoint(vim.fn.input 'Breakpoint condition: ')
end,
desc = '[D]ebug: Set [B]reakpoint condition',
},
{
"<leader>Dl",
function()
require("osv").launch({ port = 8086 })
end,
desc = "[D]ebug [l]aunch"
},
{
"<leader>Dh",
function()
require("dap.ui.widgets").hover()
end,
desc = "[D]ebug [h]over"
}
-- vim.keymap.set('n', '<leader>Dl', function()
-- require "osv".launch({ port = 8086 })
-- end, { noremap = true })
},
config = function()
local dap = require 'dap'
local dapui = require 'dapui'
require('mason-nvim-dap').setup {
-- Makes a best effort to setup the various debuggers with
-- reasonable debug configurations
automatic_installation = true,
-- You can provide additional configuration to the handlers,
-- see mason-nvim-dap README for more information
handlers = {
function(config)
require("mason-nvim-dap").default_setup(config)
end
},
-- You'll need to check that you have the required things installed
-- online, please don't ask me how to install them :)
ensure_installed = {
-- Update this to ensure that you have the debuggers for the langs you want
"firefox_debug_adapter",
"codelldb",
"local-lua-debugger-vscode"
},
}
-- Dap UI setup
-- For more information, see |:help nvim-dap-ui|
dapui.setup {
-- Set icons to characters that are more likely to work in every terminal.
-- Feel free to remove or use ones that you like more! :)
-- Don't feel like these are good choices.
icons = { expanded = '', collapsed = '', current_frame = '*' },
controls = {
icons = {
pause = '',
play = '',
step_into = '',
step_over = '',
step_out = '',
step_back = 'b',
run_last = '▶▶',
terminate = '',
disconnect = '',
},
},
}
-- Change breakpoint icons
vim.api.nvim_set_hl(0, 'DapBreak', { fg = '#e51400' })
vim.api.nvim_set_hl(0, 'DapStop', { fg = '#ffcc00' })
local breakpoint_icons = vim.g.have_nerd_font
and { Breakpoint = '', BreakpointCondition = '', BreakpointRejected = '', LogPoint = '', Stopped = '' }
or { Breakpoint = '', BreakpointCondition = '', BreakpointRejected = '', LogPoint = '', Stopped = '' }
for type, icon in pairs(breakpoint_icons) do
local tp = 'Dap' .. type
local hl = (type == 'Stopped') and 'DapStop' or 'DapBreak'
vim.fn.sign_define(tp, { text = icon, texthl = hl, numhl = hl })
end
dap.listeners.after.event_initialized['dapui_config'] = dapui.open
dap.listeners.before.event_terminated['dapui_config'] = dapui.close
dap.listeners.before.event_exited['dapui_config'] = dapui.close
-- Configure debug adapters
dap.configurations.lua = {
{
type = 'nlua',
request = 'attach',
name = "Attach to running Neovim instance",
}
}
dap.adapters.nlua = function(callback, config)
callback({ type = 'server', host = config.host or "127.0.0.1", port = config.port or 8086 })
end
end,
}

View File

@ -20,7 +20,7 @@ return { -- LSP Configuration & Plugins
map('gd', function() vim.lsp.buf.definition() end, '[G]oto [D]efinition')
-- map('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
-- map('gI', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation')
map('<leader>D', require('telescope.builtin').lsp_type_definitions, 'Type [D]efinition')
map('<leader>gd', require('telescope.builtin').lsp_type_definitions, '[G]oto Type [D]efinition')
map('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols')
map('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols')
-- map('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame')
@ -34,7 +34,8 @@ return { -- LSP Configuration & Plugins
--
-- When you move your cursor, the highlights will be cleared (the second autocommand).
local client = vim.lsp.get_client_by_id(event.data.client_id)
if client and client.server_capabilities.documentHighlightProvider then
if client and client:supports_method(
vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf) then
vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, {
buffer = event.buf,
callback = vim.lsp.buf.document_highlight,
@ -46,6 +47,13 @@ return { -- LSP Configuration & Plugins
})
end
if client and client:supports_method(
vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf) then
map('<leader>ti', function()
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = event.buf }))
end, "[T]oggle [I]nlay")
end
-- autoformat
vim.api.nvim_create_autocmd("BufWritePre", {
buffer = event.buf,
@ -84,7 +92,8 @@ return { -- LSP Configuration & Plugins
workspace = {
library = {
[vim.fn.expand("$VIMRUNTIME/lua")] = true,
[vim.fn.stdpath("config") .. "/lua"] = true
[vim.fn.stdpath("config") .. "/lua"] = true,
["${3rd}/luv/library"] = true,
}
}
},

View File

@ -1,12 +1,15 @@
return {
"nvim-treesitter/nvim-treesitter",
branch = 'master',
branch = "master",
lazy = false,
build = ":TSUpdate",
event = { "BufRead" },
opts = { -- Das Plugin bietet noch diverse weitere Optionen.
indent = { enable = true }, -- Automatische Einrückungen mit Tree-sitter
opts = { -- Das Plugin bietet noch diverse weitere Optionen.
ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc',
'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc', "rust", "vue", "typescript", "css"
},
indent = { enable = true }, -- Automatische Einrückungen mit Tree-sitter
highlight = { enable = true }, -- Das Syntax-Highlighting einschalten
auto_install = true, -- Highlighting-Daten automatisch installieren
auto_install = true, -- Highlighting-Daten automatisch installieren
}
}

View File

@ -1,20 +1,23 @@
return {
"folke/which-key.nvim",
event = "VeryLazy",
opts = {},
config = function()
"folke/which-key.nvim",
event = "VeryLazy",
opts = {},
config = function()
local wk = require("which-key")
wk.add({
{ "<leader>f", group = "Telescope" }
})
end,
keys = {
{
"<leader>?",
function()
require("which-key").show({ global = false })
end,
desc = "Buffer Local Keymaps (which-key)",
wk.add({
{ "<leader>D", group = "Debug" }
})
end,
keys = {
{
"<leader>?",
function()
require("which-key").show({ global = false })
end,
desc = "Buffer Local Keymaps (which-key)",
},
},
},
}