> On Oct 14, 2023, at 9:20 PM, nvp wrote: > > Hi, > The patch is supposed to reset `treesit--explorer-last-node` in the source buffer, just before the `(with-current-buffer treesit--explorer-buffer ...)`. > Upon trying to reproduce it now, I realized it's harder to reproduce than I had thought -- sorry about that. > I noticed the bug (if it is a bug) initially when I was adding a function to jump b/w source and explorer buffers, like the following: > > (defun my-treesit-explorer-jump () > "Pop b/w source and explorer buffers." > (interactive) > (let ((buf > (cond > ((eq major-mode 'treesit--explorer-tree-mode) > (when (buffer-live-p treesit--explorer-source-buffer) > treesit--explorer-source-buffer)) > (t > (unless (and treesit-explore-mode > (buffer-live-p treesit--explorer-buffer)) > ;; *** Without the reset here, the explorer buffer doesn't > ;; get redrawn the first time, when treesit--explorer-last-node > ;; is non-nil in the source buffer *** > ;; (setq-local treesit--explorer-last-node nil) > (cl-letf (((symbol-function (function completing-read)) > (lambda (&rest _) (symbol-name (treesit-language-at (point)))))) > (treesit-explore-mode 1))) > treesit--explorer-buffer)))) > (pop-to-buffer buf))) > > Let me give a more precise recipe to reproduce: > 1. From a c++-ts-mode buffer, call `treesit-explorer-mode`, select `cpp`. Now there should be an explorer buffer. > 2. Kill the associated explorer buffer. > 3. Now, back in the c++-ts-mode buffer, `treesit--explorer-last-node` should still have a value. > 4. From that c++-ts-mode buffer, call `my-treesit-explorer-jump`, and the explorer buffer should be empty, until > switching back to the source buffer. > > This seems to me to be caused by `treesit--explorer-post-command` not running until the source > buffer is active again. Thank you, I think I see the problem now. Could you try the below patch and see it fixes your problem? Also, sorry for the late reply, I meant to reply sooner but couldn’t find the time to figure out what exact was the cause :-) I was initially a bit confused since we already do set last-node to nil. Yuan