From f6fcd3b9a85bde4a985094cd48235975a0ba1be5 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Wed, 1 May 2002 00:06:56 +0000 Subject: Sped up autosaving by a huge amount; also, allow auto-saving to be disabled (it's not necessary when playing on ICS, for example). --- chess-autosave.el | 39 +++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) (limited to 'chess-autosave.el') diff --git a/chess-autosave.el b/chess-autosave.el index 909e315..9ab935c 100644 --- a/chess-autosave.el +++ b/chess-autosave.el @@ -40,20 +40,43 @@ ((eq event 'post-move) (chess-autosave-write game chess-autosave-file)) + ((eq event 'disable-autosave) + (chess-autosave-handler game 'destroy) + (chess-module-destroy (current-buffer))) + ((eq event 'destroy) (if (file-readable-p chess-autosave-file) (delete-file chess-autosave-file))))) (defun chess-autosave-write (game file) "Write a chess GAME to FILE as raw Lisp." - (let ((game-copy (copy-alist game))) - (chess-game-set-hooks game-copy nil) - (chess-game-set-data-alist game-copy nil) - (with-current-buffer (find-file-noselect file t) - (erase-buffer) - (prin1 game-copy (current-buffer)) - (basic-save-buffer) - (message nil)))) + (with-current-buffer (find-file-noselect file t) + (erase-buffer) + (insert "(nil ") + (prin1 (chess-game-tags game) (current-buffer)) + (insert " nil (") + (dolist (ply (chess-game-plies game)) + (insert "([") + (let ((pos (chess-ply-pos ply))) + (dotimes (i 74) + (prin1 (aref pos i) (current-buffer)) + (unless (= i 73) + (insert ? )))) + (insert ?\]) + (let ((changes (chess-ply-changes ply))) + (if changes + (insert ? )) + (while changes + (if (eq (car changes) :next-pos) + (setq changes (cddr changes)) + (prin1 (car changes) (current-buffer)) + (if (cdr changes) + (insert ? )) + (setq changes (cdr changes))))) + (insert ") ")) + (insert "))") + (basic-save-buffer) + (message nil))) (defun chess-autosave-read (file) "Read a chess game as raw Lisp from FILE." -- cgit v1.2.3