Browse Source

init-venv now does a lot of work but covers all cases

master
Raphael Roberts 6 years ago
parent
commit
2a19b454c1
  1. 44
      settings.org

44
settings.org

@ -326,29 +326,37 @@ This handy function is a customized ripoff of custom-save-all
(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)
(unless (apply
'string-prefix-p
(mapcar
'file-truename
(list
(pyvenv-workon-home)
buffer-file-name)))
(if (and pyvenv-workon (not (member pyvenv-workon (pyvenv-virtualenv-list))))
(if (y-or-n-p
(format "Venv '%s' is specified but does not exist. Create it?" pyvenv-workon))
(unless
(let ((buffer-file-name (file-truename buffer-file-name)))
(-any (lambda (file-prefix) (string-prefix-p file-prefix buffer-file-name))
(mapcar 'file-truename
(list
(elpy-rpc-get-or-create-virtualenv)
(pyvenv-workon-home)))))
(cond
((and pyvenv-workon (not (member pyvenv-workon (pyvenv-virtualenv-list))))
(if (y-or-n-p
(format "Venv '%s' is specified but does not exist. Create it?" pyvenv-workon))
(progn
(pyvenv-create pyvenv-workon (rlbr/get-python-executable))
((rlbr/save-buffer-func-to-file
(let ((default-directory (elpy-library-root)))
(expand-file-name
".dir-locals.el"))
'delete-dir-local-variable
'(python pyvenv-workon))))
(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")))
((not pyvenv-workon)
(setq-local
pyvenv-workon
(rlbr/init-python-venv-in-library-root)))))))
(rlbr/init-python-venv-in-library-root))))
(pyvenv-workon pyvenv-workon))))
#+END_SRC
*** bindings/settings
#+BEGIN_SRC emacs-lisp

Loading…
Cancel
Save