Subject: 25.0.92; :box face hang regression

From: Aaron Jensen <[email-masked]>
Date: Tue, 22 Mar 2016 14:38:21 +0000

While using the monokai theme and helm, a hang can be triggered with a
setq header-line-format in a specific shape. The below is a repro from
an emacs -Q. This does not repro in Emacs 24 or terminal emacs.
I am on OS X.
The hang does not repro if there is no :box in the face defined below.

With emacs -Q eval the following:

;; https://gist.github.com/aaronjensen/db5eb0b7ba3679971fa2

(deftheme monokai "The Monokai colour theme")

(defgroup monokai nil
  "Monokai theme options.
The theme has to be reloaded after changing anything in this group."
  :group 'faces)

(defcustom monokai-distinct-fringe-background nil
  "Make the fringe background different from the normal background color.
Also affects 'linum-mode' background."
  :type 'boolean
  :group 'monokai)

(defcustom monokai-use-variable-pitch t
  "Use variable pitch face for some headings and titles."
  :type 'boolean
  :group 'monokai)

(defcustom monokai-high-contrast-mode-line nil
  "Make the active/inactive mode line stand out more."
  :type 'boolean
  :group 'monokai)

(let* ((class                    '((class color) (min-colors 257)))
       ;; Primary colors
       (yellow                   "#E6DB74")
       (orange                   "#FD971F")
       (red                      "#F92672")
       (magenta                  "#FD5FF0")
       (violet                   "#AE81FF")
       (blue                     "#66D9EF")
       (cyan                     "#A1EFE4")
       (green                    "#A6E22E")
       (gray                     "#474747")
       ;; Darker and lighter accented colors
       (yellow-d                 "#968B26")
       (yellow-l                 "#F3EA98")
       (orange-d                 "#A45E0A")
       (orange-l                 "#FEB257")
       (red-d                    "#A20C41")
       (red-l                    "#FC5C94")
       (magenta-d                "#A41F99")
       (magenta-l                "#FE87F4")
       (violet-d                 "#562AA6")
       (violet-l                 "#C2A1FF")
       (blue-d                   "#21889B")
       (blue-l                   "#8DE6F7")
       (cyan-d                   "#349B8D")
       (cyan-l                   "#BBF7EF")
       (green-d                  "#67930F")
       (green-l                  "#C1F161")
       (gray-d                   "#333333")
       (gray-l                   "#6b6b6b")
       ;; Adaptive colors
       (monokai-fg               "#F8F8F2")
       (monokai-bg               "#272822")
       (monokai-hl               "#3E3D31")
       (monokai-hl-line          "#49483E")
       (monokai-emph             "#F8F8F0")
       (monokai-comments         "#75715E")
       ;; Adaptive higher/lower contrast accented colors
       (monokai-fg-hc            "#141414")
       (monokai-fg-lc            "#171A0B")
       ;; High contrast colors
       (yellow-hc                yellow-l)
       (yellow-lc                yellow-d)
       (orange-hc                orange-l)
       (orange-lc                orange-d)
       (red-hc                   red-l)
       (red-lc                   red-d)
       (magenta-hc               magenta-l)
       (magenta-lc               magenta-d)
       (violet-hc                violet-l)
       (violet-lc                violet-d)
       (blue-hc                  blue-l)
       (blue-lc                  blue-d)
       (cyan-hc                  cyan-l)
       (cyan-lc                  cyan-d)
       (green-hc                 green-l)
       (green-lc                 green-d)
       ;; customize based face properties
       (s-variable-pitch         (if monokai-use-variable-pitch
                                     'variable-pitch 'default))
       (s-fringe-bg              (if monokai-distinct-fringe-background
                                     monokai-hl monokai-bg))
       (s-mode-line-fg           (if monokai-high-contrast-mode-line
                                     monokai-bg monokai-fg))
       (s-mode-line-bg           (if monokai-high-contrast-mode-line
                                     monokai-fg monokai-hl))
       (s-mode-line-buffer-id-fg (if monokai-high-contrast-mode-line
                                     'unspecified green))
       (s-mode-line-inactive-fg  (if monokai-high-contrast-mode-line
                                     monokai-fg monokai-comments))
       (s-mode-line-inactive-bg  (if monokai-high-contrast-mode-line
                                     gray-l monokai-bg))
       (s-mode-line-inactive-bc  (if monokai-high-contrast-mode-line
                                     monokai-fg monokai-hl))

       ;; powerline
       (s-powerline-active1-bg   (if monokai-high-contrast-mode-line
                                     gray-l gray))
       (s-powerline-active2-bg   (if monokai-high-contrast-mode-line
                                     gray gray-l))
       (s-powerline-inactive1-bg (if monokai-high-contrast-mode-line
                                     gray gray-d))
       (s-powerline-inactive2-bg (if monokai-high-contrast-mode-line
                                     monokai-bg gray))

       ;; Definitions for terminals that do not support 256 colors
       (terminal-class                    '((class color) (min-colors 89)))
       ;; Primary colors
       (terminal-yellow                   "#CDC673")
       (terminal-orange                   "#FF8C00")
       (terminal-red                      "#FF1493")
       (terminal-magenta                  "#D700D7")
       (terminal-violet                   "#AF87FF")
       (terminal-blue                     "#5FD7FF")
       (terminal-cyan                     "#5FFFFF")
       (terminal-green                    "#87D700")
       (terminal-gray                     "#444444")
       ;; Darker and lighter accented colors
       (terminal-yellow-d                 "#878700")
       (terminal-yellow-l                 "#FFFF87")
       (terminal-orange-d                 "#AF5F00")
       (terminal-orange-l                 "#FFAF5F")
       (terminal-red-d                    "#870000")
       (terminal-red-l                    "#FF5F87")
       (terminal-magenta-d                "#AF0087")
       (terminal-magenta-l                "#FF87DF")
       (terminal-violet-d                 "#5F00AF")
       (terminal-violet-l                 "#AF87D7")
       (terminal-blue-d                   "#008787")
       (terminal-blue-l                   "#87D7FF")
       (terminal-cyan-d                   "#5FAFAF")
       (terminal-cyan-l                   "#AFFFFF")
       (terminal-green-d                  "#5F8700")
       (terminal-green-l                  "#AFD700")
       (terminal-gray-d                   "#3A3A3A")
       (terminal-gray-l                   "#6C6C6C")
       ;; Adaptive colors
       (terminal-monokai-fg               "#F5F5F5")
       (terminal-monokai-bg               "#1B1E1C")
       (terminal-monokai-hl-line          "#212121")
       (terminal-monokai-hl               "#303030")
       (terminal-monokai-emph             "#FFFAFA")
       (terminal-monokai-comments         "#8B8878")
       ;; Adaptive higher/lower contrast accented colors
       (terminal-monokai-fg-hc            "#171A0B")
       (terminal-monokai-fg-lc            "#141414")
       ;; High contrast colors
       (terminal-yellow-hc                terminal-yellow-d)
       (terminal-yellow-lc                terminal-yellow-l)
       (terminal-orange-hc                terminal-orange-d)
       (terminal-orange-lc                terminal-orange-l)
       (terminal-red-hc                   terminal-red-d)
       (terminal-red-lc                   terminal-red-l)
       (terminal-magenta-hc               terminal-magenta-d)
       (terminal-magenta-lc               terminal-magenta-l)
       (terminal-violet-hc                terminal-violet-d)
       (terminal-violet-lc                terminal-violet-l)
       (terminal-blue-hc                  terminal-blue-d)
       (terminal-blue-lc                  terminal-blue-l)
       (terminal-cyan-hc                  terminal-cyan-d)
       (terminal-cyan-lc                  terminal-cyan-l)
       (terminal-green-hc                 terminal-green-d)
       (terminal-green-lc                 terminal-green-l)
       ;; customize based face properties
       (terminal-s-variable-pitch         (if monokai-use-variable-pitch
                                              'variable-pitch 'default))
       (terminal-s-fringe-bg              (if
monokai-distinct-fringe-background
                                              terminal-monokai-hl
terminal-monokai-bg))
       (terminal-s-mode-line-fg           (if
monokai-high-contrast-mode-line
                                              terminal-monokai-bg
terminal-monokai-fg))
       (terminal-s-mode-line-bg           (if
monokai-high-contrast-mode-line
                                              terminal-monokai-fg
terminal-monokai-hl))
       (terminal-s-mode-line-buffer-id-fg (if
monokai-high-contrast-mode-line
                                              'unspecified terminal-green))
       (terminal-s-mode-line-inactive-fg  (if
monokai-high-contrast-mode-line
                                              terminal-monokai-fg
terminal-monokai-comments))
       (terminal-s-mode-line-inactive-bg  (if
monokai-high-contrast-mode-line
                                              terminal-monokai-hl-line
terminal-monokai-bg))
       (terminal-s-mode-line-inactive-bc  (if
monokai-high-contrast-mode-line
                                              terminal-monokai-fg
terminal-monokai-hl)))

  ;; Define faces
  (custom-theme-set-faces
   'monokai
   `(header-line
     ((,class (:inverse-video unspecified
                              :underline unspecified
                              :foreground ,monokai-emph
                              :background ,monokai-hl
                              :box (:line-width 1
                                                :color ,monokai-hl
                                                :style unspecified)))
))

   )

  )

;;;###autoload
(when (and (boundp 'custom-theme-load-path) load-file-name)
  (add-to-list 'custom-theme-load-path
               (file-name-as-directory (file-name-directory
load-file-name))))

(provide-theme 'monokai)

;;; monokai-theme.el ends here

(defface helm-header-line-left-margin
  '((t (:foreground "black" :background "yellow")))
  "Face used to highlight helm-header sign in left-margin."
  :group 'helm-faces)

(setq header-line-format #("  " 0 1 (display #("->" 0 2 (face
helm-header-line-left-margin)))))

In GNU Emacs 25.0.92.1 (x86_64-apple-darwin15.3.0, NS appkit-1404.34
Version 10.11.3 (Build 15D21))
 of 2016-03-19 built on aaronmbp.local
Windowing system distributor 'Apple', version 10.3.1404
Configured using:
 'configure --prefix=/usr/local/Cellar/emacs/25.0.92
 --enable-locallisppath=/usr/local/share/emacs/site-lisp
 --infodir=/usr/local/Cellar/emacs/25.0.92/share/info/emacs --with-xml2
 --without-dbus --with-gnutls --with-rsvg --with-imagemagick --with-ns
 --disable-ns-self-contained'

Configured features:
JPEG RSVG IMAGEMAGICK NOTIFY ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS
NS

Important settings:
  value of $LC_CTYPE: en_US.UTF-8
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Emacs-Lisp

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent messages:
Checking 57 files in
/usr/local/Cellar/emacs/25.0.92/share/emacs/25.0.92/lisp/eshell...
Checking 70 files in
/usr/local/Cellar/emacs/25.0.92/share/emacs/25.0.92/lisp/erc...
Checking 34 files in
/usr/local/Cellar/emacs/25.0.92/share/emacs/25.0.92/lisp/emulation...
Checking 168 files in
/usr/local/Cellar/emacs/25.0.92/share/emacs/25.0.92/lisp/emacs-lisp...
Checking 24 files in
/usr/local/Cellar/emacs/25.0.92/share/emacs/25.0.92/lisp/cedet...
Checking 57 files in
/usr/local/Cellar/emacs/25.0.92/share/emacs/25.0.92/lisp/calendar...
Checking 87 files in
/usr/local/Cellar/emacs/25.0.92/share/emacs/25.0.92/lisp/calc...
Checking 122 files in
/usr/local/Cellar/emacs/25.0.92/share/emacs/25.0.92/lisp/obsolete...
Checking for load-path shadows...done
Making completion list...

Load-path shadows:
None found.

Features:
(pp shadow sort mail-extr emacsbug message dired format-spec rfc822 mml
mml-sec epg epg-config gnus-util mm-decode mm-bodies mm-encode
mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047
rfc2045 ietf-drums mm-util help-fns help-mode easymenu cl-loaddefs pcase
cl-lib mail-prsvr mail-utils time-date mule-util tooltip eldoc electric
uniquify ediff-hook vc-hooks lisp-float-type mwheel ns-win ucs-normalize
term/common-win tool-bar dnd fontset image regexp-opt fringe
tabulated-list newcomment elisp-mode lisp-mode prog-mode register page
menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core frame cl-generic cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese charscript case-table epa-hook jka-cmpr-hook help
simple abbrev minibuffer cl-preloaded nadvice loaddefs button faces
cus-face macroexp files text-properties overlay sha1 md5 base64 format
env code-pages mule custom widget hashtable-print-readable backquote
kqueue cocoa ns multi-tty make-network-process emacs)

Memory information:
((conses 16 197323 13014)
 (symbols 48 19546 0)
 (miscs 40 49 268)
 (strings 32 15127 5240)
 (string-bytes 1 436426)
 (vectors 16 33460)
 (vector-slots 8 644859 11240)
 (floats 8 160 241)
 (intervals 56 325 145)
 (buffers 976 14))

-- 
Aaron