Index: sbbs.el ================================================================== --- sbbs.el +++ sbbs.el @@ -248,11 +248,11 @@ ent)) (setq-local tabulated-list-entries ent) (tabulated-list-print t t) (hl-line-highlight)))))) -(defun sbbs--thread-loader (status board id buf) +(defun sbbs--thread-loader (status id buf) "Callback function for `url-retrieve' when loading thread. The attribute ID determines what thread from board BOARD to load. STATUS is used to check for errors." (when (buffer-live-p buf) @@ -272,13 +272,10 @@ (unless (cadddr (syntax-ppss)) (replace-match "t"))))) (let ((thread (read (current-buffer)))) (kill-buffer) (with-current-buffer buf - (sbbs-read-mode) - (setq sbbs--board board - sbbs--thread-id id) (let ((buffer-read-only nil)) (erase-buffer) (setq header-line-format (format "Thread %d: %s" id (cdr (assq 'headline thread)))) @@ -285,11 +282,11 @@ (dolist (post (cadr (assq 'posts thread))) (sbbs--thread-insert-post post)) (delete-blank-lines) (goto-char (point-min))) (rename-buffer (format "*reading /%s/%d*" - (sbbs--board-name board) + (sbbs--board-name sbbs--board) id)))))) ;; INTERACTIVE FUNCTIONS (defun sbbs-view-open (id) @@ -296,18 +293,21 @@ "Open thread ID in new buffer." (interactive (list (tabulated-list-get-id))) (let ((url (sbbs--board-url (format "/%d" id) t)) (headline (substring-no-properties (aref (tabulated-list-get-entry ) 2))) + (board sbbs--board) (buf (get-buffer-create (format "*loading /%s/%d*" (sbbs--board-name sbbs--board) id)))) - (url-retrieve url #'sbbs--thread-loader - (list sbbs--board id buf)) (with-current-buffer buf - (setq header-line-format (format "Thread %d: %s" id headline))) + (sbbs-read-mode) + (setq header-line-format (format "Thread %d: %s" id headline) + sbbs--board board + sbbs--thread-id id)) + (url-retrieve url #'sbbs--thread-loader (list id buf)) (switch-to-buffer buf))) (defun sbbs-view-compose () "Create buffer to start a new thread." (interactive)