Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

persp-mode emits "selecting deleted buffer" error sometimes when killing Emacs #1525

Closed
rgrinberg opened this issue Jun 30, 2019 · 34 comments
Closed
Labels
is:bug Something isn't working as intended module:ui/workspaces Pertains to Doom's :ui workspaces module status:resolved Issue was addressed internally

Comments

@rgrinberg
Copy link
Contributor

rgrinberg commented Jun 30, 2019

This is triggered every time I do SPC q r. I'm not sure if this a purpose or doom bug:

Debugger entered--Lisp error: (error "Selecting deleted buffer")
  #f(compiled-function (s-f) #<bytecode 0x4365bd69>)((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda (buffer &rest rest-args) (when ... ...)))) buffer) (let ((vars-list (with-current-buffer buffer (delete-if-not ... ... :key ...)))) (funcall (with-no-warnings (quote (closure ... ... ...))) buffer (quote def-indirect-buffer) vars-list)))))
  cl--position(nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) 0 nil nil)
  cl-position(nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) :if #f(compiled-function (sl) #<bytecode 0x4365bd5d>) :key #f(compiled-function (s-f) #<bytecode 0x4365bd69>))
  apply(cl-position nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) (:if #f(compiled-function (sl) #<bytecode 0x4365bd5d>) :key #f(compiled-function (s-f) #<bytecode 0x4365bd69>)))
  cl-find(nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) :if #f(compiled-function (sl) #<bytecode 0x4365bd5d>) :key #f(compiled-function (s-f) #<bytecode 0x4365bd69>))
  apply(cl-find nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) :if #f(compiled-function (sl) #<bytecode 0x4365bd5d>) (:key #f(compiled-function (s-f) #<bytecode 0x4365bd69>)))
  find-if(#f(compiled-function (sl) #<bytecode 0x4365bd5d>) ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) :key #f(compiled-function (s-f) #<bytecode 0x4365bd69>))
  #f(compiled-function (b) #<bytecode 0x4365c151>)(#<killed buffer>)
  mapcar(#f(compiled-function (b) #<bytecode 0x4365c151>) (#<buffer *Messages*> #<buffer *helpful variable: company-idle-delay*> #<buffer bootstrap.ml> #<buffer simple.el.gz> #<killed buffer> #<buffer packages.el> #<killed buffer> #<buffer config.el> #<buffer init.el> #<buffer dune-project> #<buffer configure.ml>))
  persp-buffers-to-savelist(#s(perspective :name "main" :buffers (#<buffer *Backtrace*> #<buffer *Messages*> #<buffer *helpful variable: company-idle-delay*> #<buffer bootstrap.ml> #<buffer simple.el.gz> #<killed buffer> #<buffer packages.el> #<killed buffer> #<buffer config.el> #<buffer init.el> #<buffer dune-project> #<buffer configure.ml>) :window-conf (((min-height . 4) (min-width . 10) (min-height-ignore . 3) (min-width-ignore . 3) (min-height-safe . 1) (min-width-safe . 2) (min-pixel-height . 76) (min-pixel-width . 80) (min-pixel-height-ignore . 52) (min-pixel-width-ignore . 24) (min-pixel-height-safe . 19) (min-pixel-width-safe . 16)) leaf (pixel-width . 1436) (pixel-height . 763) (total-width . 180) (total-height . 40) (normal-height . 1.0) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring (0 19 . [... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil ...]) :idx -1))) (buffer "config.el" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 174) (start . 1))) :parameters nil :weak nil :auto nil :hidden nil))
  persp-to-savelist(#s(perspective :name "main" :buffers (#<buffer *Backtrace*> #<buffer *Messages*> #<buffer *helpful variable: company-idle-delay*> #<buffer bootstrap.ml> #<buffer simple.el.gz> #<killed buffer> #<buffer packages.el> #<killed buffer> #<buffer config.el> #<buffer init.el> #<buffer dune-project> #<buffer configure.ml>) :window-conf (((min-height . 4) (min-width . 10) (min-height-ignore . 3) (min-width-ignore . 3) (min-height-safe . 1) (min-width-safe . 2) (min-pixel-height . 76) (min-pixel-width . 80) (min-pixel-height-ignore . 52) (min-pixel-width-ignore . 24) (min-pixel-height-safe . 19) (min-pixel-width-safe . 16)) leaf (pixel-width . 1436) (pixel-height . 763) (total-width . 180) (total-height . 40) (normal-height . 1.0) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring (0 19 . [... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil ...]) :idx -1))) (buffer "config.el" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 174) (start . 1))) :parameters nil :weak nil :auto nil :hidden nil))
  mapcar(persp-to-savelist (nil #s(perspective :name "main" :buffers (#<buffer *Backtrace*> #<buffer *Messages*> #<buffer *helpful variable: company-idle-delay*> #<buffer bootstrap.ml> #<buffer simple.el.gz> #<killed buffer> #<buffer packages.el> #<killed buffer> #<buffer config.el> #<buffer init.el> #<buffer dune-project> #<buffer configure.ml>) :window-conf (((min-height . 4) (min-width . 10) (min-height-ignore . 3) (min-width-ignore . 3) (min-height-safe . 1) (min-width-safe . 2) (min-pixel-height . 76) (min-pixel-width . 80) (min-pixel-height-ignore . 52) (min-pixel-width-ignore . 24) (min-pixel-height-safe . 19) (min-pixel-width-safe . 16)) leaf (pixel-width . 1436) (pixel-height . 763) (total-width . 180) (total-height . 40) (normal-height . 1.0) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring (0 19 . [... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil ...]) :idx -1))) (buffer "config.el" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 174) (start . 1))) :parameters nil :weak nil :auto nil :hidden nil)))
  persps-to-savelist(#<hash-table equal 2/10 0x43661a01>)
  persp-save-state-to-file("/Users/rgrinberg/.emacs.d/.local/etc/workspaces/autosave")
@rgrinberg rgrinberg changed the title purpose error when trying to restart Purpose error when trying to restart Jun 30, 2019
@hlissner hlissner added is:bug Something isn't working as intended status:unconfirmed Still under investigation. labels Jun 30, 2019
@siddharthshekar
Copy link
Contributor

I see this every so often too. It doesn't happen every time I try to restart so I'm unsure what triggers it or how to reproduce it.

@hlissner
Copy link
Member

hlissner commented Jul 2, 2019

I've narrowed it down to these lines. Please this to ~/.doom.d/config.el and see if it fixes the issue:

(after! persp-mode
  (persp-def-buffer-save/load
   :tag-symbol 'def-indirect-buffer
   :predicate #'buffer-base-buffer
   :save-function (lambda (buf tag vars)
                    (list tag (buffer-name buf) vars
                          (buffer-name (buffer-base-buffer buf))))
   :load-function (lambda (savelist &rest _rest)
                    (cl-destructuring-bind (buf-name _vars base-buf-name &rest _)
                        (cdr savelist)
                      (push (cons buf-name base-buf-name)
                            +workspaces--indirect-buffers-to-restore)
                      nil))))

@hlissner hlissner added module:ui/workspaces Pertains to Doom's :ui workspaces module and removed status:unconfirmed Still under investigation. labels Jul 2, 2019
@rgrinberg
Copy link
Contributor Author

Thanks. I will try this out the next time I get this issue. I only observe it sporadically so it will take time before I get the opportunity to test the fix.

@hlissner could you explain what you think the issue is in a few more words? Perhaps it will help me to reproduce.

@kot-behemoth
Copy link
Contributor

@hlissner I just tried that code snippet — eval'ed it from within a running session that was throwing the same error. After evaluating it, the error persisted.

However, the message seems to have disappeared after a restart. Will report if it persists.

@Emantor
Copy link

Emantor commented Jul 3, 2019

@kot-behemoth since this uses the after! macro, afair this is only executed when persp-mode is loaded. If you execute it in a running session, it won't be executed since persp-mode is loaded already.

@hlissner
Copy link
Member

hlissner commented Jul 7, 2019

@rgrinberg In a nutshell, Selecting deleted buffer errors occur when you try to switch to a killed buffer (with switch-to-buffer, display-buffer or with-current-buffer, for instance). Somewhere in this persp-def-buffer-save/load call in ui/workspace is doing this.

To produce a more informative backtrace, could you delete all *.elc files in ~/.emacs.d/.local/packages/elpa/persp-mode-*/, restart Emacs and try to produce a new backtrace?

This should de-obfuscate all the "compiled-function" entries in the backtrace.

@rgrinberg
Copy link
Contributor Author

@hlissner I'll try. Isn't this a problem in purpose however? It shouldn't be passing deleted buffers to these callbacks as far as I can tell.

@hlissner
Copy link
Member

hlissner commented Jul 7, 2019

I don't know what this has to do with purpose. Do you mean persp-mode? In any case it's hard to tell without a more detailed backtrace.

@rgrinberg
Copy link
Contributor Author

Indeed, I meant persp-mode. I'll try and get a detailed stacktrace ASAP

@siddharthshekar
Copy link
Contributor

siddharthshekar commented Jul 8, 2019

Still seeing this error even with that code snippet added to my config.el file. I tried getting a debug backtrace using debug-on-entry and stepping through the commands in doom/restart-and-restore but emacs crashed after a particular command. I'll try to note down what command that was the next time if I can reproduce it.

Update: It fails on this command * ucs-normalize-HFS-NFD-region(1 55)

@hlissner
Copy link
Member

hlissner commented Jul 8, 2019

@siddharthshekar It is likely hitting byte-compiled functions. Try deleting all *.elc files in ~/.emacs.d/.local/packages/elpa/persp-mode-*/, then restart Emacs and produce a new backtrace, if possible.

@siddharthshekar
Copy link
Contributor

I deleted all the .elc files in my .emacs.d just to be sure and saw the same persp-mode error again with debug-on-entry crashing Emacs at the same point again.

@hlissner hlissner changed the title Purpose error when trying to restart persp-mode emits "selecting deleted buffer" error sometimes when killing Emacs Jul 10, 2019
@CodyWilson
Copy link
Contributor

Okay. I've been following this issue for a while and I finally got a debug with Henrik's fix and the .elc files deleted. It just happens seemingly randomly so it's pretty weird and takes a while to trigger again.

Debug Info
Debugger entered--Lisp error: (error "Selecting deleted buffer")
  set-buffer(#<killed buffer>)
  (save-current-buffer (set-buffer b) (funcall s-f b))
  (lambda (s-f) (save-current-buffer (set-buffer b) (funcall s-f b)))((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda (buffer &rest rest-args) (when ... ...)))) buffer) (let ((vars-list (with-current-buffer buffer (delete-if-not ... ... :key ...)))) (funcall (with-no-warnings (quote (closure ... ... ...))) buffer (quote def-indirect-buffer) vars-list)))))
  cl--position(nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) 0 nil nil)
  cl-position(nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) :if (lambda (sl) (if sl (progn (setq find-ret sl)))) :key (lambda (s-f) (save-current-buffer (set-buffer b) (funcall s-f b))))
  apply(cl-position nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) (:if (lambda (sl) (if sl (progn (setq find-ret sl)))) :key (lambda (s-f) (save-current-buffer (set-buffer b) (funcall s-f b)))))
  cl-find(nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) :if (lambda (sl) (if sl (progn (setq find-ret sl)))) :key (lambda (s-f) (save-current-buffer (set-buffer b) (funcall s-f b))))
  apply(cl-find nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) :if (lambda (sl) (if sl (progn (setq find-ret sl)))) (:key (lambda (s-f) (save-current-buffer (set-buffer b) (funcall s-f b)))))
  find-if((lambda (sl) (if sl (progn (setq find-ret sl)))) ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) :key (lambda (s-f) (save-current-buffer (set-buffer b) (funcall s-f b))))
  (lambda (b) (setq find-ret nil) (find-if (function (lambda (sl) (if sl (progn (setq find-ret sl))))) persp-save-buffer-functions :key (function (lambda (s-f) (save-current-buffer (set-buffer b) (funcall s-f b))))) find-ret)(#<killed buffer>)
  mapcar((lambda (b) (setq find-ret nil) (find-if (function (lambda (sl) (if sl (progn (setq find-ret sl))))) persp-save-buffer-functions :key (function (lambda (s-f) (save-current-buffer (set-buffer b) (funcall s-f b))))) find-ret) (#<buffer *compilation*> #<killed buffer> #<buffer index.phtml<3>> #<killed buffer> #<killed buffer> #<buffer Account.php> #<buffer UnsubscribeController.php> #<buffer *doom*> #<buffer LoanData.php> #<buffer index.phtml<2>> #<buffer PaymentData.php> #<buffer Loan.php> #<buffer signloan.phtml> #<buffer AccountController.php> #<buffer viewagreement.phtml> #<buffer Security.php> #<buffer index.phtml> #<buffer dependencies.php>))
  (let (find-ret) (mapcar (function (lambda (b) (setq find-ret nil) (find-if (function (lambda (sl) (if sl ...))) persp-save-buffer-functions :key (function (lambda (s-f) (save-current-buffer ... ...)))) find-ret)) (if persp (progn (or (and (memq (type-of persp) cl-struct-perspective-tags) t) (signal (quote wrong-type-argument) (list (quote perspective) persp))) (aref persp 2)) (delete-if-not (function persp-buffer-free-p) (funcall persp-buffer-list-function)))))
  (delete-if (function symbolp) (let (find-ret) (mapcar (function (lambda (b) (setq find-ret nil) (find-if (function (lambda ... ...)) persp-save-buffer-functions :key (function (lambda ... ...))) find-ret)) (if persp (progn (or (and (memq ... cl-struct-perspective-tags) t) (signal (quote wrong-type-argument) (list ... persp))) (aref persp 2)) (delete-if-not (function persp-buffer-free-p) (funcall persp-buffer-list-function))))))
  persp-buffers-to-savelist(#s(perspective :name "main" :buffers (#<buffer *compilation*> #<killed buffer> #<buffer index.phtml<3>> #<killed buffer> #<killed buffer> #<buffer Account.php> #<buffer UnsubscribeController.php> #<buffer *doom*> #<buffer LoanData.php> #<buffer index.phtml<2>> #<buffer PaymentData.php> #<buffer Loan.php> #<buffer signloan.phtml> #<buffer AccountController.php> #<buffer viewagreement.phtml> #<buffer Security.php> #<buffer index.phtml> #<buffer dependencies.php>) :window-conf (((min-height . 8) (min-width . 20) (min-height-ignore . 6) (min-width-ignore . 6) (min-height-safe . 2) (min-width-safe . 4) (min-pixel-height . 184) (min-pixel-width . 200) (min-pixel-height-ignore . 126) (min-pixel-width-ignore . 57) (min-pixel-height-safe . 46) (min-pixel-width-safe . 40)) hc (pixel-width . 2556) (pixel-height . 1368) (total-width . 256) (total-height . 59) (normal-height . 1.0) (normal-width . 1.0) (combination-limit) (vc (pixel-width . 1278) (pixel-height . 1368) (total-width . 128) (total-height . 59) (normal-height . 1.0) (normal-width . 0.5) (combination-limit) (leaf (pixel-width . 1278) (pixel-height . 667) (total-width . 128) (total-height . 29) (normal-height . 0.48757309941520466) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "UnsubscribeController.php" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 1043) (start . 128))) (leaf (last . t) (pixel-width . 1278) (pixel-height . 701) (total-width . 128) (total-height . 30) (normal-height . 0.5124269005847953) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "Loan.php" (selected) (hscroll . 29) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 3874) (start . 3464)))) (leaf (last . t) (pixel-width . 1278) (pixel-height . 1368) (total-width . 128) (total-height . 59) (normal-height . 1.0) (normal-width . 0.5) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring (0 19 . [... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil ...]) :idx -1))) (buffer "index.phtml<3>" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 112) (start . 1)))) :parameters ((last-project-root . "/Users/codywilson/Development/cmx/")) :weak nil :auto nil :hidden nil))
  (list (quote def-persp) (and persp (progn (or (and (memq (type-of persp) cl-struct-perspective-tags) t) (signal (quote wrong-type-argument) (list (quote perspective) persp))) (aref persp 1))) (persp-buffers-to-savelist persp) (persp-window-conf-to-savelist persp) (persp-parameters-to-savelist persp) (safe-persp-weak persp) (safe-persp-auto persp) (safe-persp-hidden persp))
  persp-to-savelist(#s(perspective :name "main" :buffers (#<buffer *compilation*> #<killed buffer> #<buffer index.phtml<3>> #<killed buffer> #<killed buffer> #<buffer Account.php> #<buffer UnsubscribeController.php> #<buffer *doom*> #<buffer LoanData.php> #<buffer index.phtml<2>> #<buffer PaymentData.php> #<buffer Loan.php> #<buffer signloan.phtml> #<buffer AccountController.php> #<buffer viewagreement.phtml> #<buffer Security.php> #<buffer index.phtml> #<buffer dependencies.php>) :window-conf (((min-height . 8) (min-width . 20) (min-height-ignore . 6) (min-width-ignore . 6) (min-height-safe . 2) (min-width-safe . 4) (min-pixel-height . 184) (min-pixel-width . 200) (min-pixel-height-ignore . 126) (min-pixel-width-ignore . 57) (min-pixel-height-safe . 46) (min-pixel-width-safe . 40)) hc (pixel-width . 2556) (pixel-height . 1368) (total-width . 256) (total-height . 59) (normal-height . 1.0) (normal-width . 1.0) (combination-limit) (vc (pixel-width . 1278) (pixel-height . 1368) (total-width . 128) (total-height . 59) (normal-height . 1.0) (normal-width . 0.5) (combination-limit) (leaf (pixel-width . 1278) (pixel-height . 667) (total-width . 128) (total-height . 29) (normal-height . 0.48757309941520466) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "UnsubscribeController.php" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 1043) (start . 128))) (leaf (last . t) (pixel-width . 1278) (pixel-height . 701) (total-width . 128) (total-height . 30) (normal-height . 0.5124269005847953) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "Loan.php" (selected) (hscroll . 29) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 3874) (start . 3464)))) (leaf (last . t) (pixel-width . 1278) (pixel-height . 1368) (total-width . 128) (total-height . 59) (normal-height . 1.0) (normal-width . 0.5) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring (0 19 . [... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil ...]) :idx -1))) (buffer "index.phtml<3>" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 112) (start . 1)))) :parameters ((last-project-root . "/Users/codywilson/Development/cmx/")) :weak nil :auto nil :hidden nil))
  mapcar(persp-to-savelist (nil #s(perspective :name "main" :buffers (#<buffer *compilation*> #<killed buffer> #<buffer index.phtml<3>> #<killed buffer> #<killed buffer> #<buffer Account.php> #<buffer UnsubscribeController.php> #<buffer *doom*> #<buffer LoanData.php> #<buffer index.phtml<2>> #<buffer PaymentData.php> #<buffer Loan.php> #<buffer signloan.phtml> #<buffer AccountController.php> #<buffer viewagreement.phtml> #<buffer Security.php> #<buffer index.phtml> #<buffer dependencies.php>) :window-conf (((min-height . 8) (min-width . 20) (min-height-ignore . 6) (min-width-ignore . 6) (min-height-safe . 2) (min-width-safe . 4) (min-pixel-height . 184) (min-pixel-width . 200) (min-pixel-height-ignore . 126) (min-pixel-width-ignore . 57) (min-pixel-height-safe . 46) (min-pixel-width-safe . 40)) hc (pixel-width . 2556) (pixel-height . 1368) (total-width . 256) (total-height . 59) (normal-height . 1.0) (normal-width . 1.0) (combination-limit) (vc (pixel-width . 1278) (pixel-height . 1368) (total-width . 128) (total-height . 59) (normal-height . 1.0) (normal-width . 0.5) (combination-limit) (leaf (pixel-width . 1278) (pixel-height . 667) (total-width . 128) (total-height . 29) (normal-height . 0.48757309941520466) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "UnsubscribeController.php" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 1043) (start . 128))) (leaf (last . t) (pixel-width . 1278) (pixel-height . 701) (total-width . 128) (total-height . 30) (normal-height . 0.5124269005847953) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "Loan.php" (selected) (hscroll . 29) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 3874) (start . 3464)))) (leaf (last . t) (pixel-width . 1278) (pixel-height . 1368) (total-width . 128) (total-height . 59) (normal-height . 1.0) (normal-width . 0.5) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "index.phtml<3>" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 112) (start . 1)))) :parameters ((last-project-root . "/Users/codywilson/Development/cmx/")) :weak nil :auto nil :hidden nil) #s(perspective :name "#2" :buffers (#<buffer *Backtrace*> #<buffer packages.el> #<buffer config.el> #<buffer init.el>) :window-conf (((min-height . 4) (min-width . 10) (min-height-ignore . 3) (min-width-ignore . 3) (min-height-safe . 1) (min-width-safe . 2) (min-pixel-height . 92) (min-pixel-width . 100) (min-pixel-height-ignore . 63) (min-pixel-width-ignore . 28) (min-pixel-height-safe . 23) (min-pixel-width-safe . 20)) leaf (pixel-width . 2556) (pixel-height . 1368) (total-width . 256) (total-height . 59) (normal-height . 1.0) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring (0 10 . [... ... ... ... ... ... ... ... ... ... nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil ...]) :idx -1))) (buffer "config.el" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 11648) (start . 10614))) :parameters ((last-project-root . "/Users/codywilson/Development/dot-files/")) :weak nil :auto nil :hidden nil) #s(perspective :name "#3" :buffers (#<buffer index.php> #<buffer unsubscribe.php> #<buffer CHANGELOG.md>) :window-conf (((min-height . 4) (min-width . 10) (min-height-ignore . 3) (min-width-ignore . 3) (min-height-safe . 1) (min-width-safe . 2) (min-pixel-height . 92) (min-pixel-width . 100) (min-pixel-height-ignore . 63) (min-pixel-width-ignore . 28) (min-pixel-height-safe . 23) (min-pixel-width-safe . 20)) leaf (pixel-width . 2556) (pixel-height . 1368) (total-width . 256) (total-height . 59) (normal-height . 1.0) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring (0 10 . [... ... ... ... ... ... ... ... ... ... nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil ...]) :idx -1))) (buffer "index.php" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 1178) (start . 1))) :parameters ((last-project-root . "/Users/codywilson/Development/stc/")) :weak nil :auto nil :hidden nil) #s(perspective :name "#4" :buffers (#<buffer CHANGELOG.md<2>> #<buffer permission-containers.js> #<buffer role-group-menu.phtml>) :window-conf (((min-height . 4) (min-width . 10) (min-height-ignore . 3) (min-width-ignore . 3) (min-height-safe . 1) (min-width-safe . 2) (min-pixel-height . 92) (min-pixel-width . 100) (min-pixel-height-ignore . 63) (min-pixel-width-ignore . 28) (min-pixel-height-safe . 23) (min-pixel-width-safe . 20)) leaf (pixel-width . 2556) (pixel-height . 1368) (total-width . 255) (total-height . 59) (normal-height . 1.0) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring (0 8 . [... ... ... ... ... ... ... ... nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil ...]) :idx -1))) (buffer "role-group-menu.phtml" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 1533) (start . 850))) :parameters ((last-project-root . "/Users/codywilson/Development/ols/")) :weak nil :auto nil :hidden nil)))
  persps-to-savelist(#<hash-table equal 5/10 0x40dc6f41>)
  (prin1-to-string (persps-to-savelist phash))
  (let (print-length print-level) (prin1-to-string (persps-to-savelist phash)))
  (insert (let (print-length print-level) (prin1-to-string (persps-to-savelist phash))))
  (progn (buffer-disable-undo) (erase-buffer) (goto-char (point-min)) (insert ";; -*- mode: emacs-lisp; eval: (progn (pp-buffer) (indent-buffer)) -*-") (newline) (insert (let (print-length print-level) (prin1-to-string (persps-to-savelist phash)))) (persp-save-with-backups p-save-file))
  (unwind-protect (progn (buffer-disable-undo) (erase-buffer) (goto-char (point-min)) (insert ";; -*- mode: emacs-lisp; eval: (progn (pp-buffer) (indent-buffer)) -*-") (newline) (insert (let (print-length print-level) (prin1-to-string (persps-to-savelist phash)))) (persp-save-with-backups p-save-file)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))
  (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (buffer-disable-undo) (erase-buffer) (goto-char (point-min)) (insert ";; -*- mode: emacs-lisp; eval: (progn (pp-buffer) (indent-buffer)) -*-") (newline) (insert (let (print-length print-level) (prin1-to-string (persps-to-savelist phash)))) (persp-save-with-backups p-save-file)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))
  (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (buffer-disable-undo) (erase-buffer) (goto-char (point-min)) (insert ";; -*- mode: emacs-lisp; eval: (progn (pp-buffer) (indent-buffer)) -*-") (newline) (insert (let (print-length print-level) (prin1-to-string (persps-to-savelist phash)))) (persp-save-with-backups p-save-file)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))))
  (if (and respect-persp-file-parameter (member-if (apply-partially (function persp-parameter) (quote persp-file)) (persp-persps phash nil))) (let (persp-auto-save-persps-to-their-file persp-before-save-state-to-file-functions) (mapc (function (lambda (gr) (let* ((pl gr) (pfname ...)) (let (...) (if pfname ... ...))))) (persp-group-by (apply-partially (function persp-parameter) (quote persp-file)) (persp-persps phash nil t) t))) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (buffer-disable-undo) (erase-buffer) (goto-char (point-min)) (insert ";; -*- mode: emacs-lisp; eval: (progn (pp-buffer) (indent-buffer)) -*-") (newline) (insert (let (print-length print-level) (prin1-to-string ...))) (persp-save-with-backups p-save-file)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))))
  (if (not (and (file-exists-p p-save-dir) (file-directory-p p-save-dir))) (progn (message "[persp-mode] Error: Can't save perspectives -- `persp-save-dir' does not exists or not a directory %S." p-save-dir) nil) (mapc (function persp-save-state) (persp-persps phash)) (run-hook-with-args (quote persp-before-save-state-to-file-functions) fname phash respect-persp-file-parameter) (if (and respect-persp-file-parameter (member-if (apply-partially (function persp-parameter) (quote persp-file)) (persp-persps phash nil))) (let (persp-auto-save-persps-to-their-file persp-before-save-state-to-file-functions) (mapc (function (lambda (gr) (let* (... ...) (let ... ...)))) (persp-group-by (apply-partially (function persp-parameter) (quote persp-file)) (persp-persps phash nil t) t))) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (buffer-disable-undo) (erase-buffer) (goto-char (point-min)) (insert ";; -*- mode: emacs-lisp; eval: (progn (pp-buffer) (indent-buffer)) -*-") (newline) (insert (let ... ...)) (persp-save-with-backups p-save-file)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))))))
  (let* ((p-save-dir (or (file-name-directory fname) (expand-file-name persp-save-dir))) (p-save-file (concat p-save-dir (file-name-nondirectory fname)))) (if (and (file-exists-p p-save-dir) (file-directory-p p-save-dir)) nil (message "[persp-mode] Info: Trying to create the `persp-conf-dir'.") (make-directory p-save-dir t)) (if (not (and (file-exists-p p-save-dir) (file-directory-p p-save-dir))) (progn (message "[persp-mode] Error: Can't save perspectives -- `persp-save-dir' does not exists or not a directory %S." p-save-dir) nil) (mapc (function persp-save-state) (persp-persps phash)) (run-hook-with-args (quote persp-before-save-state-to-file-functions) fname phash respect-persp-file-parameter) (if (and respect-persp-file-parameter (member-if (apply-partially (function persp-parameter) (quote persp-file)) (persp-persps phash nil))) (let (persp-auto-save-persps-to-their-file persp-before-save-state-to-file-functions) (mapc (function (lambda (gr) (let* ... ...))) (persp-group-by (apply-partially (function persp-parameter) (quote persp-file)) (persp-persps phash nil t) t))) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (buffer-disable-undo) (erase-buffer) (goto-char ...) (insert ";; -*- mode: emacs-lisp; eval: (progn (pp-buffer) (indent-buffer)) -*-") (newline) (insert ...) (persp-save-with-backups p-save-file)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))))))
  (progn (if (< (string-width (file-name-nondirectory fname)) 1) (progn (message "[persp-mode] Error: You must provide nonempty filename to save perspectives.") (throw (quote --cl-block-persp-save-state-to-file--) nil))) (let* ((p-save-dir (or (file-name-directory fname) (expand-file-name persp-save-dir))) (p-save-file (concat p-save-dir (file-name-nondirectory fname)))) (if (and (file-exists-p p-save-dir) (file-directory-p p-save-dir)) nil (message "[persp-mode] Info: Trying to create the `persp-conf-dir'.") (make-directory p-save-dir t)) (if (not (and (file-exists-p p-save-dir) (file-directory-p p-save-dir))) (progn (message "[persp-mode] Error: Can't save perspectives -- `persp-save-dir' does not exists or not a directory %S." p-save-dir) nil) (mapc (function persp-save-state) (persp-persps phash)) (run-hook-with-args (quote persp-before-save-state-to-file-functions) fname phash respect-persp-file-parameter) (if (and respect-persp-file-parameter (member-if (apply-partially (function persp-parameter) (quote persp-file)) (persp-persps phash nil))) (let (persp-auto-save-persps-to-their-file persp-before-save-state-to-file-functions) (mapc (function (lambda ... ...)) (persp-group-by (apply-partially ... ...) (persp-persps phash nil t) t))) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn ... ... ... ... ... ... ...) (and ... ...))))))))
  (if (and (stringp fname) phash) (progn (if (< (string-width (file-name-nondirectory fname)) 1) (progn (message "[persp-mode] Error: You must provide nonempty filename to save perspectives.") (throw (quote --cl-block-persp-save-state-to-file--) nil))) (let* ((p-save-dir (or (file-name-directory fname) (expand-file-name persp-save-dir))) (p-save-file (concat p-save-dir (file-name-nondirectory fname)))) (if (and (file-exists-p p-save-dir) (file-directory-p p-save-dir)) nil (message "[persp-mode] Info: Trying to create the `persp-conf-dir'.") (make-directory p-save-dir t)) (if (not (and (file-exists-p p-save-dir) (file-directory-p p-save-dir))) (progn (message "[persp-mode] Error: Can't save perspectives -- `persp-save-dir' does not exists or not a directory %S." p-save-dir) nil) (mapc (function persp-save-state) (persp-persps phash)) (run-hook-with-args (quote persp-before-save-state-to-file-functions) fname phash respect-persp-file-parameter) (if (and respect-persp-file-parameter (member-if (apply-partially ... ...) (persp-persps phash nil))) (let (persp-auto-save-persps-to-their-file persp-before-save-state-to-file-functions) (mapc (function ...) (persp-group-by ... ... t))) (let ((temp-buffer ...)) (save-current-buffer (set-buffer temp-buffer) (unwind-protect ... ...))))))))
  (catch (quote --cl-block-persp-save-state-to-file--) (if (and (stringp fname) phash) (progn (if (< (string-width (file-name-nondirectory fname)) 1) (progn (message "[persp-mode] Error: You must provide nonempty filename to save perspectives.") (throw (quote --cl-block-persp-save-state-to-file--) nil))) (let* ((p-save-dir (or (file-name-directory fname) (expand-file-name persp-save-dir))) (p-save-file (concat p-save-dir (file-name-nondirectory fname)))) (if (and (file-exists-p p-save-dir) (file-directory-p p-save-dir)) nil (message "[persp-mode] Info: Trying to create the `persp-conf-dir'.") (make-directory p-save-dir t)) (if (not (and (file-exists-p p-save-dir) (file-directory-p p-save-dir))) (progn (message "[persp-mode] Error: Can't save perspectives -- `persp-save-dir' does not exists or not a directory %S." p-save-dir) nil) (mapc (function persp-save-state) (persp-persps phash)) (run-hook-with-args (quote persp-before-save-state-to-file-functions) fname phash respect-persp-file-parameter) (if (and respect-persp-file-parameter (member-if ... ...)) (let (persp-auto-save-persps-to-their-file persp-before-save-state-to-file-functions) (mapc ... ...)) (let (...) (save-current-buffer ... ...))))))))
  (progn (if --cl-rest-- (signal (quote wrong-number-of-arguments) (list (quote persp-save-state-to-file) (+ 4 (length --cl-rest--))))) (catch (quote --cl-block-persp-save-state-to-file--) (if (and (stringp fname) phash) (progn (if (< (string-width (file-name-nondirectory fname)) 1) (progn (message "[persp-mode] Error: You must provide nonempty filename to save perspectives.") (throw (quote --cl-block-persp-save-state-to-file--) nil))) (let* ((p-save-dir (or ... ...)) (p-save-file (concat p-save-dir ...))) (if (and (file-exists-p p-save-dir) (file-directory-p p-save-dir)) nil (message "[persp-mode] Info: Trying to create the `persp-conf-dir'.") (make-directory p-save-dir t)) (if (not (and ... ...)) (progn (message "[persp-mode] Error: Can't save perspectives -- `persp-save-dir' does not exists or not a directory %S." p-save-dir) nil) (mapc (function persp-save-state) (persp-persps phash)) (run-hook-with-args (quote persp-before-save-state-to-file-functions) fname phash respect-persp-file-parameter) (if (and respect-persp-file-parameter ...) (let ... ...) (let ... ...))))))))
  (let* ((fname (if --cl-rest-- (car-safe (prog1 --cl-rest-- (setq --cl-rest-- (cdr --cl-rest--)))) persp-auto-save-fname)) (phash (if --cl-rest-- (car-safe (prog1 --cl-rest-- (setq --cl-rest-- (cdr --cl-rest--)))) *persp-hash*)) (respect-persp-file-parameter (if --cl-rest-- (car-safe (prog1 --cl-rest-- (setq --cl-rest-- (cdr --cl-rest--)))) persp-auto-save-persps-to-their-file)) (keep-others-in-non-parametric-file (if --cl-rest-- (car-safe (prog1 --cl-rest-- (setq --cl-rest-- (cdr --cl-rest--)))) (quote no)))) (progn (if --cl-rest-- (signal (quote wrong-number-of-arguments) (list (quote persp-save-state-to-file) (+ 4 (length --cl-rest--))))) (catch (quote --cl-block-persp-save-state-to-file--) (if (and (stringp fname) phash) (progn (if (< (string-width ...) 1) (progn (message "[persp-mode] Error: You must provide nonempty filename to save perspectives.") (throw ... nil))) (let* ((p-save-dir ...) (p-save-file ...)) (if (and ... ...) nil (message "[persp-mode] Info: Trying to create the `persp-conf-dir'.") (make-directory p-save-dir t)) (if (not ...) (progn ... nil) (mapc ... ...) (run-hook-with-args ... fname phash respect-persp-file-parameter) (if ... ... ...))))))))
  persp-save-state-to-file("/Users/codywilson/.emacs.d/.local/etc/workspaces/autosave")
  (cond ((require (quote persp-mode) nil t) (if persp-mode nil (persp-mode 1)) (setq persp-auto-save-opt 0) (persp-save-state-to-file file)) ((and (require (quote frameset) nil t) (require (quote restart-emacs) nil t)) (let ((frameset-filter-alist (append (quote (...)) frameset-filter-alist)) (desktop-base-file-name (file-name-nondirectory file)) (desktop-dirname (file-name-directory file)) (desktop-restore-eager t) desktop-file-modtime) (make-directory desktop-dirname t) (let ((desktop-file-modtime (nth 5 (file-attributes ...)))) (desktop-save desktop-dirname t)))) ((error "No session backend to save session with")))
  doom-save-session()
  doom/quicksave-session()
  funcall-interactively(doom/quicksave-session)
  call-interactively(doom/quicksave-session nil nil)
  command-execute(doom/quicksave-session)

