Lorsque vous utilisez ReSharper dans Visual Studio, les symboles peuvent être complétés automatiquement à l'aide d'une correspondance floue au lieu d'une correspondance de préfixe. Par exemple , si je suis à la recherche d'une fonction nommée DoSomethingAmazing
je pourrais écrire DoSoAm
et essaierais d'élargir ma requête pour correspondre à tous les symboles contenant Do
, So
et Am
quelque part dans leur nom.
Un autre exemple peut être trouvé dans le gif ci-dessous. Vous pouvez voir plusieurs extensions où les chaînes non préfixées sont développées jusqu'au symbole correct. (Ignorez l'expansion de l'extrait de code car dans cette question, je ne suis concerné que par la correspondance floue).
Un autre exemple peut être vu dans le plugin YouCompleteMe pour Vim:
La saisie semi - automatique et le mode société semblent tous deux avoir une correspondance de préfixe, mais je ne trouve pas de moyen d'activer la correspondance floue.
Idéalement, la solution serait indépendante de la langue et s'appliquerait à tout package de complétion de symboles que j'utilise, mais je suis également intéressé par les solutions spécifiques à la langue. J'ai regardé Helm mais je n'ai pas trouvé de moyen de l'appliquer à l'achèvement du code.
J'ai envisagé des alternatives telles que la présence d'une liaison de touches pour activer la complétion de symboles à l'aide d'un tampon Helm , mais j'espère qu'il existe un moyen de le faire en utilisant la complétion de style popup.
Je suis également ouvert à la configuration manuelle sur une base linguistique, car certaines langues séparent les symboles par des tirets tandis que d'autres utilisent des traits de soulignement ou des tirets qui, je suppose, affectent la façon dont la correspondance serait effectuée.
la source
Réponses:
La fonctionnalité de complétion intégrée d'Emacs offre une correspondance floue similaire (mais par défaut, elle est utilisée pour "do-so-am" plutôt que pour "DoSoAm") et les versions récentes de l'IIUC du mode entreprise l'utilisent au moins dans certains cas.
Par exemple, si vous ouvrez un tampon Elisp en utilisant Emacs-24.4 et le dernier mode entreprise, si vous tapez
(wi-sy
entreprise, un menu de fin apparaîtrawindow-system
,window-system-for-display
etwith-syntax-table
.la source
company-mode
supports Emacs 24.4completion-styles
, cet article suggère un paramètre possible pour l'essayer.company-ycmd
est un autre backend qui prend en charge l'achèvement flou.Avec
company-mode
, vous pouvez utiliserC-s
pour rechercher parmi les candidats disponibles qu'il affiche. La requête de recherche est affichée dans la modélisation (pas vraiment facile à repérer, je sais. J'ai déposé un problème ici ).Si vous souhaitez utiliser Helm pour terminer, envisagez d'utiliser Helm-company ou ac-helm . Je n'ai pas essayé avec
ac-helm
, mais avechelm-company
, vous pouvez le lier directement à une clé pour remplacer l'interface standard decompany-complete
.la source
company-mode
interface utilisateur, vous pouvez appuyer surC-s
pour rechercher un candidat à partir d'une liste de candidats disponiblescompany
qui vous est présentée.C-M-s
c'est bien mieux queC-s
. Avec la méta, il filtrera les candidats au lieu de simplement rechercher.Comme mentionné dans un commentaire plus tôt,
ycmd
prend en charge la correspondance floue. Vous pouvez l'utiliser viacompany-ycmd
. Configuré correctement, vous pouvez obtenir une complétion spécifique à la langue ainsi qu'une complétion basée sur un identifiant simple dans une expérience assez transparente.la source
Il existe plusieurs packages qui offrent une exécution floue d'un type ou d'un autre. J'imagine que Helm le fait, par exemple (puisque vous en parlez).
Si vous utilisez la bibliothèque Icicles, vous pouvez choisir (à la volée) parmi plusieurs méthodes de complétion floue - plus de choix que ce que j'ai vu ailleurs. (Je ne suis pas particulièrement un fan de la finition floue, moi-même, mais je le propose.)
L' achèvement de Icicles (d'où l'achèvement flou, si vous choisissez cela) s'applique à peu près partout, mais il n'y a pas beaucoup de fonctionnalités de complétion de code spécifiques à Icicles . Cette page du document Icicles parle d'une telle complétion de texte tampon.
Avec Icicles , en utilisant l'exemple de Stefan de terminer
(wi-sy
en mode Emacs Lisp:Une fois Icicles
vanilla
terminé (ce que Emacs fournit, en respectantcompletion-styles
), vous obtenez les mêmes symboles que Stefan mentionne.Avec l' achèvement du symbole flou Icicles Swank (de la bibliothèque
el-swank-fuzzy.el
) comme méthode d'achèvement TAB actuelle, vous obtenez ces candidats à l'achèvement:Les 3 premiers candidats sont, encore une fois, ceux que Stefan mentionne.
Avec l' achèvement de correspondance floue simple (bibliothèque
fuzzy-match.el
), le seul candidat estwith-syntax-table
.Avec l' achèvement flou de la dispersion des glaçons , vous obtenez tous les candidats proposés par l'achèvement flou Swank, ainsi que les éléments suivants:
Avec une distance Levenshtein de 2 au lieu de 1, il y a plus de 300 candidats à l'achèvement.
Avec l' achèvement strict de Levenshtein (1 ou 2), il n'y a pas de candidats. De même, pour Icicles Jaro-Winkler complétion floue .
la source
completion.el
? (De même,dabbrev
ethippie-expand
- les 3 sont inclus dans GNU Emacs.) Ces choses sont très utiles pour la complétion de code, même si, comme vous le suggérez, elles n'ont aucune connaissance spécifique au code. Vous pourriez être surpris de leur utilité (avec ou sans correspondance floue). Et comme ceux-ci, toute complétion spécifique au code qui utilise le mini-tampon pour terminer lorsqu'il y a plusieurs candidats bénéficie automatiquement de la complétion floue Icicles .si vous utilisez
ivy
, dans les mises à jour récentesivy
prend en charge la fonctionnalité d'achèvement au point dans une superposition. Ivy prend en charge la correspondance floue à l'aide deflx
. Découvrez cette vidéo sur son fonctionnement :)Tout ce que vous avez à faire est d'appuyer sur la liaison de touches pour
complete-symbol
laquelle est par défaut lié à C-M-iet une superposition apparaîtra et vous utilisez une correspondance floue pour obtenir le candidat à l'achèvement.la source