Нечеткое завершение при вставке символов Юникода

12

Я только что открыл C-x 8 RETспособ вставки символов Unicode по имени Unicode или шестнадцатеричному коду. Я еще не запомнил все имена символов Юникода, поэтому не всегда нахожу нужный символ.

Есть, например, символ «ГОРНАЯ СНЕГОВАЯ ГОРКА». Если я наберу просто «ГОРЫ», этот символ не появится в списке завершения. Мне нужно помнить, чтобы искать «SNOW», чтобы увидеть этот конкретный символ в списке завершений.

Как человек, который стал зависимым от IDO во всем, что связано с завершением, это отсутствие гибкости довольно нервирует. Я использую ido-ubiquitous-mode.

Как я могу использовать IDO-подобное сопоставление для ввода Unicode? Как я могу использовать гибкое завершение для ВСЕХ ВЕЩЕЙ ?

(Я бы согласился отказаться от режима IDO, если бы было что-то лучше.)

rekado
источник
В качестве обходного пути для той же проблемы, я бы напечатал C-q SPC mountain TAB. Это будет соответствовать любому имени персонажа с "гора" в качестве не первого слова.
Legoscia
1
Посмотрите emacs.stackexchange.com/a/3139/2094 для завершения на руле.
5:14
1
Хм, это звучит как ошибка, о которой вы можете сообщить на трекере проблем проекта .
Васамаса
1
Если вы напечатаете *cap*mou TAB, то вы получите все завершение (я).
Juancho
@Juancho, это правда, но это не то поведение, которое я хочу
rekado

Ответы:

8

Как предложил @wasamasa, ido-ubiquitousследует позаботиться о завершении, когда insert-charон используется. Есть отчет об ошибках, который был закрыт в 2013 году , но я все еще вижу такое поведение с Emacs 24.4 и ido-ubiquitousверсией 20140904.1547, поэтому я подал еще один отчет об ошибках .

РЕДАКТИРОВАТЬ:

Сопровождающий ido-ubiquitousнаписал это:

Хорошо, я понял проблему. Существует много символов Юникода, поэтому список завершений превышает ido-ubiquitous-max-itemsи ido-ubiquitousотключается по этой причине. В моей системе доступно почти 40 тыс. Дополнений, а по умолчанию ido-ubiquitous-max-itemsиспользуется 30 тыс. Установка его на 50 Кб позволяет idoзавершить insert-charдля меня. Так что попробуйте настроить это.

Действительно, (setq ido-ubiquitous-max-items 50000)исправляет это.

rekado
источник
Для ido-completing-read+, используйте, (setq ido-cr+-max-items 50000)чтобы исправить эту ошибку.
Бах Лиен
5

Чтобы snow capped mountainвключить, когда вы просто печатаете mount, вы можете сделать:

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

На самом деле, возможно, этот substringстиль должен быть включен по умолчанию для имен Unicode, как и для имен буферов. Может быть, вы должны лоббировать это через M-x report-emacs-bug.

Стефан
источник
3

Если вы используете Icicles, то C-x 8 RETможете использовать подстроку, регулярное выражение или нечеткое сопоставление во время завершения. И вы можете использовать прогрессивное завершение, чтобы соответствовать нескольким (например, простым) шаблонам.

Кроме того, если опция не icicle-read-char-by-name-multi-completion-flagявляется nil, что по умолчанию, то вы можете использовать множественное завершение для сопоставления с любой их комбинацией:

  • имя Unicode
  • кодовая точка Unicode , как шестнадцатеричная цифра
  • сам символ (как он появляется в тексте, а не целое число)

Кандидаты на завершение, которые вы видите в буфере, *Completions*содержат все эти компоненты - WYSIWYG.

Почему вы можете захотеть сравниться с самим персонажем ? Чтобы увидеть соответствующие кодовые точки Unicode и имена персонажей, включая любые старые имена. Например, для персонажа ` (серьезный акцент) вы получаете следующие два кандидата на прохождение:

GRAVE ACCENT      60      `
SPACING GRAVE     60      `
Нарисовалась
источник
Я думаю, что я должен действительно попробовать Сосульки однажды. Спасибо за Ваш ответ.
Рекадо
0

Вы можете использовать команду apropos-charв библиотеке, apu.elчтобы показать все символы Unicode, чьи имена соответствуют регулярному выражению или списку введенных вами слов. По умолчанию слова сопоставляются как подстроки.

В списке совпадений вы можете нажать, ^чтобы вставить символ, показанный на текущей строке, в буфер, в который вы вызвали apropos-char, в точке. Или вы можете нажать, C-yчтобы скопировать этот символ в список уничтожений (или M-yскопировать его во вторичный выбор ). (Нажмите, RETчтобы увидеть больше информации о символе.)

Нарисовалась
источник