@hlissner
Copy link
Member

hlissner commented Aug 16, 2019

I've pushed a potential fix for this issue in e32fd0c. Please update and let me know if it addresses the error.

EDIT: fixed the fix in 0cf669a (fixing intensifies).

hlissner added a commit that referenced this issue Aug 16, 2019
Original fix complained about void function setf persp-buffers.
@CodyWilson
Copy link
Contributor

CodyWilson commented Aug 16, 2019

I upgraded and ran this all day at work. Ran into it again towards the end of the day.

Edit2: I hope it's not a problem that I'm doing SPC q s or doom/quicksave-session to get these backtraces. If it is, let me know.

Also I removed the old fix you posted here. Don't know if I should have left that in or not.

Debug Info
Debugger entered--Lisp error: (error "Selecting deleted buffer")
  set-buffer(#<killed buffer>)
  (save-current-buffer (set-buffer b) (funcall s-f b))
  (lambda (s-f) (save-current-buffer (set-buffer b) (funcall s-f b)))((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda (buffer &rest rest-args) (when ... ...)))) buffer) (let ((vars-list (with-current-buffer buffer (delete-if-not ... ... :key ...)))) (funcall (with-no-warnings (quote (closure ... ... ...))) buffer (quote def-indirect-buffer) vars-list)))))
  cl--position(nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) 0 nil nil)
  cl-position(nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) :if (lambda (sl) (if sl (progn (setq find-ret sl)))) :key (lambda (s-f) (save-current-buffer (set-buffer b) (funcall s-f b))))
  apply(cl-position nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) (:if (lambda (sl) (if sl (progn (setq find-ret sl)))) :key (lambda (s-f) (save-current-buffer (set-buffer b) (funcall s-f b)))))
  cl-find(nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) :if (lambda (sl) (if sl (progn (setq find-ret sl)))) :key (lambda (s-f) (save-current-buffer (set-buffer b) (funcall s-f b))))
  apply(cl-find nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) :if (lambda (sl) (if sl (progn (setq find-ret sl)))) (:key (lambda (s-f) (save-current-buffer (set-buffer b) (funcall s-f b)))))
  find-if((lambda (sl) (if sl (progn (setq find-ret sl)))) ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) :key (lambda (s-f) (save-current-buffer (set-buffer b) (funcall s-f b))))
  (lambda (b) (setq find-ret nil) (find-if (function (lambda (sl) (if sl (progn (setq find-ret sl))))) persp-save-buffer-functions :key (function (lambda (s-f) (save-current-buffer (set-buffer b) (funcall s-f b))))) find-ret)(#<killed buffer>)
  mapcar((lambda (b) (setq find-ret nil) (find-if (function (lambda (sl) (if sl (progn (setq find-ret sl))))) persp-save-buffer-functions :key (function (lambda (s-f) (save-current-buffer (set-buffer b) (funcall s-f b))))) find-ret) (#<killed buffer> #<killed buffer> #<killed buffer> #<killed buffer> #<buffer header-splash.phtml<2>> #<buffer *doom:vterm-popup:#1*> #<buffer footer-splash.phtml> #<buffer index.phtml<2>> #<buffer index.phtml> #<buffer styles.css> #<buffer header-splash.phtml> #<buffer ISSUE_TEMPLATE.md>))
  (let (find-ret) (mapcar (function (lambda (b) (setq find-ret nil) (find-if (function (lambda (sl) (if sl ...))) persp-save-buffer-functions :key (function (lambda (s-f) (save-current-buffer ... ...)))) find-ret)) (if persp (progn (or (and (memq (type-of persp) cl-struct-perspective-tags) t) (signal (quote wrong-type-argument) (list (quote perspective) persp))) (aref persp 2)) (delete-if-not (function persp-buffer-free-p) (funcall persp-buffer-list-function)))))
  (delete-if (function symbolp) (let (find-ret) (mapcar (function (lambda (b) (setq find-ret nil) (find-if (function (lambda ... ...)) persp-save-buffer-functions :key (function (lambda ... ...))) find-ret)) (if persp (progn (or (and (memq ... cl-struct-perspective-tags) t) (signal (quote wrong-type-argument) (list ... persp))) (aref persp 2)) (delete-if-not (function persp-buffer-free-p) (funcall persp-buffer-list-function))))))
  (lambda (persp) (delete-if (function symbolp) (let (find-ret) (mapcar (function (lambda (b) (setq find-ret nil) (find-if (function ...) persp-save-buffer-functions :key (function ...)) find-ret)) (if persp (progn (or (and ... t) (signal ... ...)) (aref persp 2)) (delete-if-not (function persp-buffer-free-p) (funcall persp-buffer-list-function)))))))(#s(perspective :name "#1" :buffers (#<buffer *Backtrace*> #<killed buffer> #<killed buffer> #<killed buffer> #<killed buffer> #<buffer header-splash.phtml<2>> #<buffer *doom:vterm-popup:#1*> #<buffer footer-splash.phtml> #<buffer index.phtml<2>> #<buffer index.phtml> #<buffer styles.css> #<buffer header-splash.phtml> #<buffer ISSUE_TEMPLATE.md>) :window-conf (((min-height . 8) (min-width . 20) (min-height-ignore . 6) (min-width-ignore . 6) (min-height-safe . 2) (min-width-safe . 4) (min-pixel-height . 184) (min-pixel-width . 200) (min-pixel-height-ignore . 126) (min-pixel-width-ignore . 57) (min-pixel-height-safe . 46) (min-pixel-width-safe . 40)) hc (pixel-width . 2556) (pixel-height . 1368) (total-width . 256) (total-height . 59) (normal-height . 1.0) (normal-width . 1.0) (combination-limit) (leaf (pixel-width . 1278) (pixel-height . 1368) (total-width . 128) (total-height . 59) (normal-height . 1.0) (normal-width . 0.5) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring (0 10 . [... ... ... ... ... ... ... ... ... ... nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil ...]) :idx -1))) (buffer "header-splash.phtml" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 7718) (start . 6940))) (vc (last . t) (pixel-width . 1278) (pixel-height . 1368) (total-width . 128) (total-height . 59) (normal-height . 1.0) (normal-width . 0.5) (combination-limit) (leaf (pixel-width . 1278) (pixel-height . 684) (total-width . 128) (total-height . 29) (normal-height . 0.5) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "header-splash.phtml<2>" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 4758) (start . 4522))) (leaf (last . t) (pixel-width . 1278) (pixel-height . 684) (total-width . 128) (total-height . 30) (normal-height . 0.5) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "footer-splash.phtml" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 4457) (start . 3861))))) :parameters ((last-project-root . "/Users/codywilson/Development/dot-files/")) :weak nil :auto nil :hidden nil))
  apply((lambda (persp) (delete-if (function symbolp) (let (find-ret) (mapcar (function (lambda (b) (setq find-ret nil) (find-if ... persp-save-buffer-functions :key ...) find-ret)) (if persp (progn (or ... ...) (aref persp 2)) (delete-if-not (function persp-buffer-free-p) (funcall persp-buffer-list-function))))))) #s(perspective :name "#1" :buffers (#<buffer *Backtrace*> #<killed buffer> #<killed buffer> #<killed buffer> #<killed buffer> #<buffer header-splash.phtml<2>> #<buffer *doom:vterm-popup:#1*> #<buffer footer-splash.phtml> #<buffer index.phtml<2>> #<buffer index.phtml> #<buffer styles.css> #<buffer header-splash.phtml> #<buffer ISSUE_TEMPLATE.md>) :window-conf (((min-height . 8) (min-width . 20) (min-height-ignore . 6) (min-width-ignore . 6) (min-height-safe . 2) (min-width-safe . 4) (min-pixel-height . 184) (min-pixel-width . 200) (min-pixel-height-ignore . 126) (min-pixel-width-ignore . 57) (min-pixel-height-safe . 46) (min-pixel-width-safe . 40)) hc (pixel-width . 2556) (pixel-height . 1368) (total-width . 256) (total-height . 59) (normal-height . 1.0) (normal-width . 1.0) (combination-limit) (leaf (pixel-width . 1278) (pixel-height . 1368) (total-width . 128) (total-height . 59) (normal-height . 1.0) (normal-width . 0.5) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring (0 10 . [... ... ... ... ... ... ... ... ... ... nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil ...]) :idx -1))) (buffer "header-splash.phtml" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 7718) (start . 6940))) (vc (last . t) (pixel-width . 1278) (pixel-height . 1368) (total-width . 128) (total-height . 59) (normal-height . 1.0) (normal-width . 0.5) (combination-limit) (leaf (pixel-width . 1278) (pixel-height . 684) (total-width . 128) (total-height . 29) (normal-height . 0.5) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "header-splash.phtml<2>" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 4758) (start . 4522))) (leaf (last . t) (pixel-width . 1278) (pixel-height . 684) (total-width . 128) (total-height . 30) (normal-height . 0.5) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "footer-splash.phtml" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 4457) (start . 3861))))) :parameters ((last-project-root . "/Users/codywilson/Development/dot-files/")) :weak nil :auto nil :hidden nil))
  persp-buffers-to-savelist(#s(perspective :name "#1" :buffers (#<buffer *Backtrace*> #<killed buffer> #<killed buffer> #<killed buffer> #<killed buffer> #<buffer header-splash.phtml<2>> #<buffer *doom:vterm-popup:#1*> #<buffer footer-splash.phtml> #<buffer index.phtml<2>> #<buffer index.phtml> #<buffer styles.css> #<buffer header-splash.phtml> #<buffer ISSUE_TEMPLATE.md>) :window-conf (((min-height . 8) (min-width . 20) (min-height-ignore . 6) (min-width-ignore . 6) (min-height-safe . 2) (min-width-safe . 4) (min-pixel-height . 184) (min-pixel-width . 200) (min-pixel-height-ignore . 126) (min-pixel-width-ignore . 57) (min-pixel-height-safe . 46) (min-pixel-width-safe . 40)) hc (pixel-width . 2556) (pixel-height . 1368) (total-width . 256) (total-height . 59) (normal-height . 1.0) (normal-width . 1.0) (combination-limit) (leaf (pixel-width . 1278) (pixel-height . 1368) (total-width . 128) (total-height . 59) (normal-height . 1.0) (normal-width . 0.5) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring (0 10 . [... ... ... ... ... ... ... ... ... ... nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil ...]) :idx -1))) (buffer "header-splash.phtml" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 7718) (start . 6940))) (vc (last . t) (pixel-width . 1278) (pixel-height . 1368) (total-width . 128) (total-height . 59) (normal-height . 1.0) (normal-width . 0.5) (combination-limit) (leaf (pixel-width . 1278) (pixel-height . 684) (total-width . 128) (total-height . 29) (normal-height . 0.5) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "header-splash.phtml<2>" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 4758) (start . 4522))) (leaf (last . t) (pixel-width . 1278) (pixel-height . 684) (total-width . 128) (total-height . 30) (normal-height . 0.5) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "footer-splash.phtml" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 4457) (start . 3861))))) :parameters ((last-project-root . "/Users/codywilson/Development/dot-files/")) :weak nil :auto nil :hidden nil))
  (list (quote def-persp) (and persp (progn (or (and (memq (type-of persp) cl-struct-perspective-tags) t) (signal (quote wrong-type-argument) (list (quote perspective) persp))) (aref persp 1))) (persp-buffers-to-savelist persp) (persp-window-conf-to-savelist persp) (persp-parameters-to-savelist persp) (safe-persp-weak persp) (safe-persp-auto persp) (safe-persp-hidden persp))
  persp-to-savelist(#s(perspective :name "#1" :buffers (#<buffer *Backtrace*> #<killed buffer> #<killed buffer> #<killed buffer> #<killed buffer> #<buffer header-splash.phtml<2>> #<buffer *doom:vterm-popup:#1*> #<buffer footer-splash.phtml> #<buffer index.phtml<2>> #<buffer index.phtml> #<buffer styles.css> #<buffer header-splash.phtml> #<buffer ISSUE_TEMPLATE.md>) :window-conf (((min-height . 8) (min-width . 20) (min-height-ignore . 6) (min-width-ignore . 6) (min-height-safe . 2) (min-width-safe . 4) (min-pixel-height . 184) (min-pixel-width . 200) (min-pixel-height-ignore . 126) (min-pixel-width-ignore . 57) (min-pixel-height-safe . 46) (min-pixel-width-safe . 40)) hc (pixel-width . 2556) (pixel-height . 1368) (total-width . 256) (total-height . 59) (normal-height . 1.0) (normal-width . 1.0) (combination-limit) (leaf (pixel-width . 1278) (pixel-height . 1368) (total-width . 128) (total-height . 59) (normal-height . 1.0) (normal-width . 0.5) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring (0 10 . [... ... ... ... ... ... ... ... ... ... nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil ...]) :idx -1))) (buffer "header-splash.phtml" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 7718) (start . 6940))) (vc (last . t) (pixel-width . 1278) (pixel-height . 1368) (total-width . 128) (total-height . 59) (normal-height . 1.0) (normal-width . 0.5) (combination-limit) (leaf (pixel-width . 1278) (pixel-height . 684) (total-width . 128) (total-height . 29) (normal-height . 0.5) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "header-splash.phtml<2>" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 4758) (start . 4522))) (leaf (last . t) (pixel-width . 1278) (pixel-height . 684) (total-width . 128) (total-height . 30) (normal-height . 0.5) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "footer-splash.phtml" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 4457) (start . 3861))))) :parameters ((last-project-root . "/Users/codywilson/Development/dot-files/")) :weak nil :auto nil :hidden nil))
  mapcar(persp-to-savelist (nil #s(perspective :name "main" :buffers (#<buffer *doom*> #<buffer config.el> #<buffer packages.el>) :window-conf (((min-height . 4) (min-width . 10) (min-height-ignore . 3) (min-width-ignore . 3) (min-height-safe . 1) (min-width-safe . 2) (min-pixel-height . 92) (min-pixel-width . 100) (min-pixel-height-ignore . 63) (min-pixel-width-ignore . 28) (min-pixel-height-safe . 23) (min-pixel-width-safe . 20)) leaf (pixel-width . 2556) (pixel-height . 1368) (total-width . 256) (total-height . 59) (normal-height . 1.0) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring (0 10 . [... ... ... ... ... ... ... ... ... ... nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil ...]) :idx -1))) (buffer "packages.el" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 614) (start . 32))) :parameters ((last-project-root . "/Users/codywilson/Development/dot-files/")) :weak nil :auto nil :hidden nil) #s(perspective :name "#1" :buffers (#<buffer *Backtrace*> #<killed buffer> #<killed buffer> #<killed buffer> #<killed buffer> #<buffer header-splash.phtml<2>> #<buffer *doom:vterm-popup:#1*> #<buffer footer-splash.phtml> #<buffer index.phtml<2>> #<buffer index.phtml> #<buffer styles.css> #<buffer header-splash.phtml> #<buffer ISSUE_TEMPLATE.md>) :window-conf (((min-height . 8) (min-width . 20) (min-height-ignore . 6) (min-width-ignore . 6) (min-height-safe . 2) (min-width-safe . 4) (min-pixel-height . 184) (min-pixel-width . 200) (min-pixel-height-ignore . 126) (min-pixel-width-ignore . 57) (min-pixel-height-safe . 46) (min-pixel-width-safe . 40)) hc (pixel-width . 2556) (pixel-height . 1368) (total-width . 256) (total-height . 59) (normal-height . 1.0) (normal-width . 1.0) (combination-limit) (leaf (pixel-width . 1278) (pixel-height . 1368) (total-width . 128) (total-height . 59) (normal-height . 1.0) (normal-width . 0.5) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "header-splash.phtml" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 7718) (start . 6940))) (vc (last . t) (pixel-width . 1278) (pixel-height . 1368) (total-width . 128) (total-height . 59) (normal-height . 1.0) (normal-width . 0.5) (combination-limit) (leaf (pixel-width . 1278) (pixel-height . 684) (total-width . 128) (total-height . 29) (normal-height . 0.5) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "header-splash.phtml<2>" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 4758) (start . 4522))) (leaf (last . t) (pixel-width . 1278) (pixel-height . 684) (total-width . 128) (total-height . 30) (normal-height . 0.5) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "footer-splash.phtml" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 4457) (start . 3861))))) :parameters ((last-project-root . "/Users/codywilson/Development/dot-files/")) :weak nil :auto nil :hidden nil)))
  persps-to-savelist(#<hash-table equal 3/10 0x40b42221>)
  (prin1-to-string (persps-to-savelist phash))
  (let (print-length print-level) (prin1-to-string (persps-to-savelist phash)))
  (insert (let (print-length print-level) (prin1-to-string (persps-to-savelist phash))))
  (progn (buffer-disable-undo) (erase-buffer) (goto-char (point-min)) (insert ";; -*- mode: emacs-lisp; eval: (progn (pp-buffer) (indent-buffer)) -*-") (newline) (insert (let (print-length print-level) (prin1-to-string (persps-to-savelist phash)))) (persp-save-with-backups p-save-file))
  (unwind-protect (progn (buffer-disable-undo) (erase-buffer) (goto-char (point-min)) (insert ";; -*- mode: emacs-lisp; eval: (progn (pp-buffer) (indent-buffer)) -*-") (newline) (insert (let (print-length print-level) (prin1-to-string (persps-to-savelist phash)))) (persp-save-with-backups p-save-file)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))
  (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (buffer-disable-undo) (erase-buffer) (goto-char (point-min)) (insert ";; -*- mode: emacs-lisp; eval: (progn (pp-buffer) (indent-buffer)) -*-") (newline) (insert (let (print-length print-level) (prin1-to-string (persps-to-savelist phash)))) (persp-save-with-backups p-save-file)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))
  (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (buffer-disable-undo) (erase-buffer) (goto-char (point-min)) (insert ";; -*- mode: emacs-lisp; eval: (progn (pp-buffer) (indent-buffer)) -*-") (newline) (insert (let (print-length print-level) (prin1-to-string (persps-to-savelist phash)))) (persp-save-with-backups p-save-file)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))))
  (if (and respect-persp-file-parameter (member-if (apply-partially (function persp-parameter) (quote persp-file)) (persp-persps phash nil))) (let (persp-auto-save-persps-to-their-file persp-before-save-state-to-file-functions) (mapc (function (lambda (gr) (let* ((pl gr) (pfname ...)) (let (...) (if pfname ... ...))))) (persp-group-by (apply-partially (function persp-parameter) (quote persp-file)) (persp-persps phash nil t) t))) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (buffer-disable-undo) (erase-buffer) (goto-char (point-min)) (insert ";; -*- mode: emacs-lisp; eval: (progn (pp-buffer) (indent-buffer)) -*-") (newline) (insert (let (print-length print-level) (prin1-to-string ...))) (persp-save-with-backups p-save-file)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))))
  (if (not (and (file-exists-p p-save-dir) (file-directory-p p-save-dir))) (progn (message "[persp-mode] Error: Can't save perspectives -- `persp-save-dir' does not exists or not a directory %S." p-save-dir) nil) (mapc (function persp-save-state) (persp-persps phash)) (run-hook-with-args (quote persp-before-save-state-to-file-functions) fname phash respect-persp-file-parameter) (if (and respect-persp-file-parameter (member-if (apply-partially (function persp-parameter) (quote persp-file)) (persp-persps phash nil))) (let (persp-auto-save-persps-to-their-file persp-before-save-state-to-file-functions) (mapc (function (lambda (gr) (let* (... ...) (let ... ...)))) (persp-group-by (apply-partially (function persp-parameter) (quote persp-file)) (persp-persps phash nil t) t))) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (buffer-disable-undo) (erase-buffer) (goto-char (point-min)) (insert ";; -*- mode: emacs-lisp; eval: (progn (pp-buffer) (indent-buffer)) -*-") (newline) (insert (let ... ...)) (persp-save-with-backups p-save-file)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))))))
  (let* ((p-save-dir (or (file-name-directory fname) (expand-file-name persp-save-dir))) (p-save-file (concat p-save-dir (file-name-nondirectory fname)))) (if (and (file-exists-p p-save-dir) (file-directory-p p-save-dir)) nil (message "[persp-mode] Info: Trying to create the `persp-conf-dir'.") (make-directory p-save-dir t)) (if (not (and (file-exists-p p-save-dir) (file-directory-p p-save-dir))) (progn (message "[persp-mode] Error: Can't save perspectives -- `persp-save-dir' does not exists or not a directory %S." p-save-dir) nil) (mapc (function persp-save-state) (persp-persps phash)) (run-hook-with-args (quote persp-before-save-state-to-file-functions) fname phash respect-persp-file-parameter) (if (and respect-persp-file-parameter (member-if (apply-partially (function persp-parameter) (quote persp-file)) (persp-persps phash nil))) (let (persp-auto-save-persps-to-their-file persp-before-save-state-to-file-functions) (mapc (function (lambda (gr) (let* ... ...))) (persp-group-by (apply-partially (function persp-parameter) (quote persp-file)) (persp-persps phash nil t) t))) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (buffer-disable-undo) (erase-buffer) (goto-char ...) (insert ";; -*- mode: emacs-lisp; eval: (progn (pp-buffer) (indent-buffer)) -*-") (newline) (insert ...) (persp-save-with-backups p-save-file)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))))))
  (progn (if (< (string-width (file-name-nondirectory fname)) 1) (progn (message "[persp-mode] Error: You must provide nonempty filename to save perspectives.") (throw (quote --cl-block-persp-save-state-to-file--) nil))) (let* ((p-save-dir (or (file-name-directory fname) (expand-file-name persp-save-dir))) (p-save-file (concat p-save-dir (file-name-nondirectory fname)))) (if (and (file-exists-p p-save-dir) (file-directory-p p-save-dir)) nil (message "[persp-mode] Info: Trying to create the `persp-conf-dir'.") (make-directory p-save-dir t)) (if (not (and (file-exists-p p-save-dir) (file-directory-p p-save-dir))) (progn (message "[persp-mode] Error: Can't save perspectives -- `persp-save-dir' does not exists or not a directory %S." p-save-dir) nil) (mapc (function persp-save-state) (persp-persps phash)) (run-hook-with-args (quote persp-before-save-state-to-file-functions) fname phash respect-persp-file-parameter) (if (and respect-persp-file-parameter (member-if (apply-partially (function persp-parameter) (quote persp-file)) (persp-persps phash nil))) (let (persp-auto-save-persps-to-their-file persp-before-save-state-to-file-functions) (mapc (function (lambda ... ...)) (persp-group-by (apply-partially ... ...) (persp-persps phash nil t) t))) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn ... ... ... ... ... ... ...) (and ... ...))))))))
  (if (and (stringp fname) phash) (progn (if (< (string-width (file-name-nondirectory fname)) 1) (progn (message "[persp-mode] Error: You must provide nonempty filename to save perspectives.") (throw (quote --cl-block-persp-save-state-to-file--) nil))) (let* ((p-save-dir (or (file-name-directory fname) (expand-file-name persp-save-dir))) (p-save-file (concat p-save-dir (file-name-nondirectory fname)))) (if (and (file-exists-p p-save-dir) (file-directory-p p-save-dir)) nil (message "[persp-mode] Info: Trying to create the `persp-conf-dir'.") (make-directory p-save-dir t)) (if (not (and (file-exists-p p-save-dir) (file-directory-p p-save-dir))) (progn (message "[persp-mode] Error: Can't save perspectives -- `persp-save-dir' does not exists or not a directory %S." p-save-dir) nil) (mapc (function persp-save-state) (persp-persps phash)) (run-hook-with-args (quote persp-before-save-state-to-file-functions) fname phash respect-persp-file-parameter) (if (and respect-persp-file-parameter (member-if (apply-partially ... ...) (persp-persps phash nil))) (let (persp-auto-save-persps-to-their-file persp-before-save-state-to-file-functions) (mapc (function ...) (persp-group-by ... ... t))) (let ((temp-buffer ...)) (save-current-buffer (set-buffer temp-buffer) (unwind-protect ... ...))))))))
  (catch (quote --cl-block-persp-save-state-to-file--) (if (and (stringp fname) phash) (progn (if (< (string-width (file-name-nondirectory fname)) 1) (progn (message "[persp-mode] Error: You must provide nonempty filename to save perspectives.") (throw (quote --cl-block-persp-save-state-to-file--) nil))) (let* ((p-save-dir (or (file-name-directory fname) (expand-file-name persp-save-dir))) (p-save-file (concat p-save-dir (file-name-nondirectory fname)))) (if (and (file-exists-p p-save-dir) (file-directory-p p-save-dir)) nil (message "[persp-mode] Info: Trying to create the `persp-conf-dir'.") (make-directory p-save-dir t)) (if (not (and (file-exists-p p-save-dir) (file-directory-p p-save-dir))) (progn (message "[persp-mode] Error: Can't save perspectives -- `persp-save-dir' does not exists or not a directory %S." p-save-dir) nil) (mapc (function persp-save-state) (persp-persps phash)) (run-hook-with-args (quote persp-before-save-state-to-file-functions) fname phash respect-persp-file-parameter) (if (and respect-persp-file-parameter (member-if ... ...)) (let (persp-auto-save-persps-to-their-file persp-before-save-state-to-file-functions) (mapc ... ...)) (let (...) (save-current-buffer ... ...))))))))
  (progn (if --cl-rest-- (signal (quote wrong-number-of-arguments) (list (quote persp-save-state-to-file) (+ 4 (length --cl-rest--))))) (catch (quote --cl-block-persp-save-state-to-file--) (if (and (stringp fname) phash) (progn (if (< (string-width (file-name-nondirectory fname)) 1) (progn (message "[persp-mode] Error: You must provide nonempty filename to save perspectives.") (throw (quote --cl-block-persp-save-state-to-file--) nil))) (let* ((p-save-dir (or ... ...)) (p-save-file (concat p-save-dir ...))) (if (and (file-exists-p p-save-dir) (file-directory-p p-save-dir)) nil (message "[persp-mode] Info: Trying to create the `persp-conf-dir'.") (make-directory p-save-dir t)) (if (not (and ... ...)) (progn (message "[persp-mode] Error: Can't save perspectives -- `persp-save-dir' does not exists or not a directory %S." p-save-dir) nil) (mapc (function persp-save-state) (persp-persps phash)) (run-hook-with-args (quote persp-before-save-state-to-file-functions) fname phash respect-persp-file-parameter) (if (and respect-persp-file-parameter ...) (let ... ...) (let ... ...))))))))
  (let* ((fname (if --cl-rest-- (car-safe (prog1 --cl-rest-- (setq --cl-rest-- (cdr --cl-rest--)))) persp-auto-save-fname)) (phash (if --cl-rest-- (car-safe (prog1 --cl-rest-- (setq --cl-rest-- (cdr --cl-rest--)))) *persp-hash*)) (respect-persp-file-parameter (if --cl-rest-- (car-safe (prog1 --cl-rest-- (setq --cl-rest-- (cdr --cl-rest--)))) persp-auto-save-persps-to-their-file)) (keep-others-in-non-parametric-file (if --cl-rest-- (car-safe (prog1 --cl-rest-- (setq --cl-rest-- (cdr --cl-rest--)))) (quote no)))) (progn (if --cl-rest-- (signal (quote wrong-number-of-arguments) (list (quote persp-save-state-to-file) (+ 4 (length --cl-rest--))))) (catch (quote --cl-block-persp-save-state-to-file--) (if (and (stringp fname) phash) (progn (if (< (string-width ...) 1) (progn (message "[persp-mode] Error: You must provide nonempty filename to save perspectives.") (throw ... nil))) (let* ((p-save-dir ...) (p-save-file ...)) (if (and ... ...) nil (message "[persp-mode] Info: Trying to create the `persp-conf-dir'.") (make-directory p-save-dir t)) (if (not ...) (progn ... nil) (mapc ... ...) (run-hook-with-args ... fname phash respect-persp-file-parameter) (if ... ... ...))))))))
  persp-save-state-to-file("/Users/codywilson/.emacs.d/.local/etc/workspaces/autosave")
  (cond ((require (quote persp-mode) nil t) (if persp-mode nil (persp-mode 1)) (setq persp-auto-save-opt 0) (persp-save-state-to-file file)) ((and (require (quote frameset) nil t) (require (quote restart-emacs) nil t)) (let ((frameset-filter-alist (append (quote (...)) frameset-filter-alist)) (desktop-base-file-name (file-name-nondirectory file)) (desktop-dirname (file-name-directory file)) (desktop-restore-eager t) desktop-file-modtime) (make-directory desktop-dirname t) (let ((desktop-file-modtime (nth 5 (file-attributes ...)))) (desktop-save desktop-dirname t)))) ((error "No session backend to save session with")))
  doom-save-session()
  doom/quicksave-session()
  funcall-interactively(doom/quicksave-session)
  call-interactively(doom/quicksave-session nil nil)
  command-execute(doom/quicksave-session)

