~ruther/guix-local

e81a89d176a7330c22e263a000754cfa2b62476d — Alex Kost 10 years ago 8934c3b
emacs: Make 'guix-find-location' interactive.

* emacs/guix-location.el (guix-find-location): Make interactive.  Adjust
  to handle "reduced" locations (without line and column numbers).
1 files changed, 19 insertions(+), 12 deletions(-)

M emacs/guix-location.el
M emacs/guix-location.el => emacs/guix-location.el +19 -12
@@ 34,24 34,31 @@ For the meaning of location, see `guix-find-location'."
  (guix-eval-read (guix-make-guile-expression
                   'package-location-string id-or-name)))

;;;###autoload
(defun guix-find-location (location &optional directory)
  "Go to LOCATION of a package.
LOCATION is a string of the form:

  \"PATH:LINE:COLUMN\"
  \"FILE:LINE:COLUMN\"

If FILE is relative, it is considered to be relative to
DIRECTORY (`guix-directory' by default).

If PATH is relative, it is considered to be relative to
DIRECTORY (`guix-directory' by default)."
  (cl-multiple-value-bind (path line col)
Interactively, prompt for LOCATION.  With prefix argument, prompt
for DIRECTORY as well."
  (interactive
   (list (guix-read-package-location)
         (guix-read-directory)))
  (cl-multiple-value-bind (file line column)
      (split-string location ":")
    (let ((file (expand-file-name path (or directory guix-directory)))
          (line (string-to-number line))
          (col  (string-to-number col)))
      (find-file file)
      (goto-char (point-min))
      (forward-line (- line 1))
      (move-to-column col)
      (recenter 1))))
    (find-file (expand-file-name file (or directory guix-directory)))
    (when (and line column)
      (let ((line   (string-to-number line))
            (column (string-to-number column)))
        (goto-char (point-min))
        (forward-line (- line 1))
        (move-to-column column)
        (recenter 1)))))

;;;###autoload
(defun guix-edit (id-or-name &optional directory)