2012-07-22 16 views
5

Sto scrivendo una funzione che restituisce informazioni linguistiche sul carattere al punto. Questo è facile per i personaggi precompilati. Tuttavia, desidero rendere conto dei segni diacritici. Credo che questi siano indicati come "segni" o "combinazione di caratteri" in Unicode (vedi il piano U + 0300 - U + 036F).Ricerca di segni diacritici per carattere al punto in emacs

Ad esempio, per posizionare il diacritic accentramento (U + 0306) sul personaggio e:

e C-x 8 <RET> 0306 <RET> 

Run C-u C-x = sul carattere risultante e vedrete qualcosa di simile ", composto con il carattere successivo (s) 01 "

Funzioni come following-char purtroppo restituiscono solo il carattere di base, ad esempio" e ", e ignorano qualsiasi diacritico combinato. C'è un modo per ottenere questi?

MODIFICA: slitvinov ha sottolineato che il glifo risultante è costituito da due caratteri. Se si posiziona il punto prima del glifo creato dal codice precedente e si esegue (point) prima e dopo aver eseguito forward-char, si vedrà aumentare il punto di 2. Ho pensato che avrei potuto modificare una soluzione attraverso questo comportamento, ma sembra che all'interno di un'istruzione progn (o definizione della funzione), forward-char si sposta solo in avanti di un punto ... provalo in uno defun o con (progn (forward-char) (point)). Perché potrebbe essere?

risposta

2

Penso che diacritic e sia considerato come due caratteri. Ho inserito questa combinazione nel file e(diacritic e)e.

ĕee 
(char-after 1) 
(char-after 2) 
(char-after 3) 
(char-after 4) 

Mi dà.

101 101 774 101 

E 774 è una forma decimale di 0306.

+0

Buona cattura. Se creo ĕ usando il segno diacritico U + 0306, posto il punto prima del carattere risultante, ed eseguo 'forward-char', il punto aumenta di due. C'è un problema con questo in una funzione, tuttavia, vedere la mia modifica. – Dan

Problemi correlati