Path: blob/master/elisp/emacs-for-python/plugins/virtualenv.el
990 views
;; This module defines the workon command for using virtualenv inside1;; emacs2(setq workon-home (getenv "WORKON_HOME"))34(defun add-to-PATH (dir)5"Add the specified path element to the Emacs PATH"6(interactive "DEnter directory to be added to PATH: ")7(if (file-directory-p dir)8(setenv "PATH"9(concat (expand-file-name dir)10path-separator11(getenv "PATH")))))1213(defun activate-virtualenv (dir)14(setenv "VIRTUAL_ENV" dir)15(add-to-PATH (concat dir "/bin"))16(add-to-list 'exec-path (concat dir "/bin")))1718(defun is_virtualenv (dir)19"Check if a directory is a virtualenv"20(file-exists-p (concat dir "/bin/activate"))21)2223(defun filter (condp lst)24(delq nil25(mapcar (lambda (x) (and (funcall condp x) x)) lst)))262728(defun workon-complete ()29"return available completions for workon"30(let31;;Varlist32((filelist (directory-files workon-home t))) ;; List directory33;; Let Body34(mapcar 'file-name-nondirectory35(filter 'is_virtualenv ;; select virtualenvs36(filter 'file-directory-p filelist))) ;; select directories37)38)3940(defun workon (name)41"Issue a virtualenvwrapper-like workon command"42(interactive (list (completing-read "Virtualenv: " (workon-complete))))43(activate-virtualenv (concat (getenv "WORKON_HOME") "/" name))44)454647(provide 'virtualenv)4849