]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/rot13.el (rot13-translate-table): Make it a `translation-table`
authorStefan Monnier <monnier@iro.umontreal.ca>
Wed, 17 Nov 2021 03:48:37 +0000 (22:48 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Wed, 17 Nov 2021 03:48:37 +0000 (22:48 -0500)
(rot13-display-table): Use `dotimes`.

lisp/rot13.el

index 4e4e60fea3f92230bfede87499bb057911ba85f1..e509b22529f117a3e2870b450b63a9d63f6c1ecc 100644 (file)
 
 ;;; Code:
 
-(defvar rot13-display-table
-  (let ((table (make-display-table))
-       (i 0))
-    (while (< i 26)
+(defconst rot13-display-table
+  (let ((table (make-display-table)))
+    (dotimes (i 26)
       (aset table (+ i ?a) (vector (+ (% (+ i 13) 26) ?a)))
-      (aset table (+ i ?A) (vector (+ (% (+ i 13) 26) ?A)))
-      (setq i (1+ i)))
+      (aset table (+ i ?A) (vector (+ (% (+ i 13) 26) ?A))))
     table)
   "Char table for ROT13 display.")
 
-(defvar rot13-translate-table
-  (let ((str (make-string 127 0))
-       (i 0))
-    (while (< i 127)
-      (aset str i i)
-      (setq i (1+ i)))
-    (setq i 0)
-    (while (< i 26)
-      (aset str (+ i ?a) (+ (% (+ i 13) 26) ?a))
-      (aset str (+ i ?A) (+ (% (+ i 13) 26) ?A))
-      (setq i (1+ i)))
-    str)
-  "String table for ROT13 translation.")
+(put 'plain-char-table 'char-table-extra-slots 0)
+
+(defconst rot13-translate-table
+  (let ((table (make-char-table 'translation-table)))
+    (dotimes (i 26)
+      (aset table (+ i ?a) (+ (% (+ i 13) 26) ?a))
+      (aset table (+ i ?A) (+ (% (+ i 13) 26) ?A)))
+    table)
+  "Char table for ROT13 translation.")
 
 ;;;###autoload
 (defun rot13 (object &optional start end)