diff options
author | Bozhidar Batsov <bozhidar@batsov.com> | 2014-07-23 16:48:39 +0300 |
---|---|---|
committer | Bozhidar Batsov <bozhidar@batsov.com> | 2014-07-23 16:48:39 +0300 |
commit | 9478bbfcd260c2695bbcc2e3fe02b96877de0ab1 (patch) | |
tree | 83a60e8a7b2217d0dff606ad33d65d7513e19f28 | |
parent | 05c3090c4e79907aecf186c2a533386143c93e3e (diff) | |
parent | d94c5cff3c5d43e3ff0f91413fac8b0918be3398 (diff) |
Merge pull request #672 from hugoduncan/feature/fix-jump-to-for-tramp
Fix cider-jump-to for tramp
-rw-r--r-- | cider-interaction.el | 32 |
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." |