X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=mule-caesar.el;h=172b586d1c4d3c93b9154e0b6cb8b5931a1f40cf;hb=33ef4ed54607c80928235f326a66728bf33cdf6b;hp=7cf9734b0ebc4720d25bd992a2a0423f1b13936e;hpb=4fb468dedfa66eec17eb9ddb48ebe44dfa7913ac;p=elisp%2Fapel.git diff --git a/mule-caesar.el b/mule-caesar.el index 7cf9734..172b586 100644 --- a/mule-caesar.el +++ b/mule-caesar.el @@ -19,12 +19,15 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Code: -(require 'emu) +(require 'emu) ; for backward compatibility. +(require 'poe) ; char-after. +(require 'poem) ; charset-chars, char-charset, + ; and split-char. (defun mule-caesar-region (start end &optional stride-ascii) "Caesar rotation of current region. @@ -41,43 +44,43 @@ for 96 or 96x96 graphic character set)." (narrow-to-region start end) (goto-char start) (while (< (point)(point-max)) - (let* ((chr (char-after (point))) - (charset (char-charset chr)) - ) - (if (eq charset 'ascii) - (cond ((and (<= ?A chr) (<= chr ?Z)) - (setq chr (+ chr stride-ascii)) - (if (> chr ?Z) - (setq chr (- chr 26)) - ) - (delete-char 1) - (insert chr) - ) - ((and (<= ?a chr) (<= chr ?z)) - (setq chr (+ chr stride-ascii)) - (if (> chr ?z) - (setq chr (- chr 26)) - ) - (delete-char 1) - (insert chr) - ) - (t - (forward-char) - )) - (let* ((stride (lsh (charset-chars charset) -1)) - (ret (mapcar (function - (lambda (octet) - (if (< octet 80) - (+ octet stride) - (- octet stride) - ))) - (cdr (split-char chr))))) - (delete-char 1) - (insert (make-char (char-charset chr) - (car ret)(car (cdr ret)))) - ))))))) - + (let* ((chr (char-after (point)))) + (cond ((and (<= ?A chr) (<= chr ?Z)) + (setq chr (+ chr stride-ascii)) + (if (> chr ?Z) + (setq chr (- chr 26)) + ) + (delete-char 1) + (insert chr) + ) + ((and (<= ?a chr) (<= chr ?z)) + (setq chr (+ chr stride-ascii)) + (if (> chr ?z) + (setq chr (- chr 26)) + ) + (delete-char 1) + (insert chr) + ) + ((<= chr ?\x9f) + (forward-char) + ) + (t + (let* ((stride (lsh (charset-chars (char-charset chr)) -1)) + (ret (mapcar (function + (lambda (octet) + (if (< octet 80) + (+ octet stride) + (- octet stride) + ))) + (cdr (split-char chr))))) + (delete-char 1) + (insert (make-char (char-charset chr) + (car ret)(car (cdr ret)))) + ))) + ))))) -(provide 'mule-caesar) + +(require 'product) +(product-provide (provide 'mule-caesar) (require 'apel-ver)) ;;; mule-caesar.el ends here