summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2019-07-13 11:32:18 +0300
committerEli Zaretskii <eliz@gnu.org>2019-07-13 11:32:18 +0300
commitb2783ba6f4c663556709f524a2ff34f18072e9f3 (patch)
treed7bdc97efe5a1be3bb459c6fe630c69622f41c5b /lisp
parentbd962f7fd471a07bae1950976e066ad0c3009532 (diff)
downloademacs-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.el56
-rw-r--r--lisp/international/mule.el55
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,