slogan3

Ontwikkel een Neovim-configuratie voor geavanceerde foutopsporing en realtime code-analyse

description

Met deze prompt kan de gebruiker een krachtige Neovim-configuratie ontwikkelen die realtime feedback biedt tijdens het coderen. Dit helpt fouten sneller te vinden en te corrigeren, verbetert de codekwaliteit en versnelt de ontwikkelingscyclus. Het is beter dan alternatieven doordat het specifiek gericht is op integratie van geavanceerde foutopsporings- en analysetools binnen Neovim, wat resulteert in een efficiëntere en productievere workflow.

prompt

try_prompt

Help me een Neovim-configuratie te maken die realtime foutopsporing en code-analyse ondersteunt. Ik wil functies zoals automatische syntaxcontrole, codekwaliteit feedback, en integratie met statische analysetools voo ... more
generate_helper
disclaimerOnPageApi image_legal_disclaimer...

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een uitgebreide Neovim-configuratie die realtime foutopsporing en code-analyse ondersteunt voor Python en JavaScript. Ik zal plugins, instellingen en sneltoetsen aanbevelen om je workflow te optimaliseren. 1. **Pluginbeheer** Gebruik bijvoorbeeld `packer.nvim` als pluginmanager. Voeg onderstaande plugins toe: ```lua require('packer').startup(function() -- LSP en autocompletion use 'neovim/nvim-lspconfig' use 'hrsh7th/nvim-cmp' use 'hrsh7th/cmp-nvim-lsp' use 'hrsh7th/cmp-buffer' use 'saadparwaiz1/cmp_luasnip' use 'L3MON4D3/LuaSnip' -- Syntax highlighting en linting use 'nvim-treesitter/nvim-treesitter' use 'mfussenegger/nvim-lint' use 'jose-elias-alvarez/null-ls.nvim' -- voor externe linters en formatters -- UI en foutweergave use 'nvim-lua/plenary.nvim' use 'folke/trouble.nvim' -- overzicht van problemen use 'nvimdev/diagnostic-nvim' -- verbeterde diagnostics end) ``` 2. **LSP-configuratie voor Python en JavaScript** Configureer LSP-servers voor beide talen: ```lua local nvim_lsp = require('lspconfig') -- Python nvim_lsp.pyright.setup{ on_attach = function(client, bufnr) -- Optioneel: extra instellingen end, } -- JavaScript/TypeScript nvim_lsp.tsserver.setup{ on_attach = function(client, bufnr) -- Optioneel: extra instellingen end, } ``` 3. **Autocompletion en snippets** Configureer `nvim-cmp`: ```lua local cmp = require'cmp' cmp.setup({ snippet = { expand = function(args) require'luasnip'.lsp_expand(args.body) end, }, mapping = cmp.mapping.preset.insert({ ['<C-Space>'] = cmp.mapping.complete(), ['<CR>'] = cmp.mapping.confirm({ select = true }), }), sources = { { name = 'nvim_lsp' }, { name = 'buffer' }, }, }) ``` 4. **Realtime syntaxcontrole en linting** Gebruik `nvim-lint` en `null-ls` voor automatische linting: ```lua require('lint').linters_by_ft = { python = {'pylint', 'flake8'}, javascript = {'eslint'}, } -- Automatisch linten bij opslaan vim.api.nvim_create_autocmd({"BufWritePost"}, { pattern = {"*.py", "*.js"}, callback = function() require('lint').try_lint() end, }) ``` Configureer `null-ls` voor externe tools zoals ESLint en Flake8: ```lua local null_ls = require("null-ls") null_ls.setup({ sources = { null_ls.builtins.diagnostics.eslint, null_ls.builtins.diagnostics.flake8, }, }) ``` 5. **Probleemweergave en workflow** Gebruik `trouble.nvim` voor overzicht: ```lua require("trouble").setup { auto_open = false, } -- Sneltoetsen vim.api.nvim_set_keymap('n', '<leader>e', '<cmd>TroubleToggle<CR>', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '<leader>l', '<cmd>lua require("lint").try_lint()<CR>', { noremap = true, silent = true }) ``` 6. **Extra tips** - Gebruik `<leader>dd` om diagnostics te openen en te navigeren. - Stel automatische linting in op opslaan om direct feedback te krijgen. - Pas de sneltoetsen aan naar je voorkeur voor snelle toegang tot foutoverzicht en linting. **Kort samengevat:** - Installeer en configureer `nvim-lspconfig`, `nvim-cmp`, `nvim-treesitter`, `nvim-lint`, en `null-ls`. - Gebruik `pylint`, `flake8`, en `eslint` voor realtime codekwaliteit feedback. - Gebruik `trouble.nvim` voor overzicht van problemen. - Stel automatische linting en diagnostics in op bestandssave en tijdens coderen. Met deze setup krijg je directe feedback over syntaxfouten, codekwaliteitsproblemen en statische analyse voor Python en JavaScript, wat je foutopsporingsworkflow aanzienlijk verbetert.
provider: deepseek
model: deepseek-chat
Zeker, hier is een complete Neovim-configuratie voor realtime foutopsporing en code-analyse: ## Kern Plugins (voeg toe aan `plugins.lua` of `init.vim`) ```lua -- Packer plugin manager return require('packer').startup(function(use) -- LSP en Autocompletion use 'neovim/nvim-lspconfig' use 'hrsh7th/nvim-cmp' use 'hrsh7th/cmp-nvim-lsp' use 'hrsh7th/cmp-buffer' use 'hrsh7th/cmp-path' -- Syntax en foutdetectie use 'dense-analysis/ale' -- Debugging use 'mfussenegger/nvim-dap' use 'rcarriga/nvim-dap-ui' use 'theHamsta/nvim-dap-virtual-text' -- Code kwaliteit use 'nvim-treesitter/nvim-treesitter' use 'folke/trouble.nvim' -- Syntax highlighting use 'sheerun/vim-polyglot' end) ``` ## LSP Configuratie (`lua/lsp.lua`) ```lua local lspconfig = require('lspconfig') local cmp = require('cmp') -- LSP servers installeren via Mason require("mason").setup() require("mason-lspconfig").setup({ ensure_installed = {"pyright", "tsserver", "eslint"} }) -- Autocompletion setup cmp.setup({ mapping = cmp.mapping.preset.insert({ ['<C-b>'] = cmp.mapping.scroll_docs(-4), ['<C-f>'] = cmp.mapping.scroll_docs(4), ['<C-Space>'] = cmp.mapping.complete(), ['<C-e>'] = cmp.mapping.abort(), ['<CR>'] = cmp.mapping.confirm({ select = true }), }), sources = cmp.config.sources({ { name = 'nvim_lsp' }, { name = 'buffer' }, }) }) -- Python LSP lspconfig.pyright.setup({ on_attach = function(client, bufnr) -- Enable format on save vim.api.nvim_create_autocmd("BufWritePre", { buffer = bufnr, callback = function() vim.lsp.buf.format() end, }) end }) -- JavaScript/TypeScript LSP lspconfig.tsserver.setup({}) lspconfig.eslint.setup({}) ``` ## ALE Configuratie (`lua/ale.lua`) ```lua vim.g.ale_enabled = 1 vim.g.ale_sign_error = '✘' vim.g.ale_sign_warning = '⚠' vim.g.ale_lint_on_enter = 1 vim.g.ale_lint_on_save = 1 vim.g.ale_lint_on_text_changed = 'normal' vim.g.ale_lint_on_insert_leave = 1 -- Linters per taal vim.g.ale_linters = { python = {'flake8', 'pylint', 'mypy'}, javascript = {'eslint'}, typescript = {'eslint', 'tsserver'} } -- Fixers vim.g.ale_fixers = { python = {'black', 'isort'}, javascript = {'prettier', 'eslint'}, typescript = {'prettier', 'eslint'} } vim.g.ale_fix_on_save = 1 ``` ## Debugging Configuratie (`lua/dap.lua`) ```lua local dap = require('dap') local dapui = require('dapui') -- Python debugging dap.adapters.python = { type = 'executable', command = 'python', args = { '-m', 'debugpy.adapter' } } dap.configurations.python = { { type = 'python', request = 'launch', name = 'Launch file', program = '${file}', pythonPath = function() return 'python' end, }, } -- JavaScript debugging dap.adapters.node2 = { type = 'executable', command = 'node', args = {os.getenv('HOME') .. '/dev/microsoft/vscode-node-debug2/out/src/nodeDebug.js'} } dap.configurations.javascript = { { name = 'Launch', type = 'node2', request = 'launch', program = '${file}', cwd = vim.fn.getcwd(), sourceMaps = true, protocol = 'inspector', console = 'integratedTerminal', }, } dapui.setup() ``` ## Sneltoetsen (`lua/keymaps.lua`) ```lua -- LSP sneltoetsen vim.keymap.set('n', 'gd', vim.lsp.buf.definition, {desc = "Ga naar definitie"}) vim.keymap.set('n', 'gr', vim.lsp.buf.references, {desc = "Toon referenties"}) vim.keymap.set('n', 'K', vim.lsp.buf.hover, {desc = "Documentatie tonen"}) vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, {desc = "Hernoemen"}) vim.keymap.set('n', '<leader>ca', vim.lsp.buf.code_action, {desc = "Code acties"}) -- ALE sneltoetsen vim.keymap.set('n', '<leader>af', '<cmd>ALEFix<CR>', {desc = "Code fixen"}) vim.keymap.set('n', '<leader>al', '<cmd>ALELint<CR>', {desc = "Lint uitvoeren"}) vim.keymap.set('n', '[d', '<cmd>ALEPrevious<CR>', {desc = "Vorige fout"}) vim.keymap.set('n', ']d', '<cmd>ALENext<CR>', {desc = "Volgende fout"}) -- Debugging sneltoetsen vim.keymap.set('n', '<F5>', function() require('dap').continue() end, {desc = "Debugging starten/doorgaan"}) vim.keymap.set('n', '<F10>', function() require('dap').step_over() end, {desc = "Stap over"}) vim.keymap.set('n', '<F11>', function() require('dap').step_into() end, {desc = "Stap in"}) vim.keymap.set('n', '<F12>', function() require('dap').step_out() end, {desc = "Stap uit"}) vim.keymap.set('n', '<leader>b', function() require('dap').toggle_breakpoint() end, {desc = "Breakpoint toggle"}) vim.keymap.set('n', '<leader>B', function() require('dap').set_breakpoint(vim.fn.input('Breakpoint condition: ')) end, {desc = "Conditionele breakpoint"}) vim.keymap.set('n', '<leader>du', function() require('dapui').toggle() end, {desc = "Debug UI toggle"}) -- Trouble.nvim voor foutenoverzicht vim.keymap.set('n', '<leader>xx', '<cmd>TroubleToggle<CR>', {desc = "Foutenoverzicht toggle"}) vim.keymap.set('n', '<leader>xw', '<cmd>TroubleToggle workspace_diagnostics<CR>', {desc = "Workspace diagnostiek"}) vim.keymap.set('n', '<leader>xd', '<cmd>TroubleToggle document_diagnostics<CR>', {desc = "Document diagnostiek"}) ``` ## Vereiste Tools Installeren ```bash # Python tools pip install flake8 pylint black isort mypy debugpy # JavaScript/TypeScript tools npm install -g eslint prettier typescript typescript-language-server # Neovim LSP manager git clone https://github.com/williamboman/mason.nvim ~/.local/share/nvim/site/pack/packer/start/mason.nvim ``` ## Workflow Optimalisatie Tips 1. **Realtime Feedback**: ALE geeft direct feedback tijdens het typen 2. **Automatisch Fixen**: `:ALEFix` of opslaan met `ale_fix_on_save` 3. **Debugging**: Gebruik F5 om debugging te starten en F10/F11/F12 om te stappen 4. **Foutenoverzicht**: Gebruik `<leader>xx` om alle problemen in één overzicht te zien 5. **Code Acties**: Gebruik `<leader>ca` voor context-specifieke fixes Deze configuratie geeft je een professionele ontwikkelomgeving met realtime feedback en krachtige debugging mogelijkheden!