emacs: list: Factorize "edit package" commands.

* emacs/guix-list.el: Use separate edit commands instead of a single one.
  (guix-list-for-each-line, guix-list-edit-package): Remove.
  (guix-package-list-edit, guix-output-list-edit): New procedures.
  (guix-package-list-mode-map, guix-output-list-mode-map): Use them.
This commit is contained in:
Alex Kost 2015-11-19 20:09:16 +03:00
parent cf910ceffc
commit 25d2fe8bef
1 changed files with 13 additions and 15 deletions

View File

@ -234,14 +234,6 @@ VAL may be nil."
"Return alist of the current entry info." "Return alist of the current entry info."
(guix-entry-by-id (guix-list-current-id) guix-entries)) (guix-entry-by-id (guix-list-current-id) guix-entries))
(defun guix-list-current-package-id ()
"Return ID of the current package."
(cl-ecase major-mode
(guix-package-list-mode
(guix-list-current-id))
(guix-output-list-mode
(guix-entry-value (guix-list-current-entry) 'package-id))))
(defun guix-list-for-each-line (fun &rest args) (defun guix-list-for-each-line (fun &rest args)
"Call FUN with ARGS for each entry line." "Call FUN with ARGS for each entry line."
(or (derived-mode-p 'guix-list-mode) (or (derived-mode-p 'guix-list-mode)
@ -530,11 +522,6 @@ See also `guix-list-describe'."
(put 'guix-list-define-entry-type 'lisp-indent-function 'defun) (put 'guix-list-define-entry-type 'lisp-indent-function 'defun)
(defun guix-list-edit-package ()
"Go to the location of the current package."
(interactive)
(guix-edit (guix-list-current-package-id)))
;;; Displaying packages ;;; Displaying packages
@ -579,7 +566,7 @@ likely)."
:group 'guix-package-list) :group 'guix-package-list)
(let ((map guix-package-list-mode-map)) (let ((map guix-package-list-mode-map))
(define-key map (kbd "e") 'guix-list-edit-package) (define-key map (kbd "e") 'guix-package-list-edit)
(define-key map (kbd "x") 'guix-package-list-execute) (define-key map (kbd "x") 'guix-package-list-execute)
(define-key map (kbd "i") 'guix-package-list-mark-install) (define-key map (kbd "i") 'guix-package-list-mark-install)
(define-key map (kbd "d") 'guix-package-list-mark-delete) (define-key map (kbd "d") 'guix-package-list-mark-delete)
@ -722,6 +709,11 @@ The specification is suitable for `guix-process-package-actions'."
(let ((specs (guix-list-get-marked-args action-type))) (let ((specs (guix-list-get-marked-args action-type)))
(and specs (cons action-type specs)))) (and specs (cons action-type specs))))
(defun guix-package-list-edit ()
"Go to the location of the current package."
(interactive)
(guix-edit (guix-list-current-id)))
;;; Displaying outputs ;;; Displaying outputs
@ -742,7 +734,7 @@ The specification is suitable for `guix-process-package-actions'."
(delete . ?D))) (delete . ?D)))
(let ((map guix-output-list-mode-map)) (let ((map guix-output-list-mode-map))
(define-key map (kbd "e") 'guix-list-edit-package) (define-key map (kbd "e") 'guix-output-list-edit)
(define-key map (kbd "x") 'guix-output-list-execute) (define-key map (kbd "x") 'guix-output-list-execute)
(define-key map (kbd "i") 'guix-output-list-mark-install) (define-key map (kbd "i") 'guix-output-list-mark-install)
(define-key map (kbd "d") 'guix-output-list-mark-delete) (define-key map (kbd "d") 'guix-output-list-mark-delete)
@ -815,6 +807,12 @@ See `guix-package-info-type'."
guix-profile 'info 'package 'id guix-profile 'info 'package 'id
(cl-remove-duplicates pids))))) (cl-remove-duplicates pids)))))
(defun guix-output-list-edit ()
"Go to the location of the current package."
(interactive)
(guix-edit (guix-entry-value (guix-list-current-entry)
'package-id)))
;;; Displaying generations ;;; Displaying generations