[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug in exit-recursive-edit in Emacs 21.1
From: |
Paul Kinnucan |
Subject: |
bug in exit-recursive-edit in Emacs 21.1 |
Date: |
Sat, 24 Nov 2001 02:18:47 -0500 (EST) |
This bug report will be sent to the Free Software Foundation,
not to your local site managers!
Please write in English, because the Emacs maintainers do not have
translators to read other languages for them.
Your bug report will be posted to the bug-gnu-emacs@gnu.org mailing list,
and to the gnu.emacs.bug news group.
In GNU Emacs 21.1.1 (i386-msvc-windows98.3000)
of 2001-10-23 on SPARKYBEAR
configured using `configure --with-msvc (12.00)'
Important settings:
value of $LC_ALL: nil
value of $LC_COLLATE: nil
value of $LC_CTYPE: nil
value of $LC_MESSAGES: nil
value of $LC_MONETARY: nil
value of $LC_NUMERIC: nil
value of $LC_TIME: nil
value of $LANG: enu
locale-coding-system: iso-latin-1
default-enable-multibyte-characters: t
Please describe exactly what actions triggered the bug
and the precise symptoms of the bug:
The JDE uses recursive-edit to simulate a modal dialog box based on widgets.
When the use wishes to choose an option, the JDE displays a buffer with
radio buttons and an Ok and Cancel button, e.g.,
Select class.
(*) java.lang.String
( ) org.apache.xpath.operations.String
[Ok] [Cancel]
and then invokes recursive edit. When the user selects the Ok or Cancel
button, the button callback deletes the modal dialog buffer and
exits recursive edit mode. Here is the button callback method:
(defmethod jde-dialog-ok ((this jde-option-dialog))
"Invoked when the user selects the OK button on the options
dialog. Sets the :selection field of THIS to the option chosen by the
user, kills the dialog buffer, and exits recursive-edit mode."
(kill-buffer (current-buffer))
(set-buffer (car (buffer-list)))
(pop-to-buffer (car (buffer-list)))
(delete-other-windows)
(oset this
selection
(widget-value (oref this radio-buttons)))
(exit-recursive-edit))
This worked fine in Emacs 20.7. In Emacs 21.1,
however, a wrong-type-argument error occurs in select-window which is
invoked by exit-recursive-edit (see backtrace below). The error occurs
only if the JDE executes (delete-other-windows) to get rid of the window
used to display the dialog buffer. If I delete this call, everything
works. However, the method is then unable to get rid of the extra
window.
- Paul
Debugger entered--Lisp error: (wrong-type-argument window-live-p #<window 66>)
select-window(#<window 66>)
exit-recursive-edit()
jde-option-dialog([object jde-option-dialog "Class Name Dialog" "JDE Dialog"
#<killed buffer> ("java.lang.String" "org.apache.xpath.operations.String")
(radio-button-choice :value "java.lang.String" :args (... ...) :choice (item
:args nil :value "java.lang.String") :buttons (... ...) :children (... ...)
:from #<marker (before-insertion) in no buffer> :to #<marker in no buffer>)
"Select class." "java.lang.String"])
apply(jde-option-dialog [object jde-option-dialog "Class Name Dialog" "JDE
Dialog" #<killed buffer> ("java.lang.String"
"org.apache.xpath.operations.String") (radio-button-choice :value
"java.lang.String" :args (... ...) :choice (item :args nil :value
"java.lang.String") :buttons (... ...) :children (... ...) :from #<marker
(before-insertion) in no buffer> :to #<marker in no buffer>) "Select class."
"java.lang.String"])
(setq rval (apply (car ...) newargs))
(let ((scoped-class ...) (eieio-generic-call-key ...)) (setq found t) (setq
rval (apply ... newargs)))
(if (car lambdas) (let (... ...) (setq found t) (setq rval ...)))
(while lambdas (if (car lambdas) (let ... ... ...)) (setq lambdas (cdr
lambdas) keys (cdr keys)))
(let ((rval nil) (found nil)) (while lambdas (if ... ...) (setq lambdas ...
keys ...)) (if (not found) (if ... ... ...)) rval)
(let ((newargs nil) (mclass nil) (lambdas nil) (tlambdas nil) (keys nil)
(eieio-generic-call-methodname method) (eieio-generic-call-arglst args)) (setq
newargs args) (if (object-p ...) (setq mclass ...)) (setq tlambdas (or ...
...)) (setq lambdas (cons tlambdas lambdas) keys (cons method-after keys))
(setq tlambdas (or ... ...)) (setq lambdas (cons tlambdas lambdas) keys (cons
method-primary keys)) (setq tlambdas (or ... ...)) (setq lambdas (cons tlambdas
lambdas) keys (cons method-before keys)) (let (... ...) (while lambdas ... ...)
(if ... ...) rval))
eieio-generic-call(jde-dialog-ok ([object jde-option-dialog "Class Name
Dialog" "JDE Dialog" #<killed buffer> ("java.lang.String"
"org.apache.xpath.operations.String") (radio-button-choice :value
"java.lang.String" :args ... :choice ... :buttons ... :children ... :from
#<marker (before-insertion) in no buffer> :to #<marker in no buffer>) "Select
class." "java.lang.String"]))
jde-dialog-ok([object jde-option-dialog "Class Name Dialog" "JDE Dialog"
#<killed buffer> ("java.lang.String" "org.apache.xpath.operations.String")
(radio-button-choice :value "java.lang.String" :args (... ...) :choice (item
:args nil :value "java.lang.String") :buttons (... ...) :children (... ...)
:from #<marker (before-insertion) in no buffer> :to #<marker in no buffer>)
"Select class." "java.lang.String"])
(lambda (button &rest ignore) (jde-dialog-ok (widget-get button
:dialog)))((push-button :args nil :value "Ok" :notify (lambda (button &rest
ignore) (jde-dialog-ok ...)) :button-overlay #<overlay in no buffer> :from
#<marker (before-insertion) in no buffer> :to #<marker in no buffer> :dialog
[object jde-option-dialog "Class Name Dialog" "JDE Dialog" #<killed buffer>
("java.lang.String" "org.apache.xpath.operations.String") (radio-button-choice
:value "java.lang.String" :args ... :choice ... :buttons ... :children ...
:from #<marker (before-insertion) in no buffer> :to #<marker in no buffer>)
"Select class." "java.lang.String"]) (push-button :args nil :value "Ok" :notify
(lambda (button &rest ignore) (jde-dialog-ok ...)) :button-overlay #<overlay in
no buffer> :from #<marker (before-insertion) in no buffer> :to #<marker in no
buffer> :dialog [object jde-option-dialog "Class Name Dialog" "JDE Dialog"
#<killed buffer> ("java.lang.String" "org.apache.xpath.operations.String") (!
radio-button-choice :value "java.lang.String" :args ... :choice ... :buttons
... :children ... :from #<marker (before-insertion) in no buffer> :to #<marker
in no buffer>) "Select class." "java.lang.String"]) (mouse-2 (#<window 66> 79
(18 . 88) -93901188)))
widget-apply((push-button :args nil :value "Ok" :notify (lambda (button &rest
ignore) (jde-dialog-ok ...)) :button-overlay #<overlay in no buffer> :from
#<marker (before-insertion) in no buffer> :to #<marker in no buffer> :dialog
[object jde-option-dialog "Class Name Dialog" "JDE Dialog" #<killed buffer>
("java.lang.String" "org.apache.xpath.operations.String") (radio-button-choice
:value "java.lang.String" :args ... :choice ... :buttons ... :children ...
:from #<marker (before-insertion) in no buffer> :to #<marker in no buffer>)
"Select class." "java.lang.String"]) :notify (push-button :args nil :value "Ok"
:notify (lambda (button &rest ignore) (jde-dialog-ok ...)) :button-overlay
#<overlay in no buffer> :from #<marker (before-insertion) in no buffer> :to
#<marker in no buffer> :dialog [object jde-option-dialog "Class Name Dialog"
"JDE Dialog" #<killed buffer> ("java.lang.String"
"org.apache.xpath.operations.String") (radio-button-choice :value
"java.lang.String" :args ..!
. :choice ... :buttons ... :children ... :from #<marker (before-insertion) in
no buffer> :to #<marker in no buffer>) "Select class." "java.lang.String"])
(mouse-2 (#<window 66> 79 (18 . 88) -93901188)))
widget-item-action((push-button :args nil :value "Ok" :notify (lambda (button
&rest ignore) (jde-dialog-ok ...)) :button-overlay #<overlay in no buffer>
:from #<marker (before-insertion) in no buffer> :to #<marker in no buffer>
:dialog [object jde-option-dialog "Class Name Dialog" "JDE Dialog" #<killed
buffer> ("java.lang.String" "org.apache.xpath.operations.String")
(radio-button-choice :value "java.lang.String" :args ... :choice ... :buttons
... :children ... :from #<marker (before-insertion) in no buffer> :to #<marker
in no buffer>) "Select class." "java.lang.String"]) (mouse-2 (#<window 66> 79
(18 . 88) -93901188)))
widget-apply((push-button :args nil :value "Ok" :notify (lambda (button &rest
ignore) (jde-dialog-ok ...)) :button-overlay #<overlay in no buffer> :from
#<marker (before-insertion) in no buffer> :to #<marker in no buffer> :dialog
[object jde-option-dialog "Class Name Dialog" "JDE Dialog" #<killed buffer>
("java.lang.String" "org.apache.xpath.operations.String") (radio-button-choice
:value "java.lang.String" :args ... :choice ... :buttons ... :children ...
:from #<marker (before-insertion) in no buffer> :to #<marker in no buffer>)
"Select class." "java.lang.String"]) :action (mouse-2 (#<window 66> 79 (18 .
88) -93901188)))
widget-apply-action((push-button :args nil :value "Ok" :notify (lambda
(button &rest ignore) (jde-dialog-ok ...)) :button-overlay #<overlay in no
buffer> :from #<marker (before-insertion) in no buffer> :to #<marker in no
buffer> :dialog [object jde-option-dialog "Class Name Dialog" "JDE Dialog"
#<killed buffer> ("java.lang.String" "org.apache.xpath.operations.String")
(radio-button-choice :value "java.lang.String" :args ... :choice ... :buttons
... :children ... :from #<marker (before-insertion) in no buffer> :to #<marker
in no buffer>) "Select class." "java.lang.String"]) (mouse-2 (#<window 66> 79
(18 . 88) -93901188)))
widget-button-click((down-mouse-2 (#<window 66> 79 (18 . 88) -93901313)))
* call-interactively(widget-button-click)
recursive-edit()
jde-option-dialog([object jde-option-dialog "Class Name Dialog" "JDE Dialog"
#<killed buffer> ("java.lang.String" "org.apache.xpath.operations.String")
(radio-button-choice :value "java.lang.String" :args (... ...) :choice (item
:args nil :value "java.lang.String") :buttons (... ...) :children (... ...)
:from #<marker (before-insertion) in no buffer> :to #<marker in no buffer>)
"Select class." "java.lang.String"])
apply(jde-option-dialog [object jde-option-dialog "Class Name Dialog" "JDE
Dialog" #<killed buffer> ("java.lang.String"
"org.apache.xpath.operations.String") (radio-button-choice :value
"java.lang.String" :args (... ...) :choice (item :args nil :value
"java.lang.String") :buttons (... ...) :children (... ...) :from #<marker
(before-insertion) in no buffer> :to #<marker in no buffer>) "Select class."
"java.lang.String"])
(setq rval (apply (car ...) newargs))
(let ((scoped-class ...) (eieio-generic-call-key ...)) (setq found t) (setq
rval (apply ... newargs)))
(if (car lambdas) (let (... ...) (setq found t) (setq rval ...)))
(while lambdas (if (car lambdas) (let ... ... ...)) (setq lambdas (cdr
lambdas) keys (cdr keys)))
(let ((rval nil) (found nil)) (while lambdas (if ... ...) (setq lambdas ...
keys ...)) (if (not found) (if ... ... ...)) rval)
(let ((newargs nil) (mclass nil) (lambdas nil) (tlambdas nil) (keys nil)
(eieio-generic-call-methodname method) (eieio-generic-call-arglst args)) (setq
newargs args) (if (object-p ...) (setq mclass ...)) (setq tlambdas (or ...
...)) (setq lambdas (cons tlambdas lambdas) keys (cons method-after keys))
(setq tlambdas (or ... ...)) (setq lambdas (cons tlambdas lambdas) keys (cons
method-primary keys)) (setq tlambdas (or ... ...)) (setq lambdas (cons tlambdas
lambdas) keys (cons method-before keys)) (let (... ...) (while lambdas ... ...)
(if ... ...) rval))
eieio-generic-call(jde-dialog-show ([object jde-option-dialog "Class Name
Dialog" "JDE Dialog" #<killed buffer> ("java.lang.String"
"org.apache.xpath.operations.String") (radio-button-choice :value
"java.lang.String" :args ... :choice ... :buttons ... :children ... :from
#<marker (before-insertion) in no buffer> :to #<marker in no buffer>) "Select
class." "java.lang.String"]))
jde-dialog-show([object jde-option-dialog "Class Name Dialog" "JDE Dialog"
#<killed buffer> ("java.lang.String" "org.apache.xpath.operations.String")
(radio-button-choice :value "java.lang.String" :args (... ...) :choice (item
:args nil :value "java.lang.String") :buttons (... ...) :children (... ...)
:from #<marker (before-insertion) in no buffer> :to #<marker in no buffer>)
"Select class." "java.lang.String"])
(let ((dialog ...)) (jde-dialog-show dialog) (oref dialog selection))
(if (> (length names) 1) (let (...) (jde-dialog-show dialog) (oref dialog
selection)) (car names))
(if names (if (> ... 1) (let ... ... ...) (car names)) (error "Cannot find
class %s on the current classpath." class))
(let ((names ...)) (if names (if ... ... ...) (error "Cannot find class %s on
the current classpath." class)))
(condition-case err (let (...) (if names ... ...)) (error (message "%s" ...)))
jde-parse-select-qualified-class-name("String")
(let* ((class ...) (fq-class-name ...) (doc-file ...)) (if doc-file
(jde-help-show-class-member-doc doc-file) (message "Error: cannot find
documentation for %s" class)))
jde-help-class()
* call-interactively(jde-help-class)
Recent input:
<mouse-movement> <mouse-1> <down-mouse-1> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<help-echo> <mouse-movement> <help-echo> <mouse-movement>
<help-echo> <mouse-movement> <help-echo> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <mouse-movement> <help-echo> <mouse-movement>
<help-echo> <mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <mouse-movement> <mouse-movement>
<mouse-movement> <drag-mouse-1> <menu-bar> <edit> <copy>
<down-mouse-1> <mouse-movement> <mouse-1> <menu-bar>
<help-menu> <report-emacs-bug>
Recent messages:
Fontifying Test.java... (regexps..................................)
Loading c:/applications/cygwin/home/jde-dev/jmath/prj.el (source)...done
exit-recursive-edit:
Entering debugger...
[2 times]
Back to top level.
exit-recursive-edit:
Entering debugger...
[2 times]
Loading emacsbug...done
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- bug in exit-recursive-edit in Emacs 21.1,
Paul Kinnucan <=