Complétion floue lors de l'insertion de caractères Unicode


12

Je viens de découvrir C-x 8 RETcomme un moyen d'insérer des caractères Unicode par nom Unicode ou code hexadécimal. Je n'ai pas (encore?) Mémorisé tous les noms de caractères Unicode, donc je ne trouve pas toujours le bon caractère.

Il y a, par exemple, le caractère "SNOW CAPPED MOUNTAIN". Si je tape juste "MONTAGNE", ce caractère n'apparaîtra pas dans la liste d'achèvement. Je dois me rappeler de rechercher "SNOW" pour voir ce caractère particulier dans la liste des achèvements.

En tant que personne devenue dépendante de l'IDO pour tout ce qui implique l'achèvement, ce manque de flexibilité est plutôt énervant. J'utilise ido-ubiquitous-mode.

Comment puis-je utiliser une correspondance de type IDO pour l'entrée Unicode? Comment puis-je utiliser la complétion flexible pour TOUTES LES CHOSES ?

(Je serais d'accord avec l'abandon du mode IDO s'il y avait quelque chose de mieux.)


Pour contourner ce même problème, je taperais C-q SPC mountain TAB. Cela correspondrait à n'importe quel nom de caractère avec "montagne" comme non-premier mot.
legoscia

1
Jetez un œil à emacs.stackexchange.com/a/3139/2094 pour la complétion basée sur la barre.
abo-abo

1
Hmm, cela ressemble à un bug que vous pouvez signaler sur le suivi des problèmes du projet .
wasamasa

1
Si vous tapez *cap*mou TAB, vous obtenez le ou les compléments complets.
Juancho

@Juancho c'est vrai, mais ce n'est pas le comportement que je veux
rekado

Réponses:


8

Comme l'a suggéré @wasamasa, ido-ubiquitousil faut veiller à l'achèvement lorsqu'il insert-charest utilisé. Il y a un rapport de bogue qui a été fermé en 2013 , mais je vois toujours ce comportement avec Emacs 24.4 et la ido-ubiquitousversion 20140904.1547, j'ai donc déposé un autre rapport de bogue .

ÉDITER:

Le responsable de a ido-ubiquitousécrit ceci:

Ok, j'ai compris le problème. Il y a beaucoup de caractères Unicode, donc la liste des achèvements dépasse ido-ubiquitous-max-itemset ido-ubiquitousse désactive pour cette raison. Sur mon système, près de 40 000 versions sont disponibles, et la valeur par défaut ido-ubiquitous-max-itemsest 30 000. Le régler à 50k permet pour moi l' idoachèvement insert-char. Essayez donc de personnaliser cela.

En effet, le (setq ido-ubiquitous-max-items 50000)corrige.


Pour ido-completing-read+, utilisez (setq ido-cr+-max-items 50000)pour corriger cette erreur.
Bach Lien

5

Pour être snow capped mountaininclus lorsque vous tapez simplement mount, vous souhaiterez peut-être:

(push '(unicode-name (styles substring)) completion-category-overrides)

En fait, ce substringstyle devrait peut-être être activé par défaut pour les noms unicode, comme c'est le cas pour les noms de tampon. Vous devriez peut-être faire pression pour cela via M-x report-emacs-bug.


3

Si vous utilisez Icicles alors C-x 8 RETvous permet d' utiliser sous - chaîne ou regexp ou floue correspondant au cours d' achèvement. Et vous pouvez utiliser l' achèvement progressif pour faire correspondre plusieurs modèles (par exemple simples).

En outre, si l'option icicle-read-char-by-name-multi-completion-flagest non nil, ce qui est le cas par défaut, vous pouvez utiliser la saisie semi-automatique pour comparer avec n'importe quelle combinaison de ces éléments:

  • le nom Unicode
  • le point de code Unicode , sous forme de chiffre hexadécimal
  • le caractère lui-même (tel qu'il apparaît dans le texte, pas un entier)

Les candidats à l'achèvement que vous voyez dans le tampon *Completions*contiennent tous ces composants - WYSIWYG.

Pourquoi voudriez-vous faire correspondre le personnage lui-même? Pour voir les points de code Unicode et les noms de caractères correspondants, y compris les anciens noms. Par exemple, pour le personnage ` (accent grave), vous obtenez ces deux candidats à l'achèvement:

GRAVE ACCENT      60      `
SPACING GRAVE     60      `

Je pense que je devrais vraiment essayer Icicles un jour. Merci pour votre réponse.
rekado

0

Vous pouvez utiliser la commande apropos-chardans la bibliothèque apu.elpour afficher tous les caractères Unicode dont les noms correspondent à une expression régulière ou à une liste de mots que vous tapez. Par défaut, les mots sont mis en correspondance en tant que sous-chaînes.

Dans la liste des correspondances, vous pouvez appuyer sur ^pour insérer le caractère affiché sur la ligne actuelle dans le tampon où vous avez appelé apropos-char, au point. Ou vous pouvez frapper C-ypour copier ce caractère dans le kill ring (ou M-ypour le copier dans la sélection secondaire ). (Appuyez RETpour voir plus d'informations sur le caractère.)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.