|
From: | Ted Zlatanov |
Subject: | extending case-fold-search to remove nonspacing marks (diacritics etc.) |
Date: | Thu, 05 Feb 2015 17:16:04 -0500 |
User-agent: | Gnus/5.130012 (Ma Gnus v0.12) Emacs/25.0.50 (gnu/linux) |
https://emacs.stackexchange.com/questions/7992/how-to-search-an-arabic-word-in-text-without-its-diacritics-accents suggested it would be useful if diacritics were ignored when searching for text in various situations. This is similar to `case-fold-search' but more generic. Here's what I suggested as the answer at the ELisp level: #+begin_src emacs-lisp (defun kill-marks (string) (concat (loop for c across string when (not (eq 'Mn (get-char-code-property c 'general-category))) collect c))) (let* ((original1 "your Arabic string here") (normalized1 (ucs-normalize-NFKD-string original1)) (original2 "your other Arabic string here") (normalized2 (ucs-normalize-NFKD-string original2))) (equal (replace-regexp-in-string "." 'kill-marks normalized1) (replace-regexp-in-string "." 'kill-marks normalized2))) #+end_src This would probably be useful for other languages, not just Arabic. But implementing it for users so it works like `case-fold-search' (you just set something in Customize and all search commands DWYM) seems much harder. Does anyone have suggestions? Maybe some defadvice magic? Or is it not possible? Thanks Ted
[Prev in Thread] | Current Thread | [Next in Thread] |