Re: Strange draft problem

Greg Bognar <[email protected]> Wed, 24 Jul 2019 11:58:39 +0200
Newsgroups gmane.mail.wanderlust.general
Message-ID <87d0hzu52o.wl-greg.bognar__5041.22940344445$1563962404$gmane$org@startmail.com>
Here's the backtrace after running wl-draft-kill.

Thanks for looking into this!


Debugger entered--Lisp error: (error "Attempt to delete minibuffer or sole ordinary window")
  signal(error ("Attempt to delete minibuffer or sole ordinary window"))
  error("Attempt to delete minibuffer or sole ordinary window")
  delete-window()
  (if (wl-window-deletable-p) (delete-window))
  (if (and wl-draft-use-frame (> (length (visible-frame-list)) 1)) (delete-frame) (if (wl-window-deletable-p) (delete-window)) (if wl-stay-folder-window (progn (if (setq fld-buf (get-buffer wl-folder-buffer-name)) (if (setq fld-win (get-buffer-window fld-buf)) (select-window fld-win) (if wl-draft-resume-folder-window (switch-to-buffer fld-buf)))))) (if (buffer-live-p sum-buf) (if (setq sum-win (get-buffer-window sum-buf t)) (select-window sum-win) (if (and wl-stay-folder-window (or wl-draft-resume-folder-window fld-win)) (wl-folder-select-buffer sum-buf) (switch-to-buffer sum-buf)))))
  (let ((sum-buf wl-draft-buffer-cur-summary-buffer) fld-buf sum-win fld-win) (if (and wl-draft-use-frame (> (length (visible-frame-list)) 1)) (delete-frame) (if (wl-window-deletable-p) (delete-window)) (if wl-stay-folder-window (progn (if (setq fld-buf (get-buffer wl-folder-buffer-name)) (if (setq fld-win (get-buffer-window fld-buf)) (select-window fld-win) (if wl-draft-resume-folder-window (switch-to-buffer fld-buf)))))) (if (buffer-live-p sum-buf) (if (setq sum-win (get-buffer-window sum-buf t)) (select-window sum-win) (if (and wl-stay-folder-window (or wl-draft-resume-folder-window fld-win)) (wl-folder-select-buffer sum-buf) (switch-to-buffer sum-buf))))))
  (progn (select-window (get-buffer-window editing-buffer)) (let ((sum-buf wl-draft-buffer-cur-summary-buffer) fld-buf sum-win fld-win) (if (and wl-draft-use-frame (> (length (visible-frame-list)) 1)) (delete-frame) (if (wl-window-deletable-p) (delete-window)) (if wl-stay-folder-window (progn (if (setq fld-buf (get-buffer wl-folder-buffer-name)) (if (setq fld-win (get-buffer-window fld-buf)) (select-window fld-win) (if wl-draft-resume-folder-window (switch-to-buffer fld-buf)))))) (if (buffer-live-p sum-buf) (if (setq sum-win (get-buffer-window sum-buf t)) (select-window sum-win) (if (and wl-stay-folder-window (or wl-draft-resume-folder-window fld-win)) (wl-folder-select-buffer sum-buf) (switch-to-buffer sum-buf)))))))
  (if (and editing-buffer (buffer-live-p editing-buffer) (get-buffer-window editing-buffer)) (progn (select-window (get-buffer-window editing-buffer)) (let ((sum-buf wl-draft-buffer-cur-summary-buffer) fld-buf sum-win fld-win) (if (and wl-draft-use-frame (> (length (visible-frame-list)) 1)) (delete-frame) (if (wl-window-deletable-p) (delete-window)) (if wl-stay-folder-window (progn (if (setq fld-buf (get-buffer wl-folder-buffer-name)) (if (setq fld-win (get-buffer-window fld-buf)) (select-window fld-win) (if wl-draft-resume-folder-window (switch-to-buffer fld-buf)))))) (if (buffer-live-p sum-buf) (if (setq sum-win (get-buffer-window sum-buf t)) (select-window sum-win) (if (and wl-stay-folder-window (or wl-draft-resume-folder-window fld-win)) (wl-folder-select-buffer sum-buf) (switch-to-buf
 fer sum-buf))))))))
  wl-draft-hide(#<buffer Drafts/2>)
  (let ((cur-buf (current-buffer))) (run-hooks 'wl-draft-kill-pre-hook) (wl-draft-hide cur-buf) (wl-draft-delete cur-buf))
  (progn (let ((cur-buf (current-buffer))) (run-hooks 'wl-draft-kill-pre-hook) (wl-draft-hide cur-buf) (wl-draft-delete cur-buf)))
  (if (and (or (eq major-mode 'wl-draft-mode) (eq major-mode 'mail-mode)) (or force-kill (yes-or-no-p "Kill Current Draft? "))) (progn (let ((cur-buf (current-buffer))) (run-hooks 'wl-draft-kill-pre-hook) (wl-draft-hide cur-buf) (wl-draft-delete cur-buf))))
  (save-excursion (if (and (or (eq major-mode 'wl-draft-mode) (eq major-mode 'mail-mode)) (or force-kill (yes-or-no-p "Kill Current Draft? "))) (progn (let ((cur-buf (current-buffer))) (run-hooks 'wl-draft-kill-pre-hook) (wl-draft-hide cur-buf) (wl-draft-delete cur-buf)))) (message ""))
  wl-draft-kill(nil)
  funcall-interactively(wl-draft-kill nil)
  call-interactively(wl-draft-kill nil nil)
  command-execute(wl-draft-kill)

-------------------------------------------------------------------------------
On Tue 23 Jul 2019 at 14:54 Kazuhiro Ito wrote: 
> Hi,
> 
> > When I'm in the draft buffer and it is the only window and I hit \C-c \C-c,
> > the message is sent but the buffer is not removed.
> ...
> > The same thing happens with wl-draft-kill, except the draft is not killed
> > after the error.
> 
> Not reproducible for me at least with wl-draft-kill function.
> 
> > I haven't been able to track down where delete-window is called in these
> > functions.
> 
> Please take a backtrace.
> 1. After you visit draft buffer, open wl-draft.el and M-x eval-buffer.
> 2. M-x toggle-debug-on-error.
> 3. Reproduce the error.
> 
> -- 
> Kazuhiro Ito
>