Aksanlı / aksanlı karakterlerde artımlı arama


6

Emacs, bir karakter için arama yapmanın kendisi ve aksan işaretli karakterin diğer sürümlerinde, Google Chrome'un (en azından v27) bir sayfada arama yaparken yaptığı gibi, arama yapabileceği artımlı bir arama moduna sahip mi?

Alternatif olarak, böyle bir kipte artımlı arama yapabilen ek bir kütüphane veya elisp kodu parçası var mı?

Örneğin, artımlı arama:

  • 'manana', 'manana' veya 'mañana' bulabilir
  • 'rengarenk acımasız', 'Mötley Crüe' (büyük küçük harf duyarlılığı kapalıyken) bulacaktır.

Bu karakterlerin yalnızca bir alt kümesini kapsayan bir çözüm bile faydalı olabilir.


Harika soru Juri Linkov, Emacs için bunu uygulamaktan bahsediyordu, ancak bugüne kadar hiçbir şey gelmedi. Bu iki Emacs hata dizisine bakın: (1) debbugs.gnu.org/cgi/bugreport.cgi?bug=13041 ve (2) debbugs.gnu.org/cgi/bugreport.cgi?bug=13480#41 .
Drew

Çözüm değil, en azından aksanı metinden kaldırabilen kütüphaneler var. Bunlardan birini kullanarak istediklerinizin bir kısmını elde edebilirsiniz (geçici olarak aksanları kaldırın vb.). Bu kadar çok kütüphane olduğuna inanıyorum, ancak yalnızca uzun zaman önce yazdığım bir tanesini biliyorum: unaccent.el . Daha yakın ve daha iyi bir şey bulacağınızdan hiç şüpheniz yok. Ancak yukarıda belirtilen ilk hata parçasında açıklananlar gibi bir çözüme ihtiyacımız var.
Drew

Bahsettiğiniz ilk hatadaki bu link ( thread.gmane.org/gmane.emacs.devel/117003/focus=117959 ) mevcut ihtiyacımı mükemmel şekilde karşılıyor. Yorumunuzu (ve belki de kod snippet'ini) bir cevap olarak girmenizi sağlamanın bir yolu var mı?
user38983 12:13

Yanıtlar:


5

Harika soru Juri Linkov, Emacs için bunu uygulamaktan bahsediyordu, ancak bugüne kadar hiçbir şey gelmedi. Bu iki Emacs hata konusuna bakın:

Örneğin , ilk hata dizisinin bu bölümüne bakın . Ulrich Mueller'den bu kodu içerir:

   (let ((eqv-list '("aAàÀáÁâÂãÃäÄåÅ")
             "Cccc"
             "Eeeeeeeeee"
             "İIìÌíÍîÎïÏ"
             "Nnnn"
             "Oooooooooooooo"
             "Uuuuuuuuuu"
             "Yyyyy"))
     (masa (standart durum tablosu))
     canon)
     (setq canon (kopya dizisi tablosu))
     (mapcar (lambdalar)
           (mapcar (lambda (c) (ason canon c (sf 0))) s))
         eşdeğerde-listesi)
     (set-char-masa-ekstra-slot masası 1 kanonu)
     (set-char-masa ekstra slot masa 2 sıfır)
     (set-standart-durum tablosu tablosu))

GÜNCELLEŞTİRME

Emacs 25'te karakter katlama (aksanlardan soyutlama ve arama yapma yeteneği) mevcut olacak . Emacs 25 geliştirme yapısında NEWS( C-h N) bölümüne bakınız . Bu hoş bir ektir ve gelecek sürümlerde daha da geliştirilmeyi vaat ediyor.

Kütüphanem character-fold+.elşu anda mevcut olan olası bir geliştirmedir. İsteğe bağlı olarak yalnızca aksanlı karakterleri (örn. é) Baz karakterini yazarak (örn. e) Arayarak değil, tersini de aramanızı sağlar - bunlardan herhangi birini aramak için eşdeğer karakter setlerinden herhangi birini yazın. Ve kendi eşdeğerlik sınıflarınızı ekleyerek (ve diakritik olanlar dışındaki Emacs tarafından tanımlananları düzenleyerek) karakter katlamayı özelleştirmenize olanak tanır.

İşte bu konuda bir mesaj emacs-devel@gnu.org.


1

Mükemmel bir çözümüm yok, ancak artımlı regexp araması kullanıyorum: C-S-s ma[nñ]anaya da C-S-s ma.anabu ideal değil.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.