Mercurial > emacs
view lisp/play/spook.el @ 83374:0b75ace4f7ad
Fix crash after y-or-n-p prompt triggered by emacsclient. (Reported by Han Boetes, analysis by Kalle Olavi Niemitalo.)
* src/keyboard.c (temporarily_switch_to_single_kboard)
(record_single_kboard_state, restore_kboard_configuration): New functions.
(timer_check): Use record_single_kboard_state instead of
naive single_kboard state management.
* src/fns.c: Include termhooks.h.
(Fy_or_n_p): Use temporarily_switch_to_single_kboard to prevent crashes
caused by bogus longjmps in read_char.
* src/callint.c (Fcall_interactively): Use
temporarily_switch_to_single_kboard instead of single_kboard_state.
Make sure it is correctly unwinded.
* src/keyboard.c (recursive_edit_unwind): Remove single_kboard stuff.
(Frecursive_edit): Use temporarily_switch_to_single_kboard for
single_kboard state management.
* src/minibuf.c (read_minibuf): Use temporarily_switch_to_single_kboard
instead of simply calling single_kboard_state.
* src/keyboard.c (push_device_kboard): Remove function.
(push_kboard): New function.
(push_frame_kboard): Use it.
(pop_frame_kboard): Rename to pop_kboard.
* src/xdisp.c (display_mode_line, Fformat_mode_line): Update uses.
* src/data.c: Include termhooks.h.
(Fterminal_local_value, Fset_terminal_local_value): Update.
* src/Makefile.in (data.o, fns.o): Add termhooks.h dependency.
* src/keyboard.h (push_device_kboard, pop_frame_kboard): Remove declarations.
(push_kboard, pop_kboard, temporarily_switch_to_single_kboard)
(record_single_kboard_state): New declarations.
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-414
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Sun, 11 Sep 2005 06:42:03 +0000 |
parents | 34bd8e434dd7 |
children | 836785857446 edf295560b5a |
line wrap: on
line source
;;; spook.el --- spook phrase utility for overloading the NSA line eater ;; Copyright (C) 1988, 1993, 2002, 2003, 2004, ;; 2005 Free Software Foundation, Inc. ;; Maintainer: FSF ;; Keywords: games ;; Created: May 1987 ;; 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., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; Steve Strassmann <straz@media-lab.media.mit.edu> didn't write ;; this, and even if he did, he really didn't mean for you to use it ;; in an anarchistic way. ;; ;; To use this: ;; Just before sending mail, do M-x spook. ;; A number of phrases will be inserted into your buffer, to help ;; give your message that extra bit of attractiveness for automated ;; keyword scanners. Help defeat the NSA trunk trawler! ;;; Code: (require 'cookie1) ; Variables (defgroup spook nil "Spook phrase utility for overloading the NSA line eater." :prefix "spook-" :group 'games) (defcustom spook-phrases-file (expand-file-name "spook.lines" data-directory) "Keep your favorite phrases here." :type 'file :group 'spook) (defcustom spook-phrase-default-count 15 "Default number of phrases to insert." :type 'integer :group 'spook) ;;;###autoload (defun spook () "Adds that special touch of class to your outgoing mail." (interactive) (cookie-insert spook-phrases-file spook-phrase-default-count "Checking authorization..." "Checking authorization...Approved")) ;;;###autoload (defun snarf-spooks () "Return a vector containing the lines from `spook-phrases-file'." (cookie-snarf spook-phrases-file "Checking authorization..." "Checking authorization...Approved")) ;; Note: the implementation that used to take up most of this file has been ;; cleaned up, generalized, gratuitously broken by esr, and now resides in ;; cookie1.el. (provide 'spook) ;;; arch-tag: c682b61f-92b6-4492-9c0d-2367e562449c ;;; spook.el ends here