Skip to content

Some refactorings are not working via TRAMP #552

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
vlnn opened this issue Oct 8, 2023 · 2 comments
Closed

Some refactorings are not working via TRAMP #552

vlnn opened this issue Oct 8, 2023 · 2 comments

Comments

@vlnn
Copy link

vlnn commented Oct 8, 2023

Expected behavior

When using Cider connected to nrepl running on ssh host, refactors of the clojure code should work.

Actual behavior

Some of the refactors are not working, returning errors.

Steps to reproduce the problem

On remote host:

lein new test-clj-refactor
cd test-clj-refactor
lein repl :start :port 11111

On local host:

  1. Start doom emacs
  2. Create new project with remote ssh dir as a root one SPC p a + /ssh:target-host:tmp/test-clj-refactor
  3. Connect to this project with SPC p p
  4. Open src/test-clj-refactor/core.clj
  5. Connect to nrepl via ssh: SPC m c + target-host + 11111 (you should see successful message in new repl window)
  6. In core.clj move cursor to any form (e.g. println one from the test) and press SPC m R t ef to extract the function. You should see the error as shown below. Other refactors may work (e.g. extract as def works OK).
[nREPL] Establishing direct connection to target-host:11111 ...
[nREPL] Direct connection to target-host:11111 failed
[nREPL] Falling back to SSH tunneled connection ...
[nREPL] Establishing SSH tunneled connection to target-host:11111 ...
[nREPL] SSH port forwarding established to localhost:11111
[nREPL] Establishing direct connection to localhost:11111 ...
[nREPL] Direct connection to localhost:11111 established
Connected! May your functions be pure, your code concise and your programs a joy to behold!
To perform this op the project needs to be evaluated.
  Analyzing a large project might take a while: hit C-g to abort.
  (Set cljr-warn-on-eval to nil to analyze the project without warning)
  Do you want to proceed? (y or n) y
