[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#71466: 30.0.50; Buffer-menu-group-by non-nil resets point when Buffe
From: |
Juri Linkov |
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 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) |
>> +(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:
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.
- bug#71466: 30.0.50; Buffer-menu-group-by non-nil resets point when Buffer List is reverted, (continued)
- bug#71466: 30.0.50; Buffer-menu-group-by non-nil resets point when Buffer List is reverted, Juri Linkov, 2024/06/25
- bug#71466: 30.0.50; Buffer-menu-group-by non-nil resets point when Buffer List is reverted, Eli Zaretskii, 2024/06/25
- bug#71466: 30.0.50; Buffer-menu-group-by non-nil resets point when Buffer List is reverted, Dmitry Gutov, 2024/06/25
- bug#71466: 30.0.50; Buffer-menu-group-by non-nil resets point when Buffer List is reverted, Eli Zaretskii, 2024/06/26
- bug#71466: 30.0.50; Buffer-menu-group-by non-nil resets point when Buffer List is reverted, Eshel Yaron, 2024/06/26
- bug#71466: 30.0.50; Buffer-menu-group-by non-nil resets point when Buffer List is reverted, Eli Zaretskii, 2024/06/26
- bug#71466: 30.0.50; Buffer-menu-group-by non-nil resets point when Buffer List is reverted, Eshel Yaron, 2024/06/27
- bug#71466: 30.0.50; Buffer-menu-group-by non-nil resets point when Buffer List is reverted, Juri Linkov, 2024/06/27
- bug#71466: 30.0.50; Buffer-menu-group-by non-nil resets point when Buffer List is reverted, Dmitry Gutov, 2024/06/26
- bug#71466: 30.0.50; Buffer-menu-group-by non-nil resets point when Buffer List is reverted, Dmitry Gutov, 2024/06/17
- bug#71466: 30.0.50; Buffer-menu-group-by non-nil resets point when Buffer List is reverted,
Juri Linkov <=
- bug#71466: 30.0.50; Buffer-menu-group-by non-nil resets point when Buffer List is reverted, Dmitry Gutov, 2024/06/17
- bug#71466: 30.0.50; Buffer-menu-group-by non-nil resets point when Buffer List is reverted, Juri Linkov, 2024/06/27