6

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

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

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

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

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

2 ответа2

5

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

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

   (let ((eqv-list '("aAàÀáÁâÂãÃäÄåÅ"
             "cCçÇ"
             "eEèÈéÉêÊëË"
             "iIìÌíÍîÎïÏ"
             "nNñÑ"
             "oOòÒóÓôÔõÕöÖøØ"
             "uUùÙúÚûÛüÜ"
             "yYýÝÿ"))
     (table (standard-case-table))
     canon)
     (setq canon (copy-sequence table))
     (mapcar (lambda (s)
           (mapcar (lambda (c) (aset canon c (aref s 0))) s))
         eqv-list)
     (set-char-table-extra-slot table 1 canon)
     (set-char-table-extra-slot table 2 nil)
     (set-standard-case-table table))

ОБНОВИТЬ

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

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

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

1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .