annotate lisp/ns-grabenv.el @ 96742:3479c744277b

(Qsuper): Remove. (parse_menu_item): Don't call where_is_internal specially for NS.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Wed, 16 Jul 2008 16:38:33 +0000
parents 43c6056e57fd
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
1 ;;; ns-grabenv.el --- functions to set environment variables by running a subshell
96702
43c6056e57fd Fix header and footer format.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
2
43c6056e57fd Fix header and footer format.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
3 ;; Copyright (C) 1993, 1994, 2005, 2006, 2008 Free Software Foundation, Inc.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
4
96702
43c6056e57fd Fix header and footer format.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
5 ;; Author: Carl Edman, Christian Limpach, Scott Bender, Christophe de Dinechin, Adrian Robert
43c6056e57fd Fix header and footer format.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
6 ;; Keywords: terminals
43c6056e57fd Fix header and footer format.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
7
43c6056e57fd Fix header and footer format.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
8 ;; This file is part of GNU Emacs.
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
9
96702
43c6056e57fd Fix header and footer format.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
10 ;; GNU Emacs is free software: you can redistribute it and/or modify
43c6056e57fd Fix header and footer format.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
43c6056e57fd Fix header and footer format.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
12 ;; the Free Software Foundation, either version 3 of the License, or
43c6056e57fd Fix header and footer format.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
13 ;; (at your option) any later version.
43c6056e57fd Fix header and footer format.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
14
43c6056e57fd Fix header and footer format.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
43c6056e57fd Fix header and footer format.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
43c6056e57fd Fix header and footer format.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
43c6056e57fd Fix header and footer format.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
18 ;; GNU General Public License for more details.
43c6056e57fd Fix header and footer format.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
19
43c6056e57fd Fix header and footer format.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
20 ;; You should have received a copy of the GNU General Public License
43c6056e57fd Fix header and footer format.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
21 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
43c6056e57fd Fix header and footer format.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
22
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
23
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
24 ;;; Idea based on NS 4.2 distribution, this version of code based on
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
25 ;;; mac-read-environment-vars-from-shell () by David Reitter in Aquamacs dist..
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
26
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
27
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
28 ;; utility function
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
29 (defun ns-make-command-string (cmdlist)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
30 (let ((str "")
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
31 (cmds cmdlist))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
32 (while cmds
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
33 (if (not (eq str "")) (setq str (format "%s ; " str)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
34 (setq str (format "%s%s" str (car cmds)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
35 (setq cmds (cdr cmds)))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
36 str))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
37
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
38
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
39 ;;;###autoload
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
40 (defun ns-grabenv (&optional shell-path &optional startup)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
41 "Run a shell subprocess, and interpret its output as a series of environment\n\
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
42 variables to insert into the emacs environment. The first optional argument\n\
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
43 gives the path to the shell (defaults to the current setting of\n\
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
44 shell-file-name). The remaining arguments are interpreted as a list of\n\
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
45 commands for it to execute (defaults to \"printenv\")."
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
46 (interactive)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
47 (with-temp-buffer
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
48 (let ((shell-file-name (if shell-path shell-path shell-file-name))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
49 (cmd (ns-make-command-string (if startup startup '("printenv")))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
50 (shell-command cmd t)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
51 (while (search-forward-regexp "^\\([A-Za-z_0-9]+\\)=\\(.*\\)$" nil t)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
52 (setenv (match-string 1)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
53 (if (equal (match-string 1) "PATH")
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
54 (concat (getenv "PATH") ":" (match-string 2))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
55 (match-string 2)))))))
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
56
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
57 (provide 'ns-grabenv)
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
58
96702
43c6056e57fd Fix header and footer format.
Glenn Morris <rgm@gnu.org>
parents: 96684
diff changeset
59 ;; arch-tag: e65e1dd8-1566-460c-ad66-07948588be56
96675
d45acf0c8d23 merging Emacs.app (NeXTstep port)
Adrian Robert <Adrian.B.Robert@gmail.com>
parents:
diff changeset
60 ;;; ns-grabenv.el ends here