ttn pushed a commit to branch ttn-gnugo
in repository elpa.
commit 0e71b331b1aecf4b10112ca96f5e177e4e7d9fd1
Author: Thien-Thi Nguyen <[email protected]>
Date: Thu Feb 13 12:29:19 2014 +0100
[gnugo int] Add abstraction: gnugo--unclose-game
* packages/gnugo/gnugo.el (gnugo--unclose-game): New func.
(gnugo-magic-undo): Use it.
(boardsize, clear_board, fixed_handicap):
Likewise, in the value of the ‘:post-thunk’ property.
---
packages/gnugo/ChangeLog | 9 +++++++++
packages/gnugo/gnugo.el | 17 +++++++++++++++--
2 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/packages/gnugo/ChangeLog b/packages/gnugo/ChangeLog
index 1789317..0dad0da 100644
--- a/packages/gnugo/ChangeLog
+++ b/packages/gnugo/ChangeLog
@@ -1,3 +1,12 @@
+2014-02-13 Thien-Thi Nguyen <[email protected]>
+
+ [gnugo int] Add abstraction: gnugo--unclose-game
+
+ * gnugo.el (gnugo--unclose-game): New func.
+ (gnugo-magic-undo): Use it.
+ (boardsize, clear_board, fixed_handicap):
+ Likewise, in the value of the ‘:post-thunk’ property.
+
2014-02-11 Thien-Thi Nguyen <[email protected]>
[gnugo] Indicate buffer not modified after load.
diff --git a/packages/gnugo/gnugo.el b/packages/gnugo/gnugo.el
index 593aba2..8777864 100644
--- a/packages/gnugo/gnugo.el
+++ b/packages/gnugo/gnugo.el
@@ -695,6 +695,19 @@ For all other values of RSEL, do nothing and return nil."
`((live ,@live)
(dead ,@dead))))))
+(defun gnugo--unclose-game ()
+ (dolist (prop '(:game-over ; all those in -close-game
+ :scoring-seed
+ :game-end-time))
+ (gnugo-put prop nil))
+ (let* ((root (car (gnugo-get :sgf-gametree)))
+ (cur (assq :RE root)))
+ (when cur
+ (assert (not (eq cur (car root))) nil
+ ":RE at head of root node: %S"
+ root)
+ (delq cur root))))
+
(defun gnugo-push-move (userp move)
(let* ((color (gnugo-get (if userp :user-color :gnugo-color)))
(start (gnugo-get :waiting-start))
@@ -1325,7 +1338,7 @@ turn to play. Optional second arg NOALT non-nil inhibits
this."
(error "%s not occupied by %s" pos u)))))
(t (error "Bad spec: %S" spec)))
(when (gnugo-get :game-over)
- (gnugo-put :game-over nil))
+ (gnugo--unclose-game))
(while (not (funcall done))
(setq ans (cdr (gnugo-synchronous-send/return "undo")))
(unless (= ?= (aref ans 0))
@@ -1904,7 +1917,7 @@ starting a new one. See `gnugo-board-mode' documentation
for more info."
fixed_handicap)
:output :discard
:post-thunk (lambda ()
- (gnugo-put :game-over nil)
+ (gnugo--unclose-game)
(gnugo-put :last-mover nil)
(gnugo-refresh t)))