diff --git a/settings.org b/settings.org index b547c5c..437964a 100644 --- a/settings.org +++ b/settings.org @@ -374,22 +374,26 @@ This handy function is a customized ripoff of custom-save-all (read-file-name "Python interpreter to use: " (file-name-directory (executable-find "python")) nil nil "python")) + (defun emacs-default-venv () + (unless (member "emacs-default-venv" (pyvenv-virtualenv-list)) + (pyvenv-create "emacs-default-venv" (rlbr/get-python-executable))) + "emacs-default-venv") + (defun rlbr/init-python-venv-in-library-root (&optional library-root) "Prompt to either create one or use default" (let ((venv-name (rlbr/get-venv-name)) (library-root (if library-root library-root (elpy-library-root)))) (setq venv-name (rlbr/handle-name-conflicts venv-name)) (if (y-or-n-p (format "Create venv '%s'?" venv-name)) (pyvenv-create venv-name (rlbr/get-python-executable)) - (progn (unless (member "emacs-default-venv" (pyvenv-virtualenv-list)) - (pyvenv-create venv-name (rlbr/get-python-executable))) - (setq venv-name "emacs-default-venv"))) + (progn + (setq venv-name (emacs-default-venv)))) (rlbr/setup-python-venv-dirlocals library-root venv-name) venv-name)) (require 'dash) (defun rlbr/init-venv () (when (eq major-mode 'python-mode) (cond ((file-remote-p buffer-file-name) - (setq-local pyvenv-workon "emacs-default-venv")) + (setq-local pyvenv-workon (emacs-default-venv))) ((let ((buffer-file-name (file-truename buffer-file-name))) (-any (lambda (file-prefix) (string-prefix-p file-prefix buffer-file-name)) @@ -402,8 +406,8 @@ This handy function is a customized ripoff of custom-save-all (pyvenv-workon pyvenv-workon)) (rlbr/save-buffer-func-to-file (let ((default-directory (elpy-library-root))) (expand-file-name ".dir-locals.el")) - 'add-dir-local-variable '(python-mode pyvenv-workon "emacs-default-venv")) - (setq-local pyvenv-workon "emacs-default-venv"))) + 'add-dir-local-variable '(python-mode pyvenv-workon (emacs-default-venv))) + (setq-local pyvenv-workon (emacs-default-venv)))) ((not pyvenv-workon) (setq-local pyvenv-workon (rlbr/init-python-venv-in-library-root)))))) (pyvenv-workon pyvenv-workon)))