Modified to use cookie.el
This commit is contained in:
parent
c91c4e6d7f
commit
ed73b2568d
2 changed files with 24 additions and 102 deletions
|
@ -24,17 +24,11 @@
|
|||
|
||||
;;; Commentary:
|
||||
|
||||
; Steve Strassmann (straz@media-lab.media.mit.edu) didn't write
|
||||
; 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:
|
||||
; Make sure you have the variable SPOOK-PHRASES-FILE pointing to
|
||||
; a valid phrase file. Phrase files are in the same format as
|
||||
; zippy's yow.lines (ITS-style LINS format).
|
||||
; Strings are terminated by ascii 0 characters. Leading whitespace ignored.
|
||||
; Everything up to the first \000 is a comment.
|
||||
;
|
||||
; 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
|
||||
|
@ -42,6 +36,8 @@
|
|||
|
||||
;;; Code:
|
||||
|
||||
(require 'cookie)
|
||||
|
||||
; Variables
|
||||
(defvar spook-phrases-file (concat data-directory "spook.lines")
|
||||
"Keep your favorite phrases here.")
|
||||
|
@ -49,71 +45,17 @@
|
|||
(defvar spook-phrase-default-count 15
|
||||
"Default number of phrases to insert")
|
||||
|
||||
(defvar spook-vector nil
|
||||
"Important phrases for NSA mail-watchers")
|
||||
|
||||
; Randomize the seed in the random number generator.
|
||||
(random t)
|
||||
|
||||
; Call this with M-x spook.
|
||||
;;;###autoload
|
||||
(defun spook ()
|
||||
"Adds that special touch of class to your outgoing mail."
|
||||
(interactive)
|
||||
(if (null spook-vector)
|
||||
(setq spook-vector (snarf-spooks)))
|
||||
(shuffle-vector spook-vector)
|
||||
(let ((start (point)))
|
||||
(insert ?\n)
|
||||
(spook1 (min (- (length spook-vector) 1) spook-phrase-default-count))
|
||||
(insert ?\n)
|
||||
(fill-region-as-paragraph start (point) nil)))
|
||||
(cookie-insert
|
||||
spook-phrases-file
|
||||
spook-phrase-default-count
|
||||
"Checking authorization"
|
||||
"Checking authorization...Approved"))
|
||||
|
||||
(defun spook1 (arg)
|
||||
"Inserts a spook phrase ARG times."
|
||||
(cond ((zerop arg) t)
|
||||
(t (insert (aref spook-vector arg))
|
||||
(insert " ")
|
||||
(spook1 (1- arg)))))
|
||||
|
||||
(defun snarf-spooks ()
|
||||
"Reads in the phrase file"
|
||||
(message "Checking authorization...")
|
||||
(save-excursion
|
||||
(let ((buf (generate-new-buffer "*spook*"))
|
||||
(result '()))
|
||||
(set-buffer buf)
|
||||
(insert-file-contents (expand-file-name spook-phrases-file))
|
||||
(search-forward "\0")
|
||||
(while (progn (skip-chars-forward " \t\n\r\f") (not (eobp)))
|
||||
(let ((beg (point)))
|
||||
(search-forward "\0")
|
||||
(setq result (cons (buffer-substring beg (1- (point)))
|
||||
result))))
|
||||
(kill-buffer buf)
|
||||
(message "Checking authorization... Approved.")
|
||||
(setq spook-vector (apply 'vector result)))))
|
||||
|
||||
(defun pick-random (n)
|
||||
"Returns a random number from 0 to N-1 inclusive."
|
||||
(% (logand 0777777 (random)) n))
|
||||
|
||||
; Thanks to Ian G Batten <BattenIG@CS.BHAM.AC.UK>
|
||||
; [of the University of Birmingham Computer Science Department]
|
||||
; for the iterative version of this shuffle.
|
||||
;
|
||||
(defun shuffle-vector (vector)
|
||||
"Randomly permute the elements of VECTOR (all permutations equally likely)"
|
||||
(let ((i 0)
|
||||
j
|
||||
temp
|
||||
(len (length vector)))
|
||||
(while (< i len)
|
||||
(setq j (+ i (pick-random (- len i))))
|
||||
(setq temp (aref vector i))
|
||||
(aset vector i (aref vector j))
|
||||
(aset vector j temp)
|
||||
(setq i (1+ i))))
|
||||
vector)
|
||||
;; Note: the implementation that used to take up most of this file has
|
||||
;; been cleaned up and generalized and now resides in cookie.el.
|
||||
|
||||
;;; spook.el ends here
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;; yow.el --- generate random zippyisms
|
||||
|
||||
;; Copyright (C) 1985, 1987 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1993 Free Software Foundation, Inc.
|
||||
|
||||
;; Maintainer: FSF
|
||||
;; Keywords: games
|
||||
|
@ -24,25 +24,24 @@
|
|||
;;; Commentary:
|
||||
|
||||
;; Important pinheaddery for GNU Emacs.
|
||||
;; Expects file emacs/etc/yow.lines to be in ITS-style LINS format
|
||||
;; (ie strings terminated by ascii 0 characters. Leading whitespace ignored)
|
||||
;; Everything up to the first \000 is a comment.
|
||||
;;
|
||||
;; See cookie.el for implementation. Note --- the `n' argument of yow
|
||||
;; from the 18.xx implementation is no longer; we only support *random*
|
||||
;; random access now.
|
||||
|
||||
;;; Code:
|
||||
|
||||
; Randomize the seed in the random number generator.
|
||||
(random t)
|
||||
(require 'cookie)
|
||||
|
||||
(defvar yow-file (concat data-directory "yow.lines")
|
||||
"Pertinent pinhead phrases.")
|
||||
|
||||
;;;###autoload
|
||||
(defun yow (&optional n interactive)
|
||||
"Return or display a Zippy quotation."
|
||||
(interactive "P\np")
|
||||
(if (null yow-vector)
|
||||
(setq yow-vector (snarf-yows)))
|
||||
(cond (n (setq n (prefix-numeric-value n)))
|
||||
((>= (setq n (random (length yow-vector))) 0))
|
||||
(t (setq n (- n))))
|
||||
(let ((yow (aref yow-vector n)))
|
||||
(defun yow (&optional interactive)
|
||||
"Return or display a random Zippy quotation."
|
||||
(interactive "P")
|
||||
(let ((yow (cookie
|
||||
yow-file "Am I CONSING yet?..." "I have SEEN the CONSING!!")))
|
||||
(cond ((not interactive)
|
||||
yow)
|
||||
((not (string-match "\n" yow))
|
||||
|
@ -53,25 +52,6 @@
|
|||
(with-output-to-temp-buffer "*Help*"
|
||||
(princ yow))))))
|
||||
|
||||
(defvar yow-vector nil "Pertinent pinhead statements")
|
||||
(defun snarf-yows (&optional file)
|
||||
(save-excursion
|
||||
(let ((buf (generate-new-buffer " yow"))
|
||||
(result '())
|
||||
(cursor-in-echo-area t))
|
||||
(message "Am I CONSING yet?...")
|
||||
(set-buffer buf)
|
||||
(insert-file-contents (or file
|
||||
(expand-file-name "yow.lines" data-directory)))
|
||||
(search-forward "\0")
|
||||
(while (progn (skip-chars-forward " \t\n\r\f") (not (eobp)))
|
||||
(let ((beg (point)))
|
||||
(search-forward "\0")
|
||||
(setq result (cons (buffer-substring beg (1- (point)))
|
||||
result))))
|
||||
(kill-buffer buf)
|
||||
(message "I have SEEN the CONSING!!" (length result))
|
||||
(apply 'vector (nreverse result)))))
|
||||
|
||||
; Yowza!! Feed zippy quotes to the doctor. Watch results.
|
||||
; fun, fun, fun. Entertainment for hours...
|
||||
|
|
Loading…
Reference in a new issue