alphapapa / burly.el

Save and restore frames and windows with their buffers in Emacs
GNU General Public License v3.0
301 stars 14 forks source link

Invalid burly URL with ivy-posframe, better-jumper, or bufler.el #23

Open gagbo opened 3 years ago

gagbo commented 3 years ago

Before the gnarly backtrace, what I think happens. (I'm on 7c03d63)

I have a invalid read syntax # error when I try to restore frames with burly but it worked when I "only" save windows.

I dig up the backtrace and I think the issue is with the posframe-buffer frame-parameters (posframe-buffer posframe-parent-buffer), which are stored directly in their princ forms. Either that or still the better-jumper (better-jumper-struct) issue of #12, or the bufler-workspace-path-formatted . Or the name of the frames

Don't hesitate to search for the parameters in the page, otherwise it's kind of hard to see where the issues are

The url I tried to restore :

       emacs+burly+frames:?%5Bframeset%201%20%2824514%2033650%20510915%20775000%29%20nil%20nil%20nil%20nil%20%28%28%28%28minibuffer%29%20%28undecorated%20.%20t%29%20%28override-redirect%29%20%28font-parameter%20.%20%22-%2A-Iosevka-semilight-%2A-%2A-%2A-16-%2A-%2A-%2A-%2A-%2A-%2A-%2A%22%29%20%28font%20.%20%22-CYEL-Iosevka-normal-normal-normal-%2A-16-%2A-%2A-%2A-m-0-iso10646-1%22%29%20%28border-width%20.%200%29%20%28internal-border-width%20.%201%29%20%28right-divider-width%20.%201%29%20%28bottom-divider-width%20.%201%29%20%28vertical-scroll-bars%29%20%28horizontal-scroll-bars%29%20%28foreground-color%20.%20%22%23303030%22%29%20%28background-color%20.%20%22%23E4E4E4%22%29%20%28mouse-color%20.%20%22black%22%29%20%28border-color%20.%20%22black%22%29%20%28screen-gamma%29%20%28line-spacing%20.%200%29%20%28left-fringe%20.%204%29%20%28right-fringe%20.%204%29%20%28no-special-glyphs%20.%20t%29%20%28scroll-bar-foreground%20.%20%22black%22%29%20%28scroll-bar-background%29%20%28min-width%20.%2090%29%20%28min-height%20.%2010%29%20%28menu-bar-lines%20.%200%29%20%28tab-bar-lines%20.%200%29%20%28height%20.%2018%29%20%28tool-bar-lines%20.%200%29%20%28title%29%20%28wait-for-wm%20.%20t%29%20%28tool-bar-position%20.%20top%29%20%28inhibit-double-buffering%29%20%28icon-type%20.%20t%29%20%28auto-raise%29%20%28auto-lower%29%20%28cursor-type%29%20%28scroll-bar-width%20.%2016%29%20%28scroll-bar-height%20.%2016%29%20%28alpha%29%20%28no-focus-on-map%29%20%28no-accept-focus%20.%20t%29%20%28fullscreen%29%20%28visibility%29%20%28skip-taskbar%29%20%28z-group%29%20%28keep-ratio%20nil%29%20%28posframe-buffer%20%22%20%2Aivy-posframe-buffer%2A%22%20.%20%23%3Cbuffer%20%20%2Aivy-posframe-buffer%2A%3E%29%20%28no-other-frame%20.%20t%29%20%28desktop-dont-save%20.%20t%29%20%28display-type%20.%20color%29%20%28background-mode%20.%20light%29%20%28cursor-color%20.%20%22%23D7AF00%22%29%20%28posframe-hidehandler%29%20%28posframe-parent-buffer%20%22%2Adoom%2A%22%20.%20%23%3Cbuffer%20%2Adoom%2A%3E%29%20%28frameset--id%20.%20%224E95-0F1B-C33C-A509%22%29%20%28frameset--parent-frame%20.%20%22F962-4A16-16C0-C858%22%29%20%28frameset--mini%20nil%20.%20%22F962-4A16-16C0-C858%22%29%20%28frameset--text-pixel-width%20.%20728%29%20%28frameset--text-pixel-height%20.%20378%29%20%28name%20.%20%22%22%29%20%28width%20.%2091%29%20%28modeline%20.%20t%29%20%28unsplittable%20.%20t%29%20%28left%20.%20218%29%20%28top%20.%200%29%20%28icon-name%29%20%28display%20.%20%22%3A0%22%29%20%28explicit-name%29%29%20%28%28min-height%20.%204%29%20%28min-width%20.%2010%29%20%28min-height-ignore%20.%201%29%20%28min-width-ignore%20.%203%29%20%28min-height-safe%20.%201%29%20%28min-width-safe%20.%202%29%20%28min-pixel-height%20.%2084%29%20%28min-pixel-width%20.%2080%29%20%28min-pixel-height-ignore%20.%2021%29%20%28min-pixel-width-ignore%20.%2024%29%20%28min-pixel-height-safe%20.%2021%29%20%28min-pixel-width-safe%20.%2016%29%29%20leaf%20%28last%20.%20t%29%20%28pixel-width%20.%20744%29%20%28pixel-height%20.%20378%29%20%28total-width%20.%2093%29%20%28total-height%20.%2018%29%20%28normal-height%20.%201.0%29%20%28normal-width%20.%201.0%29%20%28parameters%20%28mode-line-format%20.%20none%29%20%28better-jumper-struct%20.%20%23s%28better-jumper-jump-list-struct%20%280%200%20.%20%5Bnil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%5D%29%20-1%29%29%20%28burly-url%20.%20%22emacs%2Bburly%2Bname%3A%2F%2F%3F%20%2Aivy-posframe-buffer%2A%22%29%29%20%28buffer%20%22%20%2Aivy-posframe-buffer%2A%22%20%28selected%29%20%28hscroll%20.%200%29%20%28fringes%204%204%20t%20nil%29%20%28margins%20nil%29%20%28scroll-bars%20nil%200%20t%20nil%200%20t%20nil%29%20%28vscroll%20.%200%29%20%28dedicated%20.%20t%29%20%28point%20.%201%29%20%28start%20.%201%29%29%20%28prev-buffers%20%28%22%2Ascratch%2A%22%201%201%29%29%29%20%28%28%28minibuffer%20.%20t%29%20%28undecorated%29%20%28override-redirect%29%20%28font%20.%20%22-CYEL-Iosevka-normal-normal-normal-%2A-16-%2A-%2A-%2A-m-0-iso10646-1%22%29%20%28border-width%20.%200%29%20%28internal-border-width%20.%200%29%20%28right-divider-width%20.%201%29%20%28bottom-divider-width%20.%201%29%20%28vertical-scroll-bars%29%20%28horizontal-scroll-bars%29%20%28foreground-color%20.%20%22%23303030%22%29%20%28background-color%20.%20%22%23EEEEEE%22%29%20%28mouse-color%20.%20%22black%22%29%20%28border-color%20.%20%22black%22%29%20%28screen-gamma%29%20%28line-spacing%29%20%28left-fringe%20.%204%29%20%28right-fringe%20.%204%29%20%28no-special-glyphs%29%20%28scroll-bar-foreground%20.%20%22black%22%29%20%28scroll-bar-background%29%20%28menu-bar-lines%20.%200%29%20%28tab-bar-lines%20.%201%29%20%28height%20.%2048%29%20%28tool-bar-lines%20.%200%29%20%28title%29%20%28wait-for-wm%20.%20t%29%20%28tool-bar-position%20.%20top%29%20%28inhibit-double-buffering%29%20%28icon-type%20.%20t%29%20%28auto-raise%29%20%28auto-lower%29%20%28cursor-type%20.%20box%29%20%28scroll-bar-width%20.%2016%29%20%28scroll-bar-height%20.%2016%29%20%28alpha%29%20%28no-focus-on-map%29%20%28no-accept-focus%29%20%28fullscreen%29%20%28visibility%20.%20t%29%20%28skip-taskbar%29%20%28z-group%29%20%28display-type%20.%20color%29%20%28background-mode%20.%20light%29%20%28cursor-color%20.%20%22%23D7AF00%22%29%20%28environment%29%20%28last-focus-update%20.%20t%29%20%28tabs%20%28tab%20%28name%20.%20%22main%22%29%20%28explicit-name%29%20%28time%20.%201606583139.78676%29%20%28ws%20%28%28min-height%20.%204%29%20%28min-width%20.%2035%29%20%28min-height-ignore%20.%203%29%20%28min-width-ignore%20.%2035%29%20%28min-height-safe%20.%201%29%20%28min-width-safe%20.%202%29%20%28min-pixel-height%20.%2084%29%20%28min-pixel-width%20.%20280%29%20%28min-pixel-height-ignore%20.%2063%29%20%28min-pixel-width-ignore%20.%20280%29%20%28min-pixel-height-safe%20.%2021%29%20%28min-pixel-width-safe%20.%2016%29%29%20leaf%20%28pixel-width%20.%201182%29%20%28pixel-height%20.%201011%29%20%28total-width%20.%20147%29%20%28total-height%20.%2048%29%20%28normal-height%20.%201.0%29%20%28normal-width%20.%201.0%29%20%28parameters%20%28better-jumper-struct%29%29%20%28buffer%20%22%2Adoom%2A%22%20%28selected%20.%20t%29%20%28hscroll%20.%200%29%20%28fringes%200%200%20nil%20nil%29%20%28margins%2033%29%20%28scroll-bars%20nil%200%20t%20nil%200%20t%20nil%29%20%28vscroll%20.%200%29%20%28dedicated%29%20%28point%20.%201%29%20%28start%20.%201%29%29%20%28prev-buffers%20%28%22%2Ascratch%2A%22%201%201%29%29%29%29%20%28current-tab%20%28name%20.%20%22emacs_rs%22%29%20%28explicit-name%20.%20t%29%29%29%20%28bufler-workspace-path%20%22emacs_rs%22%29%20%28bufler-workspace-path-formatted%20.%20%23%28%22emacs_rs%22%200%208%20%28face%20outline-1%29%29%29%20%28name%20.%20%23%28%22Workspace%3A%20emacs_rs%22%2011%2019%20%28face%20outline-1%29%29%29%20%28frameset--id%20.%20%22F962-4A16-16C0-C858%22%29%20%28frameset--mini%20t%20.%20t%29%20%28frameset--text-pixel-width%20.%201174%29%20%28frameset--text-pixel-height%20.%201011%29%20%28width%20.%20146%29%20%28modeline%20.%20t%29%20%28unsplittable%29%20%28left%20.%200%29%20%28top%20.%200%29%20%28icon-name%29%20%28display%20.%20%22%3A0%22%29%20%28explicit-name%20.%20t%29%29%20%28%28min-height%20.%204%29%20%28min-width%20.%2010%29%20%28min-height-ignore%20.%204%29%20%28min-width-ignore%20.%203%29%20%28min-height-safe%20.%201%29%20%28min-width-safe%20.%202%29%20%28min-pixel-height%20.%2084%29%20%28min-pixel-width%20.%2080%29%20%28min-pixel-height-ignore%20.%2084%29%20%28min-pixel-width-ignore%20.%2024%29%20%28min-pixel-height-safe%20.%2021%29%20%28min-pixel-width-safe%20.%2016%29%29%20leaf%20%28pixel-width%20.%201182%29%20%28pixel-height%20.%20990%29%20%28total-width%20.%20147%29%20%28total-height%20.%2047%29%20%28normal-height%20.%201.0%29%20%28normal-width%20.%201.0%29%20%28parameters%20%28better-jumper-struct%20.%20%23s%28better-jumper-jump-list-struct%20%280%201%20.%20%5B%28%22%2Fhome%2Fgagbo%2Fdev%2Fperso%2Femacs_rs%2Fsrc%2Flib.rs%22%20765%20%22olfofe%22%29%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%20nil%5D%29%20-1%29%29%20%28burly-url%20.%20%22emacs%2Bburly%2Bbookmark%3A%2F%2Flib.rs%3Ffilename%3D%2522~%252Fdev%252Fperso%252Femacs_rs%252Fsrc%252Flib.rs%2522%26front-context-string%3D%2522%252F%252F%2520%2520the%2520Free%2520Sof%2522%26rear-context-string%3D%2522as%2520published%2520by%250A%2522%26position%3D187%26defaults%3D%2528%2522lib.rs%2522%2529%22%29%29%20%28buffer%20%22lib.rs%22%20%28selected%20.%20t%29%20%28hscroll%20.%200%29%20%28fringes%204%204%20t%20nil%29%20%28margins%20nil%29%20%28scroll-bars%20nil%200%20t%20nil%200%20t%20nil%29%20%28vscroll%20.%200%29%20%28dedicated%29%20%28point%20.%20187%29%20%28start%20.%201%29%29%20%28prev-buffers%20%28%22%2Adoom%2A%22%201%201%29%29%29%29%5D

The lisp object string that goes into read, manually formatted

[frameset 1
          (24514 33650 510915 775000)
          nil
          nil
          nil
          nil
          ((
            ((minibuffer)
             (undecorated . t) (override-redirect) (font-parameter . \"-*-Iosevka-semilight-*-*-*-16-*-*-*-*-*-*-*\")
             (font . \"-CYEL-Iosevka-normal-normal-normal-*-16-*-*-*-m-0-iso10646-1\") (border-width . 0) (internal-border-width . 1)
             (right-divider-width . 1) (bottom-divider-width . 1) (vertical-scroll-bars) (horizontal-scroll-bars)
             (foreground-color . \"#303030\") (background-color . \"#E4E4E4\") (mouse-color . \"black\") (border-color . \"black\")
             (screen-gamma) (line-spacing . 0) (left-fringe . 4) (right-fringe . 4) (no-special-glyphs . t)
             (scroll-bar-foreground . \"black\") (scroll-bar-background) (min-width . 90) (min-height . 10)
             (menu-bar-lines . 0) (tab-bar-lines . 0) (height . 18) (tool-bar-lines . 0) (title) (wait-for-wm . t)
             (tool-bar-position . top) (inhibit-double-buffering) (icon-type . t) (auto-raise) (auto-lower)
             (cursor-type) (scroll-bar-width . 16) (scroll-bar-height . 16) (alpha) (no-focus-on-map) (no-accept-focus . t)
             (fullscreen) (visibility) (skip-taskbar) (z-group) (keep-ratio nil)
             (posframe-buffer \" *ivy-posframe-buffer*\" . #<buffer  *ivy-posframe-buffer*>)
             (no-other-frame . t) (desktop-dont-save . t) (display-type . color) (background-mode . light)
             (cursor-color . \"#D7AF00\") (posframe-hidehandler)
             (posframe-parent-buffer \"*doom*\" . #<buffer *doom*>)
             (frameset--id . \"4E95-0F1B-C33C-A509\") (frameset--parent-frame . \"F962-4A16-16C0-C858\")
             (frameset--mini nil . \"F962-4A16-16C0-C858\") (frameset--text-pixel-width . 728)
             (frameset--text-pixel-height . 378) (name . \"\") (width . 91) (modeline . t) (unsplittable . t)
             (left . 218) (top . 0) (icon-name) (display . \":0\") (explicit-name))
            ((min-height . 4) (min-width . 10) (min-height-ignore . 1) (min-width-ignore . 3) (min-height-safe . 1)
             (min-width-safe . 2) (min-pixel-height . 84) (min-pixel-width . 80) (min-pixel-height-ignore . 21)
             (min-pixel-width-ignore . 24) (min-pixel-height-safe . 21) (min-pixel-width-safe . 16))
            leaf
            (last . t) (pixel-width . 744) (pixel-height . 378) (total-width . 93) (total-height . 18) (normal-height . 1.0) (normal-width . 1.0)
            (parameters
             (mode-line-format . none)
             (better-jumper-struct . #s(better-jumper-jump-list-struct (0 0 . [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 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 nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil]) -1))
             (burly-url . \"emacs+burly+name://? *ivy-posframe-buffer*\"))
            (buffer \" *ivy-posframe-buffer*\" (selected) (hscroll . 0) (fringes 4 4 t nil) (margins nil)
                    (scroll-bars nil 0 t nil 0 t nil) (vscroll . 0) (dedicated . t) (point . 1) (start . 1))
            (prev-buffers (\"*scratch*\" 1 1)))
           (((minibuffer . t)
             (undecorated) (override-redirect) (font . \"-CYEL-Iosevka-normal-normal-normal-*-16-*-*-*-m-0-iso10646-1\")
             (border-width . 0) (internal-border-width . 0) (right-divider-width . 1) (bottom-divider-width . 1)
             (vertical-scroll-bars) (horizontal-scroll-bars) (foreground-color . \"#303030\") (background-color . \"#EEEEEE\")
             (mouse-color . \"black\") (border-color . \"black\") (screen-gamma) (line-spacing) (left-fringe . 4)
             (right-fringe . 4) (no-special-glyphs) (scroll-bar-foreground . \"black\") (scroll-bar-background) (menu-bar-lines . 0)
             (tab-bar-lines . 1) (height . 48) (tool-bar-lines . 0) (title) (wait-for-wm . t)
             (tool-bar-position . top) (inhibit-double-buffering) (icon-type . t) (auto-raise) (auto-lower)
             (cursor-type . box) (scroll-bar-width . 16) (scroll-bar-height . 16) (alpha) (no-focus-on-map)
             (no-accept-focus) (fullscreen) (visibility . t) (skip-taskbar) (z-group) (display-type . color)
             (background-mode . light) (cursor-color . \"#D7AF00\") (environment) (last-focus-update . t)
             (tabs (tab (name . \"main\") (explicit-name) (time . 1606583139.78676)
                        (ws ((min-height . 4) (min-width . 35) (min-height-ignore . 3) (min-width-ignore . 35)
                             (min-height-safe . 1) (min-width-safe . 2) (min-pixel-height . 84) (min-pixel-width . 280)
                             (min-pixel-height-ignore . 63) (min-pixel-width-ignore . 280) (min-pixel-height-safe . 21)
                             (min-pixel-width-safe . 16))
                            leaf
                            (pixel-width . 1182) (pixel-height . 1011) (total-width . 147) (total-height . 48)
                            (normal-height . 1.0) (normal-width . 1.0) (parameters (better-jumper-struct))
                            (buffer \"*doom*\" (selected . t) (hscroll . 0) (fringes 0 0 nil nil)
                                    (margins 33) (scroll-bars nil 0 t nil 0 t nil) (vscroll . 0)
                                    (dedicated) (point . 1) (start . 1))
                            (prev-buffers (\"*scratch*\" 1 1))))
                   (current-tab (name . \"emacs_rs\") (explicit-name . t)))
             (bufler-workspace-path \"emacs_rs\")
             (bufler-workspace-path-formatted . #(\"emacs_rs\" 0 8 (face outline-1)))
             (name . #(\"Workspace: emacs_rs\" 11 19 (face outline-1)))
             (frameset--id . \"F962-4A16-16C0-C858\")
             (frameset--mini t . t) (frameset--text-pixel-width . 1174) (frameset--text-pixel-height . 1011)
             (width . 146) (modeline . t) (unsplittable) (left . 0) (top . 0) (icon-name)
             (display . \":0\") (explicit-name . t))
            ((min-height . 4) (min-width . 10) (min-height-ignore . 4) (min-width-ignore . 3) (min-height-safe . 1)
             (min-width-safe . 2) (min-pixel-height . 84) (min-pixel-width . 80) (min-pixel-height-ignore . 84)
             (min-pixel-width-ignore . 24) (min-pixel-height-safe . 21) (min-pixel-width-safe . 16))
            leaf
            (pixel-width . 1182) (pixel-height . 990) (total-width . 147) (total-height . 47) (normal-height . 1.0) (normal-width . 1.0)
            (parameters
             (better-jumper-struct . #s(better-jumper-jump-list-struct (0 1 . [(\"/home/gagbo/dev/perso/emacs_rs/src/lib.rs\" 765 \"olfofe\") 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 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 nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil]) -1))
             (burly-url . \"emacs+burly+bookmark://lib.rs?filename=%22~%2Fdev%2Fperso%2Femacs_rs%2Fsrc%2Flib.rs%22&front-context-string=%22%2F%2F%20%20the%20Free%20Sof%22&rear-context-string=%22as%20published%20by%0A%22&position=187&defaults=%28%22lib.rs%22%29\"))
            (buffer \"lib.rs\" (selected . t) (hscroll . 0) (fringes 4 4 t nil) (margins nil)
                    (scroll-bars nil 0 t nil 0 t nil) (vscroll . 0) (dedicated)
                    (point . 187) (start . 1)) (prev-buffers (\"*doom*\" 1 1))))]
alphapapa commented 3 years ago

Hi Gerry,

I'm not sure I understand. Why would posframes be getting saved, especially ones from ivy-posframe? I must be missing something.

Anyway, do you mean that there's an un-read-able value in one of the frame or window parameters? If so, we should probably filter it out, unless it's absolutely necessary to restore it, in which case we'd have to figure out a workaround. I'd rather avoid adding workarounds for specific params though, so only if absolutely necessary. :)

gagbo commented 3 years ago

I'm not sure I understand. Why would posframes be getting saved, especially ones from ivy-posframe? I must be missing something.

I agree that they shouldn't be saved. I think it's saved because when I hit RET to give the burly-frames bookmark name, the posframe is still present. Is there a way to filter it out in burly-frames-url ?

Anyway, do you mean that there's an un-read-able value in one of the frame or window parameters? If so, we should probably filter it out, unless it's absolutely necessary to restore it, in which case we'd have to figure out a workaround. I'd rather avoid adding workarounds for specific params though, so only if absolutely necessary. :)

I think that's the issue. From what I see, the possible culprits are :

Maybe a solution would be to check on save (during bufler-frames-url) whether the representation of a parameter starts with #, and ignore it at that point (maybe adding a warning in *Messages* to tell that those variables can't be saved because they just can't be restored)

alphapapa commented 3 years ago

I'm not sure I understand. Why would posframes be getting saved, especially ones from ivy-posframe? I must be missing something.

I agree that they shouldn't be saved. I think it's saved because when I hit RET to give the burly-frames bookmark name, the posframe is still present. Is there a way to filter it out in burly-frames-url ?

Yeah, that explains it. Well, I guess we'll have to add something like burly-frame-predicate to filter out certain frames before they're saved.

Anyway, do you mean that there's an un-read-able value in one of the frame or window parameters? If so, we should probably filter it out, unless it's absolutely necessary to restore it, in which case we'd have to figure out a workaround. I'd rather avoid adding workarounds for specific params though, so only if absolutely necessary. :)

I think that's the issue. From what I see, the possible culprits are : ... (posframe-parent-buffer \"*doom*\" . #<buffer *doom*>)

That's almost certainly the problem, because buffers can't be read. I guess that filtering out the posframe will solve that problem as well, but in case it doesn't, you should be able to filter out that frame parameter already using the existing option.

Maybe a solution would be to check on save (during bufler-frames-url) whether the representation of a parameter starts with #, and ignore it at that point (maybe adding a warning in *Messages* to tell that those variables can't be saved because they just can't be restored)

I don't think that would be correct, because not all values with #-prefixed printable syntax are unreadable.

alphapapa commented 3 years ago

BTW, there is already code to remove buffers from properties in bookmarks, but it must not be catching the one that's causing this.

https://github.com/alphapapa/burly.el/blob/7c03d63500b3164d157f5760619e25d731d68802/burly.el#L359

gagbo commented 3 years ago

BTW, there is already code to remove buffers from properties in bookmarks, but it must not be catching the one that's causing this.

That's because the value is not a buffer but a pair which cdr is a buffer. So I need to add it in the blacklist of parameters

alphapapa commented 3 years ago

If necessary, okay, but we should probably filter out posframes instead.

gagbo commented 3 years ago

Oh sure, for posframes filtering the whole frame is the solution, I was thinking about other packages that later might use the same trick