feat: sync .config dotfiles, transition Node to mise, integrate 1Password CLI/SSH Agent, and add optional AI CLI tools

This commit is contained in:
2026-06-22 17:13:42 +02:00
parent 0379a21780
commit 6b09ba52b6
33 changed files with 837 additions and 1425 deletions
+95 -35
View File
@@ -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