Emacs Lisp: nesting exceeds `max-lisp-eval-depth' in ibuffer
To get straight to the point: emacs' ibuffer mode crashes on my machine (Win32, GNU Emacs 24.0.50.1 (i386-mingw-nt6.1.7600) of 2011-01-31 on 3249CTO) when used with complex saved filters. Here is a minimal sample, that reproduces the error on a vanilla emacs installation (--no-init-file, built from http://alpha.gnu.org/gnu/emacs/windows/) 开发者_开发百科
(setq ibuffer-saved-filter-groups
'(("default"
("1" (mode . emacs-lisp-mode))
("2" (or (mode . gnus-group-mode)
(mode . gnus-summary-mode)
(mode . gnus-article-mode)
(mode . message-mode)))
("3" (or (mode . dired-mode)
(mode . shell-mode)
(mode . eshell-mode)))
("4" (or (name . "^\\*scratch\\*$")
(name . "^\\*Messages\\*$")))
("5" ((or (name . "^\\*gnus trace\\*$")
(name . "^\\*imap log\\*$")
(name . "^\\.newsrc-dribble$")))))))
(get-buffer-create ".newsrc-dribble")
(get-buffer-create "*Compile-Log*")
(get-buffer-create "*Completions*")
(get-buffer-create "*Ibuffer*")
(get-buffer-create "*Messages*")
(get-buffer-create "*gnus trace*")
(get-buffer-create "*imap log*")
(get-buffer-create "*scratch*")
(ibuffer)
(ibuffer-switch-to-saved-filter-groups "default")
I do not see why this fails or why I am required to increase max-lisp-eval-depth
.
Is there anything wrong with my code?
You have an extra level of parentheses in the final group:
;[...]
("5" ((or (name . "^\\*gnus trace\\*$")
(name . "^\\*imap log\\*$")
(name . "^\\.newsrc-dribble$")))))))
精彩评论