X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/0333a1cc1c0c43d0813467adf208c6016043039d..2b4e72e1d5ccecf590125c022a78a88755c779e5:/lisp/emacs-lock.el diff --git a/lisp/emacs-lock.el b/lisp/emacs-lock.el index 729a0d0439..139bfa2454 100644 --- a/lisp/emacs-lock.el +++ b/lisp/emacs-lock.el @@ -1,17 +1,18 @@ -;;; emacs-lock.el --- prevents you from exiting emacs if a buffer is locked +;;; emacs-lock.el --- prevents you from exiting Emacs if a buffer is locked -;; Copyright (C) 1994, 1997 Free Software Foundation, Inc +;; Copyright (C) 1994, 1997, 2001, 2002, 2003, 2004, +;; 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc ;; Author: Tom Wurgler ;; Created: 12/8/94 -;; Keywords: +;; Keywords: extensions, processes ;; This file is part of GNU Emacs. -;; GNU Emacs is free software; you can redistribute it and/or modify +;; 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. +;; the Free Software Foundation, either version 3 of the License, 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 @@ -19,25 +20,23 @@ ;; 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. +;; along with GNU Emacs. If not, see . ;;; 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 +;; 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 +;; 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 +;; accidentally exit Emacs. To unlock the buffer, just goto the buffer and ;; run toggle-emacs-lock again. ;;; Code: (defvar emacs-lock-from-exiting nil - "Whether emacs is locked to prevent exiting. See `check-emacs-lock'.") + "Whether Emacs is locked to prevent exiting. See `check-emacs-lock'.") (make-variable-buffer-local 'emacs-lock-from-exiting) (defvar emacs-lock-buffer-locked nil @@ -47,34 +46,30 @@ (defun check-emacs-lock () "Check if variable `emacs-lock-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 emacs-lock-from-exiting - (error "Emacs is locked from exit due to buffer: %s" (buffer-name)) - (setq buffers (cdr buffers))))))) +If any locked buffer is found, signal error and display the buffer's name." + (save-excursion + (dolist (buffer (buffer-list)) + (set-buffer buffer) + (when emacs-lock-from-exiting + (error "Emacs is locked from exit due to buffer: %s" (buffer-name)))))) (defun toggle-emacs-lock () - "Toggle `emacs-lock-from-exiting' between t and nil for the current buffer. + "Toggle `emacs-lock-from-exiting' for the current buffer. See `check-emacs-lock'." (interactive) - (if emacs-lock-from-exiting - (setq emacs-lock-from-exiting nil) - (setq emacs-lock-from-exiting t)) + (setq emacs-lock-from-exiting (not emacs-lock-from-exiting)) (if emacs-lock-from-exiting (message "Buffer is now locked") (message "Buffer is now unlocked"))) (defun emacs-lock-check-buffer-lock () "Check if variable `emacs-lock-from-exiting' is t for a buffer. -If t is found, signal error and display the locked buffer name." - (if emacs-lock-from-exiting - (error "Buffer `%s' is locked, can't delete it" (buffer-name)))) +If the buffer is locked, signal error and display its name." + (when emacs-lock-from-exiting + (error "Buffer `%s' is locked, can't delete it" (buffer-name)))) ; These next defuns make it so if you exit a shell that is locked, the lock -; is shut off for that shell so you can exit emacs. same for telnet. +; is shut off for that shell so you can exit Emacs. Same for telnet. ; Also, if a shell or a telnet buffer was locked and the process killed, ; turn the lock back on again if the process is restarted. @@ -85,7 +80,7 @@ If t is found, signal error and display the locked buffer name." (defun emacs-lock-clear-sentinel (proc str) (if emacs-lock-from-exiting (progn - (setq emacs-lock-from-exiting nil) + (setq emacs-lock-from-exiting nil) (setq emacs-lock-buffer-locked t) (message "Buffer is now unlocked")) (setq emacs-lock-buffer-locked nil))) @@ -103,4 +98,5 @@ If t is found, signal error and display the locked buffer name." (provide 'emacs-lock) +;; arch-tag: 58e6cb43-7cf0-401a-bcb6-4902a0b8bdc1 ;;; emacs-lock.el ends here