Unscharfe Vervollständigung beim Einfügen von Unicode-Zeichen

12

Ich habe gerade herausgefunden, C-x 8 RETwie man Unicode-Zeichen nach Unicode-Namen oder Hex-Code einfügt. Ich habe (noch?) Nicht alle Unicode-Zeichennamen gespeichert, daher finde ich nicht immer das richtige Zeichen.

Es gibt zum Beispiel den Buchstaben "SNOW CAPPED MOUNTAIN". Wenn ich nur "MOUNTAIN" eingebe, erscheint dieses Zeichen nicht in der Abschlussliste. Ich muss daran denken, nach "SCHNEE" zu suchen, um dieses bestimmte Zeichen in der Liste der Vervollständigungen zu sehen.

Diese mangelnde Flexibilität ist für jemanden, der in Bezug auf alles, was mit Fertigstellung zu tun hat, von IDO abhängig geworden ist, ziemlich beunruhigend. Ich benutze ido-ubiquitous-mode.

Wie kann ich IDO-ähnliche Übereinstimmungen für Unicode-Eingaben verwenden? Wie kann ich die flexible Vervollständigung für ALL THE THINGS verwenden ?

(Ich würde den IDO-Modus in Ordnung bringen, wenn es etwas Besseres gäbe.)

rekado
quelle
Als Problemumgehung für das gleiche Problem würde ich eingeben C-q SPC mountain TAB. Das würde jedem Charakternamen mit "Berg" als nicht erstem Wort entsprechen.
Legoscia
1
Hmm, das klingt nach einem Fehler, den Sie im Issue Tracker des Projekts melden können .
Wasamasa
1
Wenn Sie tippen *cap*mou TAB, erhalten Sie die gesamte (n) Vervollständigung (en).
Juancho
@Juancho das stimmt, aber es ist nicht das Verhalten, das ich will
rekado

Antworten:

8

Wie von @wasamasa empfohlen, ido-ubiquitoussollte bei insert-charVerwendung auf Vollständigkeit geachtet werden. Es gibt einen Fehlerbericht, der 2013 geschlossen wurde , aber ich sehe dieses Verhalten immer noch mit Emacs 24.4 und der ido-ubiquitousVersion 20140904.1547, also habe ich einen weiteren Fehlerbericht eingereicht .

BEARBEITEN:

Der Betreuer von ido-ubiquitousschrieb dies:

Ok, ich habe das Problem herausgefunden. Es gibt viele Unicode-Zeichen, daher überschreitet die Liste der Vervollständigungen die Liste ido-ubiquitous-max-itemsund ido-ubiquitousdeaktiviert sich aus diesem Grund von selbst. Auf meinem System sind fast 40.000 Vervollständigungen verfügbar, und die Standardeinstellung für ido-ubiquitous-max-itemsist 30.000. Wenn Sie den Wert auf 50 KB setzen, wird die idoFertigstellung insert-charfür mich aktiviert . Passen Sie das also an.

In der Tat (setq ido-ubiquitous-max-items 50000)behebt es.

rekado
quelle
Für ido-completing-read+Verwenden Sie (setq ido-cr+-max-items 50000)diesen Fehler zu beheben.
Bach Lien
5

Um snow capped mountaineingeschlossen zu werden, wenn Sie nur tippen mount, möchten Sie möglicherweise Folgendes tun:

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

Eigentlich sollte dieser substringStil vielleicht standardmäßig für Unicode-Namen aktiviert sein, so wie es für Puffernamen ist. Vielleicht solltest du dich über dafür einsetzen M-x report-emacs-bug.

Stefan
quelle
3

Wenn Sie Icicles dann C-x 8 RETkönnen Sie verwenden String oder regexp oder Fuzzy Matching während der Fertigstellung. Und Sie können die progressive Vervollständigung verwenden, um mehrere (z. B. einfache) Muster abzugleichen.

Wenn die Option icicle-read-char-by-name-multi-completion-flagnicht nilaktiviert ist (was standardmäßig der Fall ist), können Sie die Mehrfachvervollständigung verwenden, um eine Übereinstimmung mit einer beliebigen Kombination dieser Optionen zu erzielen :

  • der Unicode- Name
  • Der Unicode- Codepunkt als Hexadezimalzahl
  • das Zeichen selbst (wie es im Text erscheint, keine ganze Zahl)

Die im Puffer *Completions*angezeigten Vervollständigungskandidaten enthalten alle diese Komponenten - WYSIWYG.

Warum möchtest du vielleicht gegen den Charakter selbst antreten? Anzeigen der entsprechenden Unicode-Codepunkte und Zeichennamen, einschließlich aller alten Namen. Für den Charakter ` (mit gravierendem Akzent) erhalten Sie beispielsweise die folgenden zwei Abschlusskandidaten:

GRAVE ACCENT      60      `
SPACING GRAVE     60      `
Drew
quelle
Ich denke, ich sollte eines Tages wirklich Eiszapfen probieren. Danke für deine Antwort.
Rekado
0

Sie können den Befehl apropos-charin der Bibliothek verwenden apu.el, um alle Unicode-Zeichen anzuzeigen, deren Namen mit einem regulären Ausdruck oder einer Liste von Wörtern übereinstimmen, die Sie eingeben. Standardmäßig werden Wörter als Teilzeichenfolgen abgeglichen.

In der Liste der Spiele, können Sie treffen , ^um die Zeichen einfügen auf der aktuellen Zeile in den Puffer gezeigt , wo Sie aufgerufen apropos-charam Punkt. Oder Sie drücken, C-yum das Zeichen in den Killring M-yzu kopieren (oder um es in die sekundäre Auswahl zu kopieren ). (Klicken Sie RETauf, um weitere Informationen zum Char zu erhalten.)

Drew
quelle