X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/0a73626a30b81fb82ddf14c8b60d36e03e8edb1f..b6ea0be1c5387200419c18530130c0ad7d852d67:/packages/gnugo/HACKING diff --git a/packages/gnugo/HACKING b/packages/gnugo/HACKING index f096de801..9c0c277ef 100644 --- a/packages/gnugo/HACKING +++ b/packages/gnugo/HACKING @@ -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