Error in nrepl-refactor: java.io.FileNotFoundException: /ssh:target-host:/home/vlnn/tmp/test-clj-refactor/src/test_clj_refactor/core.clj (No such file or directory)
 at java.io.FileInputStream.open0 (FileInputStream.java:-2)
    java.io.FileInputStream.open (FileInputStream.java:195)
    java.io.FileInputStream.<init> (FileInputStream.java:138)
    clojure.java.io$fn__11496.invokeStatic (io.clj:229)
    clojure.java.io/fn (io.clj:229)
    clojure.java.io$fn__11409$G__11402__11416.invoke (io.clj:69)
    clojure.java.io$fn__11508.invokeStatic (io.clj:258)
    clojure.java.io/fn (io.clj:254)
    clojure.java.io$fn__11409$G__11402__11416.invoke (io.clj:69)
    clojure.java.io$fn__11470.invokeStatic (io.clj:165)
    clojure.java.io/fn (io.clj:165)
    clojure.java.io$fn__11422$G__11398__11429.invoke (io.clj:69)
    clojure.java.io$reader.invokeStatic (io.clj:102)
    clojure.java.io$reader.doInvoke (io.clj:86)
    clojure.lang.RestFn.invoke (RestFn.java:410)
    clojure.lang.AFn.applyToHelper (AFn.java:154)
    clojure.lang.RestFn.applyTo (RestFn.java:132)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$slurp.invokeStatic (core.clj:6942)
    clojure.core$slurp.doInvoke (core.clj:6942)
    clojure.lang.RestFn.invoke (RestFn.java:410)
    refactor_nrepl.find.find_locals$find_used_locals.invokeStatic (find_locals.clj:14)
    refactor_nrepl.find.find_locals$find_used_locals.invoke (find_locals.clj:9)
    clojure.lang.Var.invoke (Var.java:384)
    refactor_nrepl.middleware$find_used_locals_reply$fn__3142.invoke (middleware.clj:145)
    refactor_nrepl.ns.libspec_allowlist$with_memoized_libspec_allowlist_STAR_.invokeStatic (libspec_allowlist.clj:41)
    refactor_nrepl.ns.libspec_allowlist$with_memoized_libspec_allowlist_STAR_.invoke (libspec_allowlist.clj:39)
    refactor_nrepl.middleware$find_used_locals_reply.invokeStatic (middleware.clj:145)
    refactor_nrepl.middleware$find_used_locals_reply.invoke (middleware.clj:144)
    refactor_nrepl.middleware$wrap_refactor$fn__3205.invoke (middleware.clj:232)
    nrepl.middleware$wrap_conj_descriptor$fn__662.invoke (middleware.clj:16)
    nrepl.middleware.load_file$wrap_load_file$fn__1459.invoke (load_file.clj:81)
    nrepl.middleware$wrap_conj_descriptor$fn__662.invoke (middleware.clj:16)
    nrepl.middleware.caught$wrap_caught$fn__930.invoke (caught.clj:97)
    nrepl.middleware$wrap_conj_descriptor$fn__662.invoke (middleware.clj:16)
    cider.nrepl$wrap_tracker$fn__2224.invoke (nrepl.clj:520)
    nrepl.middleware$wrap_conj_descriptor$fn__662.invoke (middleware.clj:16)
    cider.nrepl$wrap_content_type$fn__2060.invoke (nrepl.clj:107)
    nrepl.middleware$wrap_conj_descriptor$fn__662.invoke (middleware.clj:16)
    nrepl.middleware.print$wrap_print$fn__897.invoke (print.clj:234)
    nrepl.middleware$wrap_conj_descriptor$fn__662.invoke (middleware.clj:16)
    nrepl.middleware.session$session$fn__1095.invoke (session.clj:309)
    nrepl.middleware$wrap_conj_descriptor$fn__662.invoke (middleware.clj:16)
    nrepl.server$default_handler$fn__1590.invoke (server.clj:130)
    nrepl.server$handle_STAR_.invokeStatic (server.clj:22)
    nrepl.server$handle_STAR_.invoke (server.clj:19)
    nrepl.server$handle$fn__1561.invoke (server.clj:39)
    clojure.core$binding_conveyor_fn$fn__5754.invoke (core.clj:2030)
    clojure.lang.AFn.call (AFn.java:18)
    java.util.concurrent.FutureTask.run (FutureTask.java:266)
    java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149)
    java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:624)
    java.lang.Thread.run (Thread.java:750)

Environment & Version information

clj-refactor.el version information

clj-refactor 3.6.0, refactor-nrepl 3.6.0

CIDER version information

;; Connected to nREPL server - nrepl://localhost:11111
;; CIDER 1.7.0-snapshot (package: 1.7.0-snapshot), nREPL 0.8.3
;; Clojure 1.10.1, Java 1.8.0_332
;;     Docs: (doc function-name)
;;           (find-doc part-of-name)
;;   Source: (source function-name)
;;  Javadoc: (javadoc java-object-or-class)
;;     Exit: <C-c C-q>
;;  Results: Stored in vars *1, *2, *3, an exception in *e;
test-clj-refactor.core> 

Leiningen or Boot version

Leiningen 2.9.5 on Java 1.8.0_332 OpenJDK 64-Bit Server VM

Emacs version

GNU Emacs 28.2 (build 2, aarch64-apple-darwin22.4.0, NS appkit-2299.50 Version 13.3.1 (a) (Build 22E772610a)) of 2023-05-21

Operating system

Sonoma on localhost, Ubuntu 20.04 on target-host

@vemv
Copy link
Member

vemv commented Oct 8, 2023

Thanks!

I'll see what I can do.

btw, it looks like you could upgrade cider (which most recent snapshots have a superior TRAMP support: jump-to-definition will work more reliably) and the JDK (8 is being increasingly unsupported in the Clojure community - CIDER will certainly drop it)

@vemv vemv closed this as completed in b476345 Oct 9, 2023
@vemv
Copy link
Member

vemv commented Oct 9, 2023

Done and tried it myself with a local TRAMP connection.

New MELPA (stable and snapshot) releases will be available within 1-2 hours.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants