feat: sync .config dotfiles, transition Node to mise, integrate 1Password CLI/SSH Agent, and add optional AI CLI tools
This commit is contained in:
@@ -10,10 +10,10 @@ return {
|
||||
-- Mason: LSP Server installer
|
||||
'williamboman/mason.nvim',
|
||||
'williamboman/mason-lspconfig.nvim',
|
||||
|
||||
|
||||
-- Status updates für LSP
|
||||
{ 'j-hui/fidget.nvim', opts = {} },
|
||||
|
||||
|
||||
-- Neodev für Neovim config entwicklung
|
||||
{ 'folke/neodev.nvim', opts = {} },
|
||||
},
|
||||
@@ -38,22 +38,26 @@ return {
|
||||
require('mason-lspconfig').setup({
|
||||
ensure_installed = {
|
||||
-- Primary (TypeScript/Playwright)
|
||||
'ts_ls', -- TypeScript/JavaScript
|
||||
|
||||
'ts_ls', -- TypeScript/JavaScript
|
||||
|
||||
-- Secondary (Go)
|
||||
'gopls', -- Go
|
||||
|
||||
'gopls', -- Go
|
||||
|
||||
-- Python (für Scripts/Workflows)
|
||||
'pyright', -- Python
|
||||
|
||||
'pyright', -- Python
|
||||
|
||||
-- LaTeX
|
||||
'texlab',
|
||||
|
||||
-- Supporting
|
||||
'lua_ls', -- Lua (für Neovim config)
|
||||
'html', -- HTML
|
||||
'cssls', -- CSS
|
||||
'jsonls', -- JSON
|
||||
'yamlls', -- YAML
|
||||
'dockerls', -- Dockerfile
|
||||
'lua_ls', -- Lua (für Neovim config)
|
||||
'html', -- HTML
|
||||
'cssls', -- CSS
|
||||
'jsonls', -- JSON
|
||||
'yamlls', -- YAML
|
||||
'dockerls', -- Dockerfile
|
||||
'docker_compose_language_service', -- Docker Compose
|
||||
'eslint', -- Eslinter
|
||||
},
|
||||
})
|
||||
|
||||
@@ -98,11 +102,25 @@ return {
|
||||
callback = vim.lsp.buf.clear_references,
|
||||
})
|
||||
end
|
||||
end,
|
||||
|
||||
if client and client.name == 'eslint' then
|
||||
vim.api.nvim_create_autocmd('BufWritePre', {
|
||||
buffer = event.buf,
|
||||
callback = function()
|
||||
-- Statt vim.cmd('EslintFixAll') nutzen wir die direkte LSP-Aktion:
|
||||
vim.lsp.buf.code_action({
|
||||
context = { only = { "source.fixAll.eslint" } },
|
||||
apply = true,
|
||||
})
|
||||
end,
|
||||
desc = 'ESLint: Fixe alle Probleme beim Speichern (0.11 Style)',
|
||||
})
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- ========== Server Configurations ==========
|
||||
|
||||
|
||||
-- TypeScript/JavaScript (ts_ls)
|
||||
vim.lsp.config('ts_ls', {
|
||||
capabilities = capabilities,
|
||||
@@ -203,6 +221,43 @@ return {
|
||||
},
|
||||
})
|
||||
|
||||
-- Eslinter
|
||||
vim.lsp.config('eslint', {
|
||||
capabilities = capabilities,
|
||||
settings = {
|
||||
workingDirectory = { mode = 'auto' },
|
||||
},
|
||||
})
|
||||
vim.lsp.enable('eslint')
|
||||
|
||||
|
||||
-- LaTeX (texlab)
|
||||
vim.lsp.config('texlab', {
|
||||
capabilities = capabilities,
|
||||
settings = {
|
||||
texlab = {
|
||||
build = {
|
||||
executable = 'pdflatex',
|
||||
args = { '%f' },
|
||||
onSave = true, -- Auto-compile beim Speichern
|
||||
forwardSearchAfter = false,
|
||||
},
|
||||
forwardSearch = {
|
||||
executable = 'open',
|
||||
args = { '%p' },
|
||||
},
|
||||
chktex = {
|
||||
onOpenAndSave = true,
|
||||
},
|
||||
diagnosticsDelay = 300,
|
||||
latexFormatter = 'latexindent',
|
||||
latexindent = {
|
||||
modifyLineBreaks = false,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- JSON mit Schema Support
|
||||
vim.lsp.config('jsonls', {
|
||||
capabilities = capabilities,
|
||||
@@ -247,14 +302,22 @@ return {
|
||||
capabilities = capabilities,
|
||||
})
|
||||
|
||||
-- ========== Diagnostics Configuration ==========
|
||||
|
||||
-- ========== Diagnostics Configuration (Modern 0.11 Style) ==========
|
||||
|
||||
vim.diagnostic.config({
|
||||
-- Hier werden die Zeichen jetzt direkt definiert (ersetzt sign_define)
|
||||
signs = {
|
||||
text = {
|
||||
[vim.diagnostic.severity.ERROR] = '✘',
|
||||
[vim.diagnostic.severity.WARN] = '▲',
|
||||
[vim.diagnostic.severity.HINT] = '⚑',
|
||||
[vim.diagnostic.severity.INFO] = '»',
|
||||
},
|
||||
},
|
||||
virtual_text = {
|
||||
prefix = '●',
|
||||
source = 'if_many',
|
||||
},
|
||||
signs = true,
|
||||
underline = true,
|
||||
update_in_insert = false,
|
||||
severity_sort = true,
|
||||
@@ -266,24 +329,21 @@ return {
|
||||
},
|
||||
})
|
||||
|
||||
-- Diagnostic signs
|
||||
local signs = { Error = '✘', Warn = '▲', Hint = '⚑', Info = '»' }
|
||||
for type, icon in pairs(signs) do
|
||||
local hl = 'DiagnosticSign' .. type
|
||||
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = '' })
|
||||
-- LSP Hover & Signature Help Styling
|
||||
local handlers = {
|
||||
['textDocument/hover'] = vim.lsp.with(vim.lsp.handlers.hover, { border = 'rounded' }),
|
||||
['textDocument/signatureHelp'] = vim.lsp.with(vim.lsp.handlers.signature_help, { border = 'rounded' }),
|
||||
}
|
||||
|
||||
-- Handlers registrieren
|
||||
for method, handler in pairs(handlers) do
|
||||
vim.lsp.handlers[method] = handler
|
||||
end
|
||||
|
||||
-- LSP Hover border
|
||||
vim.lsp.handlers['textDocument/hover'] = vim.lsp.with(
|
||||
vim.lsp.handlers.hover,
|
||||
{ border = 'rounded' }
|
||||
)
|
||||
|
||||
vim.lsp.handlers['textDocument/signatureHelp'] = vim.lsp.with(
|
||||
vim.lsp.handlers.signature_help,
|
||||
{ border = 'rounded' }
|
||||
)
|
||||
end,
|
||||
-- Hover Popup Styling (Highlights)
|
||||
vim.api.nvim_set_hl(0, 'NormalFloat', { bg = '#1e1e1e', fg = '#ffffff' })
|
||||
vim.api.nvim_set_hl(0, 'FloatBorder', { fg = '#61afef', bg = '#1e1e1e' })
|
||||
end, -- Hier endet die config-Funktion des Plugins
|
||||
},
|
||||
|
||||
-- SchemaStore für JSON/YAML
|
||||
|
||||
Reference in New Issue
Block a user