[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/gnugo 9928736 299/357: * packages/gnugo: Add `cl-lib' a
From: |
Stefan Monnier |
Subject: |
[elpa] externals/gnugo 9928736 299/357: * packages/gnugo: Add `cl-lib' as dependency; require it and use its names. |
Date: |
Sun, 29 Nov 2020 14:51:43 -0500 (EST) |
branch: externals/gnugo
commit 99287365cc2a55447488f482f73a2f92775f08cf
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>
* packages/gnugo: Add `cl-lib' as dependency; require it and use its names.
Don't bother with lexical-let since we use lexical-binding.
* packages/gnugo/gnugo.el (gnugo-board-mode-map):
* packages/gnugo/gnugo-frolic.el (gnugo-frolic-mode-map): Move
initialization
into declaration.
---
gnugo-frolic.el | 114 +++++++++++++++---------------
gnugo-imgen.el | 14 ++--
gnugo.el | 213 ++++++++++++++++++++++++++++----------------------------
3 files changed, 167 insertions(+), 174 deletions(-)
diff --git a/gnugo-frolic.el b/gnugo-frolic.el
index be6b2ac..69373e8 100644
--- a/gnugo-frolic.el
+++ b/gnugo-frolic.el
@@ -20,19 +20,39 @@
;;; Code:
+(require 'cl-lib)
(require 'gnugo)
(require 'ascii-art-to-unicode) ; for `aa2u'
-(defvar gnugo-frolic-mode-map nil
+(defvar gnugo-frolic-mode-map
+ (let ((map (make-sparse-keymap)))
+ (suppress-keymap map)
+ (mapc (lambda (pair)
+ (define-key map (car pair) (cdr pair)))
+ '(("q" . gnugo-frolic-quit)
+ ("Q" . gnugo-frolic-quit)
+ ("\C-q" . gnugo-frolic-quit)
+ ("C" . gnugo-frolic-quit) ; like ‘View-kill-and-leave’
+ ("\C-b" . gnugo-frolic-backward-branch)
+ ("\C-f" . gnugo-frolic-forward-branch)
+ ("\C-p" . gnugo-frolic-previous-move)
+ ("\C-n" . gnugo-frolic-next-move)
+ ("t" . gnugo-frolic-tip-move)
+ ("j" . gnugo-frolic-exchange-left)
+ ("J" . gnugo-frolic-rotate-left)
+ ("k" . gnugo-frolic-exchange-right)
+ ("K" . gnugo-frolic-rotate-right)
+ ("\C-m" . gnugo-frolic-set-as-main-line)
+ ("\C-\M-p" . gnugo-frolic-prune-branch)
+ ("o" . gnugo-frolic-return-to-origin)))
+ map)
"Keymap for GNUGO Frolic mode.")
(defvar gnugo-frolic-parent-buffer nil)
(defvar gnugo-frolic-origin nil)
(define-derived-mode gnugo-frolic-mode special-mode "GNUGO Frolic"
- "A special mode for manipulating a GNUGO gametree.
-
-\\{gnugo-frolic-mode-map}"
+ "A special mode for manipulating a GNUGO gametree."
(setq truncate-lines t)
(buffer-disable-undo))
@@ -103,7 +123,7 @@ are dimmed. Type \\[describe-mode] in that buffer for
details."
(as-pos (gnugo--as-pos-func))
(at (car (aref monkey 0)))
(bidx (aref monkey 1))
- (valid (map 'vector (lambda (end)
+ (valid (cl-map 'vector (lambda (end)
(gethash (car end) mnum))
ends))
(max-move-num (apply 'max (append valid nil)))
@@ -119,9 +139,9 @@ are dimmed. Type \\[describe-mode] in that buffer for
details."
(apply 'format fmt args)
properties))))
;; breathe in
- (loop
+ (cl-loop
for bx below width
- do (loop
+ do (cl-loop
with fork
for node in (aref ends bx)
do (if (setq fork (on node))
@@ -130,7 +150,7 @@ are dimmed. Type \\[describe-mode] in that buffer for
details."
;; todo: ignore non-"move" nodes
(eq node (car (aref ends bix))))
(link (other)
- (pushnew other (gethash node soil))))
+ (cl-pushnew other (gethash node soil))))
(unless (tip-p bx)
(unless (tip-p fork)
(link fork))
@@ -142,12 +162,12 @@ are dimmed. Type \\[describe-mode] in that buffer for
details."
(gnugo-frolic-mode)
(erase-buffer)
(setq header-line-format
- (lexical-let ((full (concat
- (make-string 11 ?\s)
- (mapconcat (lambda (n)
- (format "%-5s" n))
- lanes
- " "))))
+ (let ((full (concat
+ (make-string 11 ?\s)
+ (mapconcat (lambda (n)
+ (format "%-5s" n))
+ lanes
+ " "))))
`((:eval
(funcall
,(lambda ()
@@ -173,13 +193,13 @@ are dimmed. Type \\[describe-mode] in that buffer for
details."
(set (make-local-variable 'gnugo-frolic-parent-buffer) from)
(set (make-local-variable 'gnugo-state)
(buffer-local-value 'gnugo-state from))
- (loop
+ (cl-loop
with props
for n ; move number
from max-move-num downto 1
do (setq props (list 'n n))
do
- (loop
+ (cl-loop
with (move forks br)
initially (progn
(goto-char (point-min))
@@ -190,7 +210,7 @@ are dimmed. Type \\[describe-mode] in that buffer for
details."
do (let* ((node (unless (< (aref valid bx) n)
;; todo: ignore non-"move" nodes
(pop (aref ends bx))))
- (zow (list* 'bx bx props))
+ (zow `(bx ,bx ,@props))
(ok (when node
(= bx (on node))))
(comment (when ok
@@ -245,7 +265,7 @@ are dimmed. Type \\[describe-mode] in that buffer for
details."
(cnxn lanes set)
"\n")))
(edge heads)
- (loop with bef
+ (cl-loop with bef
for ls on forks
do (let* ((one (car ls))
(yes (append
@@ -291,7 +311,7 @@ are dimmed. Type \\[describe-mode] in that buffer for
details."
(ends (gnugo--tree-ends tree))
(width (length ends))
(monkey (gnugo-get :monkey))
- (line (case (cdr (assq 'line how))
+ (line (cl-case (cdr (assq 'line how))
(numeric
(count-lines (point-min) (line-beginning-position)))
(move-string
@@ -309,7 +329,7 @@ are dimmed. Type \\[describe-mode] in that buffer for
details."
(when (memq 'require-valid-branch how)
(unless a
(user-error "No branch here")))
- (loop with omit = (cdr (assq 'omit how))
+ (cl-loop with omit = (cdr (assq 'omit how))
for (name . value) in `((line . ,line)
(bidx . ,(aref monkey 1))
(monkey . ,monkey)
@@ -322,14 +342,15 @@ are dimmed. Type \\[describe-mode] in that buffer for
details."
(defmacro gnugo--awakened (how &rest body)
(declare (indent 1))
- `(destructuring-bind ,(loop with omit = (cdr (assq 'omit how))
- with ls = (list 'a)
- for name in '(line bidx monkey
- width ends
- tree)
- do (unless (memq name omit)
- (push name ls))
- finally return ls)
+ `(cl-destructuring-bind
+ ,(cl-loop with omit = (cdr (assq 'omit how))
+ with ls = (list 'a)
+ for name in '(line bidx monkey
+ width ends
+ tree)
+ do (unless (memq name omit)
+ (push name ls))
+ finally return ls)
(gnugo--awake ',how)
,@body))
@@ -354,7 +375,7 @@ are dimmed. Type \\[describe-mode] in that buffer for
details."
(mod (+ direction n) width))))
(was (copy-sequence ends))
(new-bidx (funcall flit bidx)))
- (loop for bx below width
+ (cl-loop for bx below width
do (aset ends (funcall flit bx)
(aref was bx)))
(unless (= new-bidx bidx)
@@ -407,7 +428,7 @@ This fails if the monkey is on the current branch
(ignore (pop (nthcdr a new)))
(gnugo--set-tree-ends tree new))
(when (< a bidx)
- (aset monkey 1 (decf bidx)))
+ (aset monkey 1 (cl-decf bidx)))
(gnugo-frolic-in-the-leaves)
(when line
(goto-char (point-min))
@@ -443,12 +464,12 @@ This fails if the monkey is on the current branch
(point-max))))))
(col (unless a
(current-column))))
- (loop while (not (= line stop))
- do (loop do (progn
+ (cl-loop while (not (= line stop))
+ do (cl-loop do (progn
(forward-line direction)
- (incf line direction))
+ (cl-incf line direction))
until (get-text-property (point) 'n))
- until (zerop (decf n)))
+ until (zerop (cl-decf n)))
(if a
(gnugo--move-to-bcol a)
(move-to-column col)))))
@@ -475,31 +496,6 @@ This fails if the monkey is on the current branch
(gnugo--move-to-bcol a))))
;;;---------------------------------------------------------------------------
-;;; load-time actions
-
-(unless gnugo-frolic-mode-map
- (setq gnugo-frolic-mode-map (make-sparse-keymap))
- (suppress-keymap gnugo-frolic-mode-map)
- (mapc (lambda (pair)
- (define-key gnugo-frolic-mode-map (car pair) (cdr pair)))
- '(("q" . gnugo-frolic-quit)
- ("Q" . gnugo-frolic-quit)
- ("\C-q" . gnugo-frolic-quit)
- ("C" . gnugo-frolic-quit) ; like ‘View-kill-and-leave’
- ("\C-b" . gnugo-frolic-backward-branch)
- ("\C-f" . gnugo-frolic-forward-branch)
- ("\C-p" . gnugo-frolic-previous-move)
- ("\C-n" . gnugo-frolic-next-move)
- ("t" . gnugo-frolic-tip-move)
- ("j" . gnugo-frolic-exchange-left)
- ("J" . gnugo-frolic-rotate-left)
- ("k" . gnugo-frolic-exchange-right)
- ("K" . gnugo-frolic-rotate-right)
- ("\C-m" . gnugo-frolic-set-as-main-line)
- ("\C-\M-p" . gnugo-frolic-prune-branch)
- ("o" . gnugo-frolic-return-to-origin))))
-
-;;;---------------------------------------------------------------------------
;;; that's it
(provide 'gnugo-frolic)
diff --git a/gnugo-imgen.el b/gnugo-imgen.el
index a698583..9e023c3 100644
--- a/gnugo-imgen.el
+++ b/gnugo-imgen.el
@@ -83,7 +83,7 @@ a square position on the board. A value less than 8 is taken
as 8.")
This uses the TOP and BOTTOM components as returned by
`window-inside-absolute-pixel-edges' and subtracts twice
the `frame-char-height' (to leave space for the grid)."
- (destructuring-bind (L top R bot)
+ (cl-destructuring-bind (L top R bot)
(window-inside-absolute-pixel-edges)
(ignore L R)
(/ (float (- bot top (* 2 (frame-char-height))))
@@ -98,11 +98,11 @@ the `frame-char-height' (to leave space for the grid)."
(defun gnugo-imgen-create-xpms-1 (square style)
(let* ((kws (mapcar 'cdr gnugo-imgen-palette))
(roles (mapcar 'symbol-name kws))
- (palette (loop
+ (palette (cl-loop
for px in (mapcar 'car gnugo-imgen-palette)
for role in roles
collect (cons px (format "s %s" role))))
- (resolved (loop
+ (resolved (cl-loop
with parms = (copy-sequence style)
for role in roles
for kw in kws
@@ -136,7 +136,7 @@ the `frame-char-height' (to leave space for the grid)."
(dolist (coord ls)
(apply 'xpm-put-points px coord))))
;; background
- (loop for place from 1 to 9
+ (cl-loop for place from 1 to 9
for parts
in (cl-flet*
((vline (x y1 y2) (list (list x (cons y1 y2))))
@@ -158,7 +158,7 @@ the `frame-char-height' (to leave space for the grid)."
(cl-flet
((circ (radius)
(xpm-m2z-circle half half radius)))
- (loop with stone = (circ (truncate half))
+ (cl-loop with stone = (circ (truncate half))
with minim = (circ (/ square 9))
for n below 4
do (aset foreground n
@@ -194,7 +194,7 @@ the `frame-char-height' (to leave space for the grid)."
(xpm-m2z-ellipse half half 4 4.5)
?. t)
(ok 5 'hoshi 'xpm-finish))
- (loop
+ (cl-loop
for place from 1 to 9
for decor in (let ((friends (cons half-m1 half-p1)))
(nine-from-four (list friends 0)
@@ -206,7 +206,7 @@ the `frame-char-height' (to leave space for the grid)."
do (cl-flet
((decorate (px)
(mput-points px decor)))
- (loop for n below 4
+ (cl-loop for n below 4
for type in '(bmoku bpmoku wmoku wpmoku)
do (with-current-buffer (aref foreground n)
(decorate ?.)
diff --git a/gnugo.el b/gnugo.el
index 4b362a5..0f24a24 100644
--- a/gnugo.el
+++ b/gnugo.el
@@ -5,7 +5,7 @@
;; Author: Thien-Thi Nguyen <ttn@gnu.org>
;; Maintainer: Thien-Thi Nguyen <ttn@gnu.org>
;; Version: 2.3.1
-;; Package-Requires: ((ascii-art-to-unicode "1.5") (xpm "1.0.0"))
+;; Package-Requires: ((ascii-art-to-unicode "1.5") (xpm "1.0.0") (cl-lib
"0.5"))
;; Keywords: games, processes
;; This program is free software; you can redistribute it and/or modify
@@ -91,7 +91,7 @@
;;; Code:
-(eval-when-compile (require 'cl)) ; use the source luke!
+(require 'cl-lib) ; use the source luke!
(require 'time-date) ; for `time-subtract'
;;;---------------------------------------------------------------------------
@@ -112,7 +112,57 @@ This program must accept command line args:
For more information on GTP and GNU Go, please visit:
<http://www.gnu.org/software/gnugo>")
-(defvar gnugo-board-mode-map nil
+(defvar gnugo-board-mode-map
+ (let ((map (make-sparse-keymap)))
+ (suppress-keymap map)
+ (mapc (lambda (pair)
+ (define-key map (car pair) (cdr pair)))
+ '(("?" . describe-mode)
+ ("S" . gnugo-request-suggestion)
+ ("\C-m" . gnugo-move)
+ (" " . gnugo-move)
+ ("P" . gnugo-pass)
+ ("R" . gnugo-resign)
+ ("q" . gnugo-quit)
+ ("Q" . gnugo-leave-me-alone)
+ ("U" . gnugo-fancy-undo)
+ ("\M-u" . gnugo-undo-one-move)
+ ("u" . gnugo-undo-two-moves)
+ ("\C-?" . gnugo-undo-two-moves)
+ ("o" . gnugo-oops)
+ ("O" . gnugo-okay)
+ ("\C-l" . gnugo-refresh)
+ ("\M-_" . gnugo-boss-is-near)
+ ("_" . gnugo-boss-is-near)
+ ("h" . gnugo-move-history)
+ ("L" . gnugo-frolic-in-the-leaves)
+ ("\C-c\C-l" . gnugo-frolic-in-the-leaves)
+ ("i" . gnugo-image-display-mode)
+ ("w" . gnugo-worm-stones)
+ ("W" . gnugo-worm-data)
+ ("d" . gnugo-dragon-stones)
+ ("D" . gnugo-dragon-data)
+ ("g" . gnugo-grid-mode)
+ ("!" . gnugo-estimate-score)
+ (":" . gnugo-command)
+ (";" . gnugo-command)
+ ("=" . gnugo-describe-position)
+ ("s" . gnugo-write-sgf-file)
+ ("\C-x\C-s" . gnugo-write-sgf-file)
+ ("\C-x\C-w" . gnugo-write-sgf-file)
+ ("l" . gnugo-read-sgf-file)
+ ("F" . gnugo-display-final-score)
+ ("A" . gnugo-switch-to-another)
+ ("C" . gnugo-comment)
+ ("\C-c\C-a" . gnugo-assist-mode)
+ ("\C-c\C-z" . gnugo-zombie-mode)
+ ;; mouse
+ ([(down-mouse-1)] . gnugo-mouse-move)
+ ([(down-mouse-2)] . gnugo-mouse-move) ; mitigate accidents
+ ([(down-mouse-3)] . gnugo-mouse-pass)
+ ;; delving into the curiosities
+ ("\C-c\C-p" . gnugo-describe-internal-properties)))
+ map)
"Keymap for GNUGO Board mode.")
(defvar gnugo-board-mode-hook nil
@@ -320,10 +370,10 @@ Handle the big, slow-to-render, and/or uninteresting ones
specially."
(interactive)
(let ((buf (current-buffer))
(d (gnugo-get :diamond))
- (acc (loop for key being the hash-keys of gnugo-state
+ (acc (cl-loop for key being the hash-keys of gnugo-state
using (hash-values val)
collect (cons key
- (case key
+ (cl-case key
((:xpms)
(format "hash: %X (%d images)"
(sxhash val)
@@ -391,7 +441,7 @@ Handle the big, slow-to-render, and/or uninteresting ones
specially."
(user-error "Wrong buffer -- try M-x gnugo"))
(unless (gnugo-get :proc)
(user-error "No \"gnugo\" process!"))
- (destructuring-bind (&optional color . suggestion)
+ (cl-destructuring-bind (&optional color . suggestion)
(gnugo-get :waiting)
(when color
(apply 'user-error
@@ -618,7 +668,7 @@ when you are sure the command cannot fail."
;; This has something to do w/ the bletcherous `before-string'.
(overlay-put ov 'invisible :nogrid)
(overlay-put ov 'category %lpad))
- (do ((p edge (+ 2 p)) (ival 'even (if (eq 'even ival) 'odd 'even)))
+ (cl-do ((p edge (+ 2 p)) (ival 'even (if (eq 'even ival) 'odd 'even)))
((< other-edge p))
(let* ((position (format "%c%s" (aref "ABCDEFGHJKLMNOPQRST"
(truncate (- p edge) 2))
@@ -729,7 +779,7 @@ when you are sure the command cannot fail."
(gnugo-put capprop new)
(delete-char old-len)
(insert (apply 'propertize new keep))
- (incf adj (- (length new) old-len)))
+ (cl-incf adj (- (length new) old-len)))
(setq new (aref aft aft-idx))
(insert-and-inherit (char-to-string new))
(let ((yin (get-text-property cut 'gnugo-yin))
@@ -750,7 +800,7 @@ when you are sure the command cannot fail."
(assq :W node)))
(defun gnugo--as-pos-func ()
- (lexical-let ((size (gnugo-get :SZ)))
+ (let ((size (gnugo-get :SZ)))
;; rv
(lambda (cc)
(if (string= "" cc)
@@ -807,7 +857,7 @@ For all other values of RSEL, do nothing and return nil."
(`car (car (nn)))
(`cadr (nn) (car (nn)))
(`two (nn) (nn) acc)
- (`bpos (loop with prop = (gnugo--prop<-color color)
+ (`bpos (cl-loop with prop = (gnugo--prop<-color color)
while mem
when (and (remem)
(eq prop (car mprop))
@@ -828,7 +878,7 @@ For all other values of RSEL, do nothing and return nil."
(aref monkey 0)))
(defun gnugo--as-cc-func ()
- (lexical-let ((size (gnugo-get :SZ)))
+ (let ((size (gnugo-get :SZ)))
(lambda (pos)
(let* ((col (aref pos 0))
(one (+ ?a (- col (if (< ?H col) 1 0) ?A)))
@@ -837,7 +887,7 @@ For all other values of RSEL, do nothing and return nil."
(format "%c%c" one two)))))
(defun gnugo--decorate (node &rest plist)
- (loop with tp = (last node)
+ (cl-loop with tp = (last node)
with fruit
while plist
do (setf
@@ -893,7 +943,7 @@ For all other values of RSEL, do nothing and return nil."
(let* ((root (gnugo--root-node))
(cur (assq :RE root)))
(when cur
- (assert (not (eq cur (car root))) nil
+ (cl-assert (not (eq cur (car root))) nil
":RE at head of root node: %S"
root)
(delq cur root))))
@@ -952,7 +1002,7 @@ For all other values of RSEL, do nothing and return nil."
;;
;; This linear search loses for multiple ‘old’ w/ "A",
;; a very unusual (but not invalid, sigh) situation.
- (loop
+ (cl-loop
with (bx previous)
for i
;; Start with latest / highest likelihood for hit.
@@ -963,7 +1013,7 @@ For all other values of RSEL, do nothing and return nil."
below count
if (setq bx (mod (+ bidx i) count)
previous
- (loop with node
+ (cl-loop with node
for m on (aref ends bx)
while (< tip-move-num
(gethash (setq node (car m))
@@ -978,7 +1028,7 @@ For all other values of RSEL, do nothing and return nil."
return
(progn
(unless (= bidx bx)
- (rotatef (aref ends bidx)
+ (cl-rotatef (aref ends bidx)
(aref ends bx)))
(setq mem previous))
;; no => construct
@@ -1033,8 +1083,8 @@ For all other values of RSEL, do nothing and return nil."
(when (and (not (= color-key (aref new sx)))
(cl-plusp (random 4)))
(aset new sx (aref bg-data sb)))
- (incf sx)
- (incf sb))
+ (cl-incf sx)
+ (cl-incf sb))
(apply 'create-image new 'xpm t
:ascent 'center (when c-symbs
(list :color-symbols
@@ -1061,7 +1111,7 @@ its move."
(gnugo-propertize-board-buffer))
;; last move
(when move
- (destructuring-bind (l-ov . r-ov) (gnugo-get :paren-ov)
+ (cl-destructuring-bind (l-ov . r-ov) (gnugo-get :paren-ov)
(if (member move '("PASS" "resign"))
(mapc 'delete-overlay (list l-ov r-ov))
(gnugo-goto-pos move)
@@ -1198,11 +1248,11 @@ its move."
(let (acc cut c)
(while (setq cut (string-match "~[bwpmtu]" cur))
(aset cur cut ?%)
- (setq c (aref cur (incf cut)))
+ (setq c (aref cur (cl-incf cut)))
(aset cur cut ?s)
(push
`(,(intern (format "squig-%c" c))
- ,(case c
+ ,(cl-case c
(?b '(or (gnugo-get :black-captures) 0))
(?w '(or (gnugo-get :white-captures) 0))
(?p '(gnugo-current-player))
@@ -1266,7 +1316,7 @@ its move."
(let ((old "to play")
(new "waiting for suggestion"))
(when back
- (rotatef old new))
+ (cl-rotatef old new))
(let ((name (buffer-name)))
(when (string-match old name)
(rename-buffer (replace-match new t t name))))))
@@ -1282,7 +1332,7 @@ its move."
(full (gnugo-put :get-move-string (concat so-far string))))
(when (string-match "^= \\(.+\\)\n\n" full)
(setq full (match-string 1 full)) ; POS or "PASS"
- (destructuring-bind (color . suggestion)
+ (cl-destructuring-bind (color . suggestion)
(gnugo-get :waiting)
(gnugo--forget :get-move-string
:waiting)
@@ -1405,7 +1455,7 @@ To start a game try M-x gnugo."
(message "%s %s in group." blurb (length stones))
(setplist (gnugo-f 'anim) nil)
(let* ((spec (if (gnugo-get :display-using-images)
- (loop with yin = (get-text-property (point) 'gnugo-yin)
+ (cl-loop with yin = (get-text-property (point)
'gnugo-yin)
with yang = (gnugo-yang (following-char))
with up = (get (gnugo-yy yin yang t) 'display)
with dn = (get (gnugo-yy yin yang) 'display)
@@ -1503,7 +1553,7 @@ If FILENAME already exists, Emacs confirms that you wish
to overwrite it."
(gnugo--ok-file filename))
(defun gnugo--dance-dance (karma)
- (destructuring-bind (dance btw)
+ (cl-destructuring-bind (dance btw)
(aref [(moshpit " Zombie")
(classic nil)
(reverse " Zombie Assist") ; "Assist Zombie"? no thanks! :-D
@@ -1599,13 +1649,13 @@ If FILENAME already exists, Emacs confirms that you
wish to overwrite it."
(gnugo--who-is-who wait play samep)))
(defun gnugo--mem-with-played-stone (pos &optional noerror)
- (let ((color (case (following-char)
+ (let ((color (cl-case (following-char)
(?X :B)
(?O :W))))
(if (not color)
(unless noerror
(user-error "No stone at %s" pos))
- (loop with fruit = (cons color (funcall (gnugo--as-cc-func) pos))
+ (cl-loop with fruit = (cons color (funcall (gnugo--as-cc-func) pos))
for mem on (aref (gnugo-get :monkey) 0)
when (equal fruit (caar mem))
return mem
@@ -1651,10 +1701,10 @@ If FILENAME already exists, Emacs confirms that you
wish to overwrite it."
(when ulastp
(let ((g (gnugo-get :gnugo-color)))
(cl-flet ((turn () (gnugo--turn-the-wheel t)))
- (case (or reaction gnugo-undo-reaction)
+ (cl-case (or reaction gnugo-undo-reaction)
(play (turn))
(play! (let ((wheel (gnugo-get :wheel)))
- (letf (((cdr wheel) (cons g (cdr wheel))))
+ (cl-letf (((cdr wheel) (cons g (cdr wheel))))
(turn))))
(zombie (gnugo-zombie-mode 1))
(t (gnugo-put :one-shot g)))))))))
@@ -1679,7 +1729,7 @@ See also `gnugo-undo-two-moves'."
(gnugo-put :user-color play)
(gnugo-put :gnugo-color wait)
(gnugo--who-is-who wait play samep)))
- (gnugo--climb-towards-root 1 (case gnugo-undo-reaction
+ (gnugo--climb-towards-root 1 (cl-case gnugo-undo-reaction
(zombie gnugo-undo-reaction)
(t 'one-shot))))
@@ -1718,7 +1768,7 @@ Prefix arg means to redo all the undone moves."
(ucolor (gnugo-get :user-color))
(uprop (gnugo--prop<-color ucolor)))
(cl-flet ((mvno (node) (gethash node mnum)))
- (loop
+ (cl-loop
with ok = (if full
(mvno (car end))
(+ 2 (mvno (car mem))))
@@ -1734,7 +1784,7 @@ Prefix arg means to redo all the undone moves."
todo))))
until (eq mem (cdr ls))
finally do
- (loop
+ (cl-loop
for (userp pos) in todo
do (progn
(gnugo-push-move userp pos)
@@ -1796,12 +1846,12 @@ to the last move, as a comment."
result (gnugo-query "final_score %d" seed))
(cond ((string= "Chinese" (gnugo--root-prop :RU))
(dolist (group live)
- (incf (if (gnugo--blackp (caar group))
+ (cl-incf (if (gnugo--blackp (caar group))
b-terr
w-terr)
(length (cdr group))))
(dolist (group dead)
- (incf (if (gnugo--blackp (caar group))
+ (cl-incf (if (gnugo--blackp (caar group))
w-terr
b-terr)
(length (cdr group))))
@@ -1811,7 +1861,7 @@ to the last move, as a comment."
blurb))
(t
(dolist (group dead)
- (incf (if (gnugo--blackp (caar group))
+ (cl-incf (if (gnugo--blackp (caar group))
w-terr
b-terr)
(* 2 (length (cdr group)))))
@@ -1927,7 +1977,7 @@ If there a stone at that position, also display its move
number."
(defun gnugo-switch-to-another ()
"Switch to another GNU Go game buffer (if any)."
(interactive)
- (loop for buf in (cdr (buffer-list))
+ (cl-loop for buf in (cdr (buffer-list))
if (gnugo-board-buffer-p buf)
return (progn
(bury-buffer)
@@ -2078,9 +2128,7 @@ NOTE: At this time, GTP command handling specification is
still
(define-derived-mode gnugo-board-mode special-mode "GNUGO Board"
"Major mode for playing GNU Go.
Entering this mode runs the normal hook `gnugo-board-mode-hook'.
-In this mode, keys do not self insert.
-
-\\{gnugo-board-mode-map}"
+In this mode, keys do not self insert."
(buffer-disable-undo) ; todo: undo undo undoing
(setq font-lock-defaults '(gnugo-font-lock-keywords t)
truncate-lines t)
@@ -2146,7 +2194,7 @@ See `gnugo-board-mode' for a full list of commands."
(gnugo-board-mode)
(let* ((filename nil)
(user-color "black")
- (args (loop
+ (args (cl-loop
with ls = (split-string
;; todo: grok ‘gnugo --help’; completion
(read-string
@@ -2252,57 +2300,6 @@ See `gnugo-board-mode' for a full list of commands."
;;;---------------------------------------------------------------------------
;;; Load-time actions
-(unless gnugo-board-mode-map
- (setq gnugo-board-mode-map (make-sparse-keymap))
- (suppress-keymap gnugo-board-mode-map)
- (mapc (lambda (pair)
- (define-key gnugo-board-mode-map (car pair) (cdr pair)))
- '(("?" . describe-mode)
- ("S" . gnugo-request-suggestion)
- ("\C-m" . gnugo-move)
- (" " . gnugo-move)
- ("P" . gnugo-pass)
- ("R" . gnugo-resign)
- ("q" . gnugo-quit)
- ("Q" . gnugo-leave-me-alone)
- ("U" . gnugo-fancy-undo)
- ("\M-u" . gnugo-undo-one-move)
- ("u" . gnugo-undo-two-moves)
- ("\C-?" . gnugo-undo-two-moves)
- ("o" . gnugo-oops)
- ("O" . gnugo-okay)
- ("\C-l" . gnugo-refresh)
- ("\M-_" . gnugo-boss-is-near)
- ("_" . gnugo-boss-is-near)
- ("h" . gnugo-move-history)
- ("L" . gnugo-frolic-in-the-leaves)
- ("\C-c\C-l" . gnugo-frolic-in-the-leaves)
- ("i" . gnugo-image-display-mode)
- ("w" . gnugo-worm-stones)
- ("W" . gnugo-worm-data)
- ("d" . gnugo-dragon-stones)
- ("D" . gnugo-dragon-data)
- ("g" . gnugo-grid-mode)
- ("!" . gnugo-estimate-score)
- (":" . gnugo-command)
- (";" . gnugo-command)
- ("=" . gnugo-describe-position)
- ("s" . gnugo-write-sgf-file)
- ("\C-x\C-s" . gnugo-write-sgf-file)
- ("\C-x\C-w" . gnugo-write-sgf-file)
- ("l" . gnugo-read-sgf-file)
- ("F" . gnugo-display-final-score)
- ("A" . gnugo-switch-to-another)
- ("C" . gnugo-comment)
- ("\C-c\C-a" . gnugo-assist-mode)
- ("\C-c\C-z" . gnugo-zombie-mode)
- ;; mouse
- ([(down-mouse-1)] . gnugo-mouse-move)
- ([(down-mouse-2)] . gnugo-mouse-move) ; mitigate accidents
- ([(down-mouse-3)] . gnugo-mouse-pass)
- ;; delving into the curiosities
- ("\C-c\C-p" . gnugo-describe-internal-properties))))
-
(unless (get 'help :gnugo-gtp-command-spec)
(cl-flet*
((sget (x) (get x :gnugo-gtp-command-spec))
@@ -2310,7 +2307,7 @@ See `gnugo-board-mode' for a full list of commands."
(plist-put (sget cmd) prop val)))
(validpos (s &optional go)
(let ((pos (upcase s)))
- (loop with size = (gnugo-get :SZ)
+ (cl-loop with size = (gnugo-get :SZ)
for c across (funcall (gnugo--as-cc-func)
pos)
do (let ((norm (- c ?a)))
@@ -2354,7 +2351,7 @@ See `gnugo-board-mode' for a full list of commands."
(when (setq output (plist-get spec :output))
(if (functionp output)
(note "handles the output specially")
- (case output
+ (cl-case output
(:discard (note "discards the output"))
(:message (note "displays the output in the echo
area")))))
(when (eq sel cur)
@@ -2394,10 +2391,10 @@ See `gnugo-board-mode' for a full list of commands."
;;;---------------------------------------------------------------------------
-;;; The remainder of this file defines a simplified SGF-handling library.
-;;; When/if it should start to attain generality, it should be split off into
-;;; a separate file (probably named sgf.el) w/ funcs and vars renamed sans the
-;;; "gnugo/" prefix.
+;; The remainder of this file defines a simplified SGF-handling library.
+;; When/if it should start to attain generality, it should be split off into
+;; a separate file (probably named sgf.el) w/ funcs and vars renamed sans the
+;; "gnugo/" prefix.
(defconst gnugo/sgf-*r4-properties*
'((AB "Add Black" setup list stone)
@@ -2502,14 +2499,14 @@ A collection is a list of gametrees, each a vector of
four elements:
(specs (or (get 'gnugo/sgf-*r4-properties* :specs)
(put 'gnugo/sgf-*r4-properties* :specs
(mapcar (lambda (full)
- (cons (car full) (cdddr full)))
+ (cons (car full) (cl-cdddr full)))
gnugo/sgf-*r4-properties*))))
SZ)
(cl-labels
((sw () (skip-chars-forward " \t\n"))
(x (end preserve-whitespace)
(let ((beg (point))
- (endp (case end
+ (endp (cl-case end
(:end (lambda (char) (= ?\] char)))
(:mid (lambda (char) (= ?\: char)))
(t (lambda (char) (or (= ?\: char)
@@ -2530,7 +2527,7 @@ A collection is a list of gametrees, each a vector of
four elements:
(one (type end) (let ((s (progn
(forward-char 1)
(x end (eq 'text type)))))
- (case type
+ (cl-case type
((stone point move)
;; blech, begone bu"tt"-ugly blatherings
;; (but bide brobdingnagian boards)...
@@ -2560,7 +2557,7 @@ A collection is a list of gametrees, each a vector of
four elements:
;; probably this assumption is consistent
;; w/ the SGF authors' desire to make the
;; parsing easy, but you never know...
- (cons v (one (cdaddr spec) :end)))))
+ (cons v (one (cl-cdaddr spec) :end)))))
(t (cons (one (car spec) :mid)
(one (cdr spec) :end)))))
(short (who) (when (eobp)
@@ -2597,7 +2594,7 @@ A collection is a list of gametrees, each a vector of
four elements:
(forward-char 1)
t))
(NODE () (when (seek-into ?\;)
- (loop with prop
+ (cl-loop with prop
while (setq prop (PROP))
collect (progn
(when (eq :SZ (car prop))
@@ -2622,7 +2619,7 @@ A collection is a list of gametrees, each a vector of
four elements:
;; singular
(list ls)
;; multiple
- (loop while (seek ?\()
+ (cl-loop while (seek ?\()
append (TREE ls mnum)))
(seek-into ?\))))))
(with-temp-buffer
@@ -2630,7 +2627,7 @@ A collection is a list of gametrees, each a vector of
four elements:
(insert-file-contents file-or-data)
(insert file-or-data)
(goto-char (point-min)))
- (loop while (morep)
+ (cl-loop while (morep)
collect (let* ((mnum (gnugo--mkht :weakness 'key))
(ends (TREE nil mnum))
(root (car (last (car ends)))))
@@ -2643,13 +2640,13 @@ A collection is a list of gametrees, each a vector of
four elements:
(me (cons "gnugo.el" gnugo-version))
(specs (mapcar (lambda (full)
(cons (intern (format ":%s" (car full)))
- (cdddr full)))
+ (cl-cdddr full)))
gnugo/sgf-*r4-properties*))
p name v spec)
(cl-labels
((esc (composed fmt arg)
(mapconcat (lambda (c)
- (case c
+ (cl-case c
;; ‘?\[’ is not strictly required
;; but neither is it forbidden.
((?\[ ?\] ?\\) (format "\\%c" c))
@@ -2692,7 +2689,7 @@ A collection is a list of gametrees, each a vector of
four elements:
(t
(>>one v) (>>nl))))
(>>node (node)
- (loop initially (insert ";")
+ (cl-loop initially (insert ";")
for prop in node
do (>>prop prop)))
(>>tree (tree)
@@ -2714,7 +2711,7 @@ A collection is a list of gametrees, each a vector of
four elements:
(leaves (append (gnugo--tree-ends tree) nil)))
(cl-flet
((hang (stack)
- (loop
+ (cl-loop
with rh ; rectified history
with bp ; branch point
for node in stack
- [elpa] externals/gnugo 2bde4bc 207/357: [gnugo] Add hook: gnugo-start-game-hook, (continued)
- [elpa] externals/gnugo 2bde4bc 207/357: [gnugo] Add hook: gnugo-start-game-hook, Stefan Monnier, 2020/11/29
- [elpa] externals/gnugo 714d3c9 201/357: [gnugo int] Commentary munging; nfc., Stefan Monnier, 2020/11/29
- [elpa] externals/gnugo e019871 206/357: [gnugo] Add abstraction: gnugo-current-player, Stefan Monnier, 2020/11/29
- [elpa] externals/gnugo 40f7299 225/357: [gnugo] Fix bug: Ensure gametree sync for -l/--infile., Stefan Monnier, 2020/11/29
- [elpa] externals/gnugo cedd448 227/357: [gnugo int] Add abstraction: gnugo--prop<-color, Stefan Monnier, 2020/11/29
- [elpa] externals/gnugo dfe75eb 281/357: [gnugo] Replace ‘gnugo-toggle-image-display-command’ w/ ‘gnugo-image-display-mode’., Stefan Monnier, 2020/11/29
- [elpa] externals/gnugo 88620df 278/357: [gnugo int] Decruft: Drop :local-xpms support., Stefan Monnier, 2020/11/29
- [elpa] externals/gnugo cacb0c7 275/357: [gnugo] Publicize ‘gnugo-undo-reaction’., Stefan Monnier, 2020/11/29
- [elpa] externals/gnugo 48913fd 313/357: [gnugo maint] Update years in copyright notice; nfc., Stefan Monnier, 2020/11/29
- [elpa] externals/gnugo 844189b 308/357: [gnugo] Release: 3.0.0, Stefan Monnier, 2020/11/29
- [elpa] externals/gnugo 9928736 299/357: * packages/gnugo: Add `cl-lib' as dependency; require it and use its names.,
Stefan Monnier <=
- [elpa] externals/gnugo 67c82c1 309/357: Fix some quoting problems in doc strings, Stefan Monnier, 2020/11/29
- [elpa] externals/gnugo 6bf46ba 290/357: [gnugo maint] Add ‘Maintainer’ header per top-level README; nfc., Stefan Monnier, 2020/11/29
- [elpa] externals/gnugo 7dbf4d7 305/357: [gnugo int] Use idiomatic ‘re-search-forward’ BOUND., Stefan Monnier, 2020/11/29
- [elpa] externals/gnugo 289e336 310/357: [gnugo int] Use ‘setq-local’., Stefan Monnier, 2020/11/29
- [elpa] externals/gnugo d4a4afd 289/357: [gnugo int] Add section "Tip Jar" in Commentary; nfc., Stefan Monnier, 2020/11/29
- [elpa] externals/gnugo c09c26a 304/357: [gnugo int] Use "%F" and "%T"., Stefan Monnier, 2020/11/29
- [elpa] externals/gnugo 53fe424 306/357: [gnugo maint] Update HACKING; nfc., Stefan Monnier, 2020/11/29
- [elpa] externals/gnugo 21e1d9a 303/357: [gnugo int] Expose function to byte-compiler., Stefan Monnier, 2020/11/29
- [elpa] externals/gnugo 0469947 322/357: [gnugo slog] Prefer Cursor Intangible mode, if available., Stefan Monnier, 2020/11/29
- [elpa] externals/gnugo 4930156 239/357: [gnugo int] Move ‘gnugo-position’ call down-chain., Stefan Monnier, 2020/11/29