view lisp/emacs-lock.el @ 16996:2d67501c45b9

(eldoc-message-commands): Doc fixes. (eldoc-message): Make function, not macro. (eldoc-last-message): New internal variable. (eldoc-mode): Initialize it to nil. (eldoc-message): Use it. (eldoc-print-current-symbol-info): Use it. (eldoc-pre-command-refresh-echo-area): New function. (eldoc-mode): Put it on pre-command-hook if in XEmacs or using idle timers in Emacs. (eldoc-message-commands-table-size): New constant. (eldoc-add-command): Use it to initialize eldoc-message-commands. (eldoc-display-message-no-interference-p): New function. (eldoc-display-message-p): Use it. (eldoc-print-fnsym-args, eldoc-print-var-docstring): Arg sym no longer optional. Do not initialize arg if nil. (eldoc-forward-sexp-safe): Function deleted. (eldoc-beginning-of-sexp): New function. (eldoc-fnsym-in-current-sexp): Use eldoc-beginning-of-sexp. Use eldoc-current-symbol to get symbol at point. (eldoc-function-argstring-from-docstring-method-table): Forge docstrings for `and', `or', `list', `+', and `-'. (eldoc-add-command-completions): New function. (eldoc-add-command): Take list of args. No longer interactive. (eldoc-remove-command-completions): New function. (eldoc-remove-command): Take list of args. No longer interactive. top level: Initialize eldoc-message-commands using eldoc-add-command-completions.
author Noah Friedman <friedman@splode.com>
date Wed, 19 Feb 1997 10:24:26 +0000
parents 83f275dcd93a
children 3b7e375756d2
line wrap: on
line source

;;; emacs-lock.el --- prevents you from exiting emacs if a buffer is locked

;; Copyright (C) 1994 Free Software Foundation, Inc

;; Author: Tom Wurgler <twurgler@goodyear.com>
;; Created: 12/8/94
;; Version: 1.3
;; Keywords: 

;; 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 2, 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., 59 Temple Place - Suite 330,
;; Boston, MA 02111-1307, USA.

;;; Commentary:

;; This code sets a buffer-local variable to t if toggle-emacs-lock is run,
;; then if the user attempts to exit emacs, the locked buffer name will be
;; displayed and the exit aborted.  This is just a way of protecting
;; yourself from yourself.  For example, if you have a shell running a big
;; program and exiting emacs would abort that program, you may want to lock
;; that buffer, then if you forget about it after a while, you won't
;; accidentally exit emacs.  To unlock the buffer, just goto the buffer and
;; run toggle-emacs-lock again.

;;; Code:

(defvar lock-emacs-from-exiting nil
  "Whether emacs is locked to prevent exiting.  See `check-emacs-lock'.")
(make-variable-buffer-local 'lock-emacs-from-exiting)

(defun check-emacs-lock ()
  "Check if variable `lock-emacs-from-exiting' is t for any buffer.
If any t is found, signal error and display the locked buffer name."
  (let ((buffers (buffer-list)))
    (save-excursion
      (while buffers 
	(set-buffer (car buffers))
	(if lock-emacs-from-exiting
	    (error "Emacs is locked from exit due to buffer: %s" (buffer-name))
	  (setq buffers (cdr buffers)))))))

(defun toggle-emacs-lock ()
  "Toggle `lock-emacs-from-exiting' between t and nil for the current buffer.
See `check-emacs-lock'."
  (interactive)
  (if lock-emacs-from-exiting
      (setq lock-emacs-from-exiting nil)
    (setq lock-emacs-from-exiting t))
  (if lock-emacs-from-exiting
      (message "Emacs is now locked from exiting.")
    (message "Emacs is now unlocked.")))

(add-hook 'kill-emacs-hook 'check-emacs-lock)

;; emacs-lock.el ends here