X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/951bc45f0d75927192ac12727a537af280a1058e..0578dead3a18ccc5419db3d1d5bb4db43165bd44:/lisp/disp-table.el diff --git a/lisp/disp-table.el b/lisp/disp-table.el index 7732956be9..87781f5f8a 100644 --- a/lisp/disp-table.el +++ b/lisp/disp-table.el @@ -1,6 +1,6 @@ -;;; disp-table.el --- functions for dealing with char tables. +;;; disp-table.el --- functions for dealing with char tables -;; Copyright (C) 1987, 1994, 1995, 1999 Free Software Foundation, Inc. +;; Copyright (C) 1987, 94, 95, 1999, 2004 Free Software Foundation, Inc. ;; Author: Erik Naggum ;; Based on a previous version by Howard Gayle @@ -24,6 +24,8 @@ ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. +;;; Commentary: + ;;; Code: (put 'display-table 'char-table-extra-slots 6) @@ -111,19 +113,20 @@ Valid symbols are `truncation', `wrap', `escape', `control', ;;;###autoload (defun standard-display-8bit (l h) "Display characters in the range L to H literally." + (or standard-display-table + (setq standard-display-table (make-display-table))) (while (<= l h) - (if (and (>= l ?\ ) (< l 127)) - (aset standard-display-table l nil) - (aset standard-display-table l (vector l))) + (aset standard-display-table l (if (or (< l ?\ ) (>= l 127)) (vector l))) (setq l (1+ l)))) ;;;###autoload (defun standard-display-default (l h) "Display characters in the range L to H using the default notation." + (or standard-display-table + (setq standard-display-table (make-display-table))) (while (<= l h) - (if (and (>= l ?\ ) (< l 127)) - (aset standard-display-table l nil) - (aset standard-display-table l nil)) + (if (and (>= l ?\ ) (char-valid-p l)) + (aset standard-display-table l nil)) (setq l (1+ l)))) ;; This function does NOT take terminal-dependent escape sequences. @@ -132,6 +135,8 @@ Valid symbols are `truncation', `wrap', `escape', `control', ;;;###autoload (defun standard-display-ascii (c s) "Display character C using printable string S." + (or standard-display-table + (setq standard-display-table (make-display-table))) (aset standard-display-table c (vconcat s))) ;;;###autoload @@ -139,8 +144,10 @@ Valid symbols are `truncation', `wrap', `escape', `control', "Display character C as character SC in the g1 character set. This function assumes that your terminal uses the SO/SI characters; it is meaningless for an X frame." - (if window-system + (if (memq window-system '(x w32)) (error "Cannot use string glyphs in a windowing system")) + (or standard-display-table + (setq standard-display-table (make-display-table))) (aset standard-display-table c (vector (create-glyph (concat "\016" (char-to-string sc) "\017"))))) @@ -149,24 +156,27 @@ it is meaningless for an X frame." "Display character C as character GC in graphics character set. This function assumes VT100-compatible escapes; it is meaningless for an X frame." - (if window-system + (if (memq window-system '(x w32)) (error "Cannot use string glyphs in a windowing system")) + (or standard-display-table + (setq standard-display-table (make-display-table))) (aset standard-display-table c (vector (create-glyph (concat "\e(0" (char-to-string gc) "\e(B"))))) ;;;###autoload (defun standard-display-underline (c uc) "Display character C as character UC plus underlining." - (if window-system (require 'faces)) + (or standard-display-table + (setq standard-display-table (make-display-table))) (aset standard-display-table c - (vector + (vector (if window-system - (logior uc (lsh (face-id (internal-find-face 'underline)) 19)) + (logior uc (lsh (face-id 'underline) 19)) (create-glyph (concat "\e[4m" (char-to-string uc) "\e[m")))))) -;; Allocate a glyph code to display by sending STRING to the terminal. ;;;###autoload (defun create-glyph (string) + "Allocate a glyph code to display by sending STRING to the terminal." (if (= (length glyph-table) 65536) (error "No free glyph codes remain")) ;; Don't use slots that correspond to ASCII characters. @@ -206,27 +216,17 @@ for users who call this function in `.emacs'." (equal (aref standard-display-table 161) [161]))) (progn (standard-display-default 160 255) - (unless (or (memq window-system '(x w32)) - (interactive-p)) + (unless (or (memq window-system '(x w32))) (and (terminal-coding-system) (set-terminal-coding-system nil)))) - ;; If the user does this explicitly from Lisp (as in .emacs), - ;; turn off multibyte chars for more compatibility. - (unless (interactive-p) - (setq-default enable-multibyte-characters nil) - (mapcar (lambda (buffer) - (with-current-buffer buffer - (if enable-multibyte-characters - (set-buffer-multibyte nil)))) - (buffer-list))) - ;; If the user does this explicitly, - ;; switch to Latin-1 language environment + ;; Turn off multibyte chars for more compatibility. + (setq-default enable-multibyte-characters nil) + + ;; Switch to Latin-1 language environment ;; unless some other has been specified. - (unless (interactive-p) - (if (equal current-language-environment "English") - (set-language-environment "latin-1"))) - (unless (or noninteractive (memq window-system '(x w32)) - (interactive-p)) + (if (equal current-language-environment "English") + (set-language-environment "latin-1")) + (unless (or noninteractive (memq window-system '(x w32))) ;; Send those codes literally to a character-based terminal. ;; If we are using single-byte characters, ;; it doesn't matter which coding system we use. @@ -237,4 +237,5 @@ for users who call this function in `.emacs'." (provide 'disp-table) +;;; arch-tag: ffe4c28c-960c-47aa-b8a8-ae89d371ffc7 ;;; disp-table.el ends here