From: Chong Yidong Date: Fri, 18 Jul 2008 17:09:23 +0000 (+0000) Subject: Contents of ns-grabenv.el moved here. X-Git-Tag: emacs-pretest-23.0.90~4086 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b90cc05848b0eb34ad5e5208a7843f4303d0fe42;p=emacs.git Contents of ns-grabenv.el moved here. (ns-grabenv, ns-open-file-select-line): Doc fixes. --- diff --git a/lisp/term/ns-win.el b/lisp/term/ns-win.el index 88c71543d6d..a890f196b9f 100644 --- a/lisp/term/ns-win.el +++ b/lisp/term/ns-win.el @@ -303,10 +303,40 @@ The properties returned may include `top', `left', `height', and `width'." -;;;; Lisp niceties, most used only under ns-extended-platform-support-mode, -;;;; defined below - -(autoload 'ns-grabenv "ns-grabenv" "Get environment from your shell." t nil) +;; Functions to set environment variables by running a subshell. +;;; Idea based on NS 4.2 distribution, this version of code based on +;;; mac-read-environment-vars-from-shell () by David Reitter. +;;; Mostly used only under ns-extended-platform-support-mode. + +(defun ns-make-command-string (cmdlist) + (let ((str "") + (cmds cmdlist)) + (while cmds + (if (not (eq str "")) (setq str (format "%s ; " str))) + (setq str (format "%s%s" str (car cmds))) + (setq cmds (cdr cmds))) + str)) + +;;;###autoload +(defun ns-grabenv (&optional shell-path startup) + "Set the Emacs environment using the output of a shell command. +This runs a shell subprocess, and interpret its output as a +series of environment variables to insert into the emacs +environment. +SHELL-PATH gives the path to the shell; if nil, this defaults to +the current setting of `shell-file-name'. +STARTUP is a list of commands for the shell to execute; if nil, +this defaults to \"printenv\"." + (interactive) + (with-temp-buffer + (let ((shell-file-name (if shell-path shell-path shell-file-name)) + (cmd (ns-make-command-string (if startup startup '("printenv"))))) + (shell-command cmd t) + (while (search-forward-regexp "^\\([A-Za-z_0-9]+\\)=\\(.*\\)$" nil t) + (setenv (match-string 1) + (if (equal (match-string 1) "PATH") + (concat (getenv "PATH") ":" (match-string 2)) + (match-string 2))))))) ;; Set up a number of aliases and other layers to pretend we're using ;; the Choi/Mitsuharu Carbon port. @@ -952,8 +982,8 @@ prompting. If file is a directory perform a find-file on it." (defvar ns-input-line) ; nsterm.m (defun ns-open-file-select-line () - "Brings up a buffer containing file ns-input-file,\n\ -and highlights lines indicated by ns-input-line." + "Open a buffer containing the file `ns-input-file'. +Lines are highlighted according to `ns-input-line'." (interactive) (ns-find-file) (cond