slogan3

Maak een Neovim-configuratie voor efficiënte documentatiegeneratie

description

Door gebruik te maken van deze configuratie bespaar je tijd op documentatietaken, zorg je voor consistentie in je documentatiestijl en genereer je gemakkelijk documentatie in verschillende formaten, wat de samenwerking en het begrip van je code verbetert.

prompt

try_prompt

Help me bij het ontwerpen van een Neovim-configuratie die het proces van het genereren van documentatie voor mijn code stroomlijnt. Ik wil functies opnemen zoals automatische documentatiegeneratie, integratie met documentatietools en ondersteuning voor ... more
generate_helper
disclaimerOnPageApi image_legal_disclaimer...

ai_answers

provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een voorstel voor een Neovim-configuratie die het genereren van documentatie voor Python-code met Sphinx stroomlijnt, inclusief plugins, instellingen en sneltoetsen: 1. Plugins: Gebruik bijvoorbeeld een plugin manager zoals 'packer.nvim'. Voeg de volgende plugins toe: ```lua require('packer').startup(function() -- Linter en code-analyse use 'dense-analysis/ale' -- voor linting en code-analyse -- Python ondersteuning use 'nvim-treesitter/nvim-treesitter' -- Documentatie genereren en integreren use 'kkoomen/vim-sphinx' -- Sphinx syntax highlighting -- Fuzzy finder voor snel navigeren use 'nvim-telescope/telescope.nvim' -- LSP voor Python use 'neovim/nvim-lspconfig' -- Automatische code formatting use 'psf/black' -- via null-ls integratie -- Snippets voor snelle documentatie use 'hrsh7th/nvim-cmp' use 'hrsh7th/cmp-nvim-lsp' use 'L3MON4D3/LuaSnip' end) ``` 2. Instellingen: Hier enkele belangrijke configuraties: ```lua -- LSP-instellingen voor Python (met pyright) local lspconfig = require('lspconfig') lspconfig.pyright.setup{} -- Autocompletion local cmp = require'cmp' cmp.setup({ snippet = { expand = function(args) require'luasnip'.lsp_expand(args.body) end, }, sources = { { name = 'nvim_lsp' }, }, }) -- Keybindings voor snel genereren van documentatie vim.api.nvim_set_keymap('n', '<Leader>d', ':lua GenerateDoc()<CR>', { noremap = true, silent = true }) -- Functie om Sphinx-documentatie te genereren function GenerateDoc() -- Vraag het huidige bestand en klasse/methode local filename = vim.fn.expand('%:p') local cmd = 'sphinx-apidoc -o docs/ ' .. filename vim.fn.jobstart(cmd, {detach = true}) print('Documentatie gegenereerd met sphinx-apidoc') end ``` 3. Sneltoetsen: - `<Leader>d`: Genereert automatisch Sphinx API-documentatie voor het huidige bestand. - `<Leader>g`: Bouwt de Sphinx-documentatie (via `make html`) in de `docs` directory. - `<Leader>r`: Herstart LSP of linting. 4. Extra: - Zorg dat je `sphinx-apidoc` en `make` hebt geïnstalleerd. - Maak een basis Sphinx-project (`sphinx-quickstart`) in je `docs/` directory. - Overweeg integratie met `null-ls.nvim` voor automatische code formatting met Black. Voorbeeld voor Black integratie: ```lua local null_ls = require("null-ls") null_ls.setup({ sources = { null_ls.builtins.formatting.black, }, }) vim.api.nvim_set_keymap('n', '<Leader>f', ':lua vim.lsp.buf.formatting()<CR>', { noremap = true, silent = true }) ``` Met deze setup kun je snel documentatie genereren, je code formatteren en je Sphinx-documentatie bijwerken, allemaal binnen Neovim.
provider: deepseek
model: deepseek-chat
Zeker! Hier is een complete Neovim-configuratie voor documentatiegeneratie met Sphinx voor Python: ## Vereiste Plugins (lazy.nvim) ```lua -- plugins/documentatie.lua return { -- Sphinx integratie { "nvim-treesitter/nvim-treesitter", opts = { ensure_installed = { "python", "rst", "markdown" }, }, }, -- Documentatie generatie { "danymat/neogen", dependencies = "nvim-treesitter/nvim-treesitter", config = function() require('neogen').setup({ snippet_engine = "luasnip" }) end, }, -- Sphinx syntax highlighting { "stsewd/rst.nvim", dependencies = { "nvim-treesitter/nvim-treesitter" }, config = function() require("rst").setup({}) end, }, -- Terminal integratie voor Sphinx commands { "akinsho/toggleterm.nvim", config = true, }, -- File explorer voor documentatie structuur { "nvim-tree/nvim-tree.lua", opts = { view = { width = 30, }, }, }, } ``` ## Basis Configuratie ```lua -- lua/config/documentatie.lua local M = {} M.setup = function() -- Neogen configuratie voor Python docstrings local neogen = require('neogen') -- Sphinx-specifieke template neogen.setup({ enabled = true, input_after_comment = true, languages = { python = { template = { annotation_convention = "google" -- Of "numpydoc" voor NumPy style } } } }) -- Sphinx project detectie vim.api.nvim_create_autocmd({"BufEnter"}, { pattern = {"*/docs/source/*.rst", "*/docs/conf.py"}, callback = function() vim.bo.filetype = "rst" end }) end return M ``` ## Sneltoetsen en Keymaps ```lua -- lua/keymaps/documentatie.lua local keymap = vim.keymap.set -- Documentatie generatie sneltoetsen keymap("n", "<leader>dg", function() require("neogen").generate() end, { desc = "Generate documentation" }) keymap("n", "<leader>dc", function() require("neogen").generate({ type = "class" }) end, { desc = "Generate class documentation" }) -- Sphinx commands keymap("n", "<leader>sb", ":ToggleTerm direction=float cmd='sphinx-build docs/source docs/build'<CR>", { desc = "Build Sphinx documentation" }) keymap("n", "<leader>sa", ":ToggleTerm direction=float cmd='sphinx-autobuild docs/source docs/build'<CR>", { desc = "Auto-build Sphinx documentation" }) keymap("n", "<leader>st", ":e docs/source/index.rst<CR>", { desc = "Open Sphinx index" }) keymap("n", "<leader>sc", ":e docs/conf.py<CR>", { desc = "Open Sphinx config" }) -- Documentatie preview keymap("n", "<leader>dp", ":ToggleTerm direction=float cmd='python -m http.server 8000 -d docs/build'<CR>", { desc = "Preview documentation" }) ``` ## Sphinx-specifieke Instellingen ```lua -- ftplugin/python.lua -- Python-specifieke documentatie instellingen vim.bo.textwidth = 88 -- Black compatibel vim.bo.shiftwidth = 4 vim.bo.tabstop = 4 -- Automatische docstring formatting vim.api.nvim_create_autocmd("BufWritePre", { pattern = "*.py", callback = function() if vim.fn.search('"""\\|\\''\\''\\''', 'nw') ~= 0 then vim.cmd('normal! gggqG') end end }) ``` ## Template voor Sphinx Documentatie ```lua -- lua/templates/sphinx.lua local M = {} M.create_sphinx_project = function() local base_dir = vim.fn.getcwd() -- Create basic Sphinx structure local dirs = { "docs/source/_static", "docs/source/_templates", "docs/build" } for _, dir in ipairs(dirs) do vim.fn.mkdir(dir, "p") end -- Create conf.py template local conf_py = [[ project = 'Mijn Project' copyright = '2024, Uw Naam' author = 'Uw Naam' extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.napoleon', 'sphinx.ext.viewcode', ] html_theme = 'sphinx_rtd_theme' ]] -- Write files vim.fn.writefile(vim.split(conf_py, "\n"), base_dir .. "/docs/source/conf.py") print("Sphinx project aangemaakt in " .. base_dir .. "/docs") end return M ``` ## Gebruiksaanwijzing 1. **Installatie**: ```bash pip install sphinx sphinx-rtd-theme sphinx-autobuild ``` 2. **Sphinx project initialiseren**: ```lua :lua require("templates.sphinx").create_sphinx_project() ``` 3. **Documentatie genereren**: - Plaats cursor op functie/klasse - Druk `<leader>dg` voor functie documentatie - Druk `<leader>dc` voor klasse documentatie 4. **Build process**: - `<leader>sb` - Eénmalige build - `<leader>sa` - Auto-build bij wijzigingen - `<leader>dp` - Live preview ## Aanvullende Tips - Gebruik `:checkhealth` om plugin status te controleren - Installeer `sphinx-autodoc-typehints` voor type hint ondersteuning - Configureer Napoleon extension voor Google/NumPy docstring parsing Deze configuratie biedt een complete workflow voor het genereren, beheren en previewen van Sphinx documentatie direct vanuit Neovim!