Completamento fuzzy durante l'inserimento di caratteri Unicode


12

Ho appena scoperto C-x 8 RETcome un modo per inserire caratteri Unicode in base al nome Unicode o al codice esadecimale. Non ho (ancora?) Memorizzato tutti i nomi dei personaggi Unicode, quindi non trovo sempre il personaggio giusto.

C'è, ad esempio, il carattere "NEVE CAPPED MOUNTAIN". Se scrivo solo "MONTAGNA" questo personaggio non apparirà nella lista di completamento. Devo ricordare di cercare "NEVE" per vedere questo particolare personaggio nell'elenco dei completamenti.

Come qualcuno che è diventato dipendente da IDO per qualsiasi cosa che comporti il ​​completamento, questa mancanza di flessibilità è piuttosto snervante. Io uso ido-ubiquitous-mode.

Come posso usare la corrispondenza simile a IDO per l'input Unicode? Come posso utilizzare il completamento flessibile per TUTTE LE COSE ?

(Starei bene con l'abbandono della modalità IDO se ci fosse qualcosa di meglio.)


Come soluzione alternativa per lo stesso problema, vorrei digitare C-q SPC mountain TAB. Ciò corrisponderebbe a qualsiasi nome di carattere con "montagna" come non prima parola.
legoscia,

1
Dai un'occhiata a emacs.stackexchange.com/a/3139/2094 per il completamento basato sul timone.
abo-ABO

1
Questo sembra un bug che puoi segnalare al tracker dei problemi del progetto .
Wasamasa,

1
Se digiti *cap*mou TAB, otterrai l'intero completamento (i).
Juancho,

@Juancho è vero, ma non è il comportamento che voglio
rekado il

Risposte:


8

Come suggerito da @wasamasa, ido-ubiquitousdovrebbe occuparsi del completamento quando insert-charviene utilizzato. C'è una segnalazione di bug che è stata chiusa nel 2013 , ma vedo ancora questo comportamento con Emacs 24.4 e ido-ubiquitousversione 20140904.1547, quindi ho presentato un'altra segnalazione di bug .

MODIFICARE:

Il manutentore di ha ido-ubiquitousscritto questo:

Ok, ho capito il problema. Esistono molti caratteri unicode, quindi l'elenco dei completamenti sta superando ido-ubiquitous-max-itemse si ido-ubiquitoussta disabilitando per questo motivo. Sul mio sistema, ci sono quasi 40k completamenti disponibili e il valore predefinito ido-ubiquitous-max-itemsè 30k. Impostarlo su 50k consente il idocompletamento insert-charper me. Quindi prova a personalizzarlo.

Anzi, lo (setq ido-ubiquitous-max-items 50000)risolve.


Per ido-completing-read+, utilizzare (setq ido-cr+-max-items 50000)per correggere questo errore.
Bach Lien,

5

Per essere snow capped mountainincluso quando digiti mount, potresti voler fare:

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

In realtà, forse questo substringstile dovrebbe essere abilitato per impostazione predefinita per i nomi unicode, come per i nomi buffer. Forse dovresti fare pressioni per questo tramite M-x report-emacs-bug.


3

Se si utilizza Icicles quindi C-x 8 RETconsente di utilizzare stringa o espressioni regolari o sfocata di corrispondenza durante il completamento. E puoi usare il completamento progressivo , per abbinarlo a più (ad esempio semplici) schemi.

Inoltre, se l'opzione icicle-read-char-by-name-multi-completion-flagnon è nil, che è per impostazione predefinita, è possibile utilizzare il completamento multiplo per abbinare qualsiasi combinazione di questi:

  • il nome Unicode
  • il punto di codice Unicode , come un numero esadecimale
  • il carattere stesso (come appare nel testo, non un numero intero)

I candidati al completamento che vedi nel buffer *Completions*contengono tutti questi componenti - WYSIWYG.

Perché potresti voler abbinare il personaggio stesso? Per visualizzare i punti di codice Unicode corrispondenti e i nomi dei caratteri, inclusi i vecchi nomi. Ad esempio, per il personaggio ` (accento grave) ottieni questi due candidati per il completamento:

GRAVE ACCENT      60      `
SPACING GRAVE     60      `

Penso che dovrei davvero provare Icicles un giorno. Grazie per la tua risposta.
rekado,

0

È possibile utilizzare il comando apropos-charin libreria apu.elper mostrare tutti i caratteri Unicode i cui nomi corrispondono a una regexp o a un elenco di parole digitate. Per impostazione predefinita, le parole sono abbinate come sottostringhe.

Nell'elenco delle corrispondenze, puoi premere ^per inserire il carattere mostrato sulla riga corrente nel buffer in cui hai invocato apropos-char, al punto. Oppure puoi premere C-yper copiare quel carattere sul kill ring (o M-yper copiarlo nella selezione secondaria ). (Premi RETper vedere maggiori informazioni sul personaggio.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.