~ruther/guix-local

8472b2fd2d4c4d060b1333c9c527575d965a0ebd — Alex Kost 10 years ago f674439
emacs: Add 'guix-find-license-definition' command.

* emacs/guix-license.el (guix-license-file): New procedure.
(guix-find-license-definition): New command.
* doc/emacs.texi (Emacs Licenses): Document it.
2 files changed, 24 insertions(+), 0 deletions(-)

M doc/emacs.texi
M emacs/guix-license.el
M doc/emacs.texi => doc/emacs.texi +3 -0
@@ 544,6 544,9 @@ Display a list of available licenses.  You can press @kbd{@key{RET}}
there to display packages with this license in the same way as @kbd{M-x
guix-packages-by-license} would do (@pxref{Emacs Commands}).

@item M-x guix-find-license-definition
Open @file{@dots{}/guix/licenses.scm} and move to the specified license.

@end table



M emacs/guix-license.el => emacs/guix-license.el +21 -0
@@ 27,6 27,12 @@
(require 'guix-backend)
(require 'guix-guile)

(defun guix-license-file (&optional directory)
  "Return name of the file with license definitions.
DIRECTORY is a directory with Guix source (`guix-directory' by default)."
  (expand-file-name "guix/licenses.scm"
                    (or directory guix-directory)))

(defun guix-lookup-license-url (license)
  "Return URL of a LICENSE."
  (or (guix-eval-read (guix-make-guile-expression


@@ 34,6 40,21 @@
      (error "Hm, I don't know URL of '%s' license" license)))

;;;###autoload
(defun guix-find-license-definition (license &optional directory)
  "Open licenses file from DIRECTORY and move to the LICENSE definition.
See `guix-license-file' for the meaning of DIRECTORY.
Interactively, with prefix argument, prompt for DIRECTORY."
  (interactive
   (list (guix-read-license-name)
         (guix-read-directory)))
  (find-file (guix-license-file directory))
  (goto-char (point-min))
  (when (re-search-forward (concat "\"" (regexp-quote license) "\"")
                           nil t)
    (beginning-of-defun)
    (recenter 1)))

;;;###autoload
(defun guix-browse-license-url (license)
  "Browse URL of a LICENSE."
  (interactive (list (guix-read-license-name)))