changeset 102001:475e90a4fafc

(tit-process-header): Use buffer-substring-no-properties instead of buffer-substring. (tit-process-body): Likewise. (tsang-quick-converter): Handle superfluous CR at eol. (py-converter): Use buffer-substring-no-properties instead of buffer-substring. Handle superfluous CR at eol. (ziranma-converter): Likewise (ctlau-converter): Likewise. (miscdic-convert): Read a file without eol conversion.
author Kenichi Handa <handa@m17n.org>
date Fri, 13 Feb 2009 12:36:55 +0000
parents c61bbad9f3b7
children 7f53f87a4bf3
files lisp/international/titdic-cnv.el
diffstat 1 files changed, 31 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/international/titdic-cnv.el	Fri Feb 13 10:45:03 2009 +0000
+++ b/lisp/international/titdic-cnv.el	Fri Feb 13 12:36:55 2009 +0000
@@ -290,8 +290,9 @@
 	       (cond ((looking-at "COMMENT")
 		      (let ((pos (match-end 0)))
 			(end-of-line)
-			(setq tit-comments (cons (buffer-substring pos (point))
-						 tit-comments))))))
+			(setq tit-comments
+			      (cons (buffer-substring-no-properties pos (point))
+				    tit-comments))))))
 	      ((= ch ?M)		; MULTICHOICE, MOVERIGHT, MOVELEFT
 	       (cond ((looking-at "MULTICHOICE:[ \t]*")
 		      (goto-char (match-end 0))
@@ -335,7 +336,7 @@
 				    tit-keyprompt)))))))
 	(end-of-line)
 	(princ ";; ")
-	(princ (buffer-substring pos (point)))
+	(princ (buffer-substring-no-properties pos (point)))
 	(princ "\n")
 	(forward-line 1)))
 
@@ -431,7 +432,7 @@
 	  (forward-line 1)
 	(setq pos (point))
 	(skip-chars-forward "^ \t\n")
-	(setq key (buffer-substring pos (point)))
+	(setq key (buffer-substring-no-properties pos (point)))
 	(skip-chars-forward " \t")
 	(setq ch (following-char))
 	(if (or (= ch ?#) (= ch ?\n))
@@ -450,12 +451,13 @@
 		(setq translations
 		      (if translations
 			  (concat translations
-				  (buffer-substring pos (point)))
-			(buffer-substring pos (point)))))
+				  (buffer-substring-no-properties pos (point)))
+			(buffer-substring-no-properties pos (point)))))
 	    (while (not (eolp))
 	      (setq pos (point))
 	      (skip-chars-forward "^ \t\n")
-	      (setq translations (cons (buffer-substring pos (point))
+	      (setq translations (cons (buffer-substring-no-properties
+					pos (point))
 				       translations))
 	      (skip-chars-forward " \t")
 	      (setq ch (following-char))
@@ -778,9 +780,6 @@
       ;; Handle double CR line ends, which result when checking out of
       ;; CVS on MS-Windows.
       (goto-char (point-min))
-      (while (re-search-forward "\r\r$" nil t)
-	(replace-match ""))
-      (goto-char (point-min))
       (search-forward "A440")
       (beginning-of-line)
       (let ((table (make-hash-table :test 'equal))
@@ -789,13 +788,13 @@
 	  (forward-char 5)
 	  (let ((trans (char-to-string (following-char)))
 		key slot)
-	    (re-search-forward "[A-Z]+$" nil t)
+	    (re-search-forward "\\([A-Z]+\\)\r*$" nil t)
 	    (setq key (downcase
 		       (if (or tsang-p
-			       (<= (- (match-end 0) (match-beginning 0)) 1))
-			   (match-string 0)
-			 (string (char-after (match-beginning 0))
-				 (char-after (1- (match-end 0)))))))
+			       (<= (- (match-end 1) (match-beginning 1)) 1))
+			   (match-string 1)
+			 (string (char-after (match-beginning 1))
+				 (char-after (1- (match-end 1)))))))
 	    (setq val (gethash key table))
 	    (if val (setq trans (concat val trans)))
 	    (puthash key trans table)
@@ -909,7 +908,7 @@
   nil nil nil nil)\n\n")
   (insert "(quail-define-rules\n")
   (let ((pos (point)))
-    (insert-buffer-substring dicbuf)
+    (insert-buffer-substring-no-properties dicbuf)
     (goto-char pos)
     (re-search-forward "^[a-z]")
     (beginning-of-line)
@@ -920,6 +919,8 @@
       (insert "\" \"")
       (delete-char 1)
       (end-of-line)
+      (while (= (preceding-char) ?\r)
+	(delete-char -1))
       (insert "\")")
       (forward-line 1)))
   (insert ")\n"))
@@ -933,15 +934,18 @@
     (save-excursion
       (set-buffer dicbuf)
       (goto-char (point-min))
-      (search-forward "%keyname end\n")
+      (search-forward "\n%keyname end")
+      (forward-line 1)
       (let ((table (make-hash-table :test 'equal))
 	    elt pos key trans val)
 	(while (not (eobp))
 	  (setq pos (point))
 	  (skip-chars-forward "^ \t")
-	  (setq key (buffer-substring pos (point)))
+	  (setq key (buffer-substring-no-properties pos (point)))
 	  (skip-chars-forward " \t")
-	  (setq trans (vector (buffer-substring (point) (line-end-position))))
+	  (setq pos (point))
+	  (skip-chars-forward "^\r\n")
+	  (setq trans (vector (buffer-substring-no-properties pos (point))))
 	  (setq val (gethash key table))
 	  (if val (setq trans (vconcat val trans)))
 	  (puthash key trans table)
@@ -1051,12 +1055,13 @@
     (save-excursion
       (set-buffer dicbuf)
       (goto-char (point-min))
-      (search-forward "#\n#<hr>\n")
+      (re-search-forward "^#<hr>")
+      (forward-line 1)
       (setq dicbuf-start (point))
       (goto-char (point-max))
-      (forward-line -1)
+      (re-search-backward "^<hr>")
       (setq dicbuf-end (point)))
-    (insert-buffer-substring dicbuf dicbuf-start dicbuf-end)
+    (insert-buffer-substring-no-properties dicbuf dicbuf-start dicbuf-end)
     ;; CTLau-b5.html contains characters (0xa1 0xbc) which show up as
     ;; hollow boxes when the original characters in CTLau.html from
     ;; which the file is converted have no Big5 equivalent.  Go
@@ -1078,6 +1083,8 @@
       (insert "\" \"")
       (delete-char 1)
       (end-of-line)
+      (while (= (preceding-char) ?\r)
+	(delete-char -1))
       (insert "\")")
       (forward-line 1)))
   (insert ")\n"))
@@ -1168,7 +1175,8 @@
 		    (if (eq coding 'iso-2022-cn-ext) "Chinese-CNS"
 		      "Chinese-GB"))
 		  "\" \"" title "\" t\n")
-	  (let* ((coding-system-for-read coding)
+	  (let* ((coding-system-for-read
+		  (coding-system-change-eol-conversion coding 'unix))
 		 (dicbuf (find-file-noselect filename)))
 	    (funcall converter dicbuf name title)
 	    (kill-buffer dicbuf)))