diff options
author | Alex Kost <alezost@gmail.com> | 2016-04-01 21:52:21 +0300 |
---|---|---|
committer | Alex Kost <alezost@gmail.com> | 2016-04-18 10:09:02 +0300 |
commit | e81a89d176a7330c22e263a000754cfa2b62476d (patch) | |
tree | 61c22d1b93cb3ff15deb7b671dbd37d3fdcd1e9b /emacs/guix-location.el | |
parent | 8934c3b60f2d8438dca0e513b286e11cd2adb096 (diff) | |
download | guix-e81a89d176a7330c22e263a000754cfa2b62476d.tar.gz |
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).
Diffstat (limited to 'emacs/guix-location.el')
-rw-r--r-- | emacs/guix-location.el | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/emacs/guix-location.el b/emacs/guix-location.el index 4b23293d94..81396b4017 100644 --- a/emacs/guix-location.el +++ b/emacs/guix-location.el @@ -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) |