From: Juri Linkov <juri@linkov.net>
To: Dmitry Gutov <dmitry@gutov.dev>
Cc: 71466@debbugs.gnu.org, Eshel Yaron <me@eshelyaron.com>
Subject: bug#71466: 30.0.50; Buffer-menu-group-by non-nil resets point when Buffer List is reverted
Date: Mon, 17 Jun 2024 19:31:01 +0300 [thread overview]
Message-ID: <86wmmny1iy.fsf@mail.linkov.net> (raw)
In-Reply-To: <b3f44e4d-990c-4fa6-860c-6ce1b318f875@gutov.dev> (Dmitry Gutov's message of "Mon, 17 Jun 2024 15:32:14 +0300")
[-- Attachment #1: Type: text/plain, Size: 395 bytes --]
>> +(defun xref-revert-buffer-restore-point ()
>> + (let ((current-line (buffer-substring-no-properties (pos-bol) (pos-eol))))
>> + (lambda ()
>> + (goto-char (point-min))
>> + (when (search-forward current-line)
>> + (goto-char (pos-bol))))))
>
> Perhaps it would make sense to save the current group as well, for
> additional precision.
Ok, so this is implemented here:
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: xref-revert-buffer-restore-point_2.patch --]
[-- Type: text/x-diff, Size: 1645 bytes --]
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index fb6c9dad73b..987571b92c5 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -1017,7 +1017,9 @@ xref--xref-buffer-mode
(lambda (&optional bound move backward looking-at)
(outline-search-text-property
'xref-group nil bound move backward looking-at)))
- (setq-local outline-level (lambda () 1)))
+ (setq-local outline-level (lambda () 1))
+ (add-hook 'revert-buffer-restore-functions
+ #'xref-revert-buffer-restore-point nil t))
(defvar xref--transient-buffer-mode-map
(let ((map (make-sparse-keymap)))
@@ -1309,6 +1311,24 @@ xref--auto-jump-first
((eq value 'move)
(forward-line 1))))
+(defun xref-revert-buffer-restore-point ()
+ (let* ((item
+ (when (xref--item-at-point)
+ (buffer-substring-no-properties (pos-bol) (pos-eol))))
+ (group
+ (save-excursion
+ (when (or (get-text-property (point) 'xref-group)
+ (and item (xref--search-property 'xref-group t)
+ (get-text-property (point) 'xref-group)))
+ (buffer-substring-no-properties (pos-bol) (pos-eol))))))
+ (when (or item group)
+ (lambda ()
+ (goto-char (point-min))
+ (when (and group (search-forward (concat "\n" group "\n") nil t))
+ (goto-char (pos-bol 0)))
+ (when (and item (search-forward (concat "\n" item "\n") nil t))
+ (goto-char (pos-bol 0)))))))
+
(defun xref-show-definitions-buffer (fetcher alist)
"Show the definitions list in a regular window.
next prev parent reply other threads:[~2024-06-17 16:31 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-10 8:49 bug#71466: 30.0.50; Buffer-menu-group-by non-nil resets point when Buffer List is reverted Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-11 17:05 ` Juri Linkov
2024-06-17 6:35 ` Juri Linkov
2024-06-17 7:40 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-17 12:27 ` Dmitry Gutov
2024-06-17 15:43 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-17 22:24 ` Dmitry Gutov
2024-06-18 7:00 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-18 12:58 ` Eli Zaretskii
2024-06-18 14:01 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-18 14:46 ` Eli Zaretskii
2024-06-18 16:55 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-18 17:05 ` Dmitry Gutov
2024-06-18 17:36 ` Eli Zaretskii
2024-06-18 17:47 ` Dmitry Gutov
2024-06-20 16:38 ` Juri Linkov
2024-06-20 17:35 ` Dmitry Gutov
2024-06-24 6:27 ` Juri Linkov
2024-06-24 22:42 ` Dmitry Gutov
2024-06-25 6:54 ` Juri Linkov
2024-06-25 12:54 ` Eli Zaretskii
2024-06-25 23:14 ` Dmitry Gutov
2024-06-26 11:25 ` Eli Zaretskii
2024-06-26 16:56 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-26 18:33 ` Eli Zaretskii
2024-06-26 21:05 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-27 6:39 ` Juri Linkov
2024-06-27 7:19 ` Eli Zaretskii
2024-06-27 0:11 ` Dmitry Gutov
2024-06-17 12:32 ` Dmitry Gutov
2024-06-17 16:31 ` Juri Linkov [this message]
2024-06-17 22:16 ` Dmitry Gutov
2024-06-27 6:43 ` Juri Linkov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=86wmmny1iy.fsf@mail.linkov.net \
--to=juri@linkov.net \
--cc=71466@debbugs.gnu.org \
--cc=dmitry@gutov.dev \
--cc=me@eshelyaron.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.