Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

Infinite recursion #13

Open
dabrahams opened this Issue · 3 comments

1 participant

@dabrahams

Can't prove this is a zenburn issue, but chances seem good that it's related:

  color-theme-spec-resolve-inheritance((:inherit))
  (let ((more-atts ...) att val) (while more-atts (setq att ... val ... more-atts ...) (cond ... ...)))
  (progn (setq atts (delq ... ...)) (let (... att val) (while more-atts ... ...)))
  (if face (progn (setq atts ...) (let ... ...)))
  (when face (setq atts (delq ... ...)) (let (... att val) (while more-atts ... ...)))
  (let ((face ...)) (when face (setq atts ...) (let ... ...)) atts)
  color-theme-spec-resolve-inheritance((:inherit))
  (let ((more-atts ...) att val) (while more-atts (setq att ... val ... more-atts ...) (cond ... ...)))
  (progn (setq atts (delq ... ...)) (let (... att val) (while more-atts ... ...)))
  (if face (progn (setq atts ...) (let ... ...)))
  (when face (setq atts (delq ... ...)) (let (... att val) (while more-atts ... ...)))
  (let ((face ...)) (when face (setq atts ...) (let ... ...)) atts)
  color-theme-spec-resolve-inheritance((:inherit))
  (color-theme-spec-maybe-invert (color-theme-spec-resolve-inheritance (color-theme-face-attr-construct face ...)))
  (color-theme-spec-canonical-font (color-theme-spec-maybe-invert (color-theme-spec-resolve-inheritance ...)))
  (let ((atts ...)) (if atts (\` ...) (\` ...)))
  color-theme-spec(custom-face-tag)
  mapcar(color-theme-spec (default Buffer-menu-buffer-face apt-utils-broken apt-utils-broken-face apt-utils-description apt-utils-description-face apt-utils-field-contents apt-utils-field-contents-face apt-utils-field-keyword apt-utils-field-keyword-face apt-utils-normal-package apt-utils-normal-package-face apt-utils-summary apt-utils-summary-face apt-utils-version apt-utils-version-face apt-utils-virtual-package apt-utils-virtual-package-face bold bold-italic bongo-unfilled-seek-bar border breakpoint-disabled breakpoint-disabled-bitmap breakpoint-disabled-bitmap-face breakpoint-enabled breakpoint-enabled-bitmap breakpoint-enabled-bitmap-face buffer-menu-buffer button c-nonbreakable-space-face calendar-today calendar-today-face change-log-acknowledgement change-log-conditionals change-log-date change-log-date-face change-log-email change-log-file change-log-function change-log-list change-log-name circe-highlight-nick-face circe-my-message-face circe-originator-face circe-prompt-face circe-server-face comint-highlight-input comint-highlight-prompt compilation-column-number ...))
  (let ((faces ...)) (mapcar (quote color-theme-spec) faces))
  color-theme-get-face-definitions()
  (cons (color-theme-get-vars) (color-theme-get-face-definitions))
  (cons (color-theme-get-params) (cons (color-theme-get-vars) (color-theme-get-face-definitions)))
  (cons (quote color-theme-snapshot) (cons (color-theme-get-params) (cons ... ...)))
  (backquote-list* (quote color-theme-snapshot) (color-theme-get-params) (color-theme-get-vars) (color-theme-get-face-definitions))
  (list (quote quote) (backquote-list* (quote color-theme-snapshot) (color-theme-get-params) (color-theme-get-vars) (color-theme-get-face-definitions)))
  (list (quote color-theme-install) (list (quote quote) (backquote-list* ... ... ... ...)))
  (list (quote lambda) nil "The color theme in use when the selection buffer was created.\n\\[color-theme-select] creates the color theme selection buffer.  At the\nsame time, this snapshot is created as a very simple undo mechanism.\nThe snapshot is created via `color-theme-snapshot'." (quote (interactive)) (list (quote color-theme-install) (list ... ...)))
  (\` (lambda nil "The color theme in use when the selection buffer was created.\n\\[color-theme-select] creates the color theme selection buffer.  At the\nsame time, this snapshot is created as a very simple undo mechanism.\nThe snapshot is created via `color-theme-snapshot'." (interactive) (color-theme-install ...)))
  (eval (\` (lambda nil "The color theme in use when the selection buffer was created.\n\\[color-theme-select] creates the color theme selection buffer.  At the\nsame time, this snapshot is created as a very simple undo mechanism.\nThe snapshot is created via `color-theme-snapshot'." ... ...)))
  color-theme-make-snapshot()
  (fset (quote color-theme-snapshot) (color-theme-make-snapshot))
  (progn (fset (quote color-theme-snapshot) (color-theme-make-snapshot)) (setq color-themes (delq ... color-themes) color-themes (delq ... color-themes) color-themes (append ... color-themes)))
  (if (or (not ...) (not ...)) (progn (fset ... ...) (setq color-themes ... color-themes ... color-themes ...)))
  (when (or (not ...) (not ...)) (fset (quote color-theme-snapshot) (color-theme-make-snapshot)) (setq color-themes (delq ... color-themes) color-themes (delq ... color-themes) color-themes (append ... color-themes)))
  color-theme-select(nil)
  call-interactively(color-theme-select t nil)
  execute-extended-command(nil)
  call-interactively(execute-extended-command nil nil)
@dabrahams

Yeah, this patch to color-theme.el helps catch the problem:

--- /tmp/color-theme.el 2011-09-28 14:39:53.000000000 -0400
+++ color-theme.el  2011-09-28 14:31:02.000000000 -0400
@@ -767,6 +767,7 @@
       ;; remove :inherit face from atts -- this assumes only one
       ;; :inherit attribute.
       (setq atts (delq ':inherit (delq face atts)))
+      (unless atts (debug))
       (let ((more-atts (color-theme-spec-resolve-inheritance
            (color-theme-face-attr-construct
             face (selected-frame))))

When I start commenting out bits of zenburn it gets a little further... the alias for Buffer-menu-buffer-face, the apt-utils stuff...

@dabrahams

Hmm, that patch seems a little too eager; it might not be valid.

@dabrahams

More on this: it's definitely a zenburn interaction. I put color-theme.el and zenburn.el in the appropriate places and then did

emacs -Q -l <thefilebelow>

(setq load-path (append (list "/Users/dave/.emacs.d/el-get/color-theme" "/Users/dave/.emacs.d/el-get/color-theme-zenburn") load-path))
(require 'color-theme)
(require 'zenburn)
(color-theme-zenburn) ;; comment out this line to see it work
(color-theme-select)
(color-theme-zenburn) ;; as long as color-theme-select is called first, we can do this here 
(color-theme-select)  ;; and call color-theme-select again
@dabrahams dabrahams referenced this issue from a commit in dabrahams/zenburn-el
@dabrahams dabrahams Avoid making redundant pseudo-obsolete-face aliases via inheritance
This was causing color-theme-select to recurse infinitely when trying
to resolve the inheritance.

Fixes #13
a942799
@dabrahams dabrahams referenced this issue from a commit in dabrahams/zenburn-el
@dabrahams dabrahams Avoid making redundant pseudo-obsolete-face aliases via inheritance
This was causing color-theme-select to recurse infinitely when trying
to resolve the inheritance.

Fixes #13
7c86531
@mdengler mdengler referenced this issue from a commit in mdengler/zenburn-el
@dabrahams dabrahams Avoid making redundant pseudo-obsolete-face aliases via inheritance
This was causing color-theme-select to recurse infinitely when trying
to resolve the inheritance.

Fixes #13
(cherry picked from commit a942799)
0e5555d
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.