Инкрементальный поиск не / акцентированных символов

664
user38983

Есть ли в emacs режим инкрементального поиска, при котором поиск символа будет искать себя и любые другие версии символа с метками ударения, аналогично тому, как Google Chrome (по крайней мере v27) будет выполнять поиск на странице?

В качестве альтернативы, есть ли дополнительная библиотека или фрагмент кода elisp, который может поставить инкрементальный поиск в таком режиме?

Например, добавочный поиск:

  • «манана», найдет «манана» или «манана»
  • «Motley Crue», также можно найти «Mötley Crüe» (с отключенной чувствительностью к регистру).

Даже решение, которое охватывает только подмножество этих символов, было бы полезно.

6
Отличный вопрос Юрий Линков говорил о реализации этого для Emacs, но пока ничего не вышло. Посмотрите эти два потока ошибок Emacs: (1) http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13041 и (2) http://debbugs.gnu.org/cgi/bugreport.cgi?bug = 13480 # 41. Drew 10 лет назад 0
Не решение, но есть библиотеки, которые могут по крайней мере удалить акценты из текста. Вы можете получить что-то из того, что хотите, используя один из них (временно убрать акценты и т. Д.). Я полагаю, что есть несколько таких библиотек, но я знаю только одну, которую я написал давно: [unaccent.el] (http://www.emacswiki.org/emacs-en/download/unaccent.el). Вы можете без сомнения найти что-то более новое и лучшее. Но нам действительно нужно решение, подобное тому, которое обсуждалось в первой ветке ошибок, упомянутой выше. Drew 10 лет назад 0
Эта ссылка (http://thread.gmane.org/gmane.emacs.devel/117003/focus=117959) в первой упомянутой вами ошибке полностью соответствует моим текущим потребностям. Есть ли способ, чтобы вы ввели свой комментарий (и, возможно, фрагмент кода) в качестве ответа, чтобы я мог принять его в качестве ответа? user38983 10 лет назад 0

2 ответа на вопрос

5
Drew

Отличный вопрос Юрий Линков говорил о реализации этого для Emacs, но пока ничего не вышло. Посмотрите эти две темы об ошибках Emacs:

Посмотрите эту часть первой цепочки ошибок, например. Он включает в себя этот код от Ульриха Мюллера:

 (пусть ((eqv-list '("ааааааааааа") «КПКГ» "EEèÈéÉêÊëË" "IIìÌíÍîÎïÏ" «NNNN» "OOòÒóÓôÔõÕöÖøØ" "UUùÙúÚûÛüÜ" "YYYYY")) (таблица (стандартный-кейс-стол)) канон) (setq canon (таблица последовательности копирования)) (mapcar (лямбда-ы) (mapcar (лямбда (c) (заданный канон c (aref s 0))) s)) э-лист) (set-char-table-extra-slot table 1 canon) (set-char-table-extra-slot table 2 nil) (таблица стандартных таблиц случаев) 

ОБНОВИТЬ

Сворачивание символов (возможность абстрагироваться от ударений и т. Д. При поиске) будет доступно в Emacs 25. См. NEWS( C-h N) В сборке разработки Emacs 25. Это долгожданное дополнение, и оно обещает быть улучшено в будущих выпусках.

Моя библиотека character-fold+.el- одно из возможных улучшений, доступных сейчас. Это позволяет вам при желании искать не только акцентированные символы (например, é), набирая базовый символ (например, e), но и делать наоборот - введите любой из набора эквивалентных символов, чтобы найти любой из них. И это позволяет вам настраивать свертывание символов, добавляя ваши собственные классы эквивалентности (и редактируя те, которые определены в Emacs, кроме тех, что для диакритических знаков).

Вот сообщение emacs-devel@gnu.orgоб этом.

1
Rémi

У меня нет идеального решения, но я использую добавочный поиск регулярных выражений: C-S-s ma[nñ]anaили, C-S-s ma.anaно это не идеально.

Похожие вопросы