emacs: Improve 'guix-redisplay-buffer'.
* emacs/guix-base.el (guix-redisplay-buffer): Allow to display new entries. Restore point position.master
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
|
||||
search-type search-vals t t))))
|
||||
|
||||
(defun guix-redisplay-buffer ()
|
||||
"Redisplay current information.
|
||||
(cl-defun guix-redisplay-buffer (&key buffer profile entries buffer-type
|
||||
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
|
||||
\"\\[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)
|
||||
(guix-show-entries guix-entries guix-buffer-type guix-entry-type)
|
||||
(guix-result-message guix-profile guix-entries guix-entry-type
|
||||
guix-search-type guix-search-vals))
|
||||
(or buffer (setq buffer (current-buffer)))
|
||||
(with-current-buffer buffer
|
||||
(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
|
||||
|
|
Reference in New Issue