|
|
1.1 ! root 1: ;;; StudlyCaps (tm)(r)(c)(xxx) ! 2: ! 3: (defun studlify-region (begin end) ! 4: "Studlify-case the region" ! 5: (interactive "*r") ! 6: (save-excursion ! 7: (goto-char begin) ! 8: (setq begin (point)) ! 9: (while (and (<= (point) end) ! 10: (not (looking-at "\\W*\\'"))) ! 11: (forward-word 1) ! 12: (backward-word 1) ! 13: (setq begin (max (point) begin)) ! 14: (forward-word 1) ! 15: (let ((offset 0) ! 16: (word-end (min (point) end)) ! 17: c) ! 18: (goto-char begin) ! 19: (while (< (point) word-end) ! 20: (setq offset (+ offset (following-char))) ! 21: (forward-char 1)) ! 22: (setq offset (+ offset (following-char))) ! 23: (goto-char begin) ! 24: (while (< (point) word-end) ! 25: (setq c (following-char)) ! 26: (if (and (= (% (+ c offset) 4) 2) ! 27: (let ((ch (following-char))) ! 28: (or (and (>= ch ?a) (<= ch ?z)) ! 29: (and (>= ch ?A) (<= ch ?Z))))) ! 30: (progn ! 31: (delete-char 1) ! 32: (insert (logxor c ? )))) ! 33: (forward-char 1)) ! 34: (setq begin (point)))))) ! 35: ! 36: (defun studlify-word (count) ! 37: "Studlify-case the current word, or COUNT words if given an argument" ! 38: (interactive "*p") ! 39: (let ((begin (point)) end rb re) ! 40: (forward-word count) ! 41: (setq end (point)) ! 42: (setq rb (min begin end) re (max begin end)) ! 43: (studlify-region rb re))) ! 44: ! 45: (defun studlify-buffer () ! 46: "Studlify-case the current buffer" ! 47: (interactive "*") ! 48: (studlify-region (point-min) (point-max)))
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.