Guest User

Untitled

a guest
Sep 25th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.70 KB | None | 0 0
  1. ;;; -*- mode:lisp; package:auto-exit -*-
  2.  
  3. (provide "auto-exit")
  4.  
  5. (defpackage :auto-exit
  6. (:use :lisp :editor)
  7. (:export #:start #:stop))
  8.  
  9. (in-package :auto-exit)
  10.  
  11. (defvar *point* 10000)
  12. (defvar *interval* 1)
  13. (defvar *dec* 50)
  14.  
  15. (defun counter ()
  16. (when (< (decf *point* *dec*) 0)
  17. (save-all-buffers-kill-xyzzy))
  18. (let ((gauge (floor *point* 125)))
  19. (message "~V@{#~}~V@{=~}" gauge (- 80 gauge) t)))
  20.  
  21. (defun heal ()
  22. (setq *point* (min 10000 (+ (length (format nil "~A" *this-command*)) *point*))))
  23.  
  24. (defun start ()
  25. (interactive)
  26. (add-hook '*post-command-hook* 'heal)
  27. (start-timer *interval* 'counter))
  28.  
  29. (defun stop ()
  30. (interactive)
  31. (delete-hook '*post-command-hook* 'heal)
  32. (stop-timer 'counter))
Add Comment
Please, Sign In to add comment