Language Emacs LISP
(Example using buffers and documentation)
Date: | 09/11/07 |
Author: | Neil Roberts |
URL: | http://www.busydoingnothing.co.uk/ |
Comments: | 1 |
Info: | http://www.gnu.org/software/emacs/ |
Score: | (3.00 in 10 votes) |
(defun beer-text (num &optional capitalise) "Returns a phrase for the given number of bottles of beer. The phrase is colour-coded red if there are no bottles left or blue otherwise. If the optional argument CAPITALISE is non-nil, the first letter of the phrase is capitalised." (propertize (cond ((= num 0) (concat (if capitalise "N" "n") "o more bottles of beer")) ((= num 1) "1 bottle of beer") (t (format "%i bottles of beer" num))) 'face (list :foreground (if (equal num 0) "red" "blue")))) (defun beer-verse (num) "Returns a complete verse for the given number of bottles." (concat (beer-text num t) " on the wall, " (beer-text num) ".\n" (if (equal num 0) (concat "Go to the store and buy some more, " (beer-text 99) " on the wall.\n") (concat "Take one down and pass it around, " (beer-text (1- num)) " on the wall.\n")))) (defun beer-song-insert (start) "Inserts the complete 99 bottles of beer song into the buffer." (let ((n start)) (while (>= n 0) (insert (beer-verse n)) (when (>= (setq n (1- n)) 0) (insert "\n"))))) (defun beer-song (start) "Show the 99 bottles of beer song. The song is created in a buffer called *Beer song* and the buffer is displayed. If a prefix is given, the song is started from that number of bottles, otherwise it starts from 99." (interactive "P") (let ((buf (get-buffer-create "*Beer song*"))) (with-current-buffer buf (kill-all-local-variables) (erase-buffer) (beer-song-insert (if start (prefix-numeric-value start) 99)) (goto-char (point-min))) (view-buffer buf)))
Download Source | Write Comment
Download Source | Write Comment
Add Comment
Please provide a value for the fields Name,
Comment and Security Code.
This is a gravatar-friendly website.
E-mail addresses will never be shown.
Enter your e-mail address to use your gravatar.
Please don't post large portions of code here! Use the form to submit new examples or updates instead!
Comments
Minnie Timperley said on 07/10/08 22:13:04
Emacs Lisp? Why not?