emacs: Improve 'guix-redisplay-buffer'.
* emacs/guix-base.el (guix-redisplay-buffer): Allow to display new entries. Restore point position.
This commit is contained in:
parent
e718f6cc8f
commit
37c4ffc2c4
|
@ -640,14 +640,41 @@ See `revert-buffer' for the meaning of NOCONFIRM."
|
||||||
(guix-set-buffer guix-profile entries guix-buffer-type guix-entry-type
|
(guix-set-buffer guix-profile entries guix-buffer-type guix-entry-type
|
||||||
search-type search-vals t t))))
|
search-type search-vals t t))))
|
||||||
|
|
||||||
(defun guix-redisplay-buffer ()
|
(cl-defun guix-redisplay-buffer (&key buffer profile entries buffer-type
|
||||||
"Redisplay current information.
|
entry-type search-type search-vals)
|
||||||
|
"Redisplay a Guix BUFFER.
|
||||||
|
Restore the point and window positions after redisplaying if possible.
|
||||||
|
|
||||||
This function will not update the information, use
|
This function will not update the information, use
|
||||||
\"\\[revert-buffer]\" if you want the full update."
|
\"\\[revert-buffer]\" if you want the full update.
|
||||||
|
|
||||||
|
If BUFFER is nil, use the current buffer. For the meaning of the
|
||||||
|
rest arguments, see `guix-set-buffer'."
|
||||||
(interactive)
|
(interactive)
|
||||||
(guix-show-entries guix-entries guix-buffer-type guix-entry-type)
|
(or buffer (setq buffer (current-buffer)))
|
||||||
(guix-result-message guix-profile guix-entries guix-entry-type
|
(with-current-buffer buffer
|
||||||
guix-search-type guix-search-vals))
|
(or (derived-mode-p 'guix-info-mode 'guix-list-mode)
|
||||||
|
(error "%S is not a Guix buffer" buffer))
|
||||||
|
(let* ((point (point))
|
||||||
|
(was-at-button (button-at point))
|
||||||
|
;; For simplicity, ignore an unlikely case when multiple
|
||||||
|
;; windows display the same BUFFER.
|
||||||
|
(window (car (get-buffer-window-list buffer nil t)))
|
||||||
|
(window-start (and window (window-start window))))
|
||||||
|
(guix-set-buffer (or profile guix-profile)
|
||||||
|
(or entries guix-entries)
|
||||||
|
(or buffer-type guix-buffer-type)
|
||||||
|
(or entry-type guix-entry-type)
|
||||||
|
(or search-type guix-search-type)
|
||||||
|
(or search-vals guix-search-vals)
|
||||||
|
t t)
|
||||||
|
(goto-char point)
|
||||||
|
(and was-at-button
|
||||||
|
(not (button-at (point)))
|
||||||
|
(forward-button 1))
|
||||||
|
(when window
|
||||||
|
(set-window-point window (point))
|
||||||
|
(set-window-start window window-start)))))
|
||||||
|
|
||||||
|
|
||||||
;;; Generations
|
;;; Generations
|
||||||
|
|
Loading…
Reference in New Issue