diff options
Diffstat (limited to 'configs/shared/emacs/.emacs.d/elpa/exec-path-from-shell-20180324.204/exec-path-from-shell.el')
-rw-r--r-- | configs/shared/emacs/.emacs.d/elpa/exec-path-from-shell-20180324.204/exec-path-from-shell.el | 272 |
1 files changed, 0 insertions, 272 deletions
diff --git a/configs/shared/emacs/.emacs.d/elpa/exec-path-from-shell-20180324.204/exec-path-from-shell.el b/configs/shared/emacs/.emacs.d/elpa/exec-path-from-shell-20180324.204/exec-path-from-shell.el deleted file mode 100644 index 6877253eab10..000000000000 --- a/configs/shared/emacs/.emacs.d/elpa/exec-path-from-shell-20180324.204/exec-path-from-shell.el +++ /dev/null @@ -1,272 +0,0 @@ -;;; exec-path-from-shell.el --- Get environment variables such as $PATH from the shell - -;; Copyright (C) 2012-2014 Steve Purcell - -;; Author: Steve Purcell <steve@sanityinc.com> -;; Keywords: unix, environment -;; URL: https://github.com/purcell/exec-path-from-shell -;; Package-Version: 20180324.204 -;; Package-X-Original-Version: 0 - -;; This file is not part of GNU Emacs. - -;; This file is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This file is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this file. If not, see <http://www.gnu.org/licenses/>. - -;;; Commentary: - -;; On OS X (and perhaps elsewhere) the $PATH environment variable and -;; `exec-path' used by a windowed Emacs instance will usually be the -;; system-wide default path, rather than that seen in a terminal -;; window. - -;; This library allows the user to set Emacs' `exec-path' and $PATH -;; from the shell path, so that `shell-command', `compile' and the -;; like work as expected. - -;; It also allows other environment variables to be retrieved from the -;; shell, so that Emacs will see the same values you get in a terminal. - -;; If you use a non-POSIX-standard shell like "tcsh" or "fish", your -;; shell will be asked to execute "sh" as a subshell in order to print -;; out the variables in a format which can be reliably parsed. "sh" -;; must be a POSIX-compliant shell in this case. - -;; Note that shell variables which have not been exported as -;; environment variables (e.g. using the "export" keyword) may not be -;; visible to `exec-path-from-shell'. - -;; Installation: - -;; ELPA packages are available on Marmalade and MELPA. Alternatively, -;; place this file on a directory in your `load-path', and explicitly -;; require it. - -;; Usage: -;; -;; (require 'exec-path-from-shell) ;; if not using the ELPA package -;; (exec-path-from-shell-initialize) -;; -;; Customize `exec-path-from-shell-variables' to modify the list of -;; variables imported. -;; -;; If you use your Emacs config on other platforms, you can instead -;; make initialization conditional as follows: -;; -;; (when (memq window-system '(mac ns)) -;; (exec-path-from-shell-initialize)) -;; -;; Alternatively, you can use `exec-path-from-shell-copy-envs' or -;; `exec-path-from-shell-copy-env' directly, e.g. -;; -;; (exec-path-from-shell-copy-env "PYTHONPATH") - -;;; Code: - -;; Satisfy the byte compiler -(defvar eshell-path-env) - -(defgroup exec-path-from-shell nil - "Make Emacs use shell-defined values for $PATH etc." - :prefix "exec-path-from-shell-" - :group 'environment) - -(defcustom exec-path-from-shell-variables - '("PATH" "MANPATH") - "List of environment variables which are copied from the shell." - :type '(repeat (string :tag "Environment variable")) - :group 'exec-path-from-shell) - -(defcustom exec-path-from-shell-check-startup-files t - "If non-nil, warn if variables are being set in the wrong shell startup files. -Environment variables should be set in .profile or .zshenv rather than -.bashrc or .zshrc." - :type 'boolean - :group 'exec-path-from-shell) - -(defcustom exec-path-from-shell-shell-name nil - "If non-nil, use this shell executable. -Otherwise, use either `shell-file-name' (if set), or the value of -the SHELL environment variable." - :type '(choice - (file :tag "Shell executable") - (const :tag "Use `shell-file-name' or $SHELL" nil)) - :group 'exec-path-from-shell) - -(defvar exec-path-from-shell-debug nil - "Display debug info when non-nil.") - -(defun exec-path-from-shell--double-quote (s) - "Double-quote S, escaping any double-quotes already contained in it." - (concat "\"" (replace-regexp-in-string "\"" "\\\\\"" s) "\"")) - -(defun exec-path-from-shell--shell () - "Return the shell to use. -See documentation for `exec-path-from-shell-shell-name'." - (or - exec-path-from-shell-shell-name - shell-file-name - (getenv "SHELL") - (error "SHELL environment variable is unset"))) - -(defcustom exec-path-from-shell-arguments - (if (string-match-p "t?csh$" (exec-path-from-shell--shell)) - (list "-d") - (list "-l" "-i")) - "Additional arguments to pass to the shell. - -The default value denotes an interactive login shell." - :type '(repeat (string :tag "Shell argument")) - :group 'exec-path-from-shell) - -(defun exec-path-from-shell--debug (msg &rest args) - "Print MSG and ARGS like `message', but only if debug output is enabled." - (when exec-path-from-shell-debug - (apply 'message msg args))) - -(defun exec-path-from-shell--standard-shell-p (shell) - "Return non-nil iff SHELL supports the standard ${VAR-default} syntax." - (not (string-match "\\(fish\\|t?csh\\)$" shell))) - -(defun exec-path-from-shell-printf (str &optional args) - "Return the result of printing STR in the user's shell. - -Executes the shell as interactive login shell. - -STR is inserted literally in a single-quoted argument to printf, -and may therefore contain backslashed escape sequences understood -by printf. - -ARGS is an optional list of args which will be inserted by printf -in place of any % placeholders in STR. ARGS are not automatically -shell-escaped, so they may contain $ etc." - (let* ((printf-bin (or (executable-find "printf") "printf")) - (printf-command - (concat printf-bin - " '__RESULT\\000" str "\\000__RESULT' " - (mapconcat #'exec-path-from-shell--double-quote args " "))) - (shell (exec-path-from-shell--shell)) - (shell-args (append exec-path-from-shell-arguments - (list "-c" - (if (exec-path-from-shell--standard-shell-p shell) - printf-command - (concat "sh -c " (shell-quote-argument printf-command))))))) - (with-temp-buffer - (exec-path-from-shell--debug "Invoking shell %s with args %S" shell shell-args) - (let ((exit-code (apply #'call-process shell nil t nil shell-args))) - (exec-path-from-shell--debug "Shell printed: %S" (buffer-string)) - (unless (zerop exit-code) - (error "Non-zero exit code from shell %s invoked with args %S. Output was:\n%S" - shell shell-args (buffer-string)))) - (goto-char (point-min)) - (if (re-search-forward "__RESULT\0\\(.*\\)\0__RESULT" nil t) - (match-string 1) - (error "Expected printf output from shell, but got: %S" (buffer-string)))))) - -(defun exec-path-from-shell-getenvs (names) - "Get the environment variables with NAMES from the user's shell. - -Execute the shell according to `exec-path-from-shell-arguments'. -The result is a list of (NAME . VALUE) pairs." - (let* ((random-default (md5 (format "%s%s%s" (emacs-pid) (random) (current-time)))) - (dollar-names (mapcar (lambda (n) (format "${%s-%s}" n random-default)) names)) - (values (split-string (exec-path-from-shell-printf - (mapconcat #'identity (make-list (length names) "%s") "\\000") - dollar-names) "\0"))) - (let (result) - (while names - (prog1 - (let ((value (car values))) - (push (cons (car names) - (unless (string-equal random-default value) - value)) - result)) - (setq values (cdr values) - names (cdr names)))) - result))) - -(defun exec-path-from-shell-getenv (name) - "Get the environment variable NAME from the user's shell. - -Execute the shell as interactive login shell, have it output the -variable of NAME and return this output as string." - (cdr (assoc name (exec-path-from-shell-getenvs (list name))))) - -(defun exec-path-from-shell-setenv (name value) - "Set the value of environment var NAME to VALUE. -Additionally, if NAME is \"PATH\" then also set corresponding -variables such as `exec-path'." - (setenv name value) - (when (string-equal "PATH" name) - (setq eshell-path-env value - exec-path (append (parse-colon-path value) (list exec-directory))))) - -;;;###autoload -(defun exec-path-from-shell-copy-envs (names) - "Set the environment variables with NAMES from the user's shell. - -As a special case, if the variable is $PATH, then `exec-path' and -`eshell-path-env' are also set appropriately. The result is an alist, -as described by `exec-path-from-shell-getenvs'." - (let ((pairs (exec-path-from-shell-getenvs names))) - (when exec-path-from-shell-check-startup-files - (exec-path-from-shell--maybe-warn-about-startup-files pairs)) - (mapc (lambda (pair) - (exec-path-from-shell-setenv (car pair) (cdr pair))) - pairs))) - -(defun exec-path-from-shell--maybe-warn-about-startup-files (pairs) - "Warn the user if the value of PAIRS seems to depend on interactive shell startup files." - (let ((without-minus-i (remove "-i" exec-path-from-shell-arguments))) - ;; If the user is using "-i", we warn them if it is necessary. - (unless (eq exec-path-from-shell-arguments without-minus-i) - (let* ((exec-path-from-shell-arguments without-minus-i) - (alt-pairs (exec-path-from-shell-getenvs (mapcar 'car pairs))) - different) - (dolist (pair pairs) - (unless (equal pair (assoc (car pair) alt-pairs)) - (push (car pair) different))) - (when different - (message "You appear to be setting environment variables %S in your .bashrc or .zshrc: those files are only read by interactive shells, so you should instead set environment variables in startup files like .profile, .bash_profile or .zshenv. Refer to your shell's man page for more info. Customize `exec-path-from-shell-arguments' to remove \"-i\" when done, or disable `exec-path-from-shell-check-startup-files' to disable this message." different)))))) - -;;;###autoload -(defun exec-path-from-shell-copy-env (name) - "Set the environment variable $NAME from the user's shell. - -As a special case, if the variable is $PATH, then `exec-path' and -`eshell-path-env' are also set appropriately. Return the value -of the environment variable." - (interactive "sCopy value of which environment variable from shell? ") - (cdar (exec-path-from-shell-copy-envs (list name)))) - -;;;###autoload -(defun exec-path-from-shell-initialize () - "Initialize environment from the user's shell. - -The values of all the environment variables named in -`exec-path-from-shell-variables' are set from the corresponding -values used in the user's shell." - (interactive) - (exec-path-from-shell-copy-envs exec-path-from-shell-variables)) - - -(provide 'exec-path-from-shell) - -;; Local Variables: -;; coding: utf-8 -;; indent-tabs-mode: nil -;; require-final-newline: t -;; checkdoc-minor-mode: t -;; End: - -;;; exec-path-from-shell.el ends here |