From d1cab8ceef061685f7cf69f52915ab05d3910a46 Mon Sep 17 00:00:00 2001 From: Mathias Schneider Date: Tue, 7 Apr 2026 13:29:31 +0200 Subject: [PATCH] pimp up nvim functionality for other languages (not only Python) --- .install_skripte/install_terminal_pcks.sh | 3 +- term/.config/nvim/lua/plugins/debugging.lua | 57 ++++++++++++++++++++ term/.config/nvim/lua/plugins/none-ls.lua | 8 +++ term/.config/nvim/lua/plugins/nvim-lint.lua | 6 +++ term/.config/nvim/lua/plugins/toggleterm.lua | 2 +- term/.config/nvim/lua/plugins/treesitter.lua | 15 +++++- 6 files changed, 88 insertions(+), 3 deletions(-) diff --git a/.install_skripte/install_terminal_pcks.sh b/.install_skripte/install_terminal_pcks.sh index eb0f6ee..bea7ccf 100755 --- a/.install_skripte/install_terminal_pcks.sh +++ b/.install_skripte/install_terminal_pcks.sh @@ -5,7 +5,8 @@ sudo pacman -S --needed \ fastfetch \ tree-sitter-cli \ ruff \ - python-ruff + python-ruff \ + chromium npm install -g vscode-js-debug npm install -g eslint_d diff --git a/term/.config/nvim/lua/plugins/debugging.lua b/term/.config/nvim/lua/plugins/debugging.lua index 9827d9b..c690a29 100644 --- a/term/.config/nvim/lua/plugins/debugging.lua +++ b/term/.config/nvim/lua/plugins/debugging.lua @@ -11,6 +11,17 @@ return { "theHamsta/nvim-dap-virtual-text", dependencies = "mfussenegger/nvim-dap", }, + { + "mxsdev/nvim-dap-vscode-js", + dependencies = { + "mfussenegger/nvim-dap", + { + "microsoft/vscode-js-debug", + version = "1.x", + build = "npm ci --legacy-peer-deps && npx gulp vsDebugServerBundle && mv dist out", + }, + }, + }, { "mfussenegger/nvim-dap-python", dependencies = "mfussenegger/nvim-dap", @@ -19,6 +30,52 @@ return { local dapui = require("dapui") require("dap-python").setup() + -- JavaScript/TypeScript debugging + require("dap-vscode-js").setup({ + debugger_path = vim.fn.stdpath("data") .. "/lazy/vscode-js-debug", + adapters = { "pwa-node", "pwa-chrome", "pwa-msedge", "node-terminal", "pwa-extensionHost" }, + }) + + for _, language in ipairs({ "typescript", "javascript", "typescriptreact", "javascriptreact" }) do + dap.configurations[language] = { + { + type = "pwa-node", + request = "launch", + name = "Launch file", + program = "${file}", + cwd = "${workspaceFolder}", + }, + { + type = "pwa-node", + request = "attach", + name = "Attach", + processId = require("dap.utils").pick_process, + cwd = "${workspaceFolder}", + }, + { + type = "pwa-node", + request = "launch", + name = "Debug Jest Tests", + runtimeExecutable = "node", + runtimeArgs = { + "./node_modules/jest/bin/jest.js", + "--runInBand", + }, + rootPath = "${workspaceFolder}", + cwd = "${workspaceFolder}", + console = "integratedTerminal", + internalConsoleOptions = "neverOpen", + }, + { + type = "pwa-chrome", + request = "launch", + name = "Launch Chrome", + url = "http://localhost:3000", + webRoot = "${workspaceFolder}", + }, + } + end + dapui.setup({ icons = { expanded = "▾", collapsed = "▸", current_frame = "▸" }, mappings = { diff --git a/term/.config/nvim/lua/plugins/none-ls.lua b/term/.config/nvim/lua/plugins/none-ls.lua index e8aa5ff..f55feb5 100644 --- a/term/.config/nvim/lua/plugins/none-ls.lua +++ b/term/.config/nvim/lua/plugins/none-ls.lua @@ -10,7 +10,15 @@ return { jsx = { "prettier", "eslint" }, typescript = { "prettier", "eslint" }, typescriptreact = { "prettier", "eslint" }, + json = { "prettier" }, + jsonc = { "prettier" }, + html = { "prettier" }, + css = { "prettier" }, + scss = { "prettier" }, + yaml = { "prettier" }, + markdown = { "prettier" }, sh = { "shfmt" }, + bash = { "shfmt" }, }, format_on_save = { timeout_ms = 500, diff --git a/term/.config/nvim/lua/plugins/nvim-lint.lua b/term/.config/nvim/lua/plugins/nvim-lint.lua index a4c1b46..1d60e82 100644 --- a/term/.config/nvim/lua/plugins/nvim-lint.lua +++ b/term/.config/nvim/lua/plugins/nvim-lint.lua @@ -7,6 +7,12 @@ return { typescript = { "eslint_d" }, typescriptreact = { "eslint_d" }, python = { "ruff" }, + lua = { "selene" }, + sh = { "shellcheck" }, + bash = { "shellcheck" }, + json = { "jsonlint" }, + yaml = { "yamllint" }, + markdown = { "markdownlint" }, } vim.api.nvim_create_autocmd({ "BufWritePost" }, { diff --git a/term/.config/nvim/lua/plugins/toggleterm.lua b/term/.config/nvim/lua/plugins/toggleterm.lua index 8068bef..640b358 100644 --- a/term/.config/nvim/lua/plugins/toggleterm.lua +++ b/term/.config/nvim/lua/plugins/toggleterm.lua @@ -4,7 +4,7 @@ return { config = function() require("toggleterm").setup({ size = 10, - open_mapping = [[]], + open_mapping = [[]], hide_numbers = true, shade_filetypes = {}, shade_terminals = true, diff --git a/term/.config/nvim/lua/plugins/treesitter.lua b/term/.config/nvim/lua/plugins/treesitter.lua index ce71b6c..8447975 100644 --- a/term/.config/nvim/lua/plugins/treesitter.lua +++ b/term/.config/nvim/lua/plugins/treesitter.lua @@ -8,7 +8,20 @@ return { if ok then configs.setup({ auto_install = true, - ensure_installed = { "python", "lua", "json", "yaml", "javascript", "typescript" }, + ensure_installed = { + "python", + "lua", + "json", + "yaml", + "javascript", + "typescript", + "tsx", + "html", + "css", + "bash", + "markdown", + "markdown_inline", + }, highlight = { enable = true }, indent = { enable = true }, folding = { enable = true },