[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/textmodes/ispell.el
From: |
Kenichi Handa |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/textmodes/ispell.el |
Date: |
Wed, 12 Jan 2005 23:57:59 -0500 |
Index: emacs/lisp/textmodes/ispell.el
diff -c emacs/lisp/textmodes/ispell.el:1.151
emacs/lisp/textmodes/ispell.el:1.152
*** emacs/lisp/textmodes/ispell.el:1.151 Wed Dec 22 00:22:58 2004
--- emacs/lisp/textmodes/ispell.el Thu Jan 13 04:33:05 2005
***************
*** 1074,1088 ****
(decode-coding-string str (ispell-get-coding-system))
str))
(defun ispell-get-casechars ()
! (ispell-decode-string
! (nth 1 (assoc ispell-dictionary ispell-dictionary-alist))))
(defun ispell-get-not-casechars ()
! (ispell-decode-string
! (nth 2 (assoc ispell-dictionary ispell-dictionary-alist))))
(defun ispell-get-otherchars ()
! (ispell-decode-string
! (nth 3 (assoc ispell-dictionary ispell-dictionary-alist))))
(defun ispell-get-many-otherchars-p ()
(nth 4 (assoc ispell-dictionary ispell-dictionary-alist)))
(defun ispell-get-ispell-args ()
--- 1074,1127 ----
(decode-coding-string str (ispell-get-coding-system))
str))
+ (put 'ispell-unified-chars-table 'char-table-extra-slots 0)
+
+ ;; Char-table that maps an Unicode character (charset:
+ ;; latin-iso8859-1, mule-unicode-0100-24ff, mule-unicode-2500-34ff) to
+ ;; a string in which all equivalent characters are listed.
+
+ (defconst ispell-unified-chars-table
+ (let ((table (make-char-table 'ispell-unified-chars-table)))
+ (map-char-table
+ #'(lambda (c v)
+ (if (and v (/= c v))
+ (let ((unified (or (aref table v) (string v))))
+ (aset table v (concat unified (string c))))))
+ ucs-mule-8859-to-mule-unicode)
+ table))
+
+ ;; Return a string decoded from Nth element of the current dictionary
+ ;; while splice equivalent characters into the string. This splicing
+ ;; is done only if the string is a regular expression of the form
+ ;; "[...]" because, otherwise, splicing will result in incorrect
+ ;; regular expression matching.
+
+ (defun ispell-get-decoded-string (n)
+ (let* ((slot (assoc ispell-dictionary ispell-dictionary-alist))
+ (str (nth n slot)))
+ (when (and (> (length str) 0)
+ (not (multibyte-string-p str)))
+ (setq str (ispell-decode-string str))
+ (if (and (= (aref str 0) ?\[)
+ (eq (string-match "\\]" str) (1- (length str))))
+ (setq str
+ (string-as-multibyte
+ (mapconcat
+ #'(lambda (c)
+ (let ((unichar (aref ucs-mule-8859-to-mule-unicode c)))
+ (if unichar
+ (aref ispell-unified-chars-table unichar)
+ (string c))))
+ str ""))))
+ (setcar (nthcdr n slot) str))
+ str))
+
(defun ispell-get-casechars ()
! (ispell-get-decoded-string 1))
(defun ispell-get-not-casechars ()
! (ispell-get-decoded-string 2))
(defun ispell-get-otherchars ()
! (ispell-get-decoded-string 3))
(defun ispell-get-many-otherchars-p ()
(nth 4 (assoc ispell-dictionary ispell-dictionary-alist)))
(defun ispell-get-ispell-args ()
- [Emacs-diffs] Changes to emacs/lisp/textmodes/ispell.el,
Kenichi Handa <=