La complétion automatique avec popup pour Emacs
Ce tutoriel s'adresse aux utilisateurs et utilisatrices de GNU Emacs et ses dérivés.
Un système de complétion automatique propose s'il le peut un ou plusieurs compléments à une chaîne de caractères que l'utilisateur/utilisatrice a commencé à taper. Par exemple, un moteur de recherche pourrait proposer des compléments pour "GNU ", comme "Emacs", "Bash", "GPL", "Octave" et "R". Emacs a déjà cette fonctionnalité, par exemple pour le nom des buffers avec C-x b (ou M-x switch-to-buffer).
Néanmoins, au moins jusqu'à la version 24, GNU Emacs n'a pas de système de complétion automatique avec des popup. Ce système peut être pratique et est inclus dans certains éditeurs de code, comme Eclipse et Geany. Mais il existe un mode pour Emacs écrit en Emacs Lisp et qui est bien entendu libre (sous licence GPL 3+ pour le code et FDL 1.3+). Celui se nomme auto-complete.
Télécharger
Télécharger via un gestionnaire de sources de paquets
Ce mode est disponible sous forme de paquet au moins avec ces systèmes :
- Debian : auto-complete-el
- Trisquel GNU/Linux : auto-complete-el
- Ubuntu : auto-complete-el
- ArchLinux (AUR) : auto-complete
Télécharger via le dépôt Git
Si vous voulez le dépôt Git, il est disponible sur
GitHub.
Pour le cloner via un shell texte,
git clone https://github.com/auto-complete/auto-complete.git
.
Vous aurez aussi besoin de popup-el.
Installer
Placer le fichier Emacs Lisp à un endroit connu d'Emacs
Les fichiers Emacs Lisp sont probablement à un endroit connu d'Emacs avec si vous les avez installé avec un gestionnaire de sources de paquets avec lequel vous avez aussi installé Emacs. Dans le cas contraire, lisez la documentation.
Configurer Emacs
Dans votre fichier .emacs, ajoutez :
(require 'auto-complete-config)
(ac-config-default)
Astuces
Ne pas montrer le menu automatiquement
Il peut être agacant que le menu s'affiche automatiquement.
Pour régler ce problème, il faut ajouter
(setq ac-auto-show-menu nil)
à votre fichier de configuration Emacs.
Vous pouvez aussi régler un temps avant l'apparition du menu avec
(setq ac-auto-show-menu value)
,
value étant un nombre flottant positif avec pour unité la seconde.
Changez la hauteur du menu
La hauteur du menu peut être réglée avec (setq ac-menu-height value)
,
value étant un nombre entier positif qui est le nombre de lignes.
Gestion de la casse
;; Ignore la casse dans tous les cas
(setq ac-ignore-case t)
;; Ignore la casse si la chaine de caractères de la cible de la complétion n'inclut pas de caractères majuscules
(setq ac-ignore-case 'smart)
;; Distingue la casse dans tous les cas
(setq ac-ignore-case nil)