local function run_sonar() local exe = vim.fn.exepath("sonar-scanner") if exe == "" then vim.notify("sonar-scanner nicht im PATH gefunden", vim.log.levels.ERROR) return end if vim.fn.executable(exe) == 0 then vim.notify("sonar-scanner ist nicht ausführbar", vim.log.levels.ERROR) return end -- Suche nach *.properties im aktuellen Verzeichnis local files = vim.fn.glob("*.properties", false, true) local cmd = exe if #files > 0 then -- Optional: gezielt sonar-project.properties bevorzugen local selected = nil for _, f in ipairs(files) do if f == "sonar-project.properties" then selected = f break end end -- Falls keine Standarddatei, nimm die erste if not selected then selected = files[1] end cmd = cmd .. " -Dproject.settings=" .. selected vim.notify("Verwende Properties: " .. selected, vim.log.levels.INFO) else vim.notify("Keine .properties Datei gefunden, nutze Default-Verhalten", vim.log.levels.WARN) end vim.cmd("botright split | terminal " .. cmd) vim.cmd("norm G") end local function load_sonar_issues() local cmd = vim.fn.stdpath("config") .. "/scripts/sonarqube.sh" vim.fn.setqflist({}, " ", { title = "SonarQube Issues", lines = vim.fn.systemlist(cmd), }) vim.cmd("copen") end local function disable_lsp() for _, client in ipairs(vim.lsp.get_clients()) do client:stop() end end local function disable_lsp_buffer() for _, client in ipairs(vim.lsp.get_clients({ bufnr = 0 })) do client:stop() end end local function enable_lsp() vim.cmd("edit") -- triggert Reattach bei vielen Setups end vim.api.nvim_create_user_command("SonarScan", run_sonar, {}) vim.api.nvim_create_user_command("SonarIssues", load_sonar_issues, {}) vim.api.nvim_create_user_command("LspOff", disable_lsp, {}) vim.api.nvim_create_user_command("LspOffBuffer", disable_lsp_buffer, {}) vim.api.nvim_create_user_command("LspOn", enable_lsp, {})