From 46d7269108c04d03866e14705b0342a70c5757be Mon Sep 17 00:00:00 2001 From: julien Date: Thu, 15 Oct 2026 22:36:05 +0200 Subject: [PATCH] remove neovim custom completion --- docs/neovim.md | 77 ++++++++------------------------------------------ 1 file changed, 11 insertions(+), 66 deletions(-) diff --git a/docs/neovim.md b/docs/neovim.md index 25d7185..18f2568 100644 --- a/docs/neovim.md +++ b/docs/neovim.md @@ -2,7 +2,7 @@ > Nécessite `sbopkg`. -Neovim est un éditeur de texte modal dérivé de Vim. La configuration ci-dessous reste volontairement simple : Telescope est utilisé pour naviguer entre les fichiers et les buffers, `ripgrep` pour rechercher dans le projet, Grug Far pour rechercher et remplacer dans plusieurs fichiers, `nvim-autopairs` pour fermer automatiquement les paires, et le client LSP intégré de Neovim pour Ruby, la complétion et les signatures de méthodes. +Neovim est un éditeur de texte modal dérivé de Vim. La configuration ci-dessous reste volontairement simple : Telescope est utilisé pour naviguer entre les fichiers et les buffers, `ripgrep` pour rechercher dans le projet, Grug Far pour rechercher et remplacer dans plusieurs fichiers, `nvim-autopairs` pour fermer automatiquement les paires, et le client LSP intégré de Neovim pour Ruby, les diagnostics, la navigation et les signatures de méthodes. ## Installation @@ -82,13 +82,16 @@ vim.opt.splitright = true vim.opt.splitbelow = true vim.opt.shortmess:append("I") vim.opt.winborder = "rounded" +vim.opt.pumborder = "rounded" vim.cmd.colorscheme("retrobox") -- Apparence homogène des menus et fenêtres flottantes. vim.api.nvim_set_hl(0, "NormalFloat", { link = "Pmenu" }) vim.api.nvim_set_hl(0, "FloatBorder", { link = "PmenuBorder" }) -vim.api.nvim_set_hl(0, "TelescopeNormal", { link = "Pmenu" }) -vim.api.nvim_set_hl(0, "TelescopeBorder", { link = "PmenuBorder" }) + +-- Telescope reprend l'apparence des fenêtres flottantes. +vim.api.nvim_set_hl(0, "TelescopeNormal", { link = "NormalFloat" }) +vim.api.nvim_set_hl(0, "TelescopeBorder", { link = "FloatBorder" }) vim.api.nvim_set_hl(0, "TelescopeSelection", { link = "PmenuSel" }) -- Indentation @@ -121,11 +124,7 @@ vim.pack.add({ }) -- Auto-fermeture des paires -local npairs = require("nvim-autopairs") - -npairs.setup({ - map_cr = false, -}) +require("nvim-autopairs").setup() -- Telescope local builtin = require("telescope.builtin") @@ -185,16 +184,10 @@ vim.api.nvim_create_autocmd("VimEnter", { }) -- Ruby LSP -local capabilities = vim.lsp.protocol.make_client_capabilities() - --- Active la surveillance des fichiers par Ruby LSP sous Linux. -capabilities.workspace.didChangeWatchedFiles.dynamicRegistration = true - vim.lsp.config("ruby_lsp", { cmd = { "ruby-lsp" }, filetypes = { "ruby" }, root_markers = { "Gemfile", ".git" }, - capabilities = capabilities, -- Contournement temporaire pour Ruby LSP 0.26.11 : dans un projet Ruby -- plat, Ruby Indexer peut construire le motif {}/**/*.rb et indexer un -- même fichier sous deux chemins différents. Cette exclusion neutralise @@ -208,57 +201,11 @@ vim.lsp.config("ruby_lsp", { vim.lsp.enable("ruby_lsp") --- Complétion Ruby LSP -vim.opt.completeopt = { "menuone", "noselect" } -vim.opt.pumheight = 8 -vim.opt.pumwidth = 36 -vim.opt.pummaxwidth = 72 -vim.opt.pumborder = "rounded" - -vim.api.nvim_create_autocmd("LspAttach", { - callback = function(event) - local client = vim.lsp.get_client_by_id(event.data.client_id) - if client and client:supports_method("textDocument/completion") then - vim.lsp.completion.enable(true, client.id, event.buf) - end - end, -}) - -vim.api.nvim_create_autocmd("InsertCharPre", { - callback = function() - vim.lsp.completion.get() - end, -}) - -vim.keymap.set("i", "", function() - if vim.fn.pumvisible() == 1 then - local selected = vim.fn.complete_info({ "selected" }).selected - if selected == -1 then - return "" - end - return "" - end - return "" -end, { expr = true }) - -vim.keymap.set("i", "", function() - if vim.fn.pumvisible() == 1 then - local selected = vim.fn.complete_info({ "selected" }).selected - if selected ~= -1 then - return npairs.esc("") - end - end - - return npairs.autopairs_cr() -end, { - expr = true, - replace_keycodes = false, -}) ``` > Le bloc `init_options` contient un contournement temporaire pour Ruby LSP 0.26.11 : dans certains petits projets Ruby plats, Ruby Indexer peut construire le motif `{}/**/*.rb` et indexer un même fichier sous deux chemins différents. Cette exclusion neutralise uniquement ce motif ; les fichiers Ruby restent indexés normalement. Lorsque le problème sera corrigé dans Ruby LSP/Ruby Indexer, le bloc `init_options` pourra être retiré. -Neovim gère les plugins avec `vim.pack`. `plenary.nvim` est une dépendance de Telescope, `nvim-autopairs` ferme automatiquement les parenthèses, crochets, accolades et guillemets, et Grug Far utilise `ripgrep` pour la recherche et le remplacement. La complétion Ruby, les signatures de méthodes et la navigation LSP utilisent directement les fonctions intégrées à Neovim, sans plugin de complétion supplémentaire. +Neovim gère les plugins avec `vim.pack`. `plenary.nvim` est une dépendance de Telescope, `nvim-autopairs` ferme automatiquement les parenthèses, crochets, accolades et guillemets, et Grug Far utilise `ripgrep` pour la recherche et le remplacement. Les diagnostics, les signatures de méthodes et la navigation Ruby utilisent directement le client LSP intégré à Neovim. Aucune complétion LSP automatique n'est activée. Le réglage `vim.opt.clipboard = "unnamedplus"` relie le registre par défaut de Neovim au presse-papiers système. Sous Wayland, Neovim utilise `wl-copy` et `wl-paste` fournis par `wl-clipboard`. Vous pouvez vérifier le fournisseur détecté avec : @@ -270,13 +217,13 @@ La section `Clipboard` doit indiquer qu'un outil de presse-papiers a été trouv ### Mise à jour des plugins -Pour rechercher les nouvelles versions des plugins gérés par `vim.pack` : +Pour rechercher les mises à jour disponibles pour les plugins gérés par `vim.pack` : ```text -:packupdate +:lua vim.pack.update() ``` -Vérifiez les changements proposés, puis utilisez `:write` pour les accepter. Pour contrôler l'état du gestionnaire de plugins : +Vérifiez les changements proposés, puis utilisez `:write` pour les accepter. Redémarrez ensuite Neovim pour utiliser les plugins mis à jour. Pour contrôler l'état du gestionnaire de plugins : ```text :checkhealth vim.pack @@ -382,8 +329,6 @@ Les commandes suivantes suffisent pour commencer : | `Ctrl-]` | Aller à la définition | | `Ctrl-t` | Revenir après un saut vers une définition | | `Ctrl-s` | Afficher la signature de la méthode en mode insertion (raccourci LSP natif) | -| `Tab` | Accepter la proposition sélectionnée, ou la première proposition si aucune ne l'est | -| `Entrée` | Accepter la proposition sélectionnée, sinon insérer une nouvelle ligne | | `u` | Annuler | ### Grug Far