Mercurial > emacs
view lisp/ns-grabenv.el @ 96681:38b988607823
(parse_menu_item): Don't use cachelist, even under NS.
If the cache doesn't work, let's fix it, rather than work around it.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Tue, 15 Jul 2008 21:01:44 +0000 |
parents | d45acf0c8d23 |
children | 9a85c163883d |
line wrap: on
line source
;;; ns-grabenv.el --- functions to set environment variables by running a subshell ;;; Copyright (C) 1993, 1994, 2005, 2006, 2008 Free Software Foundation, Inc. ;;; Author: Carl Edman, Christian Limpach, Scott Bender, Christophe de Dinechin, ;;; Adrian Robert ;;; Keywords: terminals ;;; This file is part of GNU Emacs. ;;; ;;; GNU Emacs 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, or (at your option) ;;; any later version. ;;; ;;; GNU Emacs 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 GNU Emacs; see the file COPYING. If not, write to ;;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ;;; Boston, MA 02110-1301, USA. ;;; Idea based on NS 4.2 distribution, this version of code based on ;;; mac-read-environment-vars-from-shell () by David Reitter in Aquamacs dist.. ;; utility function (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 &optional startup) "Run a shell subprocess, and interpret its output as a series of environment\n\ variables to insert into the emacs environment. The first optional argument\n\ gives the path to the shell (defaults to the current setting of\n\ shell-file-name). The remaining arguments are interpreted as a list of\n\ commands for it to execute (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))))))) (provide 'ns-grabenv) ;;; ns-grabenv.el ends here ; (autoload (quote ns-grabenv) "ns-grabenv" "\ ; Run a shell subprocess, and interpret its output as a series of environment ; variables to insert into the emacs environment. The first optional argument ; gives the path to the shell (defaults to the current setting of ; shell-file-name). The remaining arguments are interpreted as a list of ; commands for it to execute (defaults to \"printenv\")." nil nil)