]> code.delx.au - gnu-emacs-elpa/blobdiff - TODO
Low level polyglot binary opening book support.
[gnu-emacs-elpa] / TODO
diff --git a/TODO b/TODO
index 7bd3796b02c0c90655c3e625dc665396f62ddc53..52a33737d1391df11da428deaeb342821056b289 100644 (file)
--- a/TODO
+++ b/TODO
-- Feature work remaining:
-
-  2.0
-    annotations
-    chatting
-  2.x
-    display/database tie-in
-    analysis/highlight tools
-    bughouse/crazyhouse
-
-----------------------------------------------------------------------
-
-- Have positions remember where both kings are; this will save a lot
-  of calls to chess-pos-search
-
-- Make use of the new chess-incr-index*, which does no checks
-
-- Don't popup the display if it's already the currently selected
-  window
-
-- Make the drawing/highlighting code just touch single squares, rather
-  than redrawing the whole board each time (fast though this is,
-  touching single squares is all that's necessary, and it would be
-  even faster)
-
-- Fix highlighting in chess-plain when chess-plain-spacing is set.
-  chess-coord needs to be applied to a larger area, and also the way
-  highlight locations are found needs to be recalculated.
-
-- Change all of the highlighting functions to use properties to find
-  out where the highlighting region should begin.
-
-- Move keyboard shortcutting and mouse selection into their own
-  modules
-
-- Use chess-ply-set-keyword wherever keywords are being set now.
-
-- Find a way that regexp-alist entries that only need to fire once are
-  only scanned once.
-
-- Extend elp.el to do any kind of memory profiling
-
-----------------------------------------------------------------------
-
-- Need to implement the "50 moves after irreversible" draw rule
-
-- The game should go inactive once I lose by stalemate/checkmate
-
-- When a clock runs down, indicate this in the modeline, and all the
-  user to call-flag in order to win on time
-
-- Detect draw/resign/abort/retract, etc., from ICS and common engines
-
-- in chess-engine-filter and chess-ics-filter, if an error is
-  encountered, skip that line so the same error isn't triggered again
-
-- SPACE to pass, then try to move (against an engine) fails saying
-  it's not our turn to move
-
-- Add support for adjournments; also, implement this is such a way
-  that an e-mail or postal game is basically a game that's adjourned
-  after every move; use BBDB if available
-
-- Allow databases to return a game moniker, which can be used to
-  reference that game again
-
-- There needs to be much more robustness; it's too easy to get the
-  game into an unplayable state right now
-
-- Break my dependency on cl
-
-- Use more asserts throughout the code
-
-- Read-only mode needs to be more vigorous.  There's nothing
-  preventing the user from using M-x commands.
-
-- Complete chess-pgn-mode's automatic entry
-
-- Make any game-modifying commands in a display use C-c C-?
-
-- Use MIME attachments (application/x-chess-pgn) for sending e-mail
-  chess games back and forth.
-
-- Copy some of ics.el's nicer functionality into chess-ics.el
-
-- Complete the ICS12 parser, based on Mario's comments
-
-- Add support for ICS observing
-
-- Make the mode-line much more informative, with information on who is
-  playing, etc.
-
-- Use server-side sockets in chess-network, if Emacs supports it
-
-- Allow ASCII displays to use a separate frame
-
-- In edit mode, mouse-2 and mouse-3 should provide a drop-down list of
-  pieces the square can be set to.  Cursor movement is really not the
-  best for chess-images.  I still need to figure out how best to
-  handle cursor-type with that display.
-
-- Still need to test many areas: position editing
-
-- Implement engine options; then, in chess-puzzle set the option that
-  tells the engine not to resign.
-
-- Remote displays are horribly insecure.
-
-- Resize the chess board on a window resize event, if possible.
-
-- Add chess-game-strip-annotations, for removing all annotations from
-  a game object
-
-- Let the user specify a default size for the chess-images display
-
-- Port image display code to XEmacs
-
-                         Training features
-
-- Allow the opponent to give hints.
-
-- Add a warning mode that will use the results of an analysis to warn
-  the user (and ask for confirmation) before doing something that
-  might lead to an inferior position.
-
-- Add a chess tutor program, to teach people how to play chess
-
-                         Analysis features
-
-- Add an engine function for obtaining an evaluation of the current
-  position.  Then, allow M-x chess to startup a non-game oriented
-  engine, solely for the purpose of submitting position evaluations,
-  and displaying the result in the modeline.  (Also, look at crafty's
-  kibitzing feature).
-
-- Add a Map command, that will colorize the squares depending on
-  whether they are reachable by either side.  Green if reachable by
-  you, Red if by your opponent, and blue if by both.  With a prefix
-  argument, colorize only the squares that have pieces on them.  This
-  is a stable modes that remains in effect until turned off.  It also
-  requires the ability to pass a color to the chessboard highlighting
-  routine.
-
-- Using gnuplot-mode, allow evaluation trends to be plotted
-
-- Add an analyze command that will indicate which pieces are defended,
-  how well, which are attacked, which moves would increase
-  defense/attack/both, etc.  Basically, everything that can be known
-  about the current board, and one move ahead (on both sides).
-
-                        BEFORE FINAL RELEASE
-
-  profile
-  mem profile
-  docstring
-  texi
-  elint
-  checkdoc
+EMACS-CHESS  -*- mode: org; fill-column: 78 -*-
+
+#+STARTUP: overview
+#+ARCHIVE: TODO-OLD::
+#+SEQ_TODO: TODO(@) STARTED(@) WAITING(@) DELEGATED(@) | DONE(@) DEFERRED(@) CANCELLED(@) WONTFIX(@) WORKSFORME(@) INVALID(@) DUPLICATE(@) NOTE
+#+TAGS: Feature(f) Docs(d) Build(b)
+#+CATEGORY: Chess
+
+* TODO Create chess-menu.el, which provides menu access to Emacs Chess                         :Feature:
+  :PROPERTIES:
+  :ID: CAE4078C-4446-4810-AF91-38527042FBCA
+  :END:
+  [2008-09-17 Wed]
+* TODO Titles for the ads window are off
+  :PROPERTIES:
+  :ID: 500B58E3-C9A4-48EA-B61A-87E129938E05
+  :END:
+  [2008-09-17 Wed]
+* TODO When an error occurs during make check, the test should fail
+  :PROPERTIES:
+  :ID: 5FA91881-6013-4E36-B636-2DC021E3FB46
+  :END:
+  [2008-09-16 Tue]
+* TODO A way to keep a correspondence players database in BBDB                         :Feature:
+  :PROPERTIES:
+  :ID: 8D40AD04-2392-410E-BDFE-AA80381E2BCB
+  :END:
+* TODO Add `force' event for forcing an engine to move                                 :Feature:
+  And a command from chess-display to send this event.
+  :PROPERTIES:
+  :ID: E88AE290-D2DD-4445-942E-E9DE09596A1F
+  :END:
+* TODO Add a chess tutor program, to teach people how to play chess                    :Feature:
+  :PROPERTIES:
+  :ID: 8AA53467-6D89-4C27-AF05-4AE793EA6A2E
+  :END:
+* TODO Add a Map command, that will colorize the squares                               :Feature:
+  Depending on whether they are reachable by either side.  Green if reachable
+  by you, Red if by your opponent, and blue if by both.  With a prefix
+  argument, colorize only the squares that have pieces on them.  This is a
+  stable modes that remains in effect until turned off.  It also requires the
+  ability to pass a color to the chessboard highlighting routine.
+  :PROPERTIES:
+  :ID: B2012331-0F7F-488D-BFDC-2C08E2E018FB
+  :END:
+* TODO Add an analyze command                                                          :Feature:
+  That will indicate which pieces are defended, how well, which are attacked,
+  which moves would increase defense/attack/both, etc.  Basically, everything
+  that can be known about the current board, and one move ahead (on both
+  sides).
+  :PROPERTIES:
+  :ID: 8439E0A2-6ED6-489D-94EF-9033F76210EE
+  :END:
+* TODO Add an engine function for obtaining a position evaluation                      :Feature:
+  Then, allow M-x chess to startup a non-game oriented engine, solely for the
+  purpose of submitting position evaluations, and displaying the result in the
+  modeline.  (Also, look at crafty's kibitzing feature).
+  :PROPERTIES:
+  :ID: BE3EAF49-622E-4300-9D63-CB00B5F738F7
+  :END:
+* TODO Add chess-ucb to the list of modules created via M-x chess
+  Right now there is no facility for having two engines associated with a
+  single game (and chess-link is not what we want in this case).
+  :PROPERTIES:
+  :ID: 8C355AA3-46DD-4261-BC7C-4028CDF42854
+  :END:
+* TODO Add slots to positions for tracking positional evaluation                       :Feature:
+  These values can be automatically determined when parsing ICS12.
+  :PROPERTIES:
+  :ID: 608A74EE-9699-406B-B57A-08BFECBC9FEB
+  :END:
+* TODO Add support for adjournments                                                    :Feature:
+  Also, implement this is such a way that an e-mail or postal game is
+  basically a game that's adjourned after every move; use BBDB if available
+  :PROPERTIES:
+  :ID: D41A3E75-04FB-4EC8-A64C-7BD54658AA78
+  :END:
+* TODO Add warning mode that uses analysis results to warn the user                    :Feature:
+  And ask for confirmation before doing something that might lead to an
+  inferior position.
+  :PROPERTIES:
+  :ID: 9EF1FA72-EDC9-4C97-B699-A0DF8EE1893B
+  :END:
+* TODO Allow the opponent to give hints                                                        :Feature:
+  :PROPERTIES:
+  :ID: 068BE26D-4D81-44CD-A4EB-04F15D5064FB
+  :END:
+* TODO autosave: Doesn't support undoing of moves
+  :PROPERTIES:
+  :ID: 80E09658-6D7E-4DD5-A077-E3CDB80F6003
+  :END:
+* TODO autosave: This module currently isn't working at all!
+  :PROPERTIES:
+  :ID: D31ED224-7C1E-4171-AE38-AE87D0032743
+  :END:
+* TODO Change chess-announce/sound so it reads the text rendered move                  :Feature:
+  Such as "king's pawn to e4".
+
+  This way it will work with either descriptive or algebraic notation.  Also,
+  chess-announce and chess-sound can be collapsed into one module, with
+  different "styles" of announcing.
+  :PROPERTIES:
+  :ID: B7090875-BB45-438D-B7C9-CC7A0524D98B
+  :END:
+* TODO clock: Sometimes, the clock gets shut off while playing on ICS
+  :PROPERTIES:
+  :ID: 5130D83E-91A4-4FFD-B62F-DFD8345B06AC
+  :END:
+* TODO Create a better error hierarchy                                                 :Feature:
+  Instead of using (error), we should be throwing specialized signals that
+  indicate whether it's a problem with a ply, a position, a move, etc.  And
+  then this data object should be included with the error.
+  :PROPERTIES:
+  :ID: 323563C6-2A99-4B01-A29B-BEB09166C103
+  :END:
+  [2008-08-31 Sun]
+* TODO Create generic chess-output interface                                           :Feature:
+  For outputting games to a particular format (PGN, HTML, LaTeX, etc).
+  :PROPERTIES:
+  :ID: A7F64797-4827-4EF6-BFE4-075D6F430D4E
+  :END:
+* TODO Display in modeline which game in the database we're in                         :Feature:
+  And what the positional evaluation is.
+  :PROPERTIES:
+  :ID: 6144C07C-8F6B-46B8-80A8-C736E3C843F0
+  :END:
+* TODO display: Always validate the display before painting
+  This will require adding a new text property to each square on the board,
+  `chess-piece', so that the validator can walk through the displayed board
+  and ensure that it matches the known position for that board.
+  :PROPERTIES:
+  :ID: 169EB9E9-ED82-4FA7-AE8A-129FFFE419F6
+  :END:
+* TODO display: Draw move highlights as a border, not a background
+  This should be optional, since backgrounds can look nice too.
+  :PROPERTIES:
+  :ID: 5A7A3C73-5105-4BAB-A027-79310B9CD061
+  :END:
+* TODO display: If I win, it still reports CHECKMATE incorrectly
+  If I'm white, it does so on the last ply (per display)
+  :PROPERTIES:
+  :ID: 3F662E90-3F58-43E9-B59E-936F1EBC3953
+  :END:
+* TODO display: Make highlight colors easily customizable
+  :PROPERTIES:
+  :ID: D0842841-9E89-49A3-9EEB-5FA4D251FE41
+  :END:
+* TODO display: Need "save game to a PGN file/database" command
+  :PROPERTIES:
+  :ID: 2BBA9120-1EE5-4623-9F52-DFB966EC3317
+  :END:
+* TODO display: Sometimes final event of game doesn't change modeline
+  - Note taken on [2008-09-03 Wed 04:18] \\
+    I just had it happen again tonight, when I resigned with C-c C-r, and it
+    showed up in the *chess-ics* buffer, but it didn't update the modeline.
+  Like CHECKMATE, FLAG FELL, or RESIGN
+  :PROPERTIES:
+  :ID: 316BD168-29A8-4B54-830C-FA5CEA397518
+  :END:
+  [2008-09-02 Tue]
+* TODO Enable chat module, and base its interface on what TNT does                     :Feature:
+  :PROPERTIES:
+  :ID: A5AC87EC-99B7-4522-9916-F97ED3EC5F78
+  :END:
+* TODO Enable UI commands in chess-display to interact with databases                  :Feature:
+  As of 2.0, this support is programmatic only.
+  :PROPERTIES:
+  :ID: 8CA4762E-4665-433E-9538-994BEDCABE21
+  :END:
+* TODO engine: Answering "y" to opponent (takeback, etc) hangs
+  I get left with an hourglass cursor.
+  :PROPERTIES:
+  :ID: 0F9290D9-90D6-48ED-9F13-EEDF42EA91F0
+  :END:
+* TODO engine: If no chess engine available, print a nice message
+  :PROPERTIES:
+  :ID: E0889D90-33FD-426F-AC45-6221136162D8
+  :END:
+* TODO Enhance PGN mode                                                                        :Feature:
+  Maybe pgn-mode could just allow normal editing, and bind some keys
+  to do special things. e.g., the mouse binding could work as normal,
+  SPC could update the display. So if you do
+
+  1 e4 SPC
+
+  you get the move displayed. Some binding could do redisplay anyway, e.g. C-l?
+  Then, one could enter variations or such simply with ( or { and
+  the display would update automatically.
+  e.g., you do
+
+  ( 15.e5 SPC Nf3 SPC )
+
+  and you'd get three display updates, on e5 SPC, you get that
+  ply, then the second one, and on ) you get the position before the 
+  variation. Move point into the variation again, and hit C-l and you
+  get the pos where point is on.
+
+  There should be a forward-ply and backward-ply, maybe something like
+  M-f / M-b, and C-u M-f for two plies forward?
+
+  Very nice would be a pcomplete-based completion fascility, so
+  simply hit TAB at any point, and you get the right completion.
+
+  Example:
+
+  [Event ...]
+
+  TAB 1.TAB ...
+
+  On first tab, the move number is inserted. On second, you get
+  all possible moves in that position.
+  :PROPERTIES:
+  :ID: 7D4ACEDE-C9D9-49E1-883F-829DB80FC5E7
+  :END:
+* TODO Find a way to display pieces on Windows platforms
+  Or at least document how to build XPM support into Emacs for Windows.
+  :PROPERTIES:
+  :ID: D602699C-A340-41A4-BA94-876743D43F8C
+  :END:
+* TODO Fix errors from the validation suite
+  Error reading game 336249: PGN parser: Expected a ply here: '30'
+  Error reading game 443436: PGN parser: Expected a ply here: 'Rf2'
+  Error reading game 465586: PGN parser: Expected a ply here: 'R'
+  :PROPERTIES:
+  :ID: 01CFDC4F-350C-472B-A4F6-DFE4503B6D05
+  :END:
+  [2008-09-02 Tue]
+* TODO Follow what `edit-env' does, in order to make chess-query.el                    :Feature:
+  :PROPERTIES:
+  :ID: 48F2D4F3-8B1B-4196-BED0-1407239ADC4F
+  :END:
+* TODO german: Complete translation
+  :PROPERTIES:
+  :ID: 937301D5-2C31-4F43-83B0-FB9A0CD5F138
+  :END:
+* TODO gnuchess: Triggers a Lisp error when I resign
+  :PROPERTIES:
+  :ID: 8ADABEB5-BF38-4A71-949F-074048AED7B0
+  :END:
+* TODO ics: Accepting match request doesn't seem to be working always
+  :PROPERTIES:
+  :ID: 296B2B3D-B4CF-418E-8FA6-36D301D09136
+  :END:
+* TODO ics: Add a completion function against logged in users                          :Feature:
+  :PROPERTIES:
+  :ID: 1AFE6B32-7236-4E71-9CCC-21B797E67F08
+  :END:
+* TODO ics: Copy ics.el's nicer functionality into chess-ics.el                                :Feature:
+  :PROPERTIES:
+  :ID: 05E523E9-38EC-4268-89B4-2A42409F9059
+  :END:
+* TODO ics: Not detecting forfeit by disconnection at the moment
+  :PROPERTIES:
+  :ID: 0EDCC239-65B0-450F-82B9-12B1E96667D4
+  :END:
+* TODO ics: Resuming adjourned games does not work at all
+  :PROPERTIES:
+  :ID: D2E35ADE-1CFF-4DB6-A910-DF3C886709B3
+  :END:
+* TODO ics: Takebacks still aren't working 100%
+  When I submit a takeback request manually, and the other side accepts, my
+  client doesn't know what to do with it
+  :PROPERTIES:
+  :ID: 67BF2EFF-66E6-4DE3-BCD1-D1743D8C7AC3
+  :END:
+* TODO If you are playing a puzzle game, and the engine is thinking
+  And you hit space to move to the next puzzle, then when the last move is
+  finally received from the engine it causes an error.
+  :PROPERTIES:
+  :ID: 4583E224-B5A2-47D4-906E-6374AA7AB936
+  :END:
+* TODO [#C] Investigate the performance possibilities researched by Mario
+  Well, I've played a little with a few transformations but I haven't managed
+  to get any substantial speedup.  Things I see are:
+
+  - characterp is called at least three times, the value could be saved in
+    the toplevel let*.
+  - I am not sure but I think I read inline quoted lists can be slower.  I
+    tried to define the direction lists as a alist in a defconst, but it
+    didnt't really show as a speedup...
+  - The chess--add-candidates defsubst does needless check of check-only in
+    some cases.  I.e., if we rewrite the first cond clause to do different
+    things if check-only is t or nil, that might also do a bit.
+
+  But really, I didnt find anything worthwhile... Maybe it could make sense to
+  have a separate function to handle the (memq piece '(nil t)) case.
+  :PROPERTIES:
+  :ID: 24E8AD24-067C-4130-9616-63D5DFF60231
+  :END:
+  [2008-09-01 Mon]
+* TODO irc: If move before opponent connects, symbol assertion "value"
+  :PROPERTIES:
+  :ID: DCCEB9D3-0F5F-484C-9D4E-A0B7801F101D
+  :END:
+* TODO Let people override the chess-default-* lists                                   :Feature:
+  :PROPERTIES:
+  :ID: AEBED712-70F6-499B-A8D8-6A8632D9A7D1
+  :END:
+* TODO Make ( create variations in a display                                           :Feature:
+  And keys to move into and out of them.  At the moment, variations are
+  supported programmatically, but not in the UI.
+  :PROPERTIES:
+  :ID: C7B9BEEE-5261-412C-8592-5E1EDEBC5544
+  :END:
+* TODO Make a read-only display mode                                                   :Feature:
+  Which allows people to view/browse but not alter a game.  This could be used
+  for remoting displays in order that people on other X servers might observe
+  a game.
+  :PROPERTIES:
+  :ID: 1968B422-B8D9-4493-9C90-401956C8CAE0
+  :END:
+* TODO Make the "debug level" configurable
+  The speedup from (setq cl-optimize-speed 9) in chess-pos.el is due to
+  eliding assert calls.  This basically makes asserts useless since they are
+  now turned off unconditionally.  It would be nice to have a kind of
+  "--enable-debug" or somesuch at configure time to make this obvious.
+  :PROPERTIES:
+  :ID: 130D8091-A1F5-43DC-AFBA-BFDB5D1ADEDF
+  :END:
+  [2008-09-10 Wed 17:04]
+* TODO Make the chess-ics-sought buffer read-only
+  :PROPERTIES:
+  :ID: D416E179-252C-49CE-8BAA-06B31364116F
+  :END:
+  [2008-09-02 Tue]
+* TODO Merge chess-announce and chess-sound                                            :Feature:
+  Use style modules on top of the underlying module.
+  :PROPERTIES:
+  :ID: 87612913-B3AD-4329-892F-C156F88A358C
+  :END:
+* TODO Need a way to play bughouse/crazyhouse games.                                   :Feature:
+  :PROPERTIES:
+  :ID: 237BDAFD-0B92-4A06-AA25-D5568FF3DC4B
+  :END:
+* TODO network: Does not work at all!
+  :PROPERTIES:
+  :ID: AC39392F-57EF-4D79-A718-DEB4B24DFC5D
+  :END:
+* TODO pgn: Sometimes when clipping, "*" is stuck to last move's text
+  :PROPERTIES:
+  :ID: 5B737ED4-F271-425E-9F1D-1DFA7834BAFF
+  :END:
+* TODO pgn: When saving game to clipboard, shouldn't need to save FEN
+  If it's starting from a standard position (this doesn't always happen)
+  :PROPERTIES:
+  :ID: 7CB3441C-9398-42D7-A174-5F534ADA473B
+  :END:
+* TODO ply: detect games drawn by 3-fold repetition and 50 move rule
+  Note, FIDE rules define that a draw must be claimed by one of the opponents,
+  so we do not really need to do this on every move, just when a draw is
+  requested.)
+  :PROPERTIES:
+  :ID: 4D3BBF63-A640-483A-ACF9-CC948AEAAAC7
+  :END:
+* TODO Port the code to XEmacs
+  :PROPERTIES:
+  :ID: A633A292-722C-4566-9F5D-807675DAB8DD
+  :END:
+* TODO Sometimes the chess-ics-sought buffer doesn't appear
+  :PROPERTIES:
+  :ID: A3499CBB-5C0D-4C1B-872C-DC4E7D46CA73
+  :END:
+  [2008-09-02 Tue]
+* TODO Sought games are not being selected for me when I press RET
+  :PROPERTIES:
+  :ID: 06F3AD0F-B44D-4845-B345-4406AF8D3212
+  :END:
+  [2008-09-02 Tue]
+* TODO Tools for managing a tournament                                                 :Feature:
+  Setting up pairings, calculating ratings.
+  :PROPERTIES:
+  :ID: D53A7DA4-6940-4E0C-938E-08E12CC7EDEF
+  :END:
+* TODO Use MIME attachments (application/x-chess-pgn)                                  :Feature:
+  For sending e-mail chess games back and forth.
+  :PROPERTIES:
+  :ID: B01A0B43-12F3-4978-A63A-01ADBA9BB78D
+  :END:
+* TODO Use TrueType or other chess fonts for displaying positions                      :Feature:
+  This might be the best way of displaying positions on Windows.
+  :PROPERTIES:
+  :ID: 0387D818-3841-4BA1-A246-F48349F4A53F
+  :END:
+* TODO Using gnuplot-mode, allow evaluation trends to be plotted                       :Feature:
+  :PROPERTIES:
+  :ID: BC458171-65B7-4CAE-ACF5-9FD0E263F425
+  :END:
+* TODO Write chess-descriptive.el, and have the code in general use                    :Feature:
+  chess-ply-to-string and chess-string-to-ply, so that users can use
+  descriptive notationas an alternative to algebraic.
+
+  (NOTE: this might proof problematic since descriptive move notation is
+  ambigious if we don't have the full game information, since we need to
+  destinguish between QR KR QN and KN.  So chess-descriptive-to-ply would need
+  to use a game object as reference, rather than just a position.)
+  :PROPERTIES:
+  :ID: 7C283CC8-450C-468C-93C3-C264CC8F536A
+  :END:
+* TODO [#C] Add docstrings/texi content
+  :PROPERTIES:
+  :ID: 7BC85C08-7A3B-4A09-94C6-9AF10180924B
+  :END:
+* TODO [#C] Clean up chess.el
+  :PROPERTIES:
+  :ID: F2CC192E-8AD3-47BD-9A9F-3990BA1206A2
+  :END:
+* TODO [#C] Elint all files
+  :PROPERTIES:
+  :ID: 7F56D199-279D-4DAD-AF4C-D612AFC803FA
+  :END:
+* TODO [#C] Investigate the performance possibilities researched by Mario
+  Well, I've played a little with a few transformations but I haven't managed
+  to get any substantial speedup.  Things I see are:
+
+  - char-valid-p is called at least three times, the value could be saved in
+    the toplevel let*.
+  - I am not sure but I think I read inline quoted lists can be slower.  I
+    tried to define the direction lists as a alist in a defconst, but it
+    didnt't really show as a speedup...
+  - The chess--add-candidates defsubst does needless check of check-only in
+    some cases.  I.e., if we rewrite the first cond clause to do different
+    things if check-only is t or nil, that might also do a bit.
+
+  But really, I didnt find anything worthwhile... Maybe it could make sense to
+  have a separate function to handle the (memq piece '(nil t)) case.
+  :PROPERTIES:
+  :ID: 24E8AD24-067C-4130-9616-63D5DFF60231
+  :END:
+  [2008-09-01 Mon]
+* TODO [#C] Profile and mem profile
+  Especially try to get the validation suite running faster!
+  :PROPERTIES:
+  :ID: 4A08E03C-1AEA-4C14-951A-3F8DBB2E29E7
+  :END:
+* TODO [#C] Use checkdoc on all files
+  :PROPERTIES:
+  :ID: 8D30489F-9000-43C3-BCA6-0C14F0E5C831
+  :END:
+* STARTED display: Make it possible to "highlight the last move"                       :Feature:
+  - State "STARTED"    [2008-09-01 Mon 03:59] \\
+    This is mostly done.  I'd like to make the highlight done for the
+    opponent's moves
+  :PROPERTIES:
+  :ID: F55EAAA5-504E-44A5-AA1A-43516711F8DD
+  :END:
+* DONE "End of file" error reading game 2008149
+  - State "DONE"       [2008-09-01 Mon 04:11] \\
+    The problem was parsing [Event "Hello \"].
+  :PROPERTIES:
+  :ID: F994A8E9-5EDD-4681-863E-491806F0ED07
+  :END:
+  [2008-09-01 Mon]
+* DONE Add an 'install' target to the Makefile
+  - State "DONE"       [2008-09-01 Mon 04:02]
+  :PROPERTIES:
+  :ID: 7A27FDC0-0053-4656-9AC9-6D7BEECE6D4A
+  :END:
+* DONE chess-auto.el is not being built properly                                         :Build:
+  - State "DONE"       [2008-09-01 Mon 21:16]
+  :PROPERTIES:
+  :ID: 184AF780-815B-43DB-87A4-0A81DE252AB0
+  :END:
+  [2008-08-31 Sun]
+* DONE display: Display problem with chess-display-side-to-move
+  The text doesn't show the face in the modeline
+  - State "DONE"       [2008-09-01 Mon 03:55]
+  :PROPERTIES:
+  :ID: 884690AC-C3BE-43D6-A600-48D221BD0FB0
+  :END:
+* DONE ics: A refresh directive should act as a position assert
+  - State "DONE"       [2008-08-29 Fri 06:28]
+  Compare with our current known board and trigger an error if it doesn't
+  match the refresh.
+  :PROPERTIES:
+  :ID: C0F3CD12-83C5-4970-AD27-8C4A4C447BC2
+  :END:
+* DONE scid: chess-scid-get-result fails on some machines (timing?)
+  - State "DONE"       [2008-09-17 Wed 05:49] \\
+    Fixed by adding more delays in case text has not appeared from the command.
+  - State "STARTED"    [2008-09-16 Tue 04:38] \\
+    I believe I have a fix for this, commit
+    33d57dc0f667c8d1168b46f9e73d9510d8c7e518, but I must await Mario's test on his
+    8 CPU machine.
+  It happens on a fast 8-CPU machine of mine that chess-scid-get-result
+  returns the empty string.  The reason for this is that sometimes, the prompt
+  is not output immediately after a result, so upon next call to
+  chess-scid-get-result the first output we see is the prompt ("% ") from the
+  previous command which due to the current algo results in
+  chess-scid-get-result returning "".  It would need to continue reading if it
+  sees a prompt as first output.  Waiting until we see a prompt to make sure
+  we have all the output results in *very slow* behaviour, maybe due to
+  line-buffering (the prompt has no final \n, obviously), so we probably shoud
+  skip over prompt and continue reading.
+  :PROPERTIES:
+  :ID: AF51A38C-36B6-4976-954D-0BCD6C1A81FD
+  :END:
+  [2008-09-08 Mon 23:41]
+* DONE scid: The buffer needs periodic clearing, or it grows too large
+  - State "DONE"       [2008-09-01 Mon 21:16]
+  :PROPERTIES:
+  :ID: 272CE75E-122A-4AEA-8A03-9CD2041895EA
+  :END:
+  [2008-09-01 Mon]
+* DONE Sometimes a chess-test run fails to recognize promotions
+  - State "DONE"       [2008-09-02 Tue 22:31] \\
+    Fixed.  This appears to be a bug in looking-at/match-string, but it only
+    occurs under high load and certain circumstances.  I was able to get around it
+    by examining the buffer directly.
+  - Note taken on [2008-09-01 Mon 05:35] \\
+    This happens on game 2030188.
+  :PROPERTIES:
+  :ID: 431304B0-E8B9-485E-82B5-D4DF900C27DF
+  :END:
+  [2008-09-01 Mon]