Mercurial > emacs
changeset 96792:50bfb208e018
Contents of ns-grabenv.el moved here.
(ns-grabenv, ns-open-file-select-line): Doc fixes.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Fri, 18 Jul 2008 17:09:23 +0000 |
parents | c0971e06fee1 |
children | 843ceb9d6204 |
files | lisp/term/ns-win.el |
diffstat | 1 files changed, 35 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/term/ns-win.el Fri Jul 18 17:08:59 2008 +0000 +++ b/lisp/term/ns-win.el Fri Jul 18 17:09:23 2008 +0000 @@ -303,10 +303,40 @@ -;;;; Lisp niceties, most used only under ns-extended-platform-support-mode, -;;;; defined below +;; 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 'ns-grabenv "ns-grabenv" "Get environment from your shell." t nil) +;;;###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 @@ (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