Merge pull request #652 from Emiller88/feature/conda

Add +conda
This commit is contained in:
Henrik Lissner 2018-06-10 22:30:47 +02:00 committed by GitHub
commit 2fa95218cb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 66 additions and 0 deletions

View File

@ -0,0 +1,21 @@
;;; lang/python/+conda.el -*- lexical-binding: t; -*-
;;;###if (featurep! +conda)
;; This file add conda support to doom-emacs. To get started, try `M-x'
;; `+python/set-conda-home' and then `M-x' `conda-env-activate'.
(def-package! conda
:when (featurep! +conda)
:after (python)
:init
(defvar +python-conda-home '("~/.anaconda3" "/usr/bin/anaconda3" "~/.anaconda")
"A list of host pattern and corresponding anaconda home.")
:config
(advice-add 'anaconda-mode-bootstrap :override #'+python*anaconda-mode-bootstrap)
(conda-env-autoactivate-mode -1)
;; (add-hook 'python-mode-hook #'conda-env-activate-for-buffer)
(conda-env-initialize-interactive-shells)
(conda-env-initialize-eshell)
;; Version management with conda
(add-hook 'conda-postactivate-hook #'+python|add-conda-env-to-modeline)
(add-hook 'conda-postdeactivate-hook #'+python|add-conda-env-to-modeline))

View File

@ -0,0 +1,43 @@
;;; lang/python/autoload/conda.el -*- lexical-binding: t; -*-
;;;###if (featurep! +conda)
;;;###autoload
(defun +python/set-conda-home ()
"Set the CONDA HOME.
Usually it's `~/.anaconda3' on local machine, but you can also set it to a
remote directory using TRAMP syntax such as `/ssh:host:/usr/bin/anaconda3'. In
that way you can use the remote conda environment as well as the corresponding
remote python executable and packages."
(interactive)
(ivy-read "Set conda home:" +python-conda-home
:history +python/set-conda-home--history
:action (lambda (cand) (setq conda-anaconda-home cand))))
;;;###autoload
(defun +python|add-conda-env-to-modeline ()
"Add conda environment string to the major mode in the modeline."
(setq mode-name
(if conda-env-current-name
(format "Py:conda:%s" conda-env-current-name)
"Python")))
;;;###autoload
(defun +python*anaconda-mode-bootstrap (&optional callback)
"Advice to set up the anaconda-mode even in remote environment.
Original doc:
Run `anaconda-mode' server.
CALLBACK function will be called when `anaconda-mode-port' will
be bound."
(setq anaconda-mode-process
(start-pythonic :process anaconda-mode-process-name
:buffer anaconda-mode-process-buffer
:cwd (anaconda-mode-server-directory)
:filter (lambda (process output) (anaconda-mode-bootstrap-filter process output))
:sentinel 'anaconda-mode-bootstrap-sentinel
:query-on-exit nil
:args (list "-c"
anaconda-mode-server-command
(if (pythonic-remote-p)
"0.0.0.0" "127.0.0.1")
(or (pythonic-file-name pythonic-environment) ""))))
(process-put anaconda-mode-process 'server-directory (anaconda-mode-server-directory)))

View File

@ -8,3 +8,5 @@
(when (package! anaconda-mode)
(when (featurep! :completion company)
(package! company-anaconda)))
(when (featurep! +conda)
(package! conda))