Closed hjozwiak closed 3 months ago
When I try the same, it works for me:
Wrird. Do you know what options for the server I misconfigured?
I have no idea what's going on. The only thing I can suggest is to re-evaluate the ement-directory.el
file so the code is interpreted, then reproduce the problem, and maybe the backtrace will be more informative. You might need to go deeper and re-evaluate other source files too before getting to where the error is actually signaled. If you are able, using Edebug could also lead to the problem, but it's a bit of a rabbit hole.
Here's an idea, though: evaluate this and see if it solves the problem:
(ement-directory-define-column "Name" (:max-width 25)
(cl-labels ((room (id session)
(cl-find id (ement-session-rooms session)
:key #'ement-room-id :test #'equal)))
(pcase-let* (((map name ('room_id id) ('room_type type)) item)
((map session) ement-directory-etc)
;; We only lookup the room if we need to.
(room)
(face (pcase type
("m.space" 'ement-room-list-space)
(_ (if (and (setf room (room id session))
(ement--room-direct-p room session))
'ement-room-list-direct
'ement-room-list-name))))
(name (or name
(when (or room (setf room (room id session)))
(ement--room-display-name room))
"")))
(propertize name 'face face))))
@hjozwiak I'm guessing that form in the previous comment will fix the problem. It seems to for me (assuming I was able to reproduce the same problem). Please let me know if it fixes it for you.
I reloaded all the files as their source form and am still getting a similar error. Here is the new traceback from the sources.
Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p nil)
taxy-magit-section-format-header(nil (("ID" (align) (formatter . ement-directory-column-format-id)) ("Topic" (align) (formatter . ement-directory-column-format-topic)) ("Size" (align . right) (formatter . ement-directory-column-format-size)) ("Alias" (align) (formatter . ement-directory-column-format-alias)) ("Name" (align) (formatter . ement-directory-column-format-name)) (#("✓" 0 1 (help-echo "Joined")) (align) (formatter . ement-directory-column-format-✓))))
(setq header-line-format (taxy-magit-section-format-header column-sizes ement-directory-column-formatters))
(progn (setq taxy (taxy-sort* #'string> #'taxy-name (taxy-sort #'> --cl-size-- (taxy-fill (cl-coerce rooms 'list) taxy)))) (let* ((p (assq 'taxy ement-directory-etc)) (v taxy)) (progn (if p (setcdr p v) (setq ement-directory-etc (cons (setq p (cons ... v)) ement-directory-etc))) v)) (setq format-cons (taxy-magit-section-format-items ement-directory-columns ement-directory-column-formatters taxy)) (let* ((p (assq 'format-table ement-directory-etc)) (v (car format-cons))) (progn (if p (setcdr p v) (setq ement-directory-etc (cons (setq p (cons ... v)) ement-directory-etc))) v)) (setq column-sizes (cdr format-cons)) (setq header-line-format (taxy-magit-section-format-header column-sizes ement-directory-column-formatters)) (setq window-start (if (get-buffer-window buffer-name) (window-start (get-buffer-window buffer-name)) 0)))
(progn (progn (setq taxy (taxy-sort* #'string> #'taxy-name (taxy-sort #'> --cl-size-- (taxy-fill (cl-coerce rooms 'list) taxy)))) (let* ((p (assq 'taxy ement-directory-etc)) (v taxy)) (progn (if p (setcdr p v) (setq ement-directory-etc (cons (setq p ...) ement-directory-etc))) v)) (setq format-cons (taxy-magit-section-format-items ement-directory-columns ement-directory-column-formatters taxy)) (let* ((p (assq 'format-table ement-directory-etc)) (v (car format-cons))) (progn (if p (setcdr p v) (setq ement-directory-etc (cons (setq p ...) ement-directory-etc))) v)) (setq column-sizes (cdr format-cons)) (setq header-line-format (taxy-magit-section-format-header column-sizes ement-directory-column-formatters)) (setq window-start (if (get-buffer-window buffer-name) (window-start (get-buffer-window buffer-name)) 0))) (delete-all-overlays) (erase-buffer) (save-excursion (taxy-magit-section-insert taxy :items 'first :initial-depth 0)) (goto-char pos) (if (and section-ident (magit-get-section section-ident)) (progn (goto-char (eieio-oref (magit-get-section section-ident) 'start)))))
(let* ((taxy (if append-p (alist-get 'taxy ement-directory-etc) (funcall --cl-make-fn-- :name root-section-name :take (taxy-make-take-function keys ement-directory-keys)))) (taxy-magit-section-insert-indent-items nil) (inhibit-read-only t) (pos (point)) (section-ident (if (magit-current-section) (progn (magit-section-ident (magit-current-section))))) (format-cons)) (progn (progn (setq taxy (taxy-sort* #'string> #'taxy-name (taxy-sort #'> --cl-size-- (taxy-fill (cl-coerce rooms ...) taxy)))) (let* ((p (assq 'taxy ement-directory-etc)) (v taxy)) (progn (if p (setcdr p v) (setq ement-directory-etc (cons ... ement-directory-etc))) v)) (setq format-cons (taxy-magit-section-format-items ement-directory-columns ement-directory-column-formatters taxy)) (let* ((p (assq 'format-table ement-directory-etc)) (v (car format-cons))) (progn (if p (setcdr p v) (setq ement-directory-etc (cons ... ement-directory-etc))) v)) (setq column-sizes (cdr format-cons)) (setq header-line-format (taxy-magit-section-format-header column-sizes ement-directory-column-formatters)) (setq window-start (if (get-buffer-window buffer-name) (window-start (get-buffer-window buffer-name)) 0))) (delete-all-overlays) (erase-buffer) (save-excursion (taxy-magit-section-insert taxy :items 'first :initial-depth 0)) (goto-char pos) (if (and section-ident (magit-get-section section-ident)) (progn (goto-char (eieio-oref (magit-get-section section-ident) 'start))))))
(save-current-buffer (set-buffer (get-buffer-create buffer-name)) (if (eq 'ement-directory-mode major-mode) nil (ement-directory-mode)) (if init-fn (progn (funcall init-fn))) (let* ((taxy (if append-p (alist-get 'taxy ement-directory-etc) (funcall --cl-make-fn-- :name root-section-name :take (taxy-make-take-function keys ement-directory-keys)))) (taxy-magit-section-insert-indent-items nil) (inhibit-read-only t) (pos (point)) (section-ident (if (magit-current-section) (progn (magit-section-ident (magit-current-section))))) (format-cons)) (progn (progn (setq taxy (taxy-sort* #'string> #'taxy-name (taxy-sort #'> --cl-size-- (taxy-fill ... taxy)))) (let* ((p (assq ... ement-directory-etc)) (v taxy)) (progn (if p (setcdr p v) (setq ement-directory-etc ...)) v)) (setq format-cons (taxy-magit-section-format-items ement-directory-columns ement-directory-column-formatters taxy)) (let* ((p (assq ... ement-directory-etc)) (v (car format-cons))) (progn (if p (setcdr p v) (setq ement-directory-etc ...)) v)) (setq column-sizes (cdr format-cons)) (setq header-line-format (taxy-magit-section-format-header column-sizes ement-directory-column-formatters)) (setq window-start (if (get-buffer-window buffer-name) (window-start (get-buffer-window buffer-name)) 0))) (delete-all-overlays) (erase-buffer) (save-excursion (taxy-magit-section-insert taxy :items 'first :initial-depth 0)) (goto-char pos) (if (and section-ident (magit-get-section section-ident)) (progn (goto-char (eieio-oref (magit-get-section section-ident) 'start)))))))
(let (--cl-make-fn--) (setq --cl-make-fn-- #'(lambda (&rest args) "\n\n(fn &rest ARGS)" (apply #'make-taxy-magit-section :make --cl-make-fn-- :format-fn --cl-format-item-- :level-indent ement-room-list-level-indent :item-indent 2 args))) (save-current-buffer (set-buffer (get-buffer-create buffer-name)) (if (eq 'ement-directory-mode major-mode) nil (ement-directory-mode)) (if init-fn (progn (funcall init-fn))) (let* ((taxy (if append-p (alist-get 'taxy ement-directory-etc) (funcall --cl-make-fn-- :name root-section-name :take (taxy-make-take-function keys ement-directory-keys)))) (taxy-magit-section-insert-indent-items nil) (inhibit-read-only t) (pos (point)) (section-ident (if (magit-current-section) (progn (magit-section-ident ...)))) (format-cons)) (progn (progn (setq taxy (taxy-sort* #'string> #'taxy-name (taxy-sort ... --cl-size-- ...))) (let* ((p ...) (v taxy)) (progn (if p ... ...) v)) (setq format-cons (taxy-magit-section-format-items ement-directory-columns ement-directory-column-formatters taxy)) (let* ((p ...) (v ...)) (progn (if p ... ...) v)) (setq column-sizes (cdr format-cons)) (setq header-line-format (taxy-magit-section-format-header column-sizes ement-directory-column-formatters)) (setq window-start (if (get-buffer-window buffer-name) (window-start ...) 0))) (delete-all-overlays) (erase-buffer) (save-excursion (taxy-magit-section-insert taxy :items 'first :initial-depth 0)) (goto-char pos) (if (and section-ident (magit-get-section section-ident)) (progn (goto-char (eieio-oref ... ...))))))) (display-buffer buffer-name display-buffer-action) (if (get-buffer-window buffer-name) (progn (set-window-start (get-buffer-window buffer-name) window-start))) (set-buffer buffer-name))
(let* ((--cl-format-item-- #'(lambda (item) (gethash item (alist-get 'format-table ement-directory-etc)))) (--cl-size-- #'(lambda (item) (progn (ignore (mapp item)) (let* (...) (let ... size))))) (--cl-t<nil-- #'(lambda (a b) (and a (not b)))) (--cl-t>nil-- #'(lambda (a b) (and (not a) b)))) (let (--cl-make-fn--) (setq --cl-make-fn-- #'(lambda (&rest args) "\n\n(fn &rest ARGS)" (apply #'make-taxy-magit-section :make --cl-make-fn-- :format-fn --cl-format-item-- :level-indent ement-room-list-level-indent :item-indent 2 args))) (save-current-buffer (set-buffer (get-buffer-create buffer-name)) (if (eq 'ement-directory-mode major-mode) nil (ement-directory-mode)) (if init-fn (progn (funcall init-fn))) (let* ((taxy (if append-p (alist-get ... ement-directory-etc) (funcall --cl-make-fn-- :name root-section-name :take ...))) (taxy-magit-section-insert-indent-items nil) (inhibit-read-only t) (pos (point)) (section-ident (if (magit-current-section) (progn ...))) (format-cons)) (progn (progn (setq taxy (taxy-sort* ... ... ...)) (let* (... ...) (progn ... v)) (setq format-cons (taxy-magit-section-format-items ement-directory-columns ement-directory-column-formatters taxy)) (let* (... ...) (progn ... v)) (setq column-sizes (cdr format-cons)) (setq header-line-format (taxy-magit-section-format-header column-sizes ement-directory-column-formatters)) (setq window-start (if ... ... 0))) (delete-all-overlays) (erase-buffer) (save-excursion (taxy-magit-section-insert taxy :items 'first :initial-depth 0)) (goto-char pos) (if (and section-ident (magit-get-section section-ident)) (progn (goto-char ...)))))) (display-buffer buffer-name display-buffer-action) (if (get-buffer-window buffer-name) (progn (set-window-start (get-buffer-window buffer-name) window-start))) (set-buffer buffer-name)))
(let (column-sizes window-start) (let* ((--cl-format-item-- #'(lambda (item) (gethash item (alist-get ... ement-directory-etc)))) (--cl-size-- #'(lambda (item) (progn (ignore ...) (let* ... ...)))) (--cl-t<nil-- #'(lambda (a b) (and a (not b)))) (--cl-t>nil-- #'(lambda (a b) (and (not a) b)))) (let (--cl-make-fn--) (setq --cl-make-fn-- #'(lambda (&rest args) "\n\n(fn &rest ARGS)" (apply #'make-taxy-magit-section :make --cl-make-fn-- :format-fn --cl-format-item-- :level-indent ement-room-list-level-indent :item-indent 2 args))) (save-current-buffer (set-buffer (get-buffer-create buffer-name)) (if (eq 'ement-directory-mode major-mode) nil (ement-directory-mode)) (if init-fn (progn (funcall init-fn))) (let* ((taxy (if append-p ... ...)) (taxy-magit-section-insert-indent-items nil) (inhibit-read-only t) (pos (point)) (section-ident (if ... ...)) (format-cons)) (progn (progn (setq taxy ...) (let* ... ...) (setq format-cons ...) (let* ... ...) (setq column-sizes ...) (setq header-line-format ...) (setq window-start ...)) (delete-all-overlays) (erase-buffer) (save-excursion (taxy-magit-section-insert taxy :items ... :initial-depth 0)) (goto-char pos) (if (and section-ident ...) (progn ...))))) (display-buffer buffer-name display-buffer-action) (if (get-buffer-window buffer-name) (progn (set-window-start (get-buffer-window buffer-name) window-start))) (set-buffer buffer-name))))
(progn (let ((--cl-keys-- --cl-rest--)) (while --cl-keys-- (cond ((memq (car --cl-keys--) '(:init-fn :append-p :buffer-name :root-section-name :keys :display-buffer-action :allow-other-keys)) (if (cdr --cl-keys--) nil (error "Missing argument for %s" (car --cl-keys--))) (setq --cl-keys-- (cdr (cdr --cl-keys--)))) ((car (cdr (memq ... --cl-rest--))) (setq --cl-keys-- nil)) (t (error "Keyword argument %s not one of (:init-fn :append-p :buffer-name :root-section-name :keys :display-buffer-action)" (car --cl-keys--)))))) (let (column-sizes window-start) (let* ((--cl-format-item-- #'(lambda (item) (gethash item ...))) (--cl-size-- #'(lambda (item) (progn ... ...))) (--cl-t<nil-- #'(lambda (a b) (and a ...))) (--cl-t>nil-- #'(lambda (a b) (and ... b)))) (let (--cl-make-fn--) (setq --cl-make-fn-- #'(lambda (&rest args) "\n\n(fn &rest ARGS)" (apply ... :make --cl-make-fn-- :format-fn --cl-format-item-- :level-indent ement-room-list-level-indent :item-indent 2 args))) (save-current-buffer (set-buffer (get-buffer-create buffer-name)) (if (eq 'ement-directory-mode major-mode) nil (ement-directory-mode)) (if init-fn (progn (funcall init-fn))) (let* ((taxy ...) (taxy-magit-section-insert-indent-items nil) (inhibit-read-only t) (pos ...) (section-ident ...) (format-cons)) (progn (progn ... ... ... ... ... ... ...) (delete-all-overlays) (erase-buffer) (save-excursion ...) (goto-char pos) (if ... ...)))) (display-buffer buffer-name display-buffer-action) (if (get-buffer-window buffer-name) (progn (set-window-start (get-buffer-window buffer-name) window-start))) (set-buffer buffer-name)))))
(let* ((init-fn (car (cdr (plist-member --cl-rest-- ':init-fn)))) (append-p (car (cdr (plist-member --cl-rest-- ':append-p)))) (buffer-name (car (cdr (or (plist-member --cl-rest-- ':buffer-name) '(nil "*Ement Directory*"))))) (root-section-name (car (cdr (or (plist-member --cl-rest-- ':root-section-name) '(nil "Ement Directory"))))) (keys (car (cdr (or (plist-member --cl-rest-- ':keys) (list nil ement-directory-default-keys))))) (display-buffer-action (car (cdr (or (plist-member --cl-rest-- ':display-buffer-action) '(nil ...)))))) (progn (let ((--cl-keys-- --cl-rest--)) (while --cl-keys-- (cond ((memq (car --cl-keys--) '...) (if (cdr --cl-keys--) nil (error "Missing argument for %s" ...)) (setq --cl-keys-- (cdr ...))) ((car (cdr ...)) (setq --cl-keys-- nil)) (t (error "Keyword argument %s not one of (:init-fn :append-p :buffer-name :root-section-name :keys :display-buffer-action)" (car --cl-keys--)))))) (let (column-sizes window-start) (let* ((--cl-format-item-- #'(lambda ... ...)) (--cl-size-- #'(lambda ... ...)) (--cl-t<nil-- #'(lambda ... ...)) (--cl-t>nil-- #'(lambda ... ...))) (let (--cl-make-fn--) (setq --cl-make-fn-- #'(lambda ... "\n\n(fn &rest ARGS)" ...)) (save-current-buffer (set-buffer (get-buffer-create buffer-name)) (if (eq ... major-mode) nil (ement-directory-mode)) (if init-fn (progn ...)) (let* (... ... ... ... ... ...) (progn ... ... ... ... ... ...))) (display-buffer buffer-name display-buffer-action) (if (get-buffer-window buffer-name) (progn (set-window-start ... window-start))) (set-buffer buffer-name))))))
ement-directory--view([] :append-p nil :buffer-name "*Ement Directory: jupiterbroadcasting.com*" :root-section-name "Ement Directory: jupiterbroadcasting.com" :init-fn (closure ... nil ... ... ...))
(let ((rooms x136) (next-batch x137) (remaining x138)) (ement-directory--view rooms :append-p since :buffer-name (format "*Ement Directory: %s*" server) :root-section-name (format "Ement Directory: %s" server) :init-fn #'(lambda nil (progn (let* ((p ...) (v server)) (progn (if p ... ...) v)) (let* ((p ...) (v session)) (progn (if p ... ...) v)) (let* ((p ...) (v next-batch)) (progn (if p ... ...) v)) (let* ((p ...) (v limit)) (progn (if p ... ...) v))) (set (make-local-variable 'revert-buffer-function) revert-function) (if remaining (progn (message (substitute-command-keys "%s rooms remaining (use \\[ement-directory-next] to fetch more)") remaining))))))
(let* ((x136 (map-elt results 'chunk nil)) (x137 (map-elt results 'next_batch nil)) (x138 (map-elt results 'total_room_count_estimate nil))) (let ((rooms x136) (next-batch x137) (remaining x138)) (ement-directory--view rooms :append-p since :buffer-name (format "*Ement Directory: %s*" server) :root-section-name (format "Ement Directory: %s" server) :init-fn #'(lambda nil (progn (let* (... ...) (progn ... v)) (let* (... ...) (progn ... v)) (let* (... ...) (progn ... v)) (let* (... ...) (progn ... v))) (set (make-local-variable 'revert-buffer-function) revert-function) (if remaining (progn (message ... remaining)))))))
(progn (ignore (mapp results)) (let* ((x136 (map-elt results 'chunk nil)) (x137 (map-elt results 'next_batch nil)) (x138 (map-elt results 'total_room_count_estimate nil))) (let ((rooms x136) (next-batch x137) (remaining x138)) (ement-directory--view rooms :append-p since :buffer-name (format "*Ement Directory: %s*" server) :root-section-name (format "Ement Directory: %s" server) :init-fn #'(lambda nil (progn (let* ... ...) (let* ... ...) (let* ... ...) (let* ... ...)) (set (make-local-variable ...) revert-function) (if remaining (progn ...)))))))
(closure (... ... ... ... ...) (results) (progn ... ...))(((chunk . []) (total_room_count_estimate . 0)))
#f(compiled-function () #<bytecode -0xae7be07b8e57127>)()
plz--respond(#<process plz-request-curl<1>> #<buffer *plz-request-curl*> "finished\n")
apply(plz--respond (#<process plz-request-curl<1>> #<buffer *plz-request-curl*> "finished\n"))
#<subr timer-event-handler>([t 25983 60216 522102 nil plz--respond (#<process plz-request-curl<1>> #<buffer *plz-request-curl*> "finished\n") nil 271000 nil])
ad-Advice-timer-event-handler(#<subr timer-event-handler> [t 25983 60216 522102 nil plz--respond (#<process plz-request-curl<1>> #<buffer *plz-request-curl*> "finished\n") nil 271000 nil])
apply(ad-Advice-timer-event-handler #<subr timer-event-handler> [t 25983 60216 522102 nil plz--respond (#<process plz-request-curl<1>> #<buffer *plz-request-curl*> "finished\n") nil 271000 nil])
timer-event-handler([t 25983 60216 522102 nil plz--respond (#<process plz-request-curl<1>> #<buffer *plz-request-curl*> "finished\n") nil 271000 nil])
@hjozwiak Thanks. Next I'll need you to evaluate the taxy-magit-section
library's source file and retrigger the bug. Some value is unexpectedly nil, but I can't tell which one.
Also, did you evaluate the code in this comment and see if it helps? https://github.com/alphapapa/ement.el/issues/248#issuecomment-1859571469
Here is the trackback, with both ement and taxy-magit-section loaded from source.
Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p nil)
1+(nil)
(format " %%%s%ss" first-column-align (1+ (cdr (car column-sizes))))
(format (format " %%%s%ss" first-column-align (1+ (cdr (car column-sizes)))) (car (car column-sizes)))
(concat (format (format " %%%s%ss" first-column-align (1+ (cdr (car column-sizes)))) (car (car column-sizes))) (let* ((--cl-var-- (cdr column-sizes)) (size nil) (name nil) (column-alist nil) (align nil) (spec nil) (--cl-var-- "") (--cl-var-- t)) (while (consp --cl-var--) (progn (setq size (car --cl-var--)) (setq name (car-safe (prog1 size (setq size ...))))) (setq column-alist (alist-get name formatters nil nil #'equal)) (setq align (let* ((val (alist-get ... column-alist))) (cond ((memq val ...) (let nil "-")) ((eq val ...) (let nil "")) (t (let ... ...))))) (setq spec (format " %%%s%ss" align size)) (setq --cl-var-- (concat --cl-var-- (format spec name))) (setq --cl-var-- (cdr --cl-var--)) (setq --cl-var-- nil)) --cl-var--))
(let* ((first-column-name (car (car column-sizes))) (first-column-alist (alist-get first-column-name formatters nil nil #'equal)) (first-column-align (let* ((val (alist-get 'align first-column-alist))) (cond ((memq val '...) (let nil "-")) ((eq val 'right) (let nil "")) (t (let (...) (error "No clause matching `%S'" x98))))))) (concat (format (format " %%%s%ss" first-column-align (1+ (cdr (car column-sizes)))) (car (car column-sizes))) (let* ((--cl-var-- (cdr column-sizes)) (size nil) (name nil) (column-alist nil) (align nil) (spec nil) (--cl-var-- "") (--cl-var-- t)) (while (consp --cl-var--) (progn (setq size (car --cl-var--)) (setq name (car-safe (prog1 size ...)))) (setq column-alist (alist-get name formatters nil nil #'equal)) (setq align (let* ((val ...)) (cond (... ...) (... ...) (t ...)))) (setq spec (format " %%%s%ss" align size)) (setq --cl-var-- (concat --cl-var-- (format spec name))) (setq --cl-var-- (cdr --cl-var--)) (setq --cl-var-- nil)) --cl-var--)))
taxy-magit-section-format-header(nil (("ID" (align) (formatter . ement-directory-column-format-id)) ("Topic" (align) (formatter . ement-directory-column-format-topic)) ("Size" (align . right) (formatter . ement-directory-column-format-size)) ("Alias" (align) (formatter . ement-directory-column-format-alias)) ("Name" (align) (formatter . ement-directory-column-format-name)) (#("✓" 0 1 (help-echo "Joined")) (align) (formatter . ement-directory-column-format-✓))))
(setq header-line-format (taxy-magit-section-format-header column-sizes ement-directory-column-formatters))
(progn (setq taxy (taxy-sort* #'string> #'taxy-name (taxy-sort #'> --cl-size-- (taxy-fill (cl-coerce rooms 'list) taxy)))) (let* ((p (assq 'taxy ement-directory-etc)) (v taxy)) (progn (if p (setcdr p v) (setq ement-directory-etc (cons (setq p (cons ... v)) ement-directory-etc))) v)) (setq format-cons (taxy-magit-section-format-items ement-directory-columns ement-directory-column-formatters taxy)) (let* ((p (assq 'format-table ement-directory-etc)) (v (car format-cons))) (progn (if p (setcdr p v) (setq ement-directory-etc (cons (setq p (cons ... v)) ement-directory-etc))) v)) (setq column-sizes (cdr format-cons)) (setq header-line-format (taxy-magit-section-format-header column-sizes ement-directory-column-formatters)) (setq window-start (if (get-buffer-window buffer-name) (window-start (get-buffer-window buffer-name)) 0)))
(progn (progn (setq taxy (taxy-sort* #'string> #'taxy-name (taxy-sort #'> --cl-size-- (taxy-fill (cl-coerce rooms 'list) taxy)))) (let* ((p (assq 'taxy ement-directory-etc)) (v taxy)) (progn (if p (setcdr p v) (setq ement-directory-etc (cons (setq p ...) ement-directory-etc))) v)) (setq format-cons (taxy-magit-section-format-items ement-directory-columns ement-directory-column-formatters taxy)) (let* ((p (assq 'format-table ement-directory-etc)) (v (car format-cons))) (progn (if p (setcdr p v) (setq ement-directory-etc (cons (setq p ...) ement-directory-etc))) v)) (setq column-sizes (cdr format-cons)) (setq header-line-format (taxy-magit-section-format-header column-sizes ement-directory-column-formatters)) (setq window-start (if (get-buffer-window buffer-name) (window-start (get-buffer-window buffer-name)) 0))) (delete-all-overlays) (erase-buffer) (save-excursion (taxy-magit-section-insert taxy :items 'first :initial-depth 0)) (goto-char pos) (if (and section-ident (magit-get-section section-ident)) (progn (goto-char (eieio-oref (magit-get-section section-ident) 'start)))))
(let* ((taxy (if append-p (alist-get 'taxy ement-directory-etc) (funcall --cl-make-fn-- :name root-section-name :take (taxy-make-take-function keys ement-directory-keys)))) (taxy-magit-section-insert-indent-items nil) (inhibit-read-only t) (pos (point)) (section-ident (if (magit-current-section) (progn (magit-section-ident (magit-current-section))))) (format-cons)) (progn (progn (setq taxy (taxy-sort* #'string> #'taxy-name (taxy-sort #'> --cl-size-- (taxy-fill (cl-coerce rooms ...) taxy)))) (let* ((p (assq 'taxy ement-directory-etc)) (v taxy)) (progn (if p (setcdr p v) (setq ement-directory-etc (cons ... ement-directory-etc))) v)) (setq format-cons (taxy-magit-section-format-items ement-directory-columns ement-directory-column-formatters taxy)) (let* ((p (assq 'format-table ement-directory-etc)) (v (car format-cons))) (progn (if p (setcdr p v) (setq ement-directory-etc (cons ... ement-directory-etc))) v)) (setq column-sizes (cdr format-cons)) (setq header-line-format (taxy-magit-section-format-header column-sizes ement-directory-column-formatters)) (setq window-start (if (get-buffer-window buffer-name) (window-start (get-buffer-window buffer-name)) 0))) (delete-all-overlays) (erase-buffer) (save-excursion (taxy-magit-section-insert taxy :items 'first :initial-depth 0)) (goto-char pos) (if (and section-ident (magit-get-section section-ident)) (progn (goto-char (eieio-oref (magit-get-section section-ident) 'start))))))
(save-current-buffer (set-buffer (get-buffer-create buffer-name)) (if (eq 'ement-directory-mode major-mode) nil (ement-directory-mode)) (if init-fn (progn (funcall init-fn))) (let* ((taxy (if append-p (alist-get 'taxy ement-directory-etc) (funcall --cl-make-fn-- :name root-section-name :take (taxy-make-take-function keys ement-directory-keys)))) (taxy-magit-section-insert-indent-items nil) (inhibit-read-only t) (pos (point)) (section-ident (if (magit-current-section) (progn (magit-section-ident (magit-current-section))))) (format-cons)) (progn (progn (setq taxy (taxy-sort* #'string> #'taxy-name (taxy-sort #'> --cl-size-- (taxy-fill ... taxy)))) (let* ((p (assq ... ement-directory-etc)) (v taxy)) (progn (if p (setcdr p v) (setq ement-directory-etc ...)) v)) (setq format-cons (taxy-magit-section-format-items ement-directory-columns ement-directory-column-formatters taxy)) (let* ((p (assq ... ement-directory-etc)) (v (car format-cons))) (progn (if p (setcdr p v) (setq ement-directory-etc ...)) v)) (setq column-sizes (cdr format-cons)) (setq header-line-format (taxy-magit-section-format-header column-sizes ement-directory-column-formatters)) (setq window-start (if (get-buffer-window buffer-name) (window-start (get-buffer-window buffer-name)) 0))) (delete-all-overlays) (erase-buffer) (save-excursion (taxy-magit-section-insert taxy :items 'first :initial-depth 0)) (goto-char pos) (if (and section-ident (magit-get-section section-ident)) (progn (goto-char (eieio-oref (magit-get-section section-ident) 'start)))))))
(let (--cl-make-fn--) (setq --cl-make-fn-- #'(lambda (&rest args) "\n\n(fn &rest ARGS)" (apply #'make-taxy-magit-section :make --cl-make-fn-- :format-fn --cl-format-item-- :level-indent ement-room-list-level-indent :item-indent 2 args))) (save-current-buffer (set-buffer (get-buffer-create buffer-name)) (if (eq 'ement-directory-mode major-mode) nil (ement-directory-mode)) (if init-fn (progn (funcall init-fn))) (let* ((taxy (if append-p (alist-get 'taxy ement-directory-etc) (funcall --cl-make-fn-- :name root-section-name :take (taxy-make-take-function keys ement-directory-keys)))) (taxy-magit-section-insert-indent-items nil) (inhibit-read-only t) (pos (point)) (section-ident (if (magit-current-section) (progn (magit-section-ident ...)))) (format-cons)) (progn (progn (setq taxy (taxy-sort* #'string> #'taxy-name (taxy-sort ... --cl-size-- ...))) (let* ((p ...) (v taxy)) (progn (if p ... ...) v)) (setq format-cons (taxy-magit-section-format-items ement-directory-columns ement-directory-column-formatters taxy)) (let* ((p ...) (v ...)) (progn (if p ... ...) v)) (setq column-sizes (cdr format-cons)) (setq header-line-format (taxy-magit-section-format-header column-sizes ement-directory-column-formatters)) (setq window-start (if (get-buffer-window buffer-name) (window-start ...) 0))) (delete-all-overlays) (erase-buffer) (save-excursion (taxy-magit-section-insert taxy :items 'first :initial-depth 0)) (goto-char pos) (if (and section-ident (magit-get-section section-ident)) (progn (goto-char (eieio-oref ... ...))))))) (display-buffer buffer-name display-buffer-action) (if (get-buffer-window buffer-name) (progn (set-window-start (get-buffer-window buffer-name) window-start))) (set-buffer buffer-name))
(let* ((--cl-format-item-- #'(lambda (item) (gethash item (alist-get 'format-table ement-directory-etc)))) (--cl-size-- #'(lambda (item) (progn (ignore (mapp item)) (let* (...) (let ... size))))) (--cl-t<nil-- #'(lambda (a b) (and a (not b)))) (--cl-t>nil-- #'(lambda (a b) (and (not a) b)))) (let (--cl-make-fn--) (setq --cl-make-fn-- #'(lambda (&rest args) "\n\n(fn &rest ARGS)" (apply #'make-taxy-magit-section :make --cl-make-fn-- :format-fn --cl-format-item-- :level-indent ement-room-list-level-indent :item-indent 2 args))) (save-current-buffer (set-buffer (get-buffer-create buffer-name)) (if (eq 'ement-directory-mode major-mode) nil (ement-directory-mode)) (if init-fn (progn (funcall init-fn))) (let* ((taxy (if append-p (alist-get ... ement-directory-etc) (funcall --cl-make-fn-- :name root-section-name :take ...))) (taxy-magit-section-insert-indent-items nil) (inhibit-read-only t) (pos (point)) (section-ident (if (magit-current-section) (progn ...))) (format-cons)) (progn (progn (setq taxy (taxy-sort* ... ... ...)) (let* (... ...) (progn ... v)) (setq format-cons (taxy-magit-section-format-items ement-directory-columns ement-directory-column-formatters taxy)) (let* (... ...) (progn ... v)) (setq column-sizes (cdr format-cons)) (setq header-line-format (taxy-magit-section-format-header column-sizes ement-directory-column-formatters)) (setq window-start (if ... ... 0))) (delete-all-overlays) (erase-buffer) (save-excursion (taxy-magit-section-insert taxy :items 'first :initial-depth 0)) (goto-char pos) (if (and section-ident (magit-get-section section-ident)) (progn (goto-char ...)))))) (display-buffer buffer-name display-buffer-action) (if (get-buffer-window buffer-name) (progn (set-window-start (get-buffer-window buffer-name) window-start))) (set-buffer buffer-name)))
(let (column-sizes window-start) (let* ((--cl-format-item-- #'(lambda (item) (gethash item (alist-get ... ement-directory-etc)))) (--cl-size-- #'(lambda (item) (progn (ignore ...) (let* ... ...)))) (--cl-t<nil-- #'(lambda (a b) (and a (not b)))) (--cl-t>nil-- #'(lambda (a b) (and (not a) b)))) (let (--cl-make-fn--) (setq --cl-make-fn-- #'(lambda (&rest args) "\n\n(fn &rest ARGS)" (apply #'make-taxy-magit-section :make --cl-make-fn-- :format-fn --cl-format-item-- :level-indent ement-room-list-level-indent :item-indent 2 args))) (save-current-buffer (set-buffer (get-buffer-create buffer-name)) (if (eq 'ement-directory-mode major-mode) nil (ement-directory-mode)) (if init-fn (progn (funcall init-fn))) (let* ((taxy (if append-p ... ...)) (taxy-magit-section-insert-indent-items nil) (inhibit-read-only t) (pos (point)) (section-ident (if ... ...)) (format-cons)) (progn (progn (setq taxy ...) (let* ... ...) (setq format-cons ...) (let* ... ...) (setq column-sizes ...) (setq header-line-format ...) (setq window-start ...)) (delete-all-overlays) (erase-buffer) (save-excursion (taxy-magit-section-insert taxy :items ... :initial-depth 0)) (goto-char pos) (if (and section-ident ...) (progn ...))))) (display-buffer buffer-name display-buffer-action) (if (get-buffer-window buffer-name) (progn (set-window-start (get-buffer-window buffer-name) window-start))) (set-buffer buffer-name))))
(progn (let ((--cl-keys-- --cl-rest--)) (while --cl-keys-- (cond ((memq (car --cl-keys--) '(:init-fn :append-p :buffer-name :root-section-name :keys :display-buffer-action :allow-other-keys)) (if (cdr --cl-keys--) nil (error "Missing argument for %s" (car --cl-keys--))) (setq --cl-keys-- (cdr (cdr --cl-keys--)))) ((car (cdr (memq ... --cl-rest--))) (setq --cl-keys-- nil)) (t (error "Keyword argument %s not one of (:init-fn :append-p :buffer-name :root-section-name :keys :display-buffer-action)" (car --cl-keys--)))))) (let (column-sizes window-start) (let* ((--cl-format-item-- #'(lambda (item) (gethash item ...))) (--cl-size-- #'(lambda (item) (progn ... ...))) (--cl-t<nil-- #'(lambda (a b) (and a ...))) (--cl-t>nil-- #'(lambda (a b) (and ... b)))) (let (--cl-make-fn--) (setq --cl-make-fn-- #'(lambda (&rest args) "\n\n(fn &rest ARGS)" (apply ... :make --cl-make-fn-- :format-fn --cl-format-item-- :level-indent ement-room-list-level-indent :item-indent 2 args))) (save-current-buffer (set-buffer (get-buffer-create buffer-name)) (if (eq 'ement-directory-mode major-mode) nil (ement-directory-mode)) (if init-fn (progn (funcall init-fn))) (let* ((taxy ...) (taxy-magit-section-insert-indent-items nil) (inhibit-read-only t) (pos ...) (section-ident ...) (format-cons)) (progn (progn ... ... ... ... ... ... ...) (delete-all-overlays) (erase-buffer) (save-excursion ...) (goto-char pos) (if ... ...)))) (display-buffer buffer-name display-buffer-action) (if (get-buffer-window buffer-name) (progn (set-window-start (get-buffer-window buffer-name) window-start))) (set-buffer buffer-name)))))
(let* ((init-fn (car (cdr (plist-member --cl-rest-- ':init-fn)))) (append-p (car (cdr (plist-member --cl-rest-- ':append-p)))) (buffer-name (car (cdr (or (plist-member --cl-rest-- ':buffer-name) '(nil "*Ement Directory*"))))) (root-section-name (car (cdr (or (plist-member --cl-rest-- ':root-section-name) '(nil "Ement Directory"))))) (keys (car (cdr (or (plist-member --cl-rest-- ':keys) (list nil ement-directory-default-keys))))) (display-buffer-action (car (cdr (or (plist-member --cl-rest-- ':display-buffer-action) '(nil ...)))))) (progn (let ((--cl-keys-- --cl-rest--)) (while --cl-keys-- (cond ((memq (car --cl-keys--) '...) (if (cdr --cl-keys--) nil (error "Missing argument for %s" ...)) (setq --cl-keys-- (cdr ...))) ((car (cdr ...)) (setq --cl-keys-- nil)) (t (error "Keyword argument %s not one of (:init-fn :append-p :buffer-name :root-section-name :keys :display-buffer-action)" (car --cl-keys--)))))) (let (column-sizes window-start) (let* ((--cl-format-item-- #'(lambda ... ...)) (--cl-size-- #'(lambda ... ...)) (--cl-t<nil-- #'(lambda ... ...)) (--cl-t>nil-- #'(lambda ... ...))) (let (--cl-make-fn--) (setq --cl-make-fn-- #'(lambda ... "\n\n(fn &rest ARGS)" ...)) (save-current-buffer (set-buffer (get-buffer-create buffer-name)) (if (eq ... major-mode) nil (ement-directory-mode)) (if init-fn (progn ...)) (let* (... ... ... ... ... ...) (progn ... ... ... ... ... ...))) (display-buffer buffer-name display-buffer-action) (if (get-buffer-window buffer-name) (progn (set-window-start ... window-start))) (set-buffer buffer-name))))))
ement-directory--view([] :append-p nil :buffer-name "*Ement Directory: jupiterbroaddcasting.com*" :root-section-name "Ement Directory: jupiterbroaddcasting.com" :init-fn (closure ... nil ... ... ...))
(let ((rooms x130) (next-batch x131) (remaining x132)) (ement-directory--view rooms :append-p since :buffer-name (format "*Ement Directory: %s*" server) :root-section-name (format "Ement Directory: %s" server) :init-fn #'(lambda nil (progn (let* ((p ...) (v server)) (progn (if p ... ...) v)) (let* ((p ...) (v session)) (progn (if p ... ...) v)) (let* ((p ...) (v next-batch)) (progn (if p ... ...) v)) (let* ((p ...) (v limit)) (progn (if p ... ...) v))) (set (make-local-variable 'revert-buffer-function) revert-function) (if remaining (progn (message (substitute-command-keys "%s rooms remaining (use \\[ement-directory-next] to fetch more)") remaining))))))
(let* ((x130 (map-elt results 'chunk nil)) (x131 (map-elt results 'next_batch nil)) (x132 (map-elt results 'total_room_count_estimate nil))) (let ((rooms x130) (next-batch x131) (remaining x132)) (ement-directory--view rooms :append-p since :buffer-name (format "*Ement Directory: %s*" server) :root-section-name (format "Ement Directory: %s" server) :init-fn #'(lambda nil (progn (let* (... ...) (progn ... v)) (let* (... ...) (progn ... v)) (let* (... ...) (progn ... v)) (let* (... ...) (progn ... v))) (set (make-local-variable 'revert-buffer-function) revert-function) (if remaining (progn (message ... remaining)))))))
(progn (ignore (mapp results)) (let* ((x130 (map-elt results 'chunk nil)) (x131 (map-elt results 'next_batch nil)) (x132 (map-elt results 'total_room_count_estimate nil))) (let ((rooms x130) (next-batch x131) (remaining x132)) (ement-directory--view rooms :append-p since :buffer-name (format "*Ement Directory: %s*" server) :root-section-name (format "Ement Directory: %s" server) :init-fn #'(lambda nil (progn (let* ... ...) (let* ... ...) (let* ... ...) (let* ... ...)) (set (make-local-variable ...) revert-function) (if remaining (progn ...)))))))
(closure (... ... ... ... ...) (results) (progn ... ...))(((chunk . []) (total_room_count_estimate . 0)))
#f(compiled-function () #<bytecode -0xae7be8d9b0fcfa7>)()
plz--respond(#<process plz-request-curl<1>> #<buffer *plz-request-curl*> "finished\n")
apply(plz--respond (#<process plz-request-curl<1>> #<buffer *plz-request-curl*> "finished\n"))
#<subr timer-event-handler>([t 25984 28538 228007 nil plz--respond (#<process plz-request-curl<1>> #<buffer *plz-request-curl*> "finished\n") nil 682000 nil])
ad-Advice-timer-event-handler(#<subr timer-event-handler> [t 25984 28538 228007 nil plz--respond (#<process plz-request-curl<1>> #<buffer *plz-request-curl*> "finished\n") nil 682000 nil])
apply(ad-Advice-timer-event-handler #<subr timer-event-handler> [t 25984 28538 228007 nil plz--respond (#<process plz-request-curl<1>> #<buffer *plz-request-curl*> "finished\n") nil 682000 nil])
timer-event-handler([t 25984 28538 228007 nil plz--respond (#<process plz-request-curl<1>> #<buffer *plz-request-curl*> "finished\n") nil 682000 nil])
I will try out that suggestion again and post the results.
Here is the backtrace from your suggestion.
Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p nil)
1+(nil)
(format " %%%s%ss" first-column-align (1+ (cdr (car column-sizes))))
(format (format " %%%s%ss" first-column-align (1+ (cdr (car column-sizes)))) (car (car column-sizes)))
(concat (format (format " %%%s%ss" first-column-align (1+ (cdr (car column-sizes)))) (car (car column-sizes))) (let* ((--cl-var-- (cdr column-sizes)) (size nil) (name nil) (column-alist nil) (align nil) (spec nil) (--cl-var-- "") (--cl-var-- t)) (while (consp --cl-var--) (progn (setq size (car --cl-var--)) (setq name (car-safe (prog1 size (setq size ...))))) (setq column-alist (alist-get name formatters nil nil #'equal)) (setq align (let* ((val (alist-get ... column-alist))) (cond ((memq val ...) (let nil "-")) ((eq val ...) (let nil "")) (t (let ... ...))))) (setq spec (format " %%%s%ss" align size)) (setq --cl-var-- (concat --cl-var-- (format spec name))) (setq --cl-var-- (cdr --cl-var--)) (setq --cl-var-- nil)) --cl-var--))
(let* ((first-column-name (car (car column-sizes))) (first-column-alist (alist-get first-column-name formatters nil nil #'equal)) (first-column-align (let* ((val (alist-get 'align first-column-alist))) (cond ((memq val '...) (let nil "-")) ((eq val 'right) (let nil "")) (t (let (...) (error "No clause matching `%S'" x98))))))) (concat (format (format " %%%s%ss" first-column-align (1+ (cdr (car column-sizes)))) (car (car column-sizes))) (let* ((--cl-var-- (cdr column-sizes)) (size nil) (name nil) (column-alist nil) (align nil) (spec nil) (--cl-var-- "") (--cl-var-- t)) (while (consp --cl-var--) (progn (setq size (car --cl-var--)) (setq name (car-safe (prog1 size ...)))) (setq column-alist (alist-get name formatters nil nil #'equal)) (setq align (let* ((val ...)) (cond (... ...) (... ...) (t ...)))) (setq spec (format " %%%s%ss" align size)) (setq --cl-var-- (concat --cl-var-- (format spec name))) (setq --cl-var-- (cdr --cl-var--)) (setq --cl-var-- nil)) --cl-var--)))
taxy-magit-section-format-header(nil (("ID" (align) (formatter . ement-directory-column-format-id)) ("Topic" (align) (formatter . ement-directory-column-format-topic)) ("Size" (align . right) (formatter . ement-directory-column-format-size)) ("Alias" (align) (formatter . ement-directory-column-format-alias)) ("Name" (align) (formatter . ement-directory-column-format-name)) (#("✓" 0 1 (help-echo "Joined")) (align) (formatter . ement-directory-column-format-✓))))
(setq header-line-format (taxy-magit-section-format-header column-sizes ement-directory-column-formatters))
(progn (setq taxy (taxy-sort* #'string> #'taxy-name (taxy-sort #'> --cl-size-- (taxy-fill (cl-coerce rooms 'list) taxy)))) (let* ((p (assq 'taxy ement-directory-etc)) (v taxy)) (progn (if p (setcdr p v) (setq ement-directory-etc (cons (setq p (cons ... v)) ement-directory-etc))) v)) (setq format-cons (taxy-magit-section-format-items ement-directory-columns ement-directory-column-formatters taxy)) (let* ((p (assq 'format-table ement-directory-etc)) (v (car format-cons))) (progn (if p (setcdr p v) (setq ement-directory-etc (cons (setq p (cons ... v)) ement-directory-etc))) v)) (setq column-sizes (cdr format-cons)) (setq header-line-format (taxy-magit-section-format-header column-sizes ement-directory-column-formatters)) (setq window-start (if (get-buffer-window buffer-name) (window-start (get-buffer-window buffer-name)) 0)))
(progn (progn (setq taxy (taxy-sort* #'string> #'taxy-name (taxy-sort #'> --cl-size-- (taxy-fill (cl-coerce rooms 'list) taxy)))) (let* ((p (assq 'taxy ement-directory-etc)) (v taxy)) (progn (if p (setcdr p v) (setq ement-directory-etc (cons (setq p ...) ement-directory-etc))) v)) (setq format-cons (taxy-magit-section-format-items ement-directory-columns ement-directory-column-formatters taxy)) (let* ((p (assq 'format-table ement-directory-etc)) (v (car format-cons))) (progn (if p (setcdr p v) (setq ement-directory-etc (cons (setq p ...) ement-directory-etc))) v)) (setq column-sizes (cdr format-cons)) (setq header-line-format (taxy-magit-section-format-header column-sizes ement-directory-column-formatters)) (setq window-start (if (get-buffer-window buffer-name) (window-start (get-buffer-window buffer-name)) 0))) (delete-all-overlays) (erase-buffer) (save-excursion (taxy-magit-section-insert taxy :items 'first :initial-depth 0)) (goto-char pos) (if (and section-ident (magit-get-section section-ident)) (progn (goto-char (eieio-oref (magit-get-section section-ident) 'start)))))
(let* ((taxy (if append-p (alist-get 'taxy ement-directory-etc) (funcall --cl-make-fn-- :name root-section-name :take (taxy-make-take-function keys ement-directory-keys)))) (taxy-magit-section-insert-indent-items nil) (inhibit-read-only t) (pos (point)) (section-ident (if (magit-current-section) (progn (magit-section-ident (magit-current-section))))) (format-cons)) (progn (progn (setq taxy (taxy-sort* #'string> #'taxy-name (taxy-sort #'> --cl-size-- (taxy-fill (cl-coerce rooms ...) taxy)))) (let* ((p (assq 'taxy ement-directory-etc)) (v taxy)) (progn (if p (setcdr p v) (setq ement-directory-etc (cons ... ement-directory-etc))) v)) (setq format-cons (taxy-magit-section-format-items ement-directory-columns ement-directory-column-formatters taxy)) (let* ((p (assq 'format-table ement-directory-etc)) (v (car format-cons))) (progn (if p (setcdr p v) (setq ement-directory-etc (cons ... ement-directory-etc))) v)) (setq column-sizes (cdr format-cons)) (setq header-line-format (taxy-magit-section-format-header column-sizes ement-directory-column-formatters)) (setq window-start (if (get-buffer-window buffer-name) (window-start (get-buffer-window buffer-name)) 0))) (delete-all-overlays) (erase-buffer) (save-excursion (taxy-magit-section-insert taxy :items 'first :initial-depth 0)) (goto-char pos) (if (and section-ident (magit-get-section section-ident)) (progn (goto-char (eieio-oref (magit-get-section section-ident) 'start))))))
(save-current-buffer (set-buffer (get-buffer-create buffer-name)) (if (eq 'ement-directory-mode major-mode) nil (ement-directory-mode)) (if init-fn (progn (funcall init-fn))) (let* ((taxy (if append-p (alist-get 'taxy ement-directory-etc) (funcall --cl-make-fn-- :name root-section-name :take (taxy-make-take-function keys ement-directory-keys)))) (taxy-magit-section-insert-indent-items nil) (inhibit-read-only t) (pos (point)) (section-ident (if (magit-current-section) (progn (magit-section-ident (magit-current-section))))) (format-cons)) (progn (progn (setq taxy (taxy-sort* #'string> #'taxy-name (taxy-sort #'> --cl-size-- (taxy-fill ... taxy)))) (let* ((p (assq ... ement-directory-etc)) (v taxy)) (progn (if p (setcdr p v) (setq ement-directory-etc ...)) v)) (setq format-cons (taxy-magit-section-format-items ement-directory-columns ement-directory-column-formatters taxy)) (let* ((p (assq ... ement-directory-etc)) (v (car format-cons))) (progn (if p (setcdr p v) (setq ement-directory-etc ...)) v)) (setq column-sizes (cdr format-cons)) (setq header-line-format (taxy-magit-section-format-header column-sizes ement-directory-column-formatters)) (setq window-start (if (get-buffer-window buffer-name) (window-start (get-buffer-window buffer-name)) 0))) (delete-all-overlays) (erase-buffer) (save-excursion (taxy-magit-section-insert taxy :items 'first :initial-depth 0)) (goto-char pos) (if (and section-ident (magit-get-section section-ident)) (progn (goto-char (eieio-oref (magit-get-section section-ident) 'start)))))))
(let (--cl-make-fn--) (setq --cl-make-fn-- #'(lambda (&rest args) "\n\n(fn &rest ARGS)" (apply #'make-taxy-magit-section :make --cl-make-fn-- :format-fn --cl-format-item-- :level-indent ement-room-list-level-indent :item-indent 2 args))) (save-current-buffer (set-buffer (get-buffer-create buffer-name)) (if (eq 'ement-directory-mode major-mode) nil (ement-directory-mode)) (if init-fn (progn (funcall init-fn))) (let* ((taxy (if append-p (alist-get 'taxy ement-directory-etc) (funcall --cl-make-fn-- :name root-section-name :take (taxy-make-take-function keys ement-directory-keys)))) (taxy-magit-section-insert-indent-items nil) (inhibit-read-only t) (pos (point)) (section-ident (if (magit-current-section) (progn (magit-section-ident ...)))) (format-cons)) (progn (progn (setq taxy (taxy-sort* #'string> #'taxy-name (taxy-sort ... --cl-size-- ...))) (let* ((p ...) (v taxy)) (progn (if p ... ...) v)) (setq format-cons (taxy-magit-section-format-items ement-directory-columns ement-directory-column-formatters taxy)) (let* ((p ...) (v ...)) (progn (if p ... ...) v)) (setq column-sizes (cdr format-cons)) (setq header-line-format (taxy-magit-section-format-header column-sizes ement-directory-column-formatters)) (setq window-start (if (get-buffer-window buffer-name) (window-start ...) 0))) (delete-all-overlays) (erase-buffer) (save-excursion (taxy-magit-section-insert taxy :items 'first :initial-depth 0)) (goto-char pos) (if (and section-ident (magit-get-section section-ident)) (progn (goto-char (eieio-oref ... ...))))))) (display-buffer buffer-name display-buffer-action) (if (get-buffer-window buffer-name) (progn (set-window-start (get-buffer-window buffer-name) window-start))) (set-buffer buffer-name))
(let* ((--cl-format-item-- #'(lambda (item) (gethash item (alist-get 'format-table ement-directory-etc)))) (--cl-size-- #'(lambda (item) (progn (ignore (mapp item)) (let* (...) (let ... size))))) (--cl-t<nil-- #'(lambda (a b) (and a (not b)))) (--cl-t>nil-- #'(lambda (a b) (and (not a) b)))) (let (--cl-make-fn--) (setq --cl-make-fn-- #'(lambda (&rest args) "\n\n(fn &rest ARGS)" (apply #'make-taxy-magit-section :make --cl-make-fn-- :format-fn --cl-format-item-- :level-indent ement-room-list-level-indent :item-indent 2 args))) (save-current-buffer (set-buffer (get-buffer-create buffer-name)) (if (eq 'ement-directory-mode major-mode) nil (ement-directory-mode)) (if init-fn (progn (funcall init-fn))) (let* ((taxy (if append-p (alist-get ... ement-directory-etc) (funcall --cl-make-fn-- :name root-section-name :take ...))) (taxy-magit-section-insert-indent-items nil) (inhibit-read-only t) (pos (point)) (section-ident (if (magit-current-section) (progn ...))) (format-cons)) (progn (progn (setq taxy (taxy-sort* ... ... ...)) (let* (... ...) (progn ... v)) (setq format-cons (taxy-magit-section-format-items ement-directory-columns ement-directory-column-formatters taxy)) (let* (... ...) (progn ... v)) (setq column-sizes (cdr format-cons)) (setq header-line-format (taxy-magit-section-format-header column-sizes ement-directory-column-formatters)) (setq window-start (if ... ... 0))) (delete-all-overlays) (erase-buffer) (save-excursion (taxy-magit-section-insert taxy :items 'first :initial-depth 0)) (goto-char pos) (if (and section-ident (magit-get-section section-ident)) (progn (goto-char ...)))))) (display-buffer buffer-name display-buffer-action) (if (get-buffer-window buffer-name) (progn (set-window-start (get-buffer-window buffer-name) window-start))) (set-buffer buffer-name)))
(let (column-sizes window-start) (let* ((--cl-format-item-- #'(lambda (item) (gethash item (alist-get ... ement-directory-etc)))) (--cl-size-- #'(lambda (item) (progn (ignore ...) (let* ... ...)))) (--cl-t<nil-- #'(lambda (a b) (and a (not b)))) (--cl-t>nil-- #'(lambda (a b) (and (not a) b)))) (let (--cl-make-fn--) (setq --cl-make-fn-- #'(lambda (&rest args) "\n\n(fn &rest ARGS)" (apply #'make-taxy-magit-section :make --cl-make-fn-- :format-fn --cl-format-item-- :level-indent ement-room-list-level-indent :item-indent 2 args))) (save-current-buffer (set-buffer (get-buffer-create buffer-name)) (if (eq 'ement-directory-mode major-mode) nil (ement-directory-mode)) (if init-fn (progn (funcall init-fn))) (let* ((taxy (if append-p ... ...)) (taxy-magit-section-insert-indent-items nil) (inhibit-read-only t) (pos (point)) (section-ident (if ... ...)) (format-cons)) (progn (progn (setq taxy ...) (let* ... ...) (setq format-cons ...) (let* ... ...) (setq column-sizes ...) (setq header-line-format ...) (setq window-start ...)) (delete-all-overlays) (erase-buffer) (save-excursion (taxy-magit-section-insert taxy :items ... :initial-depth 0)) (goto-char pos) (if (and section-ident ...) (progn ...))))) (display-buffer buffer-name display-buffer-action) (if (get-buffer-window buffer-name) (progn (set-window-start (get-buffer-window buffer-name) window-start))) (set-buffer buffer-name))))
(progn (let ((--cl-keys-- --cl-rest--)) (while --cl-keys-- (cond ((memq (car --cl-keys--) '(:init-fn :append-p :buffer-name :root-section-name :keys :display-buffer-action :allow-other-keys)) (if (cdr --cl-keys--) nil (error "Missing argument for %s" (car --cl-keys--))) (setq --cl-keys-- (cdr (cdr --cl-keys--)))) ((car (cdr (memq ... --cl-rest--))) (setq --cl-keys-- nil)) (t (error "Keyword argument %s not one of (:init-fn :append-p :buffer-name :root-section-name :keys :display-buffer-action)" (car --cl-keys--)))))) (let (column-sizes window-start) (let* ((--cl-format-item-- #'(lambda (item) (gethash item ...))) (--cl-size-- #'(lambda (item) (progn ... ...))) (--cl-t<nil-- #'(lambda (a b) (and a ...))) (--cl-t>nil-- #'(lambda (a b) (and ... b)))) (let (--cl-make-fn--) (setq --cl-make-fn-- #'(lambda (&rest args) "\n\n(fn &rest ARGS)" (apply ... :make --cl-make-fn-- :format-fn --cl-format-item-- :level-indent ement-room-list-level-indent :item-indent 2 args))) (save-current-buffer (set-buffer (get-buffer-create buffer-name)) (if (eq 'ement-directory-mode major-mode) nil (ement-directory-mode)) (if init-fn (progn (funcall init-fn))) (let* ((taxy ...) (taxy-magit-section-insert-indent-items nil) (inhibit-read-only t) (pos ...) (section-ident ...) (format-cons)) (progn (progn ... ... ... ... ... ... ...) (delete-all-overlays) (erase-buffer) (save-excursion ...) (goto-char pos) (if ... ...)))) (display-buffer buffer-name display-buffer-action) (if (get-buffer-window buffer-name) (progn (set-window-start (get-buffer-window buffer-name) window-start))) (set-buffer buffer-name)))))
(let* ((init-fn (car (cdr (plist-member --cl-rest-- ':init-fn)))) (append-p (car (cdr (plist-member --cl-rest-- ':append-p)))) (buffer-name (car (cdr (or (plist-member --cl-rest-- ':buffer-name) '(nil "*Ement Directory*"))))) (root-section-name (car (cdr (or (plist-member --cl-rest-- ':root-section-name) '(nil "Ement Directory"))))) (keys (car (cdr (or (plist-member --cl-rest-- ':keys) (list nil ement-directory-default-keys))))) (display-buffer-action (car (cdr (or (plist-member --cl-rest-- ':display-buffer-action) '(nil ...)))))) (progn (let ((--cl-keys-- --cl-rest--)) (while --cl-keys-- (cond ((memq (car --cl-keys--) '...) (if (cdr --cl-keys--) nil (error "Missing argument for %s" ...)) (setq --cl-keys-- (cdr ...))) ((car (cdr ...)) (setq --cl-keys-- nil)) (t (error "Keyword argument %s not one of (:init-fn :append-p :buffer-name :root-section-name :keys :display-buffer-action)" (car --cl-keys--)))))) (let (column-sizes window-start) (let* ((--cl-format-item-- #'(lambda ... ...)) (--cl-size-- #'(lambda ... ...)) (--cl-t<nil-- #'(lambda ... ...)) (--cl-t>nil-- #'(lambda ... ...))) (let (--cl-make-fn--) (setq --cl-make-fn-- #'(lambda ... "\n\n(fn &rest ARGS)" ...)) (save-current-buffer (set-buffer (get-buffer-create buffer-name)) (if (eq ... major-mode) nil (ement-directory-mode)) (if init-fn (progn ...)) (let* (... ... ... ... ... ...) (progn ... ... ... ... ... ...))) (display-buffer buffer-name display-buffer-action) (if (get-buffer-window buffer-name) (progn (set-window-start ... window-start))) (set-buffer buffer-name))))))
ement-directory--view([] :append-p nil :buffer-name "*Ement Directory: jupiterbroadcasting.com*" :root-section-name "Ement Directory: jupiterbroadcasting.com" :init-fn (closure ... nil ... ... ...))
(let ((rooms x130) (next-batch x131) (remaining x132)) (ement-directory--view rooms :append-p since :buffer-name (format "*Ement Directory: %s*" server) :root-section-name (format "Ement Directory: %s" server) :init-fn #'(lambda nil (progn (let* ((p ...) (v server)) (progn (if p ... ...) v)) (let* ((p ...) (v session)) (progn (if p ... ...) v)) (let* ((p ...) (v next-batch)) (progn (if p ... ...) v)) (let* ((p ...) (v limit)) (progn (if p ... ...) v))) (set (make-local-variable 'revert-buffer-function) revert-function) (if remaining (progn (message (substitute-command-keys "%s rooms remaining (use \\[ement-directory-next] to fetch more)") remaining))))))
(let* ((x130 (map-elt results 'chunk nil)) (x131 (map-elt results 'next_batch nil)) (x132 (map-elt results 'total_room_count_estimate nil))) (let ((rooms x130) (next-batch x131) (remaining x132)) (ement-directory--view rooms :append-p since :buffer-name (format "*Ement Directory: %s*" server) :root-section-name (format "Ement Directory: %s" server) :init-fn #'(lambda nil (progn (let* (... ...) (progn ... v)) (let* (... ...) (progn ... v)) (let* (... ...) (progn ... v)) (let* (... ...) (progn ... v))) (set (make-local-variable 'revert-buffer-function) revert-function) (if remaining (progn (message ... remaining)))))))
(progn (ignore (mapp results)) (let* ((x130 (map-elt results 'chunk nil)) (x131 (map-elt results 'next_batch nil)) (x132 (map-elt results 'total_room_count_estimate nil))) (let ((rooms x130) (next-batch x131) (remaining x132)) (ement-directory--view rooms :append-p since :buffer-name (format "*Ement Directory: %s*" server) :root-section-name (format "Ement Directory: %s" server) :init-fn #'(lambda nil (progn (let* ... ...) (let* ... ...) (let* ... ...) (let* ... ...)) (set (make-local-variable ...) revert-function) (if remaining (progn ...)))))))
(closure (... ... ... ... ...) (results) (progn ... ...))(((chunk . []) (total_room_count_estimate . 0)))
#f(compiled-function () #<bytecode -0xae7be8d9b0fcfa7>)()
plz--respond(#<process plz-request-curl<1>> #<buffer *plz-request-curl*> "finished\n")
apply(plz--respond (#<process plz-request-curl<1>> #<buffer *plz-request-curl*> "finished\n"))
#<subr timer-event-handler>([t 25984 29260 471868 nil plz--respond (#<process plz-request-curl<1>> #<buffer *plz-request-curl*> "finished\n") nil 774000 nil])
ad-Advice-timer-event-handler(#<subr timer-event-handler> [t 25984 29260 471868 nil plz--respond (#<process plz-request-curl<1>> #<buffer *plz-request-curl*> "finished\n") nil 774000 nil])
apply(ad-Advice-timer-event-handler #<subr timer-event-handler> [t 25984 29260 471868 nil plz--respond (#<process plz-request-curl<1>> #<buffer *plz-request-curl*> "finished\n") nil 774000 nil])
timer-event-handler([t 25984 29260 471868 nil plz--respond (#<process plz-request-curl<1>> #<buffer *plz-request-curl*> "finished\n") nil 774000 nil])
My best guess is that one of the rooms in the list has nil or an empty string as one of the column values, and the code doesn't expect that to be the case.
It's amazing, sometimes, how an issue can appear for one user but not another: when I browse the same server's directory, and keep pressing +
to load more rooms, that error doesn't happen; but when you load that server's directory, it happens immediately.
Well, when I have time, I'll have to dig into the ement-directory
column definitions and see if I can find the culprit. I probably won't have time to do that soon, though. And not being able to reproduce the error myself makes it much harder to solve, so when I do get to it, I'll probably have to ask you to try to reproduce the problem again (but being dependent on state that's out of our control, it's possible that it won't be reproducible later).
Anyway, thanks for reporting.
I can report a similar error,
Debugger entered--Lisp error: (wrong-type-argument ement-room nil)
signal(wrong-type-argument (ement-room nil))
#f(compiled-function () #<bytecode 0xb6053a043366a19>)()
ement--room-display-name(nil)
ement-directory-column-format-name(((room_id . "!xVuhOzNMkSrGBMwIGU:matrix.org") (canonical_alias . "#schoolgirls:matrix.org") (num_joined_members . 3398) (world_readable . :json-false) (guest_can_join . :json-false) (join_rule . "public")) 1)
#f(compiled-function (item depth column-name) #<bytecode 0xa45ff62242065c2>)(((room_id . "!xVuhOzNMkSrGBMwIGU:matrix.org") (canonical_alias . "#schoolgirls:matrix.org") (num_joined_members . 3398) (world_readable . :json-false) (guest_can_join . :json-false) (join_rule . "public")) 1 "Name")
#f(compiled-function (depth item) #<bytecode -0xd8bb94b6522292b>)(1 ((room_id . "!xVuhOzNMkSrGBMwIGU:matrix.org") (canonical_alias . "#schoolgirls:matrix.org") (num_joined_members . 3398) (world_readable . :json-false) (guest_can_join . :json-false) (join_rule . "public")))
#f(compiled-function (depth taxy) #<bytecode -0x940ca27ddbfd515>)(1 #s(taxy-magit-section :name "> 1000 members" :description nil :key "> 1000 members" :items (... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...) :taxys nil :predicate #f(compiled-function (item) #<bytecode 0x1d3ba83919d93655>) :then ignore :make #f(compiled-function (&rest args) #<bytecode -0x2a8423e1dfc5b1c>) :take nil :visibility-fn taxy-magit-section-visibility :heading-face-fn #<subr F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_10> :level-indent 2 :item-indent 2 :format-fn #<subr F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_30>))
#f(compiled-function (depth taxy) #<bytecode -0x940ca27ddbfd515>)(0 #s(taxy-magit-section :name "Ement Director..." :description nil :key nil :items nil :taxys ... :predicate identity :then ignore :make #f(compiled-function (&rest args) #<bytecode -0x2a8423e1dfc5b1c>) :take ... :visibility-fn taxy-magit-section-visibility :heading-face-fn #<subr F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_10> :level-indent 2 :item-indent 2 :format-fn #<subr F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_30>))
taxy-magit-section-format-items(("Name" "Alias" "Size" "Topic" "ID") (... ... ... ... ... ...) #s(taxy-magit-section :name "Ement Director..." :description nil :key nil :items nil :taxys ... :predicate identity :then ignore :make #f(compiled-function (&rest args) #<bytecode -0x2a8423e1dfc5b1c>) :take ... :visibility-fn taxy-magit-section-visibility :heading-face-fn #<subr F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_10> :level-indent 2 :item-indent 2 :format-fn #<subr F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_30>))
ement-directory--view([(... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ...) (... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) ...] :append-p "g6FtzQwXoXK+IUdWa2Jq..." :buffer-name "*Ement Directory: ma..." :root-section-name "Ement Directory: mat..." :init-fn #f(compiled-function () #<bytecode -0x1d46addf50e5dfdf>))
#f(compiled-function (results) #<bytecode -0x1fe9c5a5fbcd627c>)(((chunk . [(... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ...) (... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ...) (... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ... ... ...) (... ... ... ... ... ... ...) ...]) (prev_batch . "g6FtzQwWoXK+IW9EWW1PR2VySE1pVGR6...") (next_batch . "g6FtzQjWoXK+IWVUSHJPV1VqWlVWQ215...") (total_room_count_estimate . 3725)))
#f(compiled-function () #<bytecode 0x151a8c984c3e3aa8>)()
plz--respond(#<process plz-request-curl<1>> #<buffer *plz-request-curl*> "finished\n")
apply(plz--respond (#<process plz-request-curl<1>> #<buffer *plz-request-curl*> "finished\n"))
timer-event-handler([t 26209 54899 404287 nil plz--respond (#<process plz-request-curl<1>> #<buffer *plz-request-curl*> "finished\n") nil 140000 nil])
And here are the screenshots:
1) Of the directory
2) When I press +
or ement-directory-next
:
@bmp Thanks, that helps. The backtrace is not the same as what @hjozwiak showed, but it might still have the same cause, which I'm pushing a fix for soon. Unless another report similar to Hunter's is reported, I'll consider this issue fixed.
OS/platform
Arch Linux
Emacs version and provenance
emacs-git from the AUR
Emacs command
emacsclient -nc
Emacs frame type
GUI Frame
Ement package version and provenance
ement-0.13, from ELPA
Actions taken
Observed results
No rooms appeared, and an error was signaled in the messages buffer.
Expected results
I was expecting to see rooms from jupiterbroadcasting.com that I could join.
Backtrace
Etc.
Not sure where I went wrong, but I do know that jupiterbroadcasting.com does have rooms to join. Here is an example of such a room: ID: !gJYEKNllaubNlNkFIj:jupiterbroadcasting.com Alias: #general:jupiterbroadcasting.com