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