[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Bug in x-create-frame primitive
From: |
Christopher Neufeld |
Subject: |
Bug in x-create-frame primitive |
Date: |
Sat, 16 Mar 2002 14:47:29 GMT |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.1 |
I have come across a bug which can prevent elisp programs from opening
new frames successfully. To reproduce it
run "emacs -q" from with an X session
then, execute the following commands:
M-: (setq text-mode-hook 'turn-on-auto-fill)
M-: (make-frame)
At this point, we drop into the backtrace buffer with the following
text:
Debugger entered--Lisp error: (wrong-type-argument listp turn-on-auto-fill)
member(turn-on-auto-fill turn-on-auto-fill)
x-create-frame(((visibility)))
x-create-frame-with-faces(nil)
make-frame()
eval((make-frame))
eval-expression((make-frame) nil)
call-interactively(eval-expression)
A workaround, when creating frames within elisp, is to create a
locally scoped variable, text-mode-hook, and assign nil to it. This
allows the script to execute. i.e.
(defun ... ()
(let (new-display text-mode-hook)
(setq text-mode-hook nil)
(setq new-display ( ... ))
(condition-case nil
(make-frame-on-display new-display)
(error nil))
The text-mode-hook, if previously assigned, will still work as
intended in the new frame, of course. It just has to be overridden
within the scope of the x-create-frame call itself.
--
Christopher Neufeld neufeld@caliban.physics.utoronto.ca
Home page: http://caliban.physics.utoronto.ca/neufeld/Intro.html
"Don't edit reality for the sake of simplicity"
- Bug in x-create-frame primitive,
Christopher Neufeld <=