;;; Commentary:
;; This file contains multibyte characters. Save this file always in
-;; `coding-system-iso-2022-7'.
+;; the coding system `iso-2022-7'.
;;; Predefined categories.
(define-category ?e "Ethiopic (Ge'ez)")
(define-category ?v "Vietnamese")
(define-category ?i "Indian")
+(define-category ?o "Lao")
;; For each group (row) of 2-byte character sets.
(define-category ?5 "vowel")
(define-category ?6 "digit")
(define-category ?7 "vowel-modifying diacritical mark")
-(define-category ?8 "vowel-signs.")
+(define-category ?8 "vowel-signs")
+(define-category ?9 "semivowel lower")
;; For filling.
(define-category ?| "While filling, we can break a line at this character.")
(modify-category-entry (make-char 'korean-ksc5601 43) ?K)
(modify-category-entry (make-char 'korean-ksc5601 44) ?Y)
+;; Lao character set
+
+(modify-category-entry (make-char 'lao) ?o)
+
+(let ((deflist '(;; chars syntax category
+ ("\e(1!\e(B-\e(1N\e(B" "w" ?0) ; consonant
+ ("\e(1PRS]`\e(B-\e(1d\e(B" "w" ?1) ; vowel base
+ ("\e(1QT\e(B-\e(1W[m\e(B" "w" ?2) ; vowel upper
+ ("\e(1XY\e(B" "w" ?3) ; vowel lower
+ ("\e(1h\e(B-\e(1l\e(B" "w" ?4) ; tone mark
+ ("\e(1\\e(B" "w" ?9) ; semivowel lower
+ ("\e(1p\e(B-\e(1y\e(B" "w" ?0) ; digit and misc
+ ("\e(1Of\e(B" "_" ?0) ; symbol
+ ))
+ elm chars len syntax category to ch i)
+ (while deflist
+ (setq elm (car deflist))
+ (setq chars (car elm)
+ len (length chars)
+ syntax (nth 1 elm)
+ category (nth 2 elm)
+ i 0)
+ (while (< i len)
+ (if (= (aref chars i) ?-)
+ (setq i (1+ i)
+ to (sref chars i))
+ (setq ch (sref chars i)
+ to ch))
+ (while (<= ch to)
+ (modify-syntax-entry ch syntax)
+ (modify-category-entry ch category)
+ (setq ch (1+ ch)))
+ (setq i (+ i (char-bytes to))))
+ (setq deflist (cdr deflist))))
+
;; Thai character set (TIS620)
(modify-category-entry (make-char 'thai-tis620) ?t)