]> code.delx.au - gnu-emacs-elpa/blobdiff - packages/gnugo/HACKING
Add 'packages/loc-changes/' from commit 'efbe022eaeef0ccc54ffe219216974a786c3301c'
[gnu-emacs-elpa] / packages / gnugo / HACKING
index f096de801dc9bc2c2c18e657cd0efcc340d9304b..9c0c277ef307487baeff77a8a6aff5dd528d9545 100644 (file)
@@ -3,68 +3,52 @@ HACKING gnugo                                           -*- org -*-
 This file is both a guide for newcomers and a todo list for oldstayers.
 
 * next
+*** newbie support
+***** "don't panic" button :-D
+***** on gnugo.el load, check [[file:gnugo.el::defvar.gnugo-program][gnugo-program]], set "ready" state
+***** rat concessions :-/
+***** (?) ootb ‘gnugo-image-display-mode’ in ‘gnugo-start-game-hook’
 * fix bugs
+*** empty tree from many back/forw
+***** intermittent, grr
+***** manifests as ‘()’ (empty list) in .sgf (on write)
 *** {next,previous}-line weirdness in the presence of images
-*** ‘-l FILENAME’ lossage
-***** silently clobbers other options (PEBKAC, strictly speaking)
-***** game tree incomplete (doing ‘C-x C-s’ immediately writes empty tree)
-*** [[file:gnugo.el::defun.gnugo-toggle-dead-group][gnugo-toggle-dead-group]] only half-complete
 *** no error-handling in SGF parsing
-*** performance -- ‘compare-strings’ approach too clever/slow :-/
-* debugging aids
-*** swizzling branches for frolicking fun
-(defun SWIZ (a b)
-  (let* ((tree (gnugo-get :sgf-gametree))
-         (monkey (gnugo-get :monkey))
-         (bidx (aref monkey 1)))
-    (rotatef (aref tree a)
-             (aref tree b))
-    (cond ((= a bidx) (aset monkey 1 b))
-          ((= b bidx) (aset monkey 1 a)))))
-
-(defun SWIZ-RANDOM ()
-  (interactive)
-  (let* ((n (length (gnugo-get :sgf-gametree)))
-         (one (random n))
-         (two (if (= 1 n)
-                  one
-                (loop with try
-                      while (= one (setq try (random n)))
-                      finally return try))))
-    (SWIZ one two)
-    (message "%d <-> %d" one two)))
-
-(defun UNSWIZ ()
-  (interactive)
-  (let* ((monkey (gnugo-get :monkey))
-         (cur (aref monkey 1)))
-    (if (zerop cur)
-        (message "(nothing to do)")
-      (SWIZ 0 cur)
-      (message "0 <-> %d" cur))))
+* performance
+*** ‘compare-strings’ approach too clever/slow :-/
+*** cache frolic fruits
 * ideas / wishlist
-*** set ‘lexical-binding’ (if possible!)
-    Hmm, lots of symbol trickery going on; initial attempts FAIL.
-*** add a few screenshots to package
+*** wrap GTP ‘loadsgf’ completely
 *** revamp image support
+***** DONE zonk ‘require’
+***** define simple API
 *** talk GTP over the network
-*** "assist minor mode" (see gnugo-extra.el for work in progress)
-*** using assist minor mode, gnugo-v-gnugo (ibid)
+    (?) pending [[wrap GTP ‘loadsgf’ completely]]
 *** make gnugo (the external program) support query (read-only) thread
 *** extend GNUGO Board mode to manage another subprocess for analysis only
-*** command ‘C’ to add a comment to the SGF tree
-*** command ‘C-u =’ to label a position
-*** SGF tree display, traversal (belongs in sgf.el)
-*** review game history in another buffer
-*** branch subgame tree at arbitrary point
-*** subgame branch matriculation (maturity: child leaves the family)
-*** dribble the SGF tree
-*** "undo undo undoing"; integrate Emacs undo, GTP undo, subgame branching
+*** command to label a position
+*** SGF tree traversal
+***** DONE monkey mind
+***** TODO monkey body
+*** "undo undo undoing"
+***** integrate Emacs undo, GTP undo, subgame branching
+***** (?) use [[file:../undo-tree/][../undo-tree/]]
 *** make buffer name format configurable (but enforce uniqueness)
 *** more tilde escapes for [[file:gnugo.el::defvar.gnugo-mode-line][gnugo-mode-line]]
-*** make veneration configurable
-*** make animation more configurable; lift same-color-stones-only
-*** restriction; allow sequencing rather than lock-step; include sound
+*** make veneration configurable (see also [[SVG display]])
+*** animation finery
+***** make more configurable
+***** lift same-color-stones-only restriction
+***** allow sequencing rather than lock-step
+***** include sound
+*** plunder el-go (grok [[info:eieio.info][EIEIO]] first)
+***** SVG display
+      pending [[revamp image support]]
+***** (?) SGF support
+******* IR compat
+******* error handling
+***** (?) other "backends"
+      pending [[talk GTP over the network]]
 *** [your hacking ideas here!]
 * tested with (newest first)
   | Emacs     | GNU Go |
@@ -87,7 +71,7 @@ This file is both a guide for newcomers and a todo list for oldstayers.
 * NEWS nostalgia
 (with-current-buffer (find-file "NEWS")
   (highlight-phrase "[0-9][.][0-9][.][0-9]+\\|[0-9]+[.][.][0-9]+"
-                          'hi-red-b))
+                    'hi-red-b))
 * etc
 #+odd