Browse Source

Create emacs-default-venv if it doesn't exist

master
Raphael Roberts 6 years ago
parent
commit
93644dfa03
  1. 16
      settings.org

16
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")) (read-file-name "Python interpreter to use: " (file-name-directory (executable-find "python"))
nil nil "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) (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)) "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)))) (library-root (if library-root library-root (elpy-library-root))))
(setq venv-name (rlbr/handle-name-conflicts venv-name)) (setq venv-name (rlbr/handle-name-conflicts venv-name))
(if (y-or-n-p (format "Create venv '%s'?" venv-name)) (if (y-or-n-p (format "Create venv '%s'?" venv-name))
(pyvenv-create venv-name (rlbr/get-python-executable)) (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) (rlbr/setup-python-venv-dirlocals library-root venv-name)
venv-name)) venv-name))
(require 'dash) (require 'dash)
(defun rlbr/init-venv () (defun rlbr/init-venv ()
(when (eq major-mode 'python-mode) (when (eq major-mode 'python-mode)
(cond ((file-remote-p buffer-file-name) (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))) ((let ((buffer-file-name (file-truename buffer-file-name)))
(-any (lambda (file-prefix) (-any (lambda (file-prefix)
(string-prefix-p file-prefix buffer-file-name)) (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)) (pyvenv-workon pyvenv-workon))
(rlbr/save-buffer-func-to-file (let ((default-directory (elpy-library-root))) (rlbr/save-buffer-func-to-file (let ((default-directory (elpy-library-root)))
(expand-file-name ".dir-locals.el")) (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) ((not pyvenv-workon)
(setq-local pyvenv-workon (rlbr/init-python-venv-in-library-root)))))) (setq-local pyvenv-workon (rlbr/init-python-venv-in-library-root))))))
(pyvenv-workon pyvenv-workon))) (pyvenv-workon pyvenv-workon)))

Loading…
Cancel
Save