]> code.delx.au - gnu-emacs-elpa/blob - TODO
Quick title fix to the TODO file.
[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 [#B] display: Make it possible to "highlight the last move"
10 * TODO [#B] display: Make highlight colors easily customizable
11 * TODO [#B] display: Draw move highlights as a border, not a background
12 * TODO [#B] display: Always validate the display before painting
13 This will require adding a new text property to each square on the board,
14 `chess-piece', so that the validator can walk through the displayed board
15 and ensure that it matches the known position for that board.
16 * DONE [#B] ics: Make a refresh act like an assert
17 - State "DONE" [2008-08-29 Fri 06:28]
18 Compare with our current known board and trigger an error if it doesn't
19 match the refresh.
20
21
22 chess-autosave
23 - this module currently isn't working at all!
24 - doesn't support undoing of moves
25
26 chess-clock
27 - sometimes, the clock gets shut off (while playing on ICS) for no
28 reason that I can determine
29
30 chess-irc
31 - if I move before my opponent has connected, I get a symbol assertion
32 about "value"
33
34 chess-network
35 - does not work at all!
36
37 chess-gnuchess
38 - triggers a Lisp error when I resign
39
40 chess-ics
41 - takebacks still aren't working 100%; when I submit a takeback
42 request manually, and the other side accepts, my client doesn't know
43 what to do with it
44 - accept of a match request doesn't seem to be working always
45 - resuming adjourned games does not work at all
46 - not detecting forfeit by disconnection at the moment
47
48 chess-display
49 - although chess-display-side-to-move is using faces, the Black/White
50 text doesn't show the face in the modeline
51 - sometimes the final event of a game doesn't change the modeline,
52 like CHECKMATE, or FLAG FELL
53 - if I win a game, it still reports CHECKMATE incorrect; if I'm white,
54 it does so on the last ply (per display)
55 - need a "save this game to a PGN file/database" command
56
57 chess-engine
58 - if I say "y" to accepting something from my opponent (new game,
59 takeback, etc), I get left with an hourglass cursor
60 - if no chess engine is available, there is no nice message being
61 printed
62
63 chess-ply
64 - detect games drawn by three-fold repetition and the 50 move rule
65 (Note, FIDE rules define that a draw must be claimed by one
66 of the opponents, so we do not really need to do this on
67 every move, just when a draw is requested.)
68
69 chess-pgn
70 - when saving a full game to the clipboard, it shouldn't need to save
71 the FEN if it's starting from a standard position (this doesn't
72 always happen)
73 - sometimes when clipping to the clipboard the final "*" is stuck to
74 the text of the last move
75
76 chess-german
77 - complete translation
78
79 general
80 - add an 'install' target to the Makefile
81 - use more asserts throughout the code
82 - profile and mem profile
83 - elint all files
84 - add docstrings/texi content
85 - use checkdoc on all files
86
87 These are features scheduled for future 2.x releases.
88
89 ----------------------------------------------------------------------
90
91 General Features
92
93 - Use TrueType or other chess fonts for displaying positions; this
94 might be the best way of displaying positions on Windows
95
96 - Enable the chat module, and base its interface on what TNT does
97
98 - Merge chess-announce and chess-sound, and use style modules on top
99 of the underlying module
100
101 - Create a generic chess-output interface, for outputting games to a
102 particular format (PGN, HTML, LaTeX, etc)
103
104 - Display in the modeline which game in the database we're in, and
105 what the positional evaluation is
106
107 - Add a `force' event for forcing an engine to move, and a command
108 from chess-display to send this event
109
110 - If you are playing a puzzle game, and the engine is thinking, and
111 you hit space to move to the next puzzle, then when the last move is
112 finally received from the engine it causes an error.
113
114 - Clean up chess.el, and let people override the chess-default-* lists
115
116 - Write chess-descriptive.el, and have the code in general use
117 chess-ply-to-string and chess-string-to-ply, so that users can use
118 descriptive notationas an alternative to algebraic.
119 (NOTE: this might proof problematic since descriptive move notation
120 is ambigious if we don't have the full game information, since
121 we need to destinguish between QR KR QN and KN. So chess-descriptive-to-ply
122 would need to use a game object as reference, rather than just a position.)
123
124 - Change chess-announce/sound so that it reads from the text rendition
125 of the move; this way it will work with either descriptive or
126 algebraic notation. Also, chess-announce and chess-sound can be
127 collapsed into one module, with different "styles" of announcing.
128
129 - Make ( create variations in a display, and keys to move into and out
130 of them. At the moment, variations are supported programmatically,
131 but not in the UI.
132
133 - Make a display read-only mode, which allows people to view/browse
134 but not alter a game. This could be used for remoting displays in
135 order that people on other X servers might observe a game.
136
137 - Implement the "50 moves after irreversible" draw rule in chess-ply
138
139 - Port the code to XEmacs
140
141 - Find a way to display pieces on Windows platforms, or at least
142 document how to build XPM support into Emacs for Windows
143
144 - Add a way to include the chess-ucb module in the list of default
145 modules created via M-x chess. Right now there is no facility for
146 having two engines associated with a single game (and chess-link
147 is not what we want in this case).
148
149 ----------------------------------------------------------------------
150
151 ICS Client
152
153 - Add a completion function against logged in users
154
155 - Copy some of ics.el's nicer functionality into chess-ics.el
156
157 ----------------------------------------------------------------------
158
159 PGN Mode
160
161 Maybe pgn-mode could just allow normal editing, and bind some keys
162 to do special things. e.g., the mouse binding could work as normal,
163 SPC could update the display. So if you do
164
165 1 e4 SPC
166 you get the move displayed. Some binding could do redisplay anyway, e.g. C-l?
167 Then, one could enter variations or such simply with ( or { and
168 the display would update automatically.
169 e.g., you do
170 ( 15.e5 SPC Nf3 SPC )
171 and you'd get three display updates, on e5 SPC, you get that
172 ply, then the second one, and on ) you get the position before the
173 variation. Move point into the variation again, and hit C-l and you
174 get the pos where point is on.
175
176 There should be a forward-ply and backward-ply, maybe something like
177 M-f / M-b, and C-u M-f for two plies forward?
178
179 Very nice would be a pcomplete-based completion fascility, so
180 simply hit TAB at any point, and you get the right completion.
181 Example:
182
183 [Event ...]
184
185 TAB 1.TAB ...
186
187 On first tab, the move number is inserted. On second, you get
188 all possible moves in that position.
189
190 ----------------------------------------------------------------------
191
192 Chess by Mail
193
194 - Add support for adjournments; also, implement this is such a way
195 that an e-mail or postal game is basically a game that's adjourned
196 after every move; use BBDB if available
197
198 - Use MIME attachments (application/x-chess-pgn) for sending e-mail
199 chess games back and forth.
200
201 ----------------------------------------------------------------------
202
203 Database Interaction
204
205 - Enable UI commands in chess-display to interact with databases. As
206 of 2.0, this support is programmatic only.
207
208 - Follow what `edit-env' does, in order to make chess-query.el.
209
210 ----------------------------------------------------------------------
211
212 Training/Tutorials
213
214 - Write a scripted chess-tutorial.
215
216 - Allow the opponent to give hints.
217
218 - Add a warning mode that will use the results of an analysis to warn
219 the user (and ask for confirmation) before doing something that
220 might lead to an inferior position.
221
222 - Add a chess tutor program, to teach people how to play chess
223
224 ----------------------------------------------------------------------
225
226 Analysis features
227
228 - Add slots to each position for keeping track of positional
229 evaluation (these values can be automatically determined when
230 parsing ICS12)
231
232 - Add an engine function for obtaining an evaluation of the current
233 position. Then, allow M-x chess to startup a non-game oriented
234 engine, solely for the purpose of submitting position evaluations,
235 and displaying the result in the modeline. (Also, look at crafty's
236 kibitzing feature).
237
238 - Add a Map command, that will colorize the squares depending on
239 whether they are reachable by either side. Green if reachable by
240 you, Red if by your opponent, and blue if by both. With a prefix
241 argument, colorize only the squares that have pieces on them. This
242 is a stable modes that remains in effect until turned off. It also
243 requires the ability to pass a color to the chessboard highlighting
244 routine.
245
246 - Using gnuplot-mode, allow evaluation trends to be plotted
247
248 - Add an analyze command that will indicate which pieces are defended,
249 how well, which are attacked, which moves would increase
250 defense/attack/both, etc. Basically, everything that can be known
251 about the current board, and one move ahead (on both sides).
252
253 ----------------------------------------------------------------------
254
255 Other variations
256
257 - Need a way to play bughouse/crazyhouse games.
258
259 ----------------------------------------------------------------------
260
261 Other features
262
263 - Keeping a player database in BBDB
264
265 - Managing a tournament, setting up pairings, calculating ratings