diff options
author | Alex Kost <alezost@gmail.com> | 2016-05-27 10:43:25 +0300 |
---|---|---|
committer | Alex Kost <alezost@gmail.com> | 2016-05-31 23:51:54 +0300 |
commit | b097dd72c4ffab9622300db9950c5a0b1b1579f7 (patch) | |
tree | 8d71e56e0c8898d35607e0f2772797df72587072 /emacs/guix-ui-package.el | |
parent | e98316e69f2480bde709d92ec00db66fd8e66aea (diff) | |
download | guix-b097dd72c4ffab9622300db9950c5a0b1b1579f7.tar.gz |
emacs: Add "Build Log" button to Package Info.
* emacs/guix-main.scm (package-build-log-file): New procedure. * emacs/guix-ui-package.el (guix-package-build-log-file) (guix-package-find-build-log) (guix-package-info-insert-build-log-button): New procedures. (guix-package-info-button-functions): Add 'guix-package-info-insert-build-log-button'.
Diffstat (limited to 'emacs/guix-ui-package.el')
-rw-r--r-- | emacs/guix-ui-package.el | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/emacs/guix-ui-package.el b/emacs/guix-ui-package.el index 4eb70831dd..4280246bb8 100644 --- a/emacs/guix-ui-package.el +++ b/emacs/guix-ui-package.el @@ -111,6 +111,19 @@ is found and `guix-package-list-single' is nil." (list (if (= 0 package-id) package-id-str package-id) output)))) +(defun guix-package-build-log-file (id) + "Return build log file name of a package defined by ID." + (guix-eval-read + (guix-make-guile-expression 'package-build-log-file id))) + +(defun guix-package-find-build-log (id) + "Show build log of a package defined by ID." + (require 'guix-build-log) + (let ((file (guix-package-build-log-file id))) + (if file + (guix-build-log-find-file file) + (message "Couldn't find the package build log.")))) + ;;; Processing package actions @@ -333,7 +346,8 @@ prompt depending on `guix-operation-confirm' variable)." :group 'guix-package-info) (defcustom guix-package-info-button-functions - '(guix-package-info-insert-build-button) + '(guix-package-info-insert-build-button + guix-package-info-insert-build-log-button) "List of functions used to insert package buttons in Info buffer. Each function is called with 2 arguments: package ID and full name." :type '(repeat function) @@ -598,6 +612,15 @@ PACKAGE-ID is an ID of the package which store path to show." (format "Build the current package") 'id id)) +(defun guix-package-info-insert-build-log-button (id _name) + "Insert button to show build log of a package defined by ID." + (guix-info-insert-action-button + "Build Log" + (lambda (btn) + (guix-package-find-build-log (button-get btn 'id))) + "View build log of the current package" + 'id id)) + (defun guix-package-info-show-source (entry-id package-id) "Show file name of a package source in the current info buffer. Find the file if needed (see `guix-package-info-auto-find-source'). |