changeset 24490:7a5f7af21c27

(dos-codepage-setup): Compute the unibyte syntax table and bind unibyte-display-via-language-environment here, rather than at top level, so that resetting to unibyte in .emacs works as expected.
author Eli Zaretskii <eliz@gnu.org>
date Tue, 16 Mar 1999 14:14:55 +0000
parents abf5b4802f9b
children 45b77df0b5ac
files lisp/term/internal.el
diffstat 1 files changed, 52 insertions(+), 51 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/term/internal.el	Mon Mar 15 19:53:32 1999 +0000
+++ b/lisp/term/internal.el	Tue Mar 16 14:14:55 1999 +0000
@@ -274,6 +274,58 @@
 							  "-unix"))))
     (IT-display-table-setup cp)
     (prefer-coding-system (intern (concat cp "-dos")))
+    (if default-enable-multibyte-characters
+	;; We want this in multibyte version only, since unibyte version
+	;; should not convert non-ASCII characters at all.
+	(setq unibyte-display-via-language-environment t)
+      ;; Let the unibyte version behave as Emacs 19 did.  In particular,
+      ;; let it use and display native codepage-specific glyphs for
+      ;; non-ASCII characters.  For this to work correctly, we need to
+      ;; establish the correspondence between lower-case letters and their
+      ;; upper-case brethren, as appropriate for the codepage in use.  The
+      ;; code below makes this happen.
+      ;; (In the multibyte mode, the appropriate tables are prepared
+      ;; elsewhere, since multibyte Emacs uses normal MULE character sets,
+      ;; which are supported on all platforms.)
+      (let* ((i 128)
+	     (modify (function
+		      (lambda (ch sy) 
+			(modify-syntax-entry ch sy text-mode-syntax-table)
+			(if (boundp 'tex-mode-syntax-table)
+			    (modify-syntax-entry ch sy tex-mode-syntax-table))
+			(modify-syntax-entry ch sy (standard-syntax-table))
+			)))
+	     (table (standard-case-table))
+	     ;; The following are strings of letters, first lower then
+	     ;; upper case.  This will look funny on terminals which
+	     ;; display other code pages.  In particular, what is
+	     ;; displayed as blanks or triangles are not what they
+	     ;; look lile at all!  (Use `C-x =' to see what they
+	     ;; really are.)
+	     (chars
+	      (cond
+	       ((= dos-codepage 850)
+		"‡€š‚ƒķ„Ž…·†ÆĮ ĩˆŌ‰ÓŠÔ‹ØŒŨÞĄÖ‘’“â”™•ãĒā›–ęĢé—ë˜YėíĄIĢéĪĨÐŅįč")
+	       ((= dos-codepage 865)
+		"‡€š‚ƒA„Ž…A†ˆE‰EŠE‹IŒII‘’“O”™•O–UĢU˜Y› AĄIĒOĢUĪĨ")
+	       ;; default is 437
+	       (t "‡€š‚ƒA„Ž…A†ˆE‰EŠE‹IŒII‘’“O”™•O–UĢU˜Y AĄIĒOĢUĪĨ"))))
+
+	(while (< i 256)
+	  (funcall modify i "_")
+	  (setq i (1+ i)))
+
+	(setq i 0)
+	(while (< i (length chars))
+	  (let ((ch1 (aref chars i))
+		(ch2 (aref chars (1+ i))))
+	    (if (> ch2 127)
+		(set-case-syntax-pair ch2 ch1 table))
+	    (setq i (+ i 2))))
+	(save-excursion
+	  (mapcar (lambda (b) (set-buffer b) (set-case-table table))
+		  (buffer-list)))
+	(set-standard-case-table table)))
     ;; Some codepages have sporadic support for Latin-1, Greek, and
     ;; symbol glyphs, which don't belong to their native character
     ;; set.  It's a nuisance to have all those glyphs here, for all
@@ -295,56 +347,5 @@
 ;; characters to arrive at our display code verbatim.
 (standard-display-8bit 127 255)
 
-(if default-enable-multibyte-characters
-    ;; We want this in multibyte version only, since unibyte version
-    ;; should not convert non-ASCII characters at all.
-    (setq unibyte-display-via-language-environment t)
-  ;; Let the unibyte version behave as Emacs 19 did.  In particular,
-  ;; let it use and display native codepage-specific glyphs for
-  ;; non-ASCII characters.  For this to work correctly, we need to
-  ;; establish the correspondence between lower-case letters and their
-  ;; upper-case brethren, as appropriate for the codepage in use.  The
-  ;; code below makes this happen.
-  ;; (In the multibyte mode, the appropriate tables are prepared
-  ;; elsewhere, since multibyte Emacs uses normal MULE character sets,
-  ;; which are supported on all platforms.)
-  (let* ((i 128)
-	 (modify (function
-		  (lambda (ch sy) 
-		    (modify-syntax-entry ch sy text-mode-syntax-table)
-		    (if (boundp 'tex-mode-syntax-table)
-			(modify-syntax-entry ch sy tex-mode-syntax-table))
-		    (modify-syntax-entry ch sy (standard-syntax-table))
-		    )))
-	 (table (standard-case-table))
-	 ;; The following are strings of letters, first lower then upper case.
-	 ;; This will look funny on terminals which display other code pages.
-	 ;; In particular, what is displayed as blanks are not blanks
-	 ;; at all!  (Use `C-x =' to see what they really are.)
-	 (chars
-	  (cond
-	   ((= dos-codepage 850)
-	    "‡€š‚ƒķ„Ž…·†ÆĮ ĩˆŌ‰ÓŠÔ‹ØŒŨÞĄÖ‘’“â”™•ãĒā›–ęĢé—ë˜YėíĄIĢéĪĨÐŅįč")
-	   ((= dos-codepage 865)
-	    "‡€š‚ƒA„Ž…A†ˆE‰EŠE‹IŒII‘’“O”™•O–UĢU˜Y› AĄIĒOĢUĪĨ")
-	   ;; default is 437
-	   (t "‡€š‚ƒA„Ž…A†ˆE‰EŠE‹IŒII‘’“O”™•O–UĢU˜Y AĄIĒOĢUĪĨ"))))
-
-    (while (< i 256)
-      (funcall modify i "_")
-      (setq i (1+ i)))
-
-    (setq i 0)
-    (while (< i (length chars))
-      (let ((ch1 (aref chars i))
-	    (ch2 (aref chars (1+ i))))
-	(if (> ch2 127)
-	    (set-case-syntax-pair ch2 ch1 table))
-	(setq i (+ i 2))))
-    (save-excursion
-      (mapcar (lambda (b) (set-buffer b) (set-case-table table))
-	      (buffer-list)))
-    (set-standard-case-table table)))
-
 ;;; internal.el ends here