diff options
author | Eli Zaretskii <eliz@gnu.org> | 2019-07-13 11:32:18 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2019-07-13 11:32:18 +0300 |
commit | b2783ba6f4c663556709f524a2ff34f18072e9f3 (patch) | |
tree | d7bdc97efe5a1be3bb459c6fe630c69622f41c5b /lisp | |
parent | bd962f7fd471a07bae1950976e066ad0c3009532 (diff) | |
download | emacs-b2783ba6f4c663556709f524a2ff34f18072e9f3.tar.gz |
Avoid loading mule-util at startup
* lisp/international/mule-util.el (char-displayable-p): Move
from here...
* lisp/international/mule.el (char-displayable-p): ...to
here. This avoids always loading mule-util at startup due
to a call to 'char-displayable-p' in
'startup--setup-quote-display'.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/international/mule-util.el | 56 | ||||
-rw-r--r-- | lisp/international/mule.el | 55 |
2 files changed, 55 insertions, 56 deletions
diff --git a/lisp/international/mule-util.el b/lisp/international/mule-util.el index de5e7d83231..19d6d165cfd 100644 --- a/lisp/international/mule-util.el +++ b/lisp/international/mule-util.el @@ -282,62 +282,6 @@ language environment LANG-ENV." (declare-function internal-char-font "font.c" (position &optional ch)) -;;;###autoload -(defun char-displayable-p (char) - "Return non-nil if we should be able to display CHAR. -On a multi-font display, the test is only whether there is an -appropriate font from the selected frame's fontset to display -CHAR's charset in general. Since fonts may be specified on a -per-character basis, this may not be accurate." - (cond ((< char 128) - ;; ASCII characters are always displayable. - t) - ((not enable-multibyte-characters) - ;; Maybe there's a font for it, but we can't put it in the buffer. - nil) - (t - (let ((font-glyph (internal-char-font nil char))) - (if font-glyph - (if (consp font-glyph) - ;; On a window system, a character is displayable - ;; if a font for that character is in the default - ;; face of the currently selected frame. - (car font-glyph) - ;; On a text terminal supporting glyph codes, CHAR is - ;; displayable if its glyph code is nonnegative. - (<= 0 font-glyph)) - ;; On a text terminal without glyph codes, CHAR is displayable - ;; if the coding system for the terminal can encode it. - (let ((coding (terminal-coding-system))) - (when coding - (let ((cs-list (coding-system-get coding :charset-list))) - (cond - ((listp cs-list) - (catch 'tag - (mapc #'(lambda (charset) - (if (encode-char char charset) - (throw 'tag charset))) - cs-list) - nil)) - ((eq cs-list 'iso-2022) - (catch 'tag2 - (mapc #'(lambda (charset) - (if (and (plist-get (charset-plist charset) - :iso-final-char) - (encode-char char charset)) - (throw 'tag2 charset))) - charset-list) - nil)) - ((eq cs-list 'emacs-mule) - (catch 'tag3 - (mapc #'(lambda (charset) - (if (and (plist-get (charset-plist charset) - :emacs-mule-id) - (encode-char char charset)) - (throw 'tag3 charset))) - charset-list) - nil))))))))))) - (defun filepos-to-bufferpos--dos (byte f) (let ((eol-offset 0) ;; Make sure we terminate, even if BYTE falls right in the middle diff --git a/lisp/international/mule.el b/lisp/international/mule.el index 21f3118a98e..ec6f6476888 100644 --- a/lisp/international/mule.el +++ b/lisp/international/mule.el @@ -481,6 +481,61 @@ Return -1 if charset isn't an ISO 2022 one." (or charset (error "Invalid Emacs-mule charset ID: %d" charset-id)) (make-char charset code1 code2))) + +(defun char-displayable-p (char) + "Return non-nil if we should be able to display CHAR. +On a multi-font display, the test is only whether there is an +appropriate font from the selected frame's fontset to display +CHAR's charset in general. Since fonts may be specified on a +per-character basis, this may not be accurate." + (cond ((< char 128) + ;; ASCII characters are always displayable. + t) + ((not enable-multibyte-characters) + ;; Maybe there's a font for it, but we can't put it in the buffer. + nil) + (t + (let ((font-glyph (internal-char-font nil char))) + (if font-glyph + (if (consp font-glyph) + ;; On a window system, a character is displayable + ;; if a font for that character is in the default + ;; face of the currently selected frame. + (car font-glyph) + ;; On a text terminal supporting glyph codes, CHAR is + ;; displayable if its glyph code is nonnegative. + (<= 0 font-glyph)) + ;; On a text terminal without glyph codes, CHAR is displayable + ;; if the coding system for the terminal can encode it. + (let ((coding (terminal-coding-system))) + (when coding + (let ((cs-list (coding-system-get coding :charset-list))) + (cond + ((listp cs-list) + (catch 'tag + (mapc #'(lambda (charset) + (if (encode-char char charset) + (throw 'tag charset))) + cs-list) + nil)) + ((eq cs-list 'iso-2022) + (catch 'tag2 + (mapc #'(lambda (charset) + (if (and (plist-get (charset-plist charset) + :iso-final-char) + (encode-char char charset)) + (throw 'tag2 charset))) + charset-list) + nil)) + ((eq cs-list 'emacs-mule) + (catch 'tag3 + (mapc #'(lambda (charset) + (if (and (plist-get (charset-plist charset) + :emacs-mule-id) + (encode-char char charset)) + (throw 'tag3 charset))) + charset-list) + nil))))))))))) ;; Save the ASCII case table in case we need it later. Some locales ;; (such as Turkish) modify the case behavior of ASCII characters, |