annotate lisp/emacs-lock.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 34593904dc4e
children 695cf19ef79e d7ddb3e565de
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13337
84acc3adcd63 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 13336
diff changeset
1 ;;; emacs-lock.el --- prevents you from exiting emacs if a buffer is locked
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
2
18207
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
3 ;; Copyright (C) 1994, 1997 Free Software Foundation, Inc
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
4
10240
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 ;; Author: Tom Wurgler <twurgler@goodyear.com>
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 ;; Created: 12/8/94
18214
34593904dc4e Add some keywords.
Richard M. Stallman <rms@gnu.org>
parents: 18211
diff changeset
7 ;; Keywords: extensions, processes
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
8
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
9 ;; This file is part of GNU Emacs.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
10
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
10240
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
14 ;; any later version.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
15
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
10240
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; GNU General Public License for more details.
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
20
10240
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
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: 14040
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: 14040
diff changeset
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
24 ;; Boston, MA 02111-1307, USA.
10240
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 ;;; Commentary:
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
27
10240
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 ;; This code sets a buffer-local variable to t if toggle-emacs-lock is run,
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 ;; then if the user attempts to exit emacs, the locked buffer name will be
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 ;; displayed and the exit aborted. This is just a way of protecting
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 ;; yourself from yourself. For example, if you have a shell running a big
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 ;; program and exiting emacs would abort that program, you may want to lock
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 ;; that buffer, then if you forget about it after a while, you won't
14040
187735b53d52 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
34 ;; accidentally exit emacs. To unlock the buffer, just goto the buffer and
10240
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 ;; run toggle-emacs-lock again.
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
37 ;;; Code:
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
38
18207
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
39 (defvar emacs-lock-from-exiting nil
10240
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 "Whether emacs is locked to prevent exiting. See `check-emacs-lock'.")
18207
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
41 (make-variable-buffer-local 'emacs-lock-from-exiting)
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
42
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
43 (defvar emacs-lock-buffer-locked nil
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
44 "Whether a shell or telnet buffer was locked when its process was killed.")
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
45 (make-variable-buffer-local 'emacs-lock-buffer-locked)
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
46 (put 'emacs-lock-buffer-locked 'permanent-local t)
10240
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 (defun check-emacs-lock ()
18207
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
49 "Check if variable `emacs-lock-from-exiting' is t for any buffer.
10240
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 If any t is found, signal error and display the locked buffer name."
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 (let ((buffers (buffer-list)))
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52 (save-excursion
18207
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
53 (while buffers
10240
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 (set-buffer (car buffers))
18207
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
55 (if emacs-lock-from-exiting
10240
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 (error "Emacs is locked from exit due to buffer: %s" (buffer-name))
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 (setq buffers (cdr buffers)))))))
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 (defun toggle-emacs-lock ()
18207
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
60 "Toggle `emacs-lock-from-exiting' between t and nil for the current buffer.
10240
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 See `check-emacs-lock'."
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 (interactive)
18207
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
63 (if emacs-lock-from-exiting
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
64 (setq emacs-lock-from-exiting nil)
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
65 (setq emacs-lock-from-exiting t))
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
66 (if emacs-lock-from-exiting
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
67 (message "Buffer is now locked")
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
68 (message "Buffer is now unlocked")))
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
69
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
70 (defun emacs-lock-check-buffer-lock ()
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
71 "Check if variable `emacs-lock-from-exiting' is t for a buffer.
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
72 If t is found, signal error and display the locked buffer name."
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
73 (if emacs-lock-from-exiting
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
74 (error "Buffer `%s' is locked, can't delete it" (buffer-name))))
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
75
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
76 ; These next defuns make it so if you exit a shell that is locked, the lock
18211
9364da8606f3 Comment fix.
Karl Heuer <kwzh@gnu.org>
parents: 18207
diff changeset
77 ; is shut off for that shell so you can exit emacs. Same for telnet.
18207
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
78 ; Also, if a shell or a telnet buffer was locked and the process killed,
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
79 ; turn the lock back on again if the process is restarted.
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
80
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
81 (defun emacs-lock-shell-sentinel ()
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
82 (set-process-sentinel
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
83 (get-buffer-process (buffer-name)) (function emacs-lock-clear-sentinel)))
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
84
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
85 (defun emacs-lock-clear-sentinel (proc str)
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
86 (if emacs-lock-from-exiting
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
87 (progn
18211
9364da8606f3 Comment fix.
Karl Heuer <kwzh@gnu.org>
parents: 18207
diff changeset
88 (setq emacs-lock-from-exiting nil)
18207
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
89 (setq emacs-lock-buffer-locked t)
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
90 (message "Buffer is now unlocked"))
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
91 (setq emacs-lock-buffer-locked nil)))
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
92
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
93 (defun emacs-lock-was-buffer-locked ()
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
94 (if emacs-lock-buffer-locked
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
95 (setq emacs-lock-from-exiting t)))
10240
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97 (add-hook 'kill-emacs-hook 'check-emacs-lock)
18207
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
98 (add-hook 'kill-buffer-hook 'emacs-lock-check-buffer-lock)
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
99 (add-hook 'shell-mode-hook 'emacs-lock-was-buffer-locked)
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
100 (add-hook 'shell-mode-hook 'emacs-lock-shell-sentinel)
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
101 (add-hook 'telnet-mode-hook 'emacs-lock-was-buffer-locked)
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
102 (add-hook 'telnet-mode-hook 'emacs-lock-shell-sentinel)
10240
72101c74e9e7 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103
18207
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
104 (provide 'emacs-lock)
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
105
3b7e375756d2 Added the string "emacs-lock" to all function
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
106 ;;; emacs-lock.el ends here