summaryrefslogtreecommitdiff
path: root/lisp/term/internal.el
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>1999-03-16 14:14:55 +0000
committerEli Zaretskii <eliz@gnu.org>1999-03-16 14:14:55 +0000
commite1b674a1383adfb093d02c19554a3c7b7a35c9fe (patch)
tree1b29a4bd0c8d2bb59bc63f738ea9d724b997b2f3 /lisp/term/internal.el
parentbf1b7b30dad9e42abca8f64ab14080124b641b48 (diff)
downloademacs-e1b674a1383adfb093d02c19554a3c7b7a35c9fe.tar.gz
(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.
Diffstat (limited to 'lisp/term/internal.el')
-rw-r--r--lisp/term/internal.el103
1 files changed, 52 insertions, 51 deletions
diff --git a/lisp/term/internal.el b/lisp/term/internal.el
index c1be9aed3c4..30b0d3d0b7f 100644
--- a/lisp/term/internal.el
+++ b/lisp/term/internal.el
@@ -274,6 +274,58 @@ list. You can (and should) also run it whenever the value of
"-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 @@ list. You can (and should) also run it whenever the value of
;; 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