bug-gnu-emacs
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]