diff options
| author | John Wiegley <johnw@newartisans.com> | 2002-05-01 00:06:56 +0000 |
|---|---|---|
| committer | John Wiegley <johnw@newartisans.com> | 2002-05-01 00:06:56 +0000 |
| commit | f6fcd3b9a85bde4a985094cd48235975a0ba1be5 (patch) | |
| tree | 954b05339a8431f26a1dc53c29327e22da97cbaf /chess-autosave.el | |
| parent | 1802057adc2e99bbfe6792ca8c09b39c816d62f3 (diff) | |
Sped up autosaving by a huge amount; also, allow auto-saving to be
disabled (it's not necessary when playing on ICS, for example).
Diffstat (limited to 'chess-autosave.el')
| -rw-r--r-- | chess-autosave.el | 39 |
1 files changed, 31 insertions, 8 deletions
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." |
