]> code.delx.au - gnu-emacs-elpa/blob - TODO
char-valid-p is obsolete (as of Emacs 23.1); use characterp instead
[gnu-emacs-elpa] / TODO
1 EMACS-CHESS -*- mode: org; fill-column: 78 -*-
2
3 #+STARTUP: overview
4 #+ARCHIVE: TODO-OLD::
5 #+SEQ_TODO: TODO(@) STARTED(@) WAITING(@) DELEGATED(@) | DONE(@) DEFERRED(@) CANCELLED(@) WONTFIX(@) WORKSFORME(@) INVALID(@) DUPLICATE(@) NOTE
6 #+TAGS: FEATURE(f) DOCS(d) BUILD(b)
7 #+CATEGORY: Chess
8
9 * TODO Titles for the ads window are off
10 :PROPERTIES:
11 :ID: 500B58E3-C9A4-48EA-B61A-87E129938E05
12 :END:
13 [2008-09-17 Wed]
14 * TODO When an error occurs during make check, the test should fail
15 :PROPERTIES:
16 :ID: 5FA91881-6013-4E36-B636-2DC021E3FB46
17 :END:
18 [2008-09-16 Tue]
19 * TODO A way to keep a correspondence players database in BBDB :FEATURE:
20 :PROPERTIES:
21 :ID: 8D40AD04-2392-410E-BDFE-AA80381E2BCB
22 :END:
23 * TODO Add `force' event for forcing an engine to move :FEATURE:
24 And a command from chess-display to send this event.
25 :PROPERTIES:
26 :ID: E88AE290-D2DD-4445-942E-E9DE09596A1F
27 :END:
28 * TODO Add a chess tutor program, to teach people how to play chess :FEATURE:
29 :PROPERTIES:
30 :ID: 8AA53467-6D89-4C27-AF05-4AE793EA6A2E
31 :END:
32 * TODO Add a Map command, that will colorize the squares :FEATURE:
33 Depending on whether they are reachable by either side. Green if reachable
34 by you, Red if by your opponent, and blue if by both. With a prefix
35 argument, colorize only the squares that have pieces on them. This is a
36 stable modes that remains in effect until turned off. It also requires the
37 ability to pass a color to the chessboard highlighting routine.
38 :PROPERTIES:
39 :ID: B2012331-0F7F-488D-BFDC-2C08E2E018FB
40 :END:
41 * TODO Add an analyze command :FEATURE:
42 That will indicate which pieces are defended, how well, which are attacked,
43 which moves would increase defense/attack/both, etc. Basically, everything
44 that can be known about the current board, and one move ahead (on both
45 sides).
46 :PROPERTIES:
47 :ID: 8439E0A2-6ED6-489D-94EF-9033F76210EE
48 :END:
49 * TODO Add an engine function for obtaining a position evaluation :FEATURE:
50 Then, allow M-x chess to startup a non-game oriented engine, solely for the
51 purpose of submitting position evaluations, and displaying the result in the
52 modeline. (Also, look at crafty's kibitzing feature).
53 :PROPERTIES:
54 :ID: BE3EAF49-622E-4300-9D63-CB00B5F738F7
55 :END:
56 * TODO Add chess-ucb to the list of modules created via M-x chess
57 Right now there is no facility for having two engines associated with a
58 single game (and chess-link is not what we want in this case).
59 :PROPERTIES:
60 :ID: 8C355AA3-46DD-4261-BC7C-4028CDF42854
61 :END:
62 * TODO [#C] Add docstrings/texi content
63 :PROPERTIES:
64 :ID: 7BC85C08-7A3B-4A09-94C6-9AF10180924B
65 :END:
66 * TODO Add slots to positions for tracking positional evaluation :FEATURE:
67 These values can be automatically determined when parsing ICS12.
68 :PROPERTIES:
69 :ID: 608A74EE-9699-406B-B57A-08BFECBC9FEB
70 :END:
71 * TODO Add support for adjournments :FEATURE:
72 Also, implement this is such a way that an e-mail or postal game is
73 basically a game that's adjourned after every move; use BBDB if available
74 :PROPERTIES:
75 :ID: D41A3E75-04FB-4EC8-A64C-7BD54658AA78
76 :END:
77 * TODO Add warning mode that uses analysis results to warn the user :FEATURE:
78 And ask for confirmation before doing something that might lead to an
79 inferior position.
80 :PROPERTIES:
81 :ID: 9EF1FA72-EDC9-4C97-B699-A0DF8EE1893B
82 :END:
83 * TODO Allow the opponent to give hints :FEATURE:
84 :PROPERTIES:
85 :ID: 068BE26D-4D81-44CD-A4EB-04F15D5064FB
86 :END:
87 * TODO autosave: Doesn't support undoing of moves
88 :PROPERTIES:
89 :ID: 80E09658-6D7E-4DD5-A077-E3CDB80F6003
90 :END:
91 * TODO autosave: This module currently isn't working at all!
92 :PROPERTIES:
93 :ID: D31ED224-7C1E-4171-AE38-AE87D0032743
94 :END:
95 * TODO Change chess-announce/sound so it reads the text rendered move :FEATURE:
96 Such as "king's pawn to e4".
97
98 This way it will work with either descriptive or algebraic notation. Also,
99 chess-announce and chess-sound can be collapsed into one module, with
100 different "styles" of announcing.
101 :PROPERTIES:
102 :ID: B7090875-BB45-438D-B7C9-CC7A0524D98B
103 :END:
104 * TODO [#C] Clean up chess.el
105 :PROPERTIES:
106 :ID: F2CC192E-8AD3-47BD-9A9F-3990BA1206A2
107 :END:
108 * TODO clock: Sometimes, the clock gets shut off while playing on ICS
109 :PROPERTIES:
110 :ID: 5130D83E-91A4-4FFD-B62F-DFD8345B06AC
111 :END:
112 * TODO Create a better error hierarchy :FEATURE:
113 Instead of using (error), we should be throwing specialized signals that
114 indicate whether it's a problem with a ply, a position, a move, etc. And
115 then this data object should be included with the error.
116 :PROPERTIES:
117 :ID: 323563C6-2A99-4B01-A29B-BEB09166C103
118 :END:
119 [2008-08-31 Sun]
120 * TODO Create generic chess-output interface :FEATURE:
121 For outputting games to a particular format (PGN, HTML, LaTeX, etc).
122 :PROPERTIES:
123 :ID: A7F64797-4827-4EF6-BFE4-075D6F430D4E
124 :END:
125 * TODO Display in modeline which game in the database we're in :FEATURE:
126 And what the positional evaluation is.
127 :PROPERTIES:
128 :ID: 6144C07C-8F6B-46B8-80A8-C736E3C843F0
129 :END:
130 * TODO display: Always validate the display before painting
131 This will require adding a new text property to each square on the board,
132 `chess-piece', so that the validator can walk through the displayed board
133 and ensure that it matches the known position for that board.
134 :PROPERTIES:
135 :ID: 169EB9E9-ED82-4FA7-AE8A-129FFFE419F6
136 :END:
137 * TODO display: Draw move highlights as a border, not a background
138 This should be optional, since backgrounds can look nice too.
139 :PROPERTIES:
140 :ID: 5A7A3C73-5105-4BAB-A027-79310B9CD061
141 :END:
142 * TODO display: If I win, it still reports CHECKMATE incorrectly
143 If I'm white, it does so on the last ply (per display)
144 :PROPERTIES:
145 :ID: 3F662E90-3F58-43E9-B59E-936F1EBC3953
146 :END:
147 * TODO display: Make highlight colors easily customizable
148 :PROPERTIES:
149 :ID: D0842841-9E89-49A3-9EEB-5FA4D251FE41
150 :END:
151 * TODO display: Need "save game to a PGN file/database" command
152 :PROPERTIES:
153 :ID: 2BBA9120-1EE5-4623-9F52-DFB966EC3317
154 :END:
155 * TODO [#B] display: Sometimes final event of game doesn't change modeline
156 - Note taken on [2008-09-03 Wed 04:18] \\
157 I just had it happen again tonight, when I resigned with C-c C-r, and it
158 showed up in the *chess-ics* buffer, but it didn't update the modeline.
159 Like CHECKMATE, FLAG FELL, or RESIGN
160 :PROPERTIES:
161 :ID: 316BD168-29A8-4B54-830C-FA5CEA397518
162 :END:
163 [2008-09-02 Tue]
164 * TODO [#C] Elint all files
165 :PROPERTIES:
166 :ID: 7F56D199-279D-4DAD-AF4C-D612AFC803FA
167 :END:
168 * TODO Enable chat module, and base its interface on what TNT does :FEATURE:
169 :PROPERTIES:
170 :ID: A5AC87EC-99B7-4522-9916-F97ED3EC5F78
171 :END:
172 * TODO Enable UI commands in chess-display to interact with databases :FEATURE:
173 As of 2.0, this support is programmatic only.
174 :PROPERTIES:
175 :ID: 8CA4762E-4665-433E-9538-994BEDCABE21
176 :END:
177 * TODO engine: Answering "y" to opponent (takeback, etc) hangs
178 I get left with an hourglass cursor.
179 :PROPERTIES:
180 :ID: 0F9290D9-90D6-48ED-9F13-EEDF42EA91F0
181 :END:
182 * TODO engine: If no chess engine available, print a nice message
183 :PROPERTIES:
184 :ID: E0889D90-33FD-426F-AC45-6221136162D8
185 :END:
186 * TODO Enhance PGN mode :FEATURE:
187 Maybe pgn-mode could just allow normal editing, and bind some keys
188 to do special things. e.g., the mouse binding could work as normal,
189 SPC could update the display. So if you do
190
191 1 e4 SPC
192
193 you get the move displayed. Some binding could do redisplay anyway, e.g. C-l?
194 Then, one could enter variations or such simply with ( or { and
195 the display would update automatically.
196 e.g., you do
197
198 ( 15.e5 SPC Nf3 SPC )
199
200 and you'd get three display updates, on e5 SPC, you get that
201 ply, then the second one, and on ) you get the position before the
202 variation. Move point into the variation again, and hit C-l and you
203 get the pos where point is on.
204
205 There should be a forward-ply and backward-ply, maybe something like
206 M-f / M-b, and C-u M-f for two plies forward?
207
208 Very nice would be a pcomplete-based completion fascility, so
209 simply hit TAB at any point, and you get the right completion.
210
211 Example:
212
213 [Event ...]
214
215 TAB 1.TAB ...
216
217 On first tab, the move number is inserted. On second, you get
218 all possible moves in that position.
219 :PROPERTIES:
220 :ID: 7D4ACEDE-C9D9-49E1-883F-829DB80FC5E7
221 :END:
222 * TODO Find a way to display pieces on Windows platforms
223 Or at least document how to build XPM support into Emacs for Windows.
224 :PROPERTIES:
225 :ID: D602699C-A340-41A4-BA94-876743D43F8C
226 :END:
227 * TODO [#B] Fix errors from the validation suite
228 Error reading game 336249: PGN parser: Expected a ply here: '30'
229 Error reading game 443436: PGN parser: Expected a ply here: 'Rf2'
230 Error reading game 465586: PGN parser: Expected a ply here: 'R'
231 :PROPERTIES:
232 :ID: 01CFDC4F-350C-472B-A4F6-DFE4503B6D05
233 :END:
234 [2008-09-02 Tue]
235 * TODO Follow what `edit-env' does, in order to make chess-query.el :FEATURE:
236 :PROPERTIES:
237 :ID: 48F2D4F3-8B1B-4196-BED0-1407239ADC4F
238 :END:
239 * TODO german: Complete translation
240 :PROPERTIES:
241 :ID: 937301D5-2C31-4F43-83B0-FB9A0CD5F138
242 :END:
243 * TODO gnuchess: Triggers a Lisp error when I resign
244 :PROPERTIES:
245 :ID: 8ADABEB5-BF38-4A71-949F-074048AED7B0
246 :END:
247 * TODO ics: Accepting match request doesn't seem to be working always
248 :PROPERTIES:
249 :ID: 296B2B3D-B4CF-418E-8FA6-36D301D09136
250 :END:
251 * TODO ics: Add a completion function against logged in users :FEATURE:
252 :PROPERTIES:
253 :ID: 1AFE6B32-7236-4E71-9CCC-21B797E67F08
254 :END:
255 * TODO ics: Copy ics.el's nicer functionality into chess-ics.el :FEATURE:
256 :PROPERTIES:
257 :ID: 05E523E9-38EC-4268-89B4-2A42409F9059
258 :END:
259 * TODO ics: Not detecting forfeit by disconnection at the moment
260 :PROPERTIES:
261 :ID: 0EDCC239-65B0-450F-82B9-12B1E96667D4
262 :END:
263 * TODO ics: Resuming adjourned games does not work at all
264 :PROPERTIES:
265 :ID: D2E35ADE-1CFF-4DB6-A910-DF3C886709B3
266 :END:
267 * TODO ics: Takebacks still aren't working 100%
268 When I submit a takeback request manually, and the other side accepts, my
269 client doesn't know what to do with it
270 :PROPERTIES:
271 :ID: 67BF2EFF-66E6-4DE3-BCD1-D1743D8C7AC3
272 :END:
273 * TODO If you are playing a puzzle game, and the engine is thinking
274 And you hit space to move to the next puzzle, then when the last move is
275 finally received from the engine it causes an error.
276 :PROPERTIES:
277 :ID: 4583E224-B5A2-47D4-906E-6374AA7AB936
278 :END:
279 * TODO [#C] Investigate the performance possibilities researched by Mario
280 Well, I've played a little with a few transformations but I haven't managed
281 to get any substantial speedup. Things I see are:
282
283 - characterp is called at least three times, the value could be saved in
284 the toplevel let*.
285 - I am not sure but I think I read inline quoted lists can be slower. I
286 tried to define the direction lists as a alist in a defconst, but it
287 didnt't really show as a speedup...
288 - The chess--add-candidates defsubst does needless check of check-only in
289 some cases. I.e., if we rewrite the first cond clause to do different
290 things if check-only is t or nil, that might also do a bit.
291
292 But really, I didnt find anything worthwhile... Maybe it could make sense to
293 have a separate function to handle the (memq piece '(nil t)) case.
294 :PROPERTIES:
295 :ID: 24E8AD24-067C-4130-9616-63D5DFF60231
296 :END:
297 [2008-09-01 Mon]
298 * TODO irc: If move before opponent connects, symbol assertion "value"
299 :PROPERTIES:
300 :ID: DCCEB9D3-0F5F-484C-9D4E-A0B7801F101D
301 :END:
302 * TODO Let people override the chess-default-* lists :FEATURE:
303 :PROPERTIES:
304 :ID: AEBED712-70F6-499B-A8D8-6A8632D9A7D1
305 :END:
306 * TODO Make ( create variations in a display :FEATURE:
307 And keys to move into and out of them. At the moment, variations are
308 supported programmatically, but not in the UI.
309 :PROPERTIES:
310 :ID: C7B9BEEE-5261-412C-8592-5E1EDEBC5544
311 :END:
312 * TODO Make a read-only display mode :FEATURE:
313 Which allows people to view/browse but not alter a game. This could be used
314 for remoting displays in order that people on other X servers might observe
315 a game.
316 :PROPERTIES:
317 :ID: 1968B422-B8D9-4493-9C90-401956C8CAE0
318 :END:
319 * TODO [#B] Make the "debug level" configurable
320 The speedup from (setq cl-optimize-speed 9) in chess-pos.el is due to
321 eliding assert calls. This basically makes asserts useless since they are
322 now turned off unconditionally. It would be nice to have a kind of
323 "--enable-debug" or somesuch at configure time to make this obvious.
324 :PROPERTIES:
325 :ID: 130D8091-A1F5-43DC-AFBA-BFDB5D1ADEDF
326 :END:
327 [2008-09-10 Wed 17:04]
328 * TODO [#B] Make the chess-ics-sought buffer read-only
329 :PROPERTIES:
330 :ID: D416E179-252C-49CE-8BAA-06B31364116F
331 :END:
332 [2008-09-02 Tue]
333 * TODO Merge chess-announce and chess-sound :FEATURE:
334 Use style modules on top of the underlying module.
335 :PROPERTIES:
336 :ID: 87612913-B3AD-4329-892F-C156F88A358C
337 :END:
338 * TODO Need a way to play bughouse/crazyhouse games. :FEATURE:
339 :PROPERTIES:
340 :ID: 237BDAFD-0B92-4A06-AA25-D5568FF3DC4B
341 :END:
342 * TODO network: Does not work at all!
343 :PROPERTIES:
344 :ID: AC39392F-57EF-4D79-A718-DEB4B24DFC5D
345 :END:
346 * TODO pgn: Sometimes when clipping, "*" is stuck to last move's text
347 :PROPERTIES:
348 :ID: 5B737ED4-F271-425E-9F1D-1DFA7834BAFF
349 :END:
350 * TODO pgn: When saving game to clipboard, shouldn't need to save FEN
351 If it's starting from a standard position (this doesn't always happen)
352 :PROPERTIES:
353 :ID: 7CB3441C-9398-42D7-A174-5F534ADA473B
354 :END:
355 * TODO ply: detect games drawn by 3-fold repetition and 50 move rule
356 Note, FIDE rules define that a draw must be claimed by one of the opponents,
357 so we do not really need to do this on every move, just when a draw is
358 requested.)
359 :PROPERTIES:
360 :ID: 4D3BBF63-A640-483A-ACF9-CC948AEAAAC7
361 :END:
362 * TODO Port the code to XEmacs
363 :PROPERTIES:
364 :ID: A633A292-722C-4566-9F5D-807675DAB8DD
365 :END:
366 * TODO [#C] Profile and mem profile
367 Especially try to get the validation suite running faster!
368 :PROPERTIES:
369 :ID: 4A08E03C-1AEA-4C14-951A-3F8DBB2E29E7
370 :END:
371 * TODO [#B] Sometimes the chess-ics-sought buffer doesn't appear
372 :PROPERTIES:
373 :ID: A3499CBB-5C0D-4C1B-872C-DC4E7D46CA73
374 :END:
375 [2008-09-02 Tue]
376 * TODO [#B] Sought games are not being selected for me when I press RET
377 :PROPERTIES:
378 :ID: 06F3AD0F-B44D-4845-B345-4406AF8D3212
379 :END:
380 [2008-09-02 Tue]
381 * TODO Tools for managing a tournament :FEATURE:
382 Setting up pairings, calculating ratings.
383 :PROPERTIES:
384 :ID: D53A7DA4-6940-4E0C-938E-08E12CC7EDEF
385 :END:
386 * TODO [#C] Use checkdoc on all files
387 :PROPERTIES:
388 :ID: 8D30489F-9000-43C3-BCA6-0C14F0E5C831
389 :END:
390 * TODO Use MIME attachments (application/x-chess-pgn) :FEATURE:
391 For sending e-mail chess games back and forth.
392 :PROPERTIES:
393 :ID: B01A0B43-12F3-4978-A63A-01ADBA9BB78D
394 :END:
395 * TODO Use TrueType or other chess fonts for displaying positions :FEATURE:
396 This might be the best way of displaying positions on Windows.
397 :PROPERTIES:
398 :ID: 0387D818-3841-4BA1-A246-F48349F4A53F
399 :END:
400 * TODO Using gnuplot-mode, allow evaluation trends to be plotted :FEATURE:
401 :PROPERTIES:
402 :ID: BC458171-65B7-4CAE-ACF5-9FD0E263F425
403 :END:
404 * TODO Write chess-descriptive.el, and have the code in general use :FEATURE:
405 chess-ply-to-string and chess-string-to-ply, so that users can use
406 descriptive notationas an alternative to algebraic.
407
408 (NOTE: this might proof problematic since descriptive move notation is
409 ambigious if we don't have the full game information, since we need to
410 destinguish between QR KR QN and KN. So chess-descriptive-to-ply would need
411 to use a game object as reference, rather than just a position.)
412 :PROPERTIES:
413 :ID: 7C283CC8-450C-468C-93C3-C264CC8F536A
414 :END:
415 * STARTED display: Make it possible to "highlight the last move" :FEATURE:
416 - State "STARTED" [2008-09-01 Mon 03:59] \\
417 This is mostly done. I'd like to make the highlight done for the
418 opponent's moves
419 :PROPERTIES:
420 :ID: F55EAAA5-504E-44A5-AA1A-43516711F8DD
421 :END:
422 * DONE "End of file" error reading game 2008149
423 - State "DONE" [2008-09-01 Mon 04:11] \\
424 The problem was parsing [Event "Hello \"].
425 :PROPERTIES:
426 :ID: F994A8E9-5EDD-4681-863E-491806F0ED07
427 :END:
428 [2008-09-01 Mon]
429 * DONE Add an 'install' target to the Makefile
430 - State "DONE" [2008-09-01 Mon 04:02]
431 :PROPERTIES:
432 :ID: 7A27FDC0-0053-4656-9AC9-6D7BEECE6D4A
433 :END:
434 * DONE [#B] chess-auto.el is not being built properly :BUILD:
435 - State "DONE" [2008-09-01 Mon 21:16]
436 :PROPERTIES:
437 :ID: 184AF780-815B-43DB-87A4-0A81DE252AB0
438 :END:
439 [2008-08-31 Sun]
440 * DONE display: Display problem with chess-display-side-to-move
441 The text doesn't show the face in the modeline
442 - State "DONE" [2008-09-01 Mon 03:55]
443 :PROPERTIES:
444 :ID: 884690AC-C3BE-43D6-A600-48D221BD0FB0
445 :END:
446 * DONE [#B] ics: A refresh directive should act as a position assert
447 - State "DONE" [2008-08-29 Fri 06:28]
448 Compare with our current known board and trigger an error if it doesn't
449 match the refresh.
450 :PROPERTIES:
451 :ID: C0F3CD12-83C5-4970-AD27-8C4A4C447BC2
452 :END:
453 * DONE [#B] scid: chess-scid-get-result fails on some machines (timing?)
454 - State "DONE" [2008-09-17 Wed 05:49] \\
455 Fixed by adding more delays in case text has not appeared from the command.
456 - State "STARTED" [2008-09-16 Tue 04:38] \\
457 I believe I have a fix for this, commit
458 33d57dc0f667c8d1168b46f9e73d9510d8c7e518, but I must await Mario's test on his
459 8 CPU machine.
460 It happens on a fast 8-CPU machine of mine that chess-scid-get-result
461 returns the empty string. The reason for this is that sometimes, the prompt
462 is not output immediately after a result, so upon next call to
463 chess-scid-get-result the first output we see is the prompt ("% ") from the
464 previous command which due to the current algo results in
465 chess-scid-get-result returning "". It would need to continue reading if it
466 sees a prompt as first output. Waiting until we see a prompt to make sure
467 we have all the output results in *very slow* behaviour, maybe due to
468 line-buffering (the prompt has no final \n, obviously), so we probably shoud
469 skip over prompt and continue reading.
470 :PROPERTIES:
471 :ID: AF51A38C-36B6-4976-954D-0BCD6C1A81FD
472 :END:
473 [2008-09-08 Mon 23:41]
474 * DONE [#B] scid: The buffer needs periodic clearing, or it grows too large
475 - State "DONE" [2008-09-01 Mon 21:16]
476 :PROPERTIES:
477 :ID: 272CE75E-122A-4AEA-8A03-9CD2041895EA
478 :END:
479 [2008-09-01 Mon]
480 * DONE [#B] Sometimes a chess-test run fails to recognize promotions
481 - State "DONE" [2008-09-02 Tue 22:31] \\
482 Fixed. This appears to be a bug in looking-at/match-string, but it only
483 occurs under high load and certain circumstances. I was able to get around it
484 by examining the buffer directly.
485 - Note taken on [2008-09-01 Mon 05:35] \\
486 This happens on game 2030188.
487 :PROPERTIES:
488 :ID: 431304B0-E8B9-485E-82B5-D4DF900C27DF
489 :END:
490 [2008-09-01 Mon]