]> code.delx.au - gnu-emacs-elpa/blob - TODO
*** no comment ***
[gnu-emacs-elpa] / TODO
1 - Feature work remaining:
2
3 annotations
4 chatting
5 clocks
6 bughouse/crazyhouse
7 analysis/highlight tools
8 database interaction (chess-file.el, chess-scid.el)
9
10 ----------------------------------------------------------------------
11
12 - modify displays and engines so they ONLY keep game objects; thus
13 set-start-position would become just set-position
14
15 - distinguish between chess-display-set-game and
16 chess-display-set-game*. The latter detaches and sets a new game
17 object. The former just overwrites the current game object.
18
19
20 - undo is not working with gnuchess
21
22
23 - test making an en passant capture
24
25
26 - the game should go inactive once I lose by stalemate/checkmate
27
28 - detect draw/resign/abort/retract, etc., from ICS and common engines
29
30
31 - in chess-ply-create signal an error on invalid plies describing why
32
33 - for network transports, if an illegal move is encountered, report
34 this with "illegal move: REASON"
35
36
37 - incorporate the .wav files from xchat's sounds that chess-sound
38 currently doesn't have
39
40
41 - devise a better scheme for printing messages (use a catalog?) and
42 for when engines need to ask questions
43
44 - there needs to be much more robustness; it's too easy to get the
45 game into an unplayable state right now
46
47 - in chess-engine-filter and chess-ics-filter, if an error is
48 encountered, skip that line so the same error isn't triggered again
49
50 - in chess-ics use a server-alist, and make the default handle be
51 "guest". Allow a password to be specified, or a filename containing
52 the password
53
54 (HOST [PORT HANDLE PASSWORD HELPER HELPER-ARGS...])
55
56 ----------------------------------------------------------------------
57
58 - Add support for adjournments; also, implement this is such a way
59 that an e-mail or postal game is basically a game that's adjourned
60 after every move
61
62 - Break my dependency on cl
63
64 - Use more asserts throughout the code
65
66 - Read-only mode needs to be a bit more vigorous. There's nothing
67 preventing the user from using M-x commands.
68
69 - Add an engine function for obtaining an evaluation of the current
70 position. Then, allow M-x chess to startup a non-game oriented
71 engine, solely for the purpose of submitting position evaluations,
72 and displaying the result in the modeline. (Also, look at crafty's
73 kibitzing feature).
74
75 - Complete chess-pgn-mode
76
77 - Write a chess-database.el interface, and then add chess-lisp.el,
78 chess-file.el (PGN games in a flat file) and chess-scid.el
79
80 - Use MIME attachments (application/x-chess-pgn) for sending e-mail
81 chess games back and forth. Add code for special MIME handling of
82 this type in Gnus.
83
84 - Copy some of ics.el's nicer functionality into chess-ics.el
85
86 - Add support for ICS observing
87
88 - Make the mode-line much more informative, with information on who is
89 playing, etc.
90
91 - Turn on memory gc collection messages, and see how much of a pig
92 chess.el is
93
94 - Make as much of chess-game/ply/pos, etc., defsubst as possible.
95
96 - Create a series of generic functions and predicates, so that users
97 can say (chess-position OBJECT) or (chess-move OBJECT), without
98 needing to know the type of OBJECT.
99
100 - Change chess-display-set-... to chess-display-set, and make it use
101 the new generic functions.
102
103 - Use server-side sockets in chess-network, if Emacs supports it
104
105 - Support auto-saving of games to PGN, and saving them at appropriate
106 points; this will require database interaction support
107
108 - Allow ASCII displays to use a separate frame
109
110 - In edit mode, mouse-2 and mouse-3 should provide a drop-down list of
111 pieces the square can be set to. Cursor movement is really not the
112 best for chess-images. I still need to figure out how best to
113 handle cursor-type with that display.
114
115 - Still need to test many areas: position editing
116
117 - Implement engine options; then, in chess-puzzle set the option that
118 tells the engine not to resign.
119
120 - Add a display command for writing out the currently displayed game
121 to a file. It will use PGN for games, and FEN for positions.
122
123 - Remote displays are horribly insecure.
124
125 - When editing the board in display mode (or doing speculative moves),
126 doing them on a copy of the board with no hook except the display
127 hook. Then, if you like the result, it call be a `set' on the
128 original board from the copied board.
129
130 - Resize the chess board on a window resize event, if possible.
131
132 - Have a display option that shows legal target squares whenever a
133 piece is selected.
134
135 - Add chess-game-strip-annotations, for removing all annotations from
136 a game object
137
138 - Add a module for chatting between opponents
139
140 - Let the user specify a default size for the chess-images display
141
142 - Need to check for chess engine resignations
143
144 - Need a chess-clock.el module, especially for playing on ICS
145
146 - Port image display code to XEmacs
147
148 - Support chess by mail, with direct tie-ins to Gnus/RMAIL.
149
150 - Allow the opponent to give hints.
151
152 - Add a command that will load a saved game, continue it, and then
153 enter a move for whichever color is next to play. This would make
154 it trivial to add chess drivers to AIM, IRC, etc. The mere command
155 "!chess johnw37 Nf3" would mean: load the chess game johnw37, and
156 make my move as Nf3. It would also make chess by e-mail a snap to
157 implement.
158
159 - Add an analyze command that will indicate which pieces are defended,
160 how well, which are attacked, which moves would increase
161 defense/attack/both, etc. Basically, everything that can be known
162 about the current board, and one move ahead (on both sides).
163
164 - Add a warning mode that will use the results of an analysis to warn
165 the user (and ask for confirmation) before doing something that
166 might lead to an inferior position.
167
168 - Create chess-player.el, which creates persistent objects that
169 encapsulate information about any player: where he is, his name, his
170 opponent type, etc. This would maintain a log of games against that
171 player, their current chess rating, etc. Then, M-x chess would ask
172 you for a player, not an opponent.
173
174 - Add a Map command, that will colorize the squares depending on
175 whether they are reachable by either side. Green if reachable by
176 you, Red if by your opponent, and blue if by both. With a prefix
177 argument, colorize only the squares that have pieces on them. This
178 is a stable modes that remains in effect until turned off. It also
179 requires the ability to pass a color to the chessboard highlighting
180 routine.
181
182 - If a person selects a piece with the mouse, then uses right-click to
183 designate a target square, display the resulting board without
184 making a move. This requires copying chessboard-current-board to
185 chessboard-draft-board. If the user right-clicks without selecting
186 a piece, it will reset to chessboard-current-board and redraw.
187
188 - Using gnuplot-mode, allow evaluation trends to be plotted
189
190 BEFORE FINAL RELEASE
191
192 profile, mem profile, doc, lint, checkdoc