annotate lisp/resume.el @ 24419:30e478cd167e

(shell-command-default-error-buffer): Renamed from shell-command-on-region-default-error-buffer. (shell-command-on-region): Mention in echo area when there is some error output. Mention success or failure, too. Accumulate multiple error outputs going forward, with formfeed in between. Display the error buffer when we have put something in it. (shell-command): Add the ERROR-BUFFER argument feature.
author Karl Heuer <kwzh@gnu.org>
date Mon, 01 Mar 1999 03:19:32 +0000
parents b1a3fef3d648
children e88404e8f2cf
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
658
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 244
diff changeset
1 ;;; resume.el --- process command line args from within a suspended Emacs job
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 244
diff changeset
2
845
213978acbc1e entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 814
diff changeset
3 ;; Copyright (C) 1992 Free Software Foundation, Inc.
213978acbc1e entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 814
diff changeset
4
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 664
diff changeset
5 ;; Author: Joe Wells <jbw@bucsf.bu.edu>
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 664
diff changeset
6 ;; Adapted-By: ESR
814
38b2499cb3e9 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
7 ;; Keywords: processes
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 664
diff changeset
8
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 664
diff changeset
9 ;; This file is part of GNU Emacs.
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 664
diff changeset
10
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 664
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 664
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
12244
ac7375e60931 Update GPL to version 2.
Karl Heuer <kwzh@gnu.org>
parents: 7385
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 664
diff changeset
14 ;; any later version.
17
1e1bc0842996 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15
1e1bc0842996 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 664
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 664
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 664
diff changeset
19 ;; GNU General Public License for more details.
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 664
diff changeset
20
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 664
diff changeset
21 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12244
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12244
diff changeset
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12244
diff changeset
24 ;; Boston, MA 02111-1307, USA.
17
1e1bc0842996 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 664
diff changeset
26 ;;; Commentary:
17
1e1bc0842996 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27
15120
fec39a06882d Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
28 ;; The purpose of this library is to handle command line arguments
fec39a06882d Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
29 ;; when you resume an existing Emacs job.
fec39a06882d Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
30
fec39a06882d Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
31 ;; In order to use it, you must put this code in your .emacs file.
fec39a06882d Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
32
fec39a06882d Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
33 ;; (add-hook 'suspend-hook 'resume-suspend-hook)
fec39a06882d Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
34 ;; (add-hook 'suspend-resume-hook 'resume-process-args)
fec39a06882d Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
35
fec39a06882d Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
36 ;; You can't get the benefit of this library by using the `emacs' command,
15121
b1a3fef3d648 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 15120
diff changeset
37 ;; since that always starts a new Emacs job. Instead you must use a
b1a3fef3d648 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 15120
diff changeset
38 ;; command called `edit' which knows how to resume an existing Emacs job
b1a3fef3d648 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 15120
diff changeset
39 ;; if you have one, or start a new Emacs job if you don't have one.
b1a3fef3d648 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 15120
diff changeset
40
b1a3fef3d648 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 15120
diff changeset
41 ;; To define the `edit' command, run the script etc/emacs.csh (if you use CSH),
b1a3fef3d648 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 15120
diff changeset
42 ;; or etc/emacs.bash if you use BASH. You would normally do this in your
b1a3fef3d648 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 15120
diff changeset
43 ;; login script.
82
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
44
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 664
diff changeset
45 ;; Stephan Gildea suggested bug fix (gildea@bbn.com).
17
1e1bc0842996 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 ;; Ideas from Michael DeCorte and other people.
1e1bc0842996 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 664
diff changeset
48 ;;; Code:
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 664
diff changeset
49
2536
e8426c217792 (resume-empty-args-file): Renamed from empty-args-file.
Richard M. Stallman <rms@gnu.org>
parents: 2110
diff changeset
50 (defvar resume-emacs-args-file (expand-file-name "~/.emacs_args")
17
1e1bc0842996 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 "*This file is where arguments are placed for a suspended emacs job.")
1e1bc0842996 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52
2536
e8426c217792 (resume-empty-args-file): Renamed from empty-args-file.
Richard M. Stallman <rms@gnu.org>
parents: 2110
diff changeset
53 (defvar resume-emacs-args-buffer " *Command Line Args*"
82
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
54 "Buffer that is used by resume-process-args.")
17
1e1bc0842996 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55
1e1bc0842996 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 (defun resume-process-args ()
2536
e8426c217792 (resume-empty-args-file): Renamed from empty-args-file.
Richard M. Stallman <rms@gnu.org>
parents: 2110
diff changeset
57 "Handler for command line args given when Emacs is resumed."
82
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
58 (let ((start-buffer (current-buffer))
2536
e8426c217792 (resume-empty-args-file): Renamed from empty-args-file.
Richard M. Stallman <rms@gnu.org>
parents: 2110
diff changeset
59 (args-buffer (get-buffer-create resume-emacs-args-buffer))
7385
ad1c04ef7695 Provide 'resume.
Karl Heuer <kwzh@gnu.org>
parents: 2537
diff changeset
60 length args
ad1c04ef7695 Provide 'resume.
Karl Heuer <kwzh@gnu.org>
parents: 2537
diff changeset
61 (command-line-default-directory default-directory))
17
1e1bc0842996 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 (unwind-protect
1e1bc0842996 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 (progn
82
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
64 (set-buffer args-buffer)
17
1e1bc0842996 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 (erase-buffer)
2536
e8426c217792 (resume-empty-args-file): Renamed from empty-args-file.
Richard M. Stallman <rms@gnu.org>
parents: 2110
diff changeset
66 ;; get the contents of resume-emacs-args-file
17
1e1bc0842996 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 (condition-case ()
2536
e8426c217792 (resume-empty-args-file): Renamed from empty-args-file.
Richard M. Stallman <rms@gnu.org>
parents: 2110
diff changeset
68 (let ((result (insert-file-contents resume-emacs-args-file)))
82
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
69 (setq length (car (cdr result))))
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
70 ;; the file doesn't exist, ergo no arguments
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
71 (file-error
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
72 (erase-buffer)
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
73 (setq length 0)))
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
74 (if (<= length 0)
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
75 (setq args nil)
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
76 ;; get the arguments from the buffer
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
77 (goto-char (point-min))
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
78 (while (not (eobp))
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
79 (skip-chars-forward " \t\n")
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
80 (let ((begin (point)))
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
81 (skip-chars-forward "^ \t\n")
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
82 (setq args (cons (buffer-substring begin (point)) args)))
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
83 (skip-chars-forward " \t\n"))
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
84 ;; arguments are now in reverse order
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
85 (setq args (nreverse args))
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
86 ;; make sure they're not read again
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
87 (erase-buffer))
2536
e8426c217792 (resume-empty-args-file): Renamed from empty-args-file.
Richard M. Stallman <rms@gnu.org>
parents: 2110
diff changeset
88 (resume-write-buffer-to-file (current-buffer) resume-emacs-args-file)
82
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
89 ;; if nothing was in buffer, args will be null
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
90 (or (null args)
7385
ad1c04ef7695 Provide 'resume.
Karl Heuer <kwzh@gnu.org>
parents: 2537
diff changeset
91 (setq command-line-default-directory
ad1c04ef7695 Provide 'resume.
Karl Heuer <kwzh@gnu.org>
parents: 2537
diff changeset
92 (file-name-as-directory (car args))
82
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
93 args (cdr args)))
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
94 ;; actually process the arguments
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
95 (command-line-1 args))
17
1e1bc0842996 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 ;; If the command line args don't result in a find-file, the
82
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
97 ;; buffer will be left in args-buffer. So we change back to the
17
1e1bc0842996 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98 ;; original buffer. The reason I don't just use
1e1bc0842996 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99 ;; (let ((default-directory foo))
1e1bc0842996 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 ;; (command-line-1 args))
1e1bc0842996 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 ;; in the context of the original buffer is because let does not
1e1bc0842996 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 ;; work properly with buffer-local variables.
82
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
103 (if (eq (current-buffer) args-buffer)
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
104 (set-buffer start-buffer)))))
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
105
2536
e8426c217792 (resume-empty-args-file): Renamed from empty-args-file.
Richard M. Stallman <rms@gnu.org>
parents: 2110
diff changeset
106 ;;;###autoload
2537
62b0d90a62e8 (resume-suspend-hook): Renamed from resume-empty-args-file.
Richard M. Stallman <rms@gnu.org>
parents: 2536
diff changeset
107 (defun resume-suspend-hook ()
2536
e8426c217792 (resume-empty-args-file): Renamed from empty-args-file.
Richard M. Stallman <rms@gnu.org>
parents: 2110
diff changeset
108 "Clear out the file used for transmitting args when Emacs resumes."
82
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
109 (save-excursion
2536
e8426c217792 (resume-empty-args-file): Renamed from empty-args-file.
Richard M. Stallman <rms@gnu.org>
parents: 2110
diff changeset
110 (set-buffer (get-buffer-create resume-emacs-args-buffer))
82
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
111 (erase-buffer)
2536
e8426c217792 (resume-empty-args-file): Renamed from empty-args-file.
Richard M. Stallman <rms@gnu.org>
parents: 2110
diff changeset
112 (resume-write-buffer-to-file (current-buffer) resume-emacs-args-file)))
82
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
113
2536
e8426c217792 (resume-empty-args-file): Renamed from empty-args-file.
Richard M. Stallman <rms@gnu.org>
parents: 2110
diff changeset
114 (defun resume-write-buffer-to-file (buffer file)
82
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
115 "Writes the contents of BUFFER into FILE, if permissions allow."
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
116 (if (not (file-writable-p file))
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
117 (error "No permission to write file %s" file))
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
118 (save-excursion
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
119 (set-buffer buffer)
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
120 (clear-visited-file-modtime)
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
121 (save-restriction
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
122 (widen)
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
123 (write-region (point-min) (point-max) file nil 'quiet))
0bc7e3b14f85 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 17
diff changeset
124 (set-buffer-modified-p nil)))
658
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 244
diff changeset
125
7385
ad1c04ef7695 Provide 'resume.
Karl Heuer <kwzh@gnu.org>
parents: 2537
diff changeset
126 (provide 'resume)
ad1c04ef7695 Provide 'resume.
Karl Heuer <kwzh@gnu.org>
parents: 2537
diff changeset
127
658
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 244
diff changeset
128 ;;; resume.el ends here