packages feed

virthualenv-0.2: virthualenv.el

(setq virthualenv nil)
(setq virthualenv-path-backup nil)
(setq virthualenv-exec-path-backup nil)

(defun virthualenv-read-file (fpath)
  (with-temp-buffer
    (insert-file-contents fpath)
    (buffer-string)))

(defun virthualenv-activate (dir)
  "Activate the Virtual Haskell Environment in DIR"
  (interactive "Dvirthualenv directory: ")
  (when (equal (char-list-to-string (last (string-to-list dir)))
               "/")
    (setq dir (subseq dir
                      0
                      (- (length dir) 1))))
  (let* ((virthualenv-dir (concat dir "/.virthualenv/"))
         (path-var-prependix-location (concat virthualenv-dir "path_var_prependix"))
         (ghc-package-path-var-location (concat virthualenv-dir "ghc_package_path_var"))
         (path-var-prependix (virthualenv-read-file path-var-prependix-location))
         (ghc-package-path-var (virthualenv-read-file ghc-package-path-var-location))
         (new-path-var (concat path-var-prependix ":" (getenv "PATH")))
         (exec-path-prependix (split-string path-var-prependix ":")))
    (setq virthualenv-path-backup (getenv "PATH"))
    (setenv "PATH" new-path-var)
    (setq virthualenv-exec-path-backup exec-path)
    (setq exec-path (append exec-path-prependix exec-path))
    (setenv "GHC_PACKAGE_PATH" ghc-package-path-var)
    (setq virthualenv dir)))

(defun virthualenv-deactivate ()
  "Deactivate the Virtual Haskell Environment"
  (interactive)
  (setenv "PATH" virthualenv-path-backup)
  (setq exec-path virthualenv-exec-path-backup)
  (setenv "GHC_PACKAGE_PATH" nil)
  (setq virthualenv nil)
  (setq virthualenv-path-backup nil)
  (setq virthualenv-exec-path-backup nil))

(provide 'virthualenv)