summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBozhidar Batsov <bozhidar@batsov.com>2014-07-23 16:48:39 +0300
committerBozhidar Batsov <bozhidar@batsov.com>2014-07-23 16:48:39 +0300
commit9478bbfcd260c2695bbcc2e3fe02b96877de0ab1 (patch)
tree83a60e8a7b2217d0dff606ad33d65d7513e19f28
parent05c3090c4e79907aecf186c2a533386143c93e3e (diff)
parentd94c5cff3c5d43e3ff0f91413fac8b0918be3398 (diff)
Merge pull request #672 from hugoduncan/feature/fix-jump-to-for-tramp
Fix cider-jump-to for tramp
-rw-r--r--cider-interaction.el32
1 files changed, 23 insertions, 9 deletions
diff --git a/cider-interaction.el b/cider-interaction.el
index de5dd374..494f77b0 100644
--- a/cider-interaction.el
+++ b/cider-interaction.el
@@ -574,15 +574,29 @@ path or an entry within a zip/jar archive."
(path (cider--file-path file))
(name (format "%s:%s" path entry)))
(or (get-file-buffer name)
- (with-current-buffer (generate-new-buffer
- (file-name-nondirectory entry))
- (archive-zip-extract path entry)
- (set-visited-file-name name)
- (setq-local default-directory (file-name-directory path))
- (setq-local buffer-read-only t)
- (set-buffer-modified-p nil)
- (set-auto-mode)
- (current-buffer)))))))
+ (if (tramp-tramp-file-p path)
+ (progn
+ ;; Use emacs built in archiving
+ (find-file path)
+ (goto-char (point-min))
+ ;; Make sure the file path is followed by a newline to
+ ;; prevent eg. clj matching cljs.
+ (search-forward (concat entry "\n"))
+ ;; moves up to matching line
+ (forward-line -1)
+ (let ((opened-buffer (current-buffer)))
+ (archive-extract)
+ (current-buffer)))
+ ;; Use external zip program to just extract the single file
+ (with-current-buffer (generate-new-buffer
+ (file-name-nondirectory entry))
+ (archive-zip-extract path entry)
+ (set-visited-file-name name)
+ (setq-local default-directory (file-name-directory path))
+ (setq-local buffer-read-only t)
+ (set-buffer-modified-p nil)
+ (set-auto-mode)
+ (current-buffer))))))))
(defun cider-find-var (var)
"Return a buffer visiting the definition for VAR, or nil if not found."