necaris / conda.el

Emacs helper library (and minor mode) to work with conda environments
MIT License
153 stars 49 forks source link

stopped working with conda 4.13.0 #107

Closed jinschoi closed 2 years ago

jinschoi commented 2 years ago

I just updated conda to 4.13.0 and now conda.el no longer works. It appears to fail because the "conda ..activate" command has been removed.

I tried using the version from the fix/deprecated-conda-activate-command branch. After fixing up my startup PATH variable on macos to get conda--get-installed-version to work, I found that conda--supports-json-activator was still returning nil. I believe the version check has an error:

(defun conda--version>= (v1 v2)
  "Is version vector V1 greater than or equal to V2?"
  (cl-loop for x across v1
           for y across v2
           if (> x y) return nil
           finally return (>= x y)))

That should be "return t" in the second to last line.

After fixing that, it now errors in conda--get-deactivation-parameters because "conda shell.posix+json deactivate %s" does not accept arguments. Removing the %s and the env-dir argument from the format gets that to work.

Finally, the setenv in conda--update-env-from-params fails because the results of json-read-from-string can be symbols or integers, and setenv requires both arguments to be strings. Wrapping the setenv arguments in (format "%s" ...) to coerce them to strings seems to fix that.

necaris commented 2 years ago

Will be closed by #23