.
authorJoerg Jaspert <joerg@debian.org>
Tue, 10 Jun 2014 20:57:49 +0000 (22:57 +0200)
committerJoerg Jaspert <joerg@debian.org>
Tue, 10 Jun 2014 20:57:49 +0000 (22:57 +0200)
.emacs.d/elisp/local/cal.el [new file with mode: 0644]
.emacs.d/elisp/local/keyboard-cat-mode.el [new file with mode: 0644]

diff --git a/.emacs.d/elisp/local/cal.el b/.emacs.d/elisp/local/cal.el
new file mode 100644 (file)
index 0000000..0793b5e
--- /dev/null
@@ -0,0 +1,55 @@
+;;; cal.el --- simple calendar functions
+
+;; This is free and unencumbered software released into the public domain.
+
+;; Author: Christopher Wellons <mosquitopsu@gmail.com>
+;; Version: 0.1
+
+;;; Commentary:
+
+;; `cal/insert' inserts a calendar that looks like so:
+
+;; August 2012
+;; S M T W T F S
+;; 1 2 3 4
+;; 5 6 7 8 9 10 11
+;; 12 13 14 15 16 17 18
+;; 19 20 21 22 23 24 25
+;; 26 27 28 29 30 31
+
+;;; Code:
+
+(defvar cal/month-days '(31 28 31 30 31 30 31 31 30 31 30 31))
+
+(defvar cal/month-names
+  '(" January" "February" " March" " April" " May" " June"
+    " July" " August" "September" " October" "November" "December"))
+
+(defun cal/day-of-week (year month day)
+  "Return day of week number (0-7)."
+  (let* ((Y (if (< month 3) (1- year) year))
+         (m (1+ (mod (+ month 9) 12)))
+         (y (mod Y 100))
+         (c (/ Y 100)))
+    (mod (+ day (floor (- (* 26 m) 2) 10) y (/ y 4) (/ c 4) (* -2 c)) 7)))
+
+(defun cal/leap-day (year month)
+  "Return the number of leap days to add to MONTH (0 or 1)."
+  (if (and (= month 2)
+           (or (= 0 (mod year 400))
+               (and (> (mod year 100) 0) (= 0 (mod year 4))))) 1 0))
+
+;;;###autoload
+(defun cal/insert (year month)
+  "Insert a calendar for the given YEAR and MONTH."
+  (interactive "nYear (yyyy): \nnMonth (mm): \n")
+  (let ((dow (cal/day-of-week year month 1)))
+    (insert (format " %s %d\n" (nth (1- month) cal/month-names) year))
+    (insert " S M T W T F S\n")
+    (dotimes (i dow) (insert " "))
+    (dotimes (d (+ (nth (1- month) cal/month-days) (cal/leap-day year month)))
+      (insert (format "% 3d" (1+ d)))
+      (if (= 0 (mod (+ dow d 1) 7)) (insert "\n")))
+    (insert "\n")))
+
+;;; cal.el ends here
diff --git a/.emacs.d/elisp/local/keyboard-cat-mode.el b/.emacs.d/elisp/local/keyboard-cat-mode.el
new file mode 100644 (file)
index 0000000..16f02ed
--- /dev/null
@@ -0,0 +1,42 @@
+;;; keyboard-cat-mode.el --- give the illusion that you're a fast typist
+
+;;; Commentary:
+
+;; http://reddit.com/r/emacs/comments/1orlrr/_/ccuxj9w
+
+;;; Code:
+(defvar-local keyboard-cat-overlay nil
+  "Invisibility overlay for `keyboard-cat-mode'.")
+
+(defvar keyboard-cat-step-function (lambda () 2)
+  "Function that the number of characters to \"emit\" at a time.
+This is a function so that a random number could be returned for
+each individual key event.")
+
+(defvar keyboard-cat-mode-map
+  (let ((map (make-sparse-keymap)))
+    (prog1 map
+      (define-key map [remap self-insert-command] #'keyboard-cat-next)
+      (define-key map [remap keyboard-quit] #'keyboard-cat-mode)))
+  "Keymap for `keyboard-cat-mode'.")
+
+(define-minor-mode keyboard-cat-mode
+  "Clear the buffer and set the keymap to re-type the buffer on all input.
+Gives the illusion that you're a fast typist."
+  :keymap keyboard-cat-mode-map
+  (if keyboard-cat-mode
+      (overlay-put
+       (setf keyboard-cat-overlay (make-overlay (point-min) (point-max)))
+       'invisible t)
+    (delete-overlay keyboard-cat-overlay)))
+
+(defun keyboard-cat-next ()
+  "Insert the next character in this `keyboard-cat-mode' buffer."
+  (interactive)
+  (move-overlay keyboard-cat-overlay
+                (min (+ (funcall keyboard-cat-step-function)
+                        (overlay-start keyboard-cat-overlay)) (point-max))
+                (overlay-end keyboard-cat-overlay))
+  (goto-char (point-max)))
+
+(provide 'keyboard-cat-mode)