diff options
Diffstat (limited to 'chess-pgn.el')
| -rw-r--r-- | chess-pgn.el | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/chess-pgn.el b/chess-pgn.el index 5b1b977..662d156 100644 --- a/chess-pgn.el +++ b/chess-pgn.el @@ -18,18 +18,24 @@ (pgn-parse-error . "Error parsing PGN syntax"))) (defun chess-pgn-read-plies (game position &optional top-level) - (let ((plies (list t)) prevpos) + (let ((plies (list t)) (begin (point)) move-beg prevpos) (catch 'done (while (not (eobp)) (cond ((looking-at "[1-9][0-9]*\\.[. ]*") (goto-char (match-end 0))) - ((looking-at chess-algebraic-regexp) + ((looking-at chess-algebraic-regexp-ws) + (setq move-beg (point)) (goto-char (match-end 0)) + (skip-syntax-backward " ") (setq prevpos position) - (let* ((move (match-string-no-properties 0)) - (ply (chess-algebraic-to-ply position move))) + (let* ((move (buffer-substring-no-properties move-beg (point))) + (ply (condition-case err + (chess-algebraic-to-ply position move) + (error + (message "PGN: %s" (buffer-substring begin (point-max))) + (error (error-message-string err)))))) (unless ply (chess-error 'pgn-read-error move)) (setq position (chess-ply-next-pos ply)) |
