[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 7/7] emacs: Add 'guix-devel-use-current-module'.
From: |
Alex Kost |
Subject: |
[PATCH 7/7] emacs: Add 'guix-devel-use-current-module'. |
Date: |
Sat, 25 Jul 2015 11:49:57 +0300 |
Suggested by Ludovic Courtès <address@hidden>.
* emacs/guix-guile.el (guix-guile-definition-regexp): New variable.
(guix-guile-current-definition): New function.
* emacs/guix-devel.el (guix-devel-build-current-package-definition): New
command.
* doc/emacs.texi (Emacs Development): Document it.
---
doc/emacs.texi | 6 ++++++
emacs/guix-devel.el | 9 +++++++++
emacs/guix-guile.el | 17 +++++++++++++++++
3 files changed, 32 insertions(+)
diff --git a/doc/emacs.texi b/doc/emacs.texi
index 6920bef..5f1584c 100644
--- a/doc/emacs.texi
+++ b/doc/emacs.texi
@@ -571,6 +571,12 @@ want to use a module it defines, so you switch to the
Geiser REPL and
write @code{,use (some module)} there. You may just use this command
instead.
address@hidden M-x guix-devel-build-current-package-definition
+Build package defined by the current variable definition. If you
+modified the current package definition, don't forget to reevaluate it
+before calling this command (for example, with @kbd{C-M-x} (@pxref{To
+eval or not to eval,,, geiser, Geiser User Manual})).
+
@end table
And as always if you use a command often, it is a good idea to bind a
diff --git a/emacs/guix-devel.el b/emacs/guix-devel.el
index e99b289..1d3f381 100644
--- a/emacs/guix-devel.el
+++ b/emacs/guix-devel.el
@@ -39,6 +39,15 @@
(guix-devel-use-modules module)
(message "Using %s module." module)))
+;;;###autoload
+(defun guix-devel-build-current-package-definition ()
+ "Build package defined by the current top-level variable definition."
+ (interactive)
+ (guix-devel-use-modules "(guix scripts build)"
+ (guix-guile-current-module))
+ (guix-geiser-call-in-repl "build-package"
+ (guix-guile-current-definition)))
+
(provide 'guix-devel)
;;; guix-devel.el ends here
diff --git a/emacs/guix-guile.el b/emacs/guix-guile.el
index ffa8848..aa5d747 100644
--- a/emacs/guix-guile.el
+++ b/emacs/guix-guile.el
@@ -26,6 +26,23 @@
(require 'geiser-guile)
+(defvar guix-guile-definition-regexp
+ (rx bol "(define"
+ (zero-or-one "*")
+ (zero-or-one "-public")
+ (one-or-more space)
+ (zero-or-one "(")
+ (group (one-or-more (or word (syntax symbol)))))
+ "Regexp used to find the guile definition.")
+
+(defun guix-guile-current-definition ()
+ "Return string with name of the current top-level guile definition."
+ (save-excursion
+ (beginning-of-defun)
+ (if (looking-at guix-guile-definition-regexp)
+ (match-string-no-properties 1)
+ (error "Couldn't find the current definition"))))
+
(defun guix-guile-current-module ()
"Return string with current guile module.
Return nil, if current buffer does not define a module."
--
2.4.3
- [PATCH 2/7] emacs: Move code for evaluating to "guix-geiser.el"., (continued)
[PATCH 3/7] emacs: Add code to call guile procedures., Alex Kost, 2015/07/25
[PATCH 5/7] ui: Add 'show-derivation-outputs'., Alex Kost, 2015/07/25
[PATCH 6/7] guix build: Add 'build-package'., Alex Kost, 2015/07/25
[PATCH 7/7] emacs: Add 'guix-devel-use-current-module'.,
Alex Kost <=