emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master a0451be 1/8: Use lexical-binding in almost all of play/*.el


From: Stefan Kangas
Subject: master a0451be 1/8: Use lexical-binding in almost all of play/*.el
Date: Wed, 10 Feb 2021 00:45:43 -0500 (EST)

branch: master
commit a0451be18b2581f5288e1123ee7bbd2aabccbe52
Author: Stefan Kangas <stefan@marxist.se>
Commit: Stefan Kangas <stefan@marxist.se>

    Use lexical-binding in almost all of play/*.el
    
    * lisp/play/5x5.el: Use lexical-binding.
    (5x5-draw-grid-end, 5x5-draw-grid, 5x5-solver)
    (5x5-solve-suggest): Silence byte-compiler.
    
    * lisp/play/cookie1.el: Use lexical-binding.
    (cookie-shuffle-vector, cookie-apropos): Silence byte-compiler.
    
    * lisp/play/zone.el: Use lexical-binding.
    (zone): Convert lambda to proper lexical closure.
    (zone-replace-char, zone-fill-out-screen): Silence byte-compiler.
    
    * lisp/play/blackbox.el:
    * lisp/play/doctor.el:
    * lisp/play/gametree.el:
    * lisp/play/hanoi.el: Use lexical-binding.
    
    * test/lisp/play/cookie1-resources/cookies:
    * test/lisp/play/cookie1-tests.el: New files.
---
 lisp/play/5x5.el                         | 42 ++++++++++++++++++--------------
 lisp/play/blackbox.el                    |  2 +-
 lisp/play/cookie1.el                     | 14 ++++++-----
 lisp/play/doctor.el                      |  2 +-
 lisp/play/gametree.el                    |  2 +-
 lisp/play/hanoi.el                       |  2 +-
 lisp/play/zone.el                        | 21 +++++++++-------
 test/lisp/play/cookie1-resources/cookies |  8 ++++++
 test/lisp/play/cookie1-tests.el          | 40 ++++++++++++++++++++++++++++++
 9 files changed, 96 insertions(+), 37 deletions(-)

diff --git a/lisp/play/5x5.el b/lisp/play/5x5.el
index 05e61df..891a5f6 100644
--- a/lisp/play/5x5.el
+++ b/lisp/play/5x5.el
@@ -1,4 +1,4 @@
-;;; 5x5.el --- simple little puzzle game
+;;; 5x5.el --- simple little puzzle game  -*- lexical-binding: t -*-
 
 ;; Copyright (C) 1999-2021 Free Software Foundation, Inc.
 
@@ -289,7 +289,7 @@ Quit current game           \\[5x5-quit-game]"
 (defun 5x5-draw-grid-end ()
   "Draw the top/bottom of the grid."
   (insert "+")
-  (dotimes (x 5x5-grid-size)
+  (dotimes (_ 5x5-grid-size)
     (insert "-" (make-string 5x5-x-scale ?-)))
   (insert "-+ "))
 
@@ -297,11 +297,11 @@ Quit current game           \\[5x5-quit-game]"
   "Draw the grids GRIDS into the current buffer."
   (let ((inhibit-read-only t) grid-org)
     (erase-buffer)
-    (dolist (grid grids) (5x5-draw-grid-end))
+    (dolist (_ grids) (5x5-draw-grid-end))
     (insert "\n")
     (setq grid-org (point))
     (dotimes (y 5x5-grid-size)
-      (dotimes (lines 5x5-y-scale)
+      (dotimes (_lines 5x5-y-scale)
         (dolist (grid grids)
           (dotimes (x 5x5-grid-size)
             (insert (if (zerop x) "| " " ")
@@ -331,7 +331,7 @@ Quit current game           \\[5x5-quit-game]"
                    (forward-char  (1+ 5x5-x-scale))))
                (forward-line  5x5-y-scale))))
        (setq 5x5-solver-output nil)))
-    (dolist (grid grids) (5x5-draw-grid-end))
+    (dolist (_grid grids) (5x5-draw-grid-end))
     (insert "\n")
     (insert (format "On: %d  Moves: %d" (5x5-grid-value (car grids)) 
5x5-moves))))
 
@@ -475,11 +475,11 @@ position."
   "Convert a grid matrix GRID-MATRIX in Calc format to a grid in
 5x5 format.  See function `5x5-grid-to-vec'."
   (apply
-   'vector
+   #'vector
    (mapcar
     (lambda (x)
       (apply
-       'vector
+       #'vector
        (mapcar
        (lambda (y) (/= (cadr y) 0))
        (cdr x))))
@@ -503,7 +503,9 @@ position."
 Log a matrix VALUE of (mod B 2) forms, only B is output and
 Scilab matrix notation is used.  VALUE is returned so that it is
 easy to log a value with minimal rewrite of code."
-       (when (buffer-live-p 5x5-log-buffer)
+        (when (buffer-live-p 5x5-log-buffer)
+          (defvar calc-matrix-brackets)
+          (defvar calc-vector-commas)
          (let* ((unpacked-value
                  (math-map-vec
                   (lambda (row) (math-map-vec 'cadr row))
@@ -515,7 +517,7 @@ easy to log a value with minimal rewrite of code."
              (insert name ?= value-to-log ?\n))))
        value))
   (defsubst 5x5-log-init ())
-  (defsubst 5x5-log (name value) value)))
+  (defsubst 5x5-log (_name value) value)))
 
 (declare-function math-map-vec "calc-vec" (f a))
 (declare-function math-sub "calc" (a b))
@@ -533,6 +535,10 @@ easy to log a value with minimal rewrite of code."
 (declare-function calcFunc-mcol "calc-vec" (mat n))
 (declare-function calcFunc-vconcat "calc-vec" (a b))
 (declare-function calcFunc-index "calc-vec" (n &optional start incr))
+(defvar calc-word-size)
+(defvar calc-leading-zeros)
+(defvar calc-number-radix)
+(defvar calc-command-flags)
 
 (defun 5x5-solver (grid)
   "Return a list of solutions for GRID.
@@ -671,16 +677,16 @@ Solutions are sorted from least to greatest Hamming 
weight."
            (5x5-log
             "cb"
             (math-mul inv-base-change targetv))); CB
-          (row-1  (math-make-intv 3  1 transferm-kernel-size)) ; 1..2
+           ;; (row-1  (math-make-intv 3  1 transferm-kernel-size)) ; 1..2
           (row-2   (math-make-intv 1 transferm-kernel-size
                                    grid-size-squared)); 3..25
           (col-1 (math-make-intv 3 1  (- grid-size-squared
                                          transferm-kernel-size))); 1..23
-          (col-2 (math-make-intv 1 (- grid-size-squared
-                                      transferm-kernel-size)
-                                 grid-size-squared)); 24..25
-          (ctransferm-1-: (calcFunc-mrow ctransferm row-1))
-          (ctransferm-1-1 (calcFunc-mcol ctransferm-1-: col-1))
+           ;; (col-2 (math-make-intv 1 (- grid-size-squared
+           ;;                         transferm-kernel-size)
+           ;;                    grid-size-squared)) ; 24..25
+           ;; (ctransferm-1-: (calcFunc-mrow ctransferm row-1))
+           ;; (ctransferm-1-1 (calcFunc-mcol ctransferm-1-: col-1))
 
           ;; By construction ctransferm-:-2 = 0, so ctransferm-1-2 = 0
           ;; and ctransferm-2-2 = 0.
@@ -696,8 +702,8 @@ Solutions are sorted from least to greatest Hamming weight."
           ;;
           ;;(ctransferm-2-2 (calcFunc-mcol ctransferm-2-: col-2))
 
-          (ctarget-1 (calcFunc-mrow ctarget row-1))
-          (ctarget-2 (calcFunc-mrow ctarget row-2))
+           ;; (ctarget-1 (calcFunc-mrow ctarget row-1))
+           (ctarget-2 (calcFunc-mrow ctarget row-2))
 
           ;;   ctarget-1(2x1)  =   ctransferm-1-1(2x23) *cx-1(23x1)
           ;;                     + ctransferm-1-2(2x2) *cx-2(2x1);
@@ -770,7 +776,7 @@ Solutions are sorted from least to greatest Hamming weight."
       (message "5x5 Solution computation done.")
       solution-list)))
 
-(defun 5x5-solve-suggest (&optional n)
+(defun 5x5-solve-suggest (&optional _n)
   "Suggest to the user where to click.
 
 Argument N is ignored."
diff --git a/lisp/play/blackbox.el b/lisp/play/blackbox.el
index e3854b5..61b0878 100644
--- a/lisp/play/blackbox.el
+++ b/lisp/play/blackbox.el
@@ -1,4 +1,4 @@
-;;; blackbox.el --- blackbox game in Emacs Lisp
+;;; blackbox.el --- blackbox game in Emacs Lisp  -*- lexical-binding: t -*-
 
 ;; Copyright (C) 1985-1987, 1992, 2001-2021 Free Software Foundation,
 ;; Inc.
diff --git a/lisp/play/cookie1.el b/lisp/play/cookie1.el
index 5255d81..be35daf 100644
--- a/lisp/play/cookie1.el
+++ b/lisp/play/cookie1.el
@@ -1,4 +1,4 @@
-;;; cookie1.el --- retrieve random phrases from fortune cookie files
+;;; cookie1.el --- retrieve random phrases from fortune cookie files  -*- 
lexical-binding: t -*-
 
 ;; Copyright (C) 1993, 2001-2021 Free Software Foundation, Inc.
 
@@ -177,11 +177,12 @@ Argument REQUIRE-MATCH non-nil forces a matching cookie."
   "Randomly permute the elements of VECTOR (all permutations equally likely)."
   (let ((len (length vector))
        j temp)
-    (dotimes (i len vector)
+    (dotimes (i len)
       (setq j (+ i (random (- len i)))
            temp (aref vector i))
       (aset vector i (aref vector j))
-      (aset vector j temp))))
+      (aset vector j temp))
+    vector))
 
 (define-obsolete-function-alias 'shuffle-vector 'cookie-shuffle-vector "24.4")
 
@@ -204,9 +205,10 @@ If called interactively, or if DISPLAY is non-nil, display 
a list of matches."
          (cookie-table-symbol (intern phrase-file cookie-cache))
          (string-table (symbol-value cookie-table-symbol))
          (matches nil))
-    (and (dotimes (i (length string-table) matches)
-           (and (string-match-p regexp (aref string-table i))
-                (setq matches (cons (aref string-table i) matches))))
+    (dotimes (i (length string-table))
+      (and (string-match-p regexp (aref string-table i))
+           (setq matches (cons (aref string-table i) matches))))
+    (and matches
          (setq matches (sort matches 'string-lessp)))
     (and display
          (if matches
diff --git a/lisp/play/doctor.el b/lisp/play/doctor.el
index 028f04c..46fd852 100644
--- a/lisp/play/doctor.el
+++ b/lisp/play/doctor.el
@@ -1,4 +1,4 @@
-;;; doctor.el --- psychological help for frustrated users
+;;; doctor.el --- psychological help for frustrated users  -*- 
lexical-binding: t -*-
 
 ;; Copyright (C) 1985, 1987, 1994, 1996, 2000-2021 Free Software
 ;; Foundation, Inc.
diff --git a/lisp/play/gametree.el b/lisp/play/gametree.el
index 1c2c24a..c6aef02 100644
--- a/lisp/play/gametree.el
+++ b/lisp/play/gametree.el
@@ -1,4 +1,4 @@
-;;; gametree.el --- manage game analysis trees in Emacs
+;;; gametree.el --- manage game analysis trees in Emacs  -*- lexical-binding: 
t -*-
 
 ;; Copyright (C) 1997, 1999, 2001-2021 Free Software Foundation, Inc.
 
diff --git a/lisp/play/hanoi.el b/lisp/play/hanoi.el
index f6e5fcd..ac28fba 100644
--- a/lisp/play/hanoi.el
+++ b/lisp/play/hanoi.el
@@ -1,4 +1,4 @@
-;;; hanoi.el --- towers of hanoi in Emacs
+;;; hanoi.el --- towers of hanoi in Emacs  -*- lexical-binding: t -*-
 
 ;; Author: Damon Anton Permezel
 ;; Maintainer: emacs-devel@gnu.org
diff --git a/lisp/play/zone.el b/lisp/play/zone.el
index 70b6a01..19e4e39 100644
--- a/lisp/play/zone.el
+++ b/lisp/play/zone.el
@@ -1,4 +1,4 @@
-;;; zone.el --- idle display hacks
+;;; zone.el --- idle display hacks  -*- lexical-binding: t -*-
 
 ;; Copyright (C) 2000-2021 Free Software Foundation, Inc.
 
@@ -128,14 +128,17 @@ If the element is a function or a list of a function and 
a number,
       (let ((pgm (elt zone-programs (random (length zone-programs))))
             (ct (and f (frame-parameter f 'cursor-type)))
             (show-trailing-whitespace nil)
-            (restore (list '(kill-buffer outbuf))))
+            restore)
         (when ct
-          (modify-frame-parameters f '((cursor-type . (bar . 0))))
-          (setq restore (cons '(modify-frame-parameters
-                                f (list (cons 'cursor-type ct)))
-                              restore)))
+          (modify-frame-parameters f '((cursor-type . (bar . 0)))))
         ;; Make `restore' a self-disabling one-shot thunk.
-        (setq restore `(lambda () ,@restore (setq restore nil)))
+        (setq restore
+              (lambda ()
+                (when ct
+                  (modify-frame-parameters
+                   f (list (cons 'cursor-type ct))))
+                (kill-buffer outbuf)
+                (setq restore nil)))
         (condition-case nil
             (progn
               (message "Zoning... (%s)" pgm)
@@ -419,7 +422,7 @@ If the element is a function or a list of a function and a 
number,
 (defsubst zone-replace-char (count del-count char-as-string new-value)
   (delete-char (or del-count (- count)))
   (aset char-as-string 0 new-value)
-  (dotimes (i count) (insert char-as-string)))
+  (dotimes (_ count) (insert char-as-string)))
 
 (defsubst zone-park/sit-for (pos seconds)
   (let ((p (point)))
@@ -460,7 +463,7 @@ If the element is a function or a list of a function and a 
number,
     (let ((nl (- height (count-lines (point-min) (point)))))
       (when (> nl 0)
        (setq line (concat line "\n"))
-        (dotimes (i nl)
+        (dotimes (_ nl)
          (insert line))))
     (goto-char start)
     (recenter 0)
diff --git a/test/lisp/play/cookie1-resources/cookies 
b/test/lisp/play/cookie1-resources/cookies
new file mode 100644
index 0000000..7bf569f
--- /dev/null
+++ b/test/lisp/play/cookie1-resources/cookies
@@ -0,0 +1,8 @@
+This fortune intentionally left blank.
+%
+This fortune intentionally not included.
+%
+This fortune intentionally says nothing.
+%
+This fortune is false.
+%
diff --git a/test/lisp/play/cookie1-tests.el b/test/lisp/play/cookie1-tests.el
new file mode 100644
index 0000000..d63ecb9
--- /dev/null
+++ b/test/lisp/play/cookie1-tests.el
@@ -0,0 +1,40 @@
+;;; fortune-tests.el --- Tests for fortune.el  -*- lexical-binding: t -*-
+
+;; Copyright (C) 2021 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'ert)
+(require 'ert-x)
+(require 'cookie1)
+
+(ert-deftest cookie1-tests-cookie ()
+  (let ((fortune-file (ert-resource-file "cookies")))
+    (should (string-match "\\`This fortune"
+                          (cookie fortune-file)))))
+
+(ert-deftest cookie1-testss-cookie-apropos ()
+  (let ((fortune-file (ert-resource-file "cookies")))
+    (should (string-match "\\`This fortune"
+                          (car (cookie-apropos "false" fortune-file))))
+    (should (= (length (cookie-apropos "false" fortune-file)) 1))))
+
+(provide 'fortune-tests)
+;;; fortune-tests.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]