alphapapa / ement.el

A Matrix client for GNU Emacs
GNU General Public License v3.0
488 stars 44 forks source link

Errors When Trying to use ement-directory #248

Closed hjozwiak closed 3 months ago

hjozwiak commented 9 months ago

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

  1. c-u 1 m-x ement-directory
  2. For the server, I inserted jupiterbroadcasting.com
  3. I left the limit alone at 100.

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

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-✓))))
  ement-directory--view([] :append-p nil :buffer-name "*Ement Directory: jupiterbroadcasting.com*" :root-section-name "Ement Directory: jupiterbroadcasting.com" :init-fn #f(compiled-function () #<bytecode 0xe609b656e2b640e>))
  #f(compiled-function (results) #<bytecode 0xf3a511bf89db616>)(((chunk . []) (total_room_count_estimate . 0)))
  #f(compiled-function () #<bytecode 0x1518bfac471a8c80>)()
  plz--respond(#<process plz-request-curl<1>> #<buffer  *plz-request-curl*-719950> "finished\n")
  apply(plz--respond (#<process plz-request-curl<1>> #<buffer  *plz-request-curl*-719950> "finished\n"))
  #<subr timer-event-handler>([t 25983 52145 847851 nil plz--respond (#<process plz-request-curl<1>> #<buffer  *plz-request-curl*-719950> "finished\n") nil 509000 nil])
  ad-Advice-timer-event-handler(#<subr timer-event-handler> [t 25983 52145 847851 nil plz--respond (#<process plz-request-curl<1>> #<buffer  *plz-request-curl*-719950> "finished\n") nil 509000 nil])
  apply(ad-Advice-timer-event-handler #<subr timer-event-handler> [t 25983 52145 847851 nil plz--respond (#<process plz-request-curl<1>> #<buffer  *plz-request-curl*-719950> "finished\n") nil 509000 nil])
  timer-event-handler([t 25983 52145 847851 nil plz--respond (#<process plz-request-curl<1>> #<buffer  *plz-request-curl*-719950> "finished\n") nil 509000 nil])

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

alphapapa commented 9 months ago

When I try the same, it works for me: Screenshot_20231217_230701

hjozwiak commented 9 months ago

Wrird. Do you know what options for the server I misconfigured?

alphapapa commented 9 months ago

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.

alphapapa commented 9 months ago

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))))
alphapapa commented 9 months ago

@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.

hjozwiak commented 9 months ago

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])
alphapapa commented 9 months ago

@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

hjozwiak commented 9 months ago

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.

hjozwiak commented 9 months ago

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])
alphapapa commented 9 months ago

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.

bmp commented 3 months ago

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 Screenshot_20240606_210151 2) When I press + or ement-directory-next: Screenshot_20240606_210211

alphapapa commented 3 months ago

@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.