Subject: bug#51578: 29.0.50; error on display-bindings when invoked from a tty

From: Eli Zaretskii <[email-masked]>
Date: Wed, 03 Nov 2021 16:27:03 +0200

> From: Bird <[email-masked]>
> Date: Wed, 03 Nov 2021 03:00:03 +0000
> 
> 
> When emacs -Q is ran in a tty(C-M-F2 on gnu/linux) and invokes
> describe-bindings, an error occurs. the debug information is:
> 
> Debugger entered--Lisp error: (wrong-type-argument listp -1)
>   outline--valid-emoji-p("▶️")
>   outline--make-button(open)
>   outline--make-button-overlay(open)
>   outline--insert-open-button()
>   outline-minor-mode-highlight-buffer()
>   outline-minor-mode(1)
>   describe-bindings()
>   funcall-interactively(describe-bindings)
>   call-interactively(describe-bindings nil nil)
>   command-execute(describe-bindings)

Thanks.  Does the patch below help?

diff --git a/lisp/outline.el b/lisp/outline.el
index 2a6f475..5b20a42 100644
--- a/lisp/outline.el
+++ b/lisp/outline.el
@@ -961,7 +961,8 @@ outline--make-button
                           " " (buffer-substring (point) (1+ (point))))))
 
 (defun outline--valid-emoji-p (string)
-  (when-let ((font (car (internal-char-font nil ?😀))))
+  (when-let ((font (and (display-multi-font-p)
+                        (car (internal-char-font nil ?😀)))))
     (font-has-char-p font (aref string 0))))
 
 (defun outline--valid-char-p (string)