A puzzle
Hrvoje Niksic <[email protected]> Thu, 18 Apr 2002 23:05:49 +0200
| Newsgroups | gmane.emacs.xemacs.mule |
|---|---|
| Message-ID | <[email protected]> |
Guess what this command does.
(defun unfuckify ()
(interactive)
(let ((count 0))
(catch 'out
(while (search-forward "~" nil t)
(message "[chszd] ")
(let ((event (next-command-event))
replacement)
(when (event-matches-key-specifier-p event (quit-char))
(keyboard-quit))
(when (equal (event-key event) 'return)
(throw 'out nil))
(setq replacement
(case (event-to-character event)
(?c ?č) (?C ?Č)
(?h ?ć) (?H ?Ć)
(?s ?š) (?S ?Š)
(?z ?ž) (?Z ?Ž)
(?d ?đ) (?D ?Đ)
(?\ nil)
(otherwise
(error "Wrong char: %s" event))))
(when replacement
(backward-char 1)
(delete-char 1)
(insert-char replacement)
(undo-boundary)
(incf count)))))
(message "%d replacements performed" count)))