Edit:

Doom Info
emacs   version    26.2
        features   JPEG RSVG IMAGEMAGICK GLIB NOTIFY ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS MODULES THREADS LCMS2
        build      May 22, 2019
        buildopts  (--disable-dependency-tracking --disable-silent-rules --enable-locallisppath=/usr/local/share/emacs/site-lisp --infodir=/usr/local/Cellar/emacs-plus/26.2/share/info/emacs --prefix=/usr/local/Cellar/emacs-plus/26.2 --with-xml2 --without-dbus --with-gnutls --with-imagemagick --with-modules --with-rsvg --with-ns --disable-ns-self-contained)
doom    version    2.0.9
        build      HEAD -> straight 0cf669ab9 2019-08-15 21:30:59 -0400
system  type       darwin
        config     x86_64-apple-darwin18.2.0
        shell      /bin/bash
        uname      Darwin 18.2.0 Darwin Kernel Version 18.2.0: Fri Oct  5 19:41:49 PDT 2018; root:xnu-4903.221.2~2/RELEASE_X86_64 x86_64
        path       (/usr/local/opt/php@7.1/sbin/ /usr/local/opt/php@7.1/bin/ /usr/local/bin/ /usr/bin/ /bin/ /usr/sbin/ /sbin/ /usr/local/Cellar/cmake/3.10.1/bin/ /usr/local/opt/php@7.1/sbin/ /usr/local/opt/php@7.1/bin/ ~/Library/Python/2.7/bin/ ~/Library/Python/2.7/bin/ /usr/local/Cellar/emacs-plus/26.2/libexec/emacs/26.2/x86_64-apple-darwin18.2.0/)
config  envfile    envvar-file
        elc-files  0
        modules    (:completion company (ivy +fuzzy) :ui doom doom-dashboard doom-quit ophints fill-column hl-todo modeline nav-flash treemacs (popup +all +defaults) vc-gutter vi-tilde-fringe window-select workspaces :editor evil multiple-cursors rotate-text fold snippets file-templates :emacs dired electric vc :tools eval (lookup +docsets) editorconfig gist macos make (magit +forge) upload flyspell flycheck :lang assembly (cc +irony +rtags) data emacs-lisp javascript markdown (org +dragndrop +ipython +pandoc +gnuplot +present) php python rust (sh +fish) web :term vterm :config default)
        packages   (multi-web-mode wgrep swiper ag wgrep-ag exec-path-from-shell (play-sound :recipe (:type git :host github :repo leoliu/play-sound-osx)) company-phpactor elcord fancy-battery)

hlissner added a commit that referenced this issue Aug 22, 2019
@hlissner
Copy link
Member

243d69b should resolve this issue. I've also merged the straight branch to develop, so you'll need to switch back. Let me know if that isn't the case and I will reopen this issue.

@hlissner hlissner added the status:resolved Issue was addressed internally label Aug 27, 2019
@rgrinberg
Copy link
Contributor Author

@hlissner I don't believe this is resolved and I was able to reproduce this today with the new straight updated develop branch.

@siddharthshekar
Copy link
Contributor

I have been unable to reproduce this on develop after the straight branch merge. I did run into a problem where on restart, the naming and ordering of the workspaces was preserved, but they would all be empty. I reinstalled persp-mode and haven't had any problems since.

@CodyWilson
Copy link
Contributor

CodyWilson commented Aug 29, 2019

Yeah I haven't been able to reproduce this since the fix, and the other fix for a different issue.

@rgrinberg
Copy link
Contributor Author

I was just able to reproduce this on commit:

21883d9700707b3a4bc4518f61e70691edc6e2de
error in process filter: read-from-minibuffer: Selecting deleted buffer
error in process filter: Selecting deleted buffer

This time, the only distinction was that it occurred when I opened Emacs from a restart.

@hlissner
Copy link
Member

@rgrinberg That seems like an unrelated error. Are you able to get a backtrace from it?

@rgrinberg
Copy link
Contributor Author

Is there a way to restart doom with the debugger on? I should be able to get the backtrace then.

@hlissner
Copy link
Member

hlissner commented Sep 6, 2019

@rgrinberg You can either use the prefix argument: SPC u SPC q r, or kill Emacs normally, then start Emacs with emacs --debug-init --restore

@rgrinberg
Copy link
Contributor Author

I'm able to reproduce this bug the old way:

Debugger entered--Lisp error: (error "Selecting deleted buffer")
  #f(compiled-function (s-f) #<bytecode 0x42660565>)((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda (buffer &rest rest-args) (when ... ...)))) buffer) (let ((vars-list (with-current-buffer buffer (delete-if-not ... ... :key ...)))) (funcall (with-no-warnings (quote (closure ... ... ...))) buffer (quote def-indirect-buffer) vars-list)))))
  cl--position(nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) 0 nil nil)
  cl-position(nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) :if #f(compiled-function (sl) #<bytecode 0x42660071>) :key #f(compiled-function (s-f) #<bytecode 0x42660565>))
  apply(cl-position nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) (:if #f(compiled-function (sl) #<bytecode 0x42660071>) :key #f(compiled-function (s-f) #<bytecode 0x42660565>)))
  cl-find(nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) :if #f(compiled-function (sl) #<bytecode 0x42660071>) :key #f(compiled-function (s-f) #<bytecode 0x42660565>))
  apply(cl-find nil ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) :if #f(compiled-function (sl) #<bytecode 0x42660071>) (:key #f(compiled-function (s-f) #<bytecode 0x42660565>)))
  find-if(#f(compiled-function (sl) #<bytecode 0x42660071>) ((lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (funcall (with-no-warnings (quote ...)) buffer (quote def-indirect-buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-compilation-buffer) (buffer-name buffer) vars-list)))) (lambda (buffer) (when (funcall (with-no-warnings (quote (lambda ... ...))) buffer) (let ((vars-list (with-current-buffer buffer ...))) (list (quote def-eshell-buffer) (buffer-name buffer) vars-list)))) (lambda (b) (when (persp-buffer-filtered-out-p b persp-filter-save-buffers-functions) (quote skip))) persp-tramp-save-buffer (lambda (b) (when (eq (quote dired-mode) (buffer-local-value (quote major-mode) b)) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-local-value ... b)) (\, (buffer-local-value ... b)))))) (lambda (b) (\` (def-buffer (\, (buffer-name b)) (\, (buffer-file-name b)) (\, (buffer-local-value (quote major-mode) b)))))) :key #f(compiled-function (s-f) #<bytecode 0x42660565>))
  #f(compiled-function (b) #<bytecode 0x42660571>)(#<killed buffer>)
  mapcar(#f(compiled-function (b) #<bytecode 0x42660571>) (#<buffer foo.lean> #<buffer config.el<6>> #<buffer config.el<5>> #<buffer fsharp> #<buffer elixir> #<buffer packages.el<3>> #<buffer config.el<4>> #<buffer README.md> #<buffer lean-flycheck.el> #<buffer lean-settings.el> #<buffer lean-mode.el> #<buffer lean-mode> #<killed buffer> #<buffer lean<2>> #<buffer tmp> #<buffer config.el<3>> #<buffer ocaml> #<buffer packages.el<2>> #<buffer config.el<2>> #<buffer lang> #<buffer lean> #<buffer packages.el> #<buffer magit-diff: .emacs.d> #<buffer magit: .emacs.d> #<buffer agda> #<buffer config.el> #<buffer README.org>))
  persp-buffers-to-savelist(#s(perspective :name "main" :buffers (#<buffer foo.lean> #<buffer config.el<6>> #<buffer config.el<5>> #<buffer fsharp> #<buffer elixir> #<buffer packages.el<3>> #<buffer config.el<4>> #<buffer README.md> #<buffer lean-flycheck.el> #<buffer lean-settings.el> #<buffer lean-mode.el> #<buffer lean-mode> #<killed buffer> #<buffer lean<2>> #<buffer tmp> #<buffer config.el<3>> #<buffer ocaml> #<buffer packages.el<2>> #<buffer config.el<2>> #<buffer lang> #<buffer lean> #<buffer packages.el> #<buffer magit-diff: .emacs.d> #<buffer magit: .emacs.d> #<buffer agda> #<buffer config.el> #<buffer README.org>) :window-conf (((min-height . 8) (min-width . 20) (min-height-ignore . 6) (min-width-ignore . 7) (min-height-safe . 2) (min-width-safe . 4) (min-pixel-height . 152) (min-pixel-width . 160) (min-pixel-height-ignore . 104) (min-pixel-width-ignore . 49) (min-pixel-height-safe . 38) (min-pixel-width-safe . 32)) hc (pixel-width . 1436) (pixel-height . 769) (total-width . 180) (total-height . 40) (normal-height . 1.0) (normal-width . 1.0) (combination-limit) (vc (pixel-width . 718) (pixel-height . 769) (total-width . 90) (total-height . 40) (normal-height . 1.0) (normal-width . 0.5) (combination-limit) (leaf (pixel-width . 718) (pixel-height . 384) (total-width . 90) (total-height . 20) (normal-height . 0.5) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "config.el<2>" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 80) (start . 1))) (leaf (last . t) (pixel-width . 718) (pixel-height . 385) (total-width . 90) (total-height . 20) (normal-height . 0.5) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "foo.lean" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 1) (start . 1)))) (leaf (last . t) (pixel-width . 718) (pixel-height . 769) (total-width . 90) (total-height . 40) (normal-height . 1.0) (normal-width . 0.5) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring (0 65 . [... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...]) :idx -1))) (buffer "lean-mode.el" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 1898) (start . 1804)))) :parameters ((last-project-root . "/Users/rgrinberg/.emacs.d/.local/straight/repos/lean-mode/")) :weak nil :auto nil :hidden nil))
  persp-to-savelist(#s(perspective :name "main" :buffers (#<buffer foo.lean> #<buffer config.el<6>> #<buffer config.el<5>> #<buffer fsharp> #<buffer elixir> #<buffer packages.el<3>> #<buffer config.el<4>> #<buffer README.md> #<buffer lean-flycheck.el> #<buffer lean-settings.el> #<buffer lean-mode.el> #<buffer lean-mode> #<killed buffer> #<buffer lean<2>> #<buffer tmp> #<buffer config.el<3>> #<buffer ocaml> #<buffer packages.el<2>> #<buffer config.el<2>> #<buffer lang> #<buffer lean> #<buffer packages.el> #<buffer magit-diff: .emacs.d> #<buffer magit: .emacs.d> #<buffer agda> #<buffer config.el> #<buffer README.org>) :window-conf (((min-height . 8) (min-width . 20) (min-height-ignore . 6) (min-width-ignore . 7) (min-height-safe . 2) (min-width-safe . 4) (min-pixel-height . 152) (min-pixel-width . 160) (min-pixel-height-ignore . 104) (min-pixel-width-ignore . 49) (min-pixel-height-safe . 38) (min-pixel-width-safe . 32)) hc (pixel-width . 1436) (pixel-height . 769) (total-width . 180) (total-height . 40) (normal-height . 1.0) (normal-width . 1.0) (combination-limit) (vc (pixel-width . 718) (pixel-height . 769) (total-width . 90) (total-height . 40) (normal-height . 1.0) (normal-width . 0.5) (combination-limit) (leaf (pixel-width . 718) (pixel-height . 384) (total-width . 90) (total-height . 20) (normal-height . 0.5) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "config.el<2>" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 80) (start . 1))) (leaf (last . t) (pixel-width . 718) (pixel-height . 385) (total-width . 90) (total-height . 20) (normal-height . 0.5) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "foo.lean" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 1) (start . 1)))) (leaf (last . t) (pixel-width . 718) (pixel-height . 769) (total-width . 90) (total-height . 40) (normal-height . 1.0) (normal-width . 0.5) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring (0 65 . [... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...]) :idx -1))) (buffer "lean-mode.el" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 1898) (start . 1804)))) :parameters ((last-project-root . "/Users/rgrinberg/.emacs.d/.local/straight/repos/lean-mode/")) :weak nil :auto nil :hidden nil))
  mapcar(persp-to-savelist (nil #s(perspective :name "main" :buffers (#<buffer foo.lean> #<buffer config.el<6>> #<buffer config.el<5>> #<buffer fsharp> #<buffer elixir> #<buffer packages.el<3>> #<buffer config.el<4>> #<buffer README.md> #<buffer lean-flycheck.el> #<buffer lean-settings.el> #<buffer lean-mode.el> #<buffer lean-mode> #<killed buffer> #<buffer lean<2>> #<buffer tmp> #<buffer config.el<3>> #<buffer ocaml> #<buffer packages.el<2>> #<buffer config.el<2>> #<buffer lang> #<buffer lean> #<buffer packages.el> #<buffer magit-diff: .emacs.d> #<buffer magit: .emacs.d> #<buffer agda> #<buffer config.el> #<buffer README.org>) :window-conf (((min-height . 8) (min-width . 20) (min-height-ignore . 6) (min-width-ignore . 7) (min-height-safe . 2) (min-width-safe . 4) (min-pixel-height . 152) (min-pixel-width . 160) (min-pixel-height-ignore . 104) (min-pixel-width-ignore . 49) (min-pixel-height-safe . 38) (min-pixel-width-safe . 32)) hc (pixel-width . 1436) (pixel-height . 769) (total-width . 180) (total-height . 40) (normal-height . 1.0) (normal-width . 1.0) (combination-limit) (vc (pixel-width . 718) (pixel-height . 769) (total-width . 90) (total-height . 40) (normal-height . 1.0) (normal-width . 0.5) (combination-limit) (leaf (pixel-width . 718) (pixel-height . 384) (total-width . 90) (total-height . 20) (normal-height . 0.5) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "config.el<2>" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 80) (start . 1))) (leaf (last . t) (pixel-width . 718) (pixel-height . 385) (total-width . 90) (total-height . 20) (normal-height . 0.5) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "foo.lean" (selected) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 1) (start . 1)))) (leaf (last . t) (pixel-width . 718) (pixel-height . 769) (total-width . 90) (total-height . 40) (normal-height . 1.0) (normal-width . 0.5) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring ... :idx -1))) (buffer "lean-mode.el" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 1898) (start . 1804)))) :parameters ((last-project-root . "/Users/rgrinberg/.emacs.d/.local/straight/repos/lean-mode/")) :weak nil :auto nil :hidden nil) #s(perspective :name ".emacs.d" :buffers (#<buffer cl-seq.el.gz> #<buffer *eshell*> #<buffer autoloads.el> #<buffer .local> #<buffer Makefile> #<buffer .emacs.d> #<buffer config.el<3>> #<buffer config.el<4>> #<buffer config.el<7>> #<buffer config.el<2>>) :window-conf (((min-height . 4) (min-width . 10) (min-height-ignore . 3) (min-width-ignore . 3) (min-height-safe . 1) (min-width-safe . 2) (min-pixel-height . 76) (min-pixel-width . 80) (min-pixel-height-ignore . 52) (min-pixel-width-ignore . 24) (min-pixel-height-safe . 19) (min-pixel-width-safe . 16)) leaf (pixel-width . 1436) (pixel-height . 769) (total-width . 180) (total-height . 40) (normal-height . 1.0) (normal-width . 1.0) (parameters (better-jumper-struct . #s(better-jumper-jump-list-struct :ring (0 63 . [... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...]) :idx -1))) (buffer "cl-seq.el.gz" (selected . t) (hscroll . 0) (fringes 4 4 t) (margins nil) (scroll-bars nil 0 t nil 0 t) (vscroll . 0) (dedicated) (point . 20856) (start . 20856))) :parameters ((last-project-root . "/Users/rgrinberg/.emacs.d/.local/straight/repos/lean-mode/")) :weak nil :auto nil :hidden nil)))
  persps-to-savelist(#<hash-table equal 3/10 0x42667341>)
  persp-save-state-to-file("/Users/rgrinberg/.emacs.d/.local/etc/workspaces/autosave")
  (cond ((require (quote persp-mode) nil t) (if persp-mode nil (persp-mode 1)) (setq persp-auto-save-opt 0) (persp-save-state-to-file file)) ((and (require (quote frameset) nil t) (require (quote restart-emacs) nil t)) (let ((frameset-filter-alist (append (quote (...)) frameset-filter-alist)) (desktop-base-file-name (file-name-nondirectory file)) (desktop-dirname (file-name-directory file)) (desktop-restore-eager t) desktop-file-modtime) (make-directory desktop-dirname t) (let ((desktop-file-modtime (nth 5 (file-attributes ...)))) (desktop-save desktop-dirname t)))) ((error "No session backend to save session with")))
  doom-save-session()
  doom/quicksave-session()
  doom/restart-and-restore(nil)
  funcall-interactively(doom/restart-and-restore nil)
  call-interactively(doom/restart-and-restore nil nil)
  command-execute(doom/restart-and-restore)

So this bug is definitely not fixed btw.

@hlissner hlissner reopened this Apr 22, 2020
@hlissner hlissner added status:unconfirmed Still under investigation. and removed status:resolved Issue was addressed internally labels Apr 22, 2020
@rgrinberg
Copy link
Contributor Author

I haven't seen this in ages, so it's likely to be fixed.

@jsravn
Copy link
Contributor

jsravn commented Apr 22, 2020

It's been happening to me over the last few weeks - it happened a couple times yesterday on latest. Maybe it's something config related? I will try to dig further when I get a chance.

@betaprior
Copy link
Contributor

Yeah, this is still an issue it seems.

@czikus
Copy link

czikus commented Aug 10, 2020

Definitely still an issue. Makes +helm/workspace-mini unusable since calling it results in helm-buffers-list--init: Wrong type argument: stringp, nil.

@CodyWilson
Copy link
Contributor

Yeah, guys. Honestly this issue should be closed.
And you guys should open up your own issues, with your own debug logs.
What caused this could have literally nothing to do with why "+helm/workspace-mini unusable since calling it results in helm-buffers-list--init: Wrong type argument: stringp, nil".

@czikus
Copy link

czikus commented Aug 10, 2020

It is related, I haven't mentioned that, but +helm/workspace-mini throws the error always at the same time when selecting deleted buffer happens.

@CodyWilson
Copy link
Contributor

CodyWilson commented Aug 10, 2020

Cool.
So now all that's needed is:
Your M-x doom/info.
A backtrace of the error. Guide here: https://github.com/hlissner/doom-emacs/blob/develop/docs/getting_started.org#how-to-extract-a-backtrace-from-an-error
And the steps to reproduce/anything else you can give to help hunt down the problem.

@czikus
Copy link

czikus commented Aug 24, 2020

Here's the backtrace that I get for +helm/workspace-mini. At the same time when this happens, the following messages are appearing:

Error running timer: (error "Selecting deleted buffer") [2 times]
next-line: End of buffer [2 times]
Error running timer: (error "Selecting deleted buffer")
next-line: End of buffer [2 times]
Error running timer: (error "Selecting deleted buffer")
Debugger entered--Lisp error: (wrong-type-argument stringp nil)
  helm-buffer--format-mode-name(nil)
  helm-buffers-list--init()
  apply(helm-buffers-list--init nil)
  helm-apply-functions-from-source(((name . "Buffers") (init . helm-buffers-list--init) (candidates nil) (keymap keymap (11 . helm-buffer-run-kill-buffers) (8 . helm-buffer-run-query-replace) (6 . helm-buffers-run-occur) (1 . helm-toggle-all-marks) (67108911 . helm-toggle-buffers-details) (67108910 . helm-buffers-toggle-show-hidden-buffers) (S-return . helm-buffer-switch-other-window) (C-return) (29) (67108925 . helm-buffer-diff-persistent) (3 keymap (20 . helm-buffers-switch-to-buffer-new-tab) (97) (100) (61 . helm-buffer-run-ediff) (15 . helm-buffer-switch-other-frame) (111 . helm-buffer-switch-other-window)) (24 keymap (11 . helm-buffer-run-kill-buffers) (15) (111) (115) (19) (4 . helm-buffers-run-browse-project)) (19 . helm-buffer-run-save-some-buffers) (27 keymap (14 . helm-buffer-run-rename-buffer) (8 . helm-buffer-run-query-replace-regexp) (85) (13) (67108896) (97) (109) (82) (37) (67108901) (68) (71) (61 . helm-buffer-run-ediff-merge) (103 keymap (115 . helm-buffer-run-zgrep))) keymap (17 . keyboard-quit) (1 . helm-toggle-all-marks) (C-return . helm-select-action) (tab) (f13 lambda nil (interactive) (helm-select-nth-action 12)) (f12 lambda nil (interactive) (helm-select-nth-action 11)) (f11 lambda nil (interactive) (helm-select-nth-action 10)) (f10 lambda nil (interactive) (helm-select-nth-action 9)) (f9 lambda nil (interactive) (helm-select-nth-action 8)) (f8 lambda nil (interactive) (helm-select-nth-action 7)) (f7 lambda nil (interactive) (helm-select-nth-action 6)) (f6 lambda nil (interactive) (helm-select-nth-action 5)) (f5 lambda nil (interactive) (helm-select-nth-action 4)) (f4 lambda nil (interactive) (helm-select-nth-action 3)) (f3 lambda nil (interactive) (helm-select-nth-action 2)) (f2 lambda nil (interactive) (helm-select-nth-action 1)) (menu-bar keymap (help-menu keymap (describe keymap (describe-mode . helm-help)))) (help keymap (109 . helm-help)) (23 . #f(compiled-function () (interactive nil) #<bytecode 0x158348e231c9>)) (f1 lambda nil (interactive) (helm-select-nth-action 0)) (8 keymap (104 . undefined) (8 . undefined) (99 . helm-customize-group) (4 . helm-enable-or-switch-to-debug)) (20 . helm-toggle-resplit-and-swap-windows) (C-tab . undefined) (67108897 . helm-toggle-suspend-update) (3 keymap (57 . helm-execute-selection-action-at-nth-+9) (56 . helm-execute-selection-action-at-nth-+8) (55 . helm-execute-selection-action-at-nth-+7) (54 . helm-execute-selection-action-at-nth-+6) (53 . helm-execute-selection-action-at-nth-+5) (52 . helm-execute-selection-action-at-nth-+4) (51 . helm-execute-selection-action-at-nth-+3) (50 . helm-execute-selection-action-at-nth-+2) (49 . helm-execute-selection-action-at-nth-+1) (63 . helm-help) (110 . #f(compiled-function () (interactive nil) #<bytecode 0x158348e22609>)) (108 . helm-display-line-numbers-mode) (62 . helm-toggle-truncate-line) (21 . helm-refresh) (6 . helm-follow-mode) (9 . helm-copy-to-buffer) (11 . helm-kill-selection-and-quit) (25 . helm-yank-selection) (37 . helm-exchange-minibuffer-and-header-line) (95 . helm-toggle-full-frame) (45 . helm-swap-windows)) (67108987 . helm-enlarge-window) (67108989 . helm-narrow-window) (19 . helm-minibuffer-history) (24 keymap (57 . helm-execute-selection-action-at-nth-+9) (56 . helm-execute-selection-action-at-nth-+8) (55 . helm-execute-selection-action-at-nth-+7) (54 . helm-execute-selection-action-at-nth-+6) (53 . helm-execute-selection-action-at-nth-+5) (52 . helm-execute-selection-action-at-nth-+4) (51 . helm-execute-selection-action-at-nth-+3) (50 . helm-execute-selection-action-at-nth-+2) (49 . helm-execute-selection-action-at-nth-+1) (104 keymap (77 . helm-help)) (2 . helm-resume-list-buffers-after-quit) (98 . helm-resume-previous-session-after-quit) (6 . helm-quit-and-find-file)) (11) (67108896 . helm-toggle-visible-mark-forward) (0) ...) (action . helm-type-buffer-actions) (persistent-action . helm-buffers-list-persistent-action) (persistent-help . "Show this buffer") (help-message . helm-buffer-help-message) (requires-pattern . 0) (filtered-candidate-transformer helm-skip-boring-buffers helm-buffers-sort-transformer helm-highlight-buffers) (volatile . t) (match . helm-buffers-match-function) (redisplay . identity) (nohighlight . t) (mode-line "Buffer(s)" nil) (header-line . "C-j: Show this buffer (keeping session)") (resume lambda nil (setq helm-buffers-in-project-p nil)) (group . helm-buffers) (migemo . nomultimatch) (buffer-list . helm-buffer-list)) helm-buffers-list--init)
  helm-compute-attr-in-sources(init (((name . "Buffers") (init . helm-buffers-list--init) (candidates nil) (keymap keymap ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... keymap ... ... ... ... ... ... ... ... ...) (action . helm-type-buffer-actions) (persistent-action . helm-buffers-list-persistent-action) (persistent-help . "Show this buffer") (help-message . helm-buffer-help-message) (requires-pattern . 0) (filtered-candidate-transformer helm-skip-boring-buffers helm-buffers-sort-transformer helm-highlight-buffers) (volatile . t) (match . helm-buffers-match-function) (redisplay . identity) (nohighlight . t) (mode-line "Buffer(s)" nil) (header-line . "C-j: Show this buffer (kee...") (resume lambda nil ...) (group . helm-buffers) (migemo . nomultimatch) (buffer-list . helm-buffer-list)) ((name . "Recentf") (init lambda nil ... ...) (candidates lambda nil recentf-list) (keymap keymap ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... keymap ... ... ... ... ... ...) (action ... ... ... ... ... ... ... ... ... ...) (persistent-action . helm-ff-kill-or-find-buffer-fname) (persistent-help . "Show this file") (help-message . helm-generic-file-help-message) (requires-pattern . 0) (candidate-transformer helm-skip-boring-files helm-w32-pathname-transformer) (filtered-candidate-transformer helm-highlight-files helm-fuzzy-matching-sort-fn-preserve-ties-order helm-fuzzy-highlight-matches) (action-transformer helm-transform-file-load-el helm-transform-file-browse-url helm-transform-file-cache) (pattern-transformer . helm-recentf-pattern-transformer) (match helm-mm-exact-match helm-mm-match helm-fuzzy-match helm-mm-3-migemo-match) (fuzzy-match . t) (redisplay . identity) (mode-line "File(s)" nil) (header-line . "C-j: Show this file (keepi...") (multimatch . t) (match-part lambda ... ...) (group . helm-files) (migemo . t)) ((name . "Create buffer") (candidates "dummy") (keymap keymap ... keymap ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...) (action ... ... ...) (requires-pattern . 0) (filtered-candidate-transformer ... helm-fuzzy-highlight-matches) (volatile . t) (match . identity) (redisplay . identity) (header-line . "C-j: Create buffer (C-u ch...") (group . helm) (accept-empty . t))))
  helm-initial-setup(nil (((name . "Buffers") (init . helm-buffers-list--init) (candidates nil) (keymap keymap ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... keymap ... ... ... ... ... ... ... ... ...) (action . helm-type-buffer-actions) (persistent-action . helm-buffers-list-persistent-action) (persistent-help . "Show this buffer") (help-message . helm-buffer-help-message) (requires-pattern . 0) (filtered-candidate-transformer helm-skip-boring-buffers helm-buffers-sort-transformer helm-highlight-buffers) (volatile . t) (match . helm-buffers-match-function) (redisplay . identity) (nohighlight . t) (mode-line "Buffer(s)" nil) (header-line . "C-j: Show this buffer (kee...") (resume lambda nil ...) (group . helm-buffers) (migemo . nomultimatch) (buffer-list . helm-buffer-list)) ((name . "Recentf") (init lambda nil ... ...) (candidates lambda nil recentf-list) (keymap keymap ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... keymap ... ... ... ... ... ...) (action ... ... ... ... ... ... ... ... ... ...) (persistent-action . helm-ff-kill-or-find-buffer-fname) (persistent-help . "Show this file") (help-message . helm-generic-file-help-message) (requires-pattern . 0) (candidate-transformer helm-skip-boring-files helm-w32-pathname-transformer) (filtered-candidate-transformer helm-highlight-files helm-fuzzy-matching-sort-fn-preserve-ties-order helm-fuzzy-highlight-matches) (action-transformer helm-transform-file-load-el helm-transform-file-browse-url helm-transform-file-cache) (pattern-transformer . helm-recentf-pattern-transformer) (match helm-mm-exact-match helm-mm-match helm-fuzzy-match helm-mm-3-migemo-match) (fuzzy-match . t) (redisplay . identity) (mode-line "File(s)" nil) (header-line . "C-j: Show this file (keepi...") (multimatch . t) (match-part lambda ... ...) (group . helm-files) (migemo . t)) ((name . "Create buffer") (candidates "dummy") (keymap keymap ... keymap ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...) (action ... ... ...) (requires-pattern . 0) (filtered-candidate-transformer ... helm-fuzzy-highlight-matches) (volatile . t) (match . identity) (redisplay . identity) (header-line . "C-j: Create buffer (C-u ch...") (group . helm) (accept-empty . t))))
  helm-initialize(nil nil nil (helm-source-buffers-list helm-source-recentf helm-source-buffer-not-found))
  helm-internal((helm-source-buffers-list helm-source-recentf helm-source-buffer-not-found) nil nil nil nil "*helm mini*" nil nil nil)
  apply(helm-internal ((helm-source-buffers-list helm-source-recentf helm-source-buffer-not-found) nil nil nil nil "*helm mini*" nil nil nil))
  helm((helm-source-buffers-list helm-source-recentf helm-source-buffer-not-found) nil nil nil nil "*helm mini*" nil nil nil)
  apply(helm ((helm-source-buffers-list helm-source-recentf helm-source-buffer-not-found) nil nil nil nil "*helm mini*" nil nil nil))
  helm(:sources (helm-source-buffers-list helm-source-recentf helm-source-buffer-not-found) :buffer "*helm mini*" :ff-transformer-show-only-basename nil :truncate-lines t :left-margin-width 0)
  helm-mini()
  (progn (fset 'buffer-list vnew) (helm-mini))
  (unwind-protect (progn (fset 'buffer-list vnew) (helm-mini)) (fset 'buffer-list old))
  (let* ((vnew #'(lambda (&optional frame) (persp-buffer-list-restricted frame))) (old (symbol-function 'buffer-list))) (unwind-protect (progn (fset 'buffer-list vnew) (helm-mini)) (fset 'buffer-list old)))
  (let ((*persp-restrict-buffers-to* 0) (persp-restrict-buffers-to-if-foreign-buffer nil)) (let* ((vnew #'(lambda (&optional frame) (persp-buffer-list-restricted frame))) (old (symbol-function 'buffer-list))) (unwind-protect (progn (fset 'buffer-list vnew) (helm-mini)) (fset 'buffer-list old))))
  (with-no-warnings (let ((*persp-restrict-buffers-to* 0) (persp-restrict-buffers-to-if-foreign-buffer nil)) (let* ((vnew #'(lambda (&optional frame) (persp-buffer-list-restricted frame))) (old (symbol-function 'buffer-list))) (unwind-protect (progn (fset 'buffer-list vnew) (helm-mini)) (fset 'buffer-list old)))))
  +helm/workspace-mini()
  funcall-interactively(+helm/workspace-mini)
  call-interactively(+helm/workspace-mini nil nil)
  command-execute(+helm/workspace-mini)

@czikus
Copy link

czikus commented Aug 31, 2020

A few additional observations. When the problem occurs, (persp-buffer-list-restricted) returns:
(...normal buffers here... #<killed buffer>)
running (persp-filter-out-bad-buffers) fixes the problem.

@hlissner hlissner added status:resolved Issue was addressed internally and removed status:unconfirmed Still under investigation. labels Nov 2, 2020
@hlissner
Copy link
Member

hlissner commented Nov 2, 2020

As of 7d60318 this issue should hopefully be resolved. Let me know if it resurfaces and I'll reopen it. Thanks for bringing it to my attention!

NatTuck pushed a commit to NatTuck/doom-emacs that referenced this issue Nov 4, 2020
offbyone pushed a commit to offbyone/doom-emacs that referenced this issue Nov 5, 2020
GTrunSec pushed a commit to GTrunSec/doom-emacs that referenced this issue Nov 8, 2020
GTrunSec pushed a commit to GTrunSec/doom-emacs that referenced this issue Apr 13, 2021
@github-actions github-actions bot locked as resolved and limited conversation to collaborators May 1, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
is:bug Something isn't working as intended module:ui/workspaces Pertains to Doom's :ui workspaces module status:resolved Issue was addressed internally
Projects
None yet
Development

No branches or pull requests

9 participants