|
From: | Oleksandr Gavenko |
Subject: | bug#24405: 24.5; Possibly ``forward-word`` doesn't respect ``word-combining-categories`` for word boundaries on changing between latin/phonetic scripts. |
Date: | Sun, 11 Sep 2016 14:57:33 +0300 |
User-agent: | Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
On 2016-09-10, Eli Zaretskii wrote: >> Another solution is to invent own: >> >> (define-category ?p "Phonetic") >> >> and to add it to IPA characters: >> >> (mapc (lambda (ch) (modify-category-entry ch "p")) >> '(?ʌ ?ə ?ɜ ?ɒ ?ɛ ?θ ?ʊ ?ɪ ?ɔ ?ɑ ?ʃ ?ʧ ?ː ?ˈ ?ˌ ?ʒ ?ŋ)) >> >> so it becomes possible to use: >> >> (add-to-list 'word-combining-categories '(?p . ?l)) >> (add-to-list 'word-combining-categories '(?l . ?p)) > > That'd be my second best advice. But I think regular expressions > should provide a better and easier solution. This works for me: (defconst my/ipa-chars (list ?ˈ ?ˌ ?ː ?ǁ ?ʲ ?θ ?ð ?ŋ ?ɡ ?ʒ ?ʃ ?ʧ ?ə ?ɜ ?ɛ ?ʌ ?ɒ ?ɔ ?ɑ ?æ ?ʊ ?ɪ)) (define-category ?p "Phonetic") (mapc (lambda (ch) (cond ((eq (aref char-script-table ch) 'phonetic) (modify-category-entry ch ?p) (modify-category-entry ch ?l nil t)) ((eq (aref char-script-table ch) 'latin) ; (aref char-script-table ?ˌ) is 'latin but (char-category-set ?ˌ) is ".j" (modify-category-entry ch ?l)))) my/ipa-chars) (add-to-list 'word-combining-categories '(?p . ?l)) (add-to-list 'word-combining-categories '(?l . ?p)) But adding and removing categories looks too low level. It is necessary to use some (define-category ?p "Phonetic") that is not defined in Emacs itself. This looks easier to me: (mapc (lambda (ch) (aset char-script-table ch 'latin) (modify-syntax-entry ch "w")) my/ipa-chars) But ``char-script-table`` derived from Unicode and some code my depends on this database... -- http://defun.work/
[Prev in Thread] | Current Thread | [Next in Thread] |