;ELC ;;; Compiled ;;; in Emacs version 26.3 ;;; with all optimizations. ;;; This file contains utf-8 non-ASCII characters, ;;; and so cannot be loaded into Emacs 22 or earlier. (and (boundp 'emacs-version) (< (aref emacs-version (1- (length emacs-version))) ?A) (string-lessp emacs-version "23") (error "`%s' was compiled for Emacs 23 or later" #$)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301!\210\300\302!\210\300\303!\207" [require cl-lib gnugo ascii-art-to-unicode] 2) #@31 Keymap for GNUGO Frolic mode. (defvar gnugo-frolic-mode-map (byte-code "\300 \301!\210\302\303\304\305\306\307!\310\"\311\312%\313\"\210\211\207" [make-sparse-keymap suppress-keymap mapc make-byte-code 257 "\301\300@A#\207" vconcat vector [define-key] 5 "\n\n(fn PAIR)" (("q" . gnugo-frolic-quit) ("Q" . gnugo-frolic-quit) ("" . gnugo-frolic-quit) ("C" . gnugo-frolic-quit) ("" . gnugo-frolic-backward-branch) ("" . gnugo-frolic-forward-branch) ("" . gnugo-frolic-previous-move) ("" . gnugo-frolic-next-move) ("t" . gnugo-frolic-tip-move) ("j" . gnugo-frolic-exchange-left) ("J" . gnugo-frolic-rotate-left) ("k" . gnugo-frolic-exchange-right) ("K" . gnugo-frolic-rotate-right) (" " . gnugo-frolic-set-as-main-line) ("\220" . gnugo-frolic-prune-branch) ("o" . gnugo-frolic-return-to-origin))] 8) (#$ . 508)) (defvar gnugo-frolic-parent-buffer nil) (defvar gnugo-frolic-origin nil) (defvar gnugo-frolic-mode-hook nil) (byte-code "\300\301N\204\f\302\300\301\303#\210\304\305!\204\302\305\306\307#\210\300\207" [gnugo-frolic-mode-hook variable-documentation put "Hook run after entering GNUGO Frolic mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it. (This is true for all hook variables.)" boundp gnugo-frolic-mode-map definition-name gnugo-frolic-mode] 4) (defvar gnugo-frolic-mode-map (make-sparse-keymap)) (byte-code "\301\302N\204\303\301\302\304\305!#\210\306\307!\204\303\307\310\311#\210\312\313 !\210\307\302N\204-\303\307\302\304\314!#\210\306\300!\204B\303\300\310\311#\210\315\316\300\317\"\210!\210\300\302N\204P\303\300\302\304\320!#\210\303\311\321\322#\207" [gnugo-frolic-mode-abbrev-table gnugo-frolic-mode-map variable-documentation put purecopy "Keymap for `gnugo-frolic-mode'." boundp gnugo-frolic-mode-syntax-table definition-name gnugo-frolic-mode (lambda (#1=#:def-tmp-var) (defvar gnugo-frolic-mode-syntax-table #1#)) make-syntax-table "Syntax table for `gnugo-frolic-mode'." (lambda (#1#) (defvar gnugo-frolic-mode-abbrev-table #1#)) define-abbrev-table nil "Abbrev table for `gnugo-frolic-mode'." derived-mode-parent special-mode] 5) #@256 A special mode for manipulating a GNUGO gametree. In addition to any hooks its parent mode `special-mode' might have run, this mode runs the hook `gnugo-frolic-mode-hook', as the final or penultimate step during initialization. \{gnugo-frolic-mode-map} (defalias 'gnugo-frolic-mode #[0 "\306\300!\210\307\310 \210\311\312\310\313N\203\314\311\313\310\313N#\210\315 !\204'\316 \317 \"\210\320\f!\211\2035\211\321 =\203;\322\f\323 \"\210\210\324 \325\"\204R =\204R\326 \325C#\210\327 !\210\330\f!\210 \307\331 \210)\332\333!\207" [delay-mode-hooks major-mode mode-name gnugo-frolic-mode-map gnugo-frolic-mode-syntax-table gnugo-frolic-mode-abbrev-table make-local-variable t special-mode gnugo-frolic-mode "GNUGO Frolic" mode-class put keymap-parent set-keymap-parent current-local-map char-table-parent standard-syntax-table set-char-table-parent syntax-table abbrev-table-get :parents abbrev-table-put use-local-map set-syntax-table buffer-disable-undo run-mode-hooks gnugo-frolic-mode-hook local-abbrev-table truncate-lines] 5 (#$ . 2636) nil]) #@59 Kill GNUGO Frolic buffer and switch to its parent buffer. (defalias 'gnugo-frolic-quit #[0 "p\301\302!\205 !\210\303!\207" [gnugo-frolic-parent-buffer switch-to-buffer buffer-live-p kill-buffer] 4 (#$ . 3708) nil]) #@45 Move point to the board's current position. (defalias 'gnugo-frolic-return-to-origin #[0 "\204\301\302!\207b\210\303\304\305 d\"[!\207" [gnugo-frolic-origin message "No origin" recenter count-lines line-beginning-position] 4 (#$ . 3933) nil]) #@1048 Display the game tree in a *GNUGO Frolic* buffer. This looks something like: 1 B -- E7 E7 E7 E7 2 W -- K10 K10 K10 K10 3 B -- E2 E2 E2 E2 4 W -- J3 J3 J3 J3 5 B -- A6 A6 A6 A6 6 W -- C9 C9 C9 C9 │ ├─────┬─────┐ │ │ │ 7 B -- H7 !B8 C8 C8 │ ├─────┐ │ │ 8 W -- D9 D9 D9 E9 9 B -- H8 H8 10 W -- PASS PASS 11 B -- H5 PASS 12 W -- PASS 13 B -- *PASS with 0, 1, ... N (in this case N is 3) in the header line to indicate the branches. Branch 0 is the "main line". Point (* in this example) indicates the current position, "!" indicates comment properties (e.g., B8, branch 1), and moves not actually on the game tree (e.g., E7, branch 3) are dimmed. Type \[describe-mode] in that buffer for details. (defalias 'gnugo-frolic-in-the-leaves #[0 "\305\306\307!\310P!\206\fp\311\312\313\314F\306\315!\316\211\317H\262!\211\320H\262\321\322\323\324\325$\262\321\322\323\324\325$\262G\326\317S\"\306\327!\330 \317H@\320H\331\332\333\334\335\331!\336\"\337\340% \321\322\341$\205g\342\"\266\205\322\343\344\321\"\"\345\321\346\347\350\317\fW\203\345\321H\321C:\203\334\211@\240\210\242\"\211\262\203\310\351\352 #\204\303#\204\273\211#\210\211 #\210\266\202\321\353\242#\210\204\334A\262\202\206\266T\262\202y\266\354!\210\355 \210\356 \210\357\360\361\"\362\363 \364#P\365\366\332\317\367\335\331!\370\"\371$DDC\262\372\300!\210\372\303!\210\373\303\"\321\211\320Y\203U\374D\262\321\211\211\317eb\210\375\376\377 \320\"H$\210W\203I\fHW?\205iH\211AI\210\266\203\242\201@ BB\205}\f\"U\211\205\213\201A\236A\266\202\204\225\201B\202\267\201C\236\206\243\201D\236\262\211\262\n\204\261\201E\202\267 A!\203\307B\262\201FB\262\203\351\201G\"\211\262 \203\351\201H \201I\"B B\262 \f\201J\203\371\201K\202\372\361 =\2030\204\nU\2030\nU\203\201L \262\311\312\313\201M\321\201N\"F\"\202?\204>#\"\202?$\266T\262\202H\201O\"\210\237\211\262\203L\357\360\361\"\201P\201Q\"\201P\201R\"\201S\201T\332\201U\201V\335\331!\201W\"\201X\201Y%\201Z\201[\211 \n$\210\321\f\211:\203-\211@\344\201P\201QA\"\322\344\201P\201R\"\"\"\201H\201I\"\211@\201\\!@\201]\f\317S$ \317U!\326\"\332\333\201^\335\331\"\201_\"\201`\201a%\" (Y!  T+S$\201O\261\266B\262\266\211A\262\202\240\266\211 \322\344 \"$\210\201b\201c GT[!`\"\266 \266\211S\262\202$\266\211\205e\372\304!\210\211\201d )\207" [gnugo-frolic-parent-buffer inhibit-read-only header-line-format gnugo-state gnugo-frolic-origin get-buffer-create gnugo-get :diamond "*GNUGO Frolic*" :inherit default :foreground "gray50" :sgf-gametree copy-sequence 0 1 nil apply make-hash-table :test eq number-sequence :monkey gnugo--as-pos-func vector make-byte-code 257 "\301@\300\"\207" vconcat [gethash] 4 "\n\n(fn END)" cl-mapcar cl-coerce max append t #[514 "\300\"\207" [gethash] 5 "\n\n(fn SEEN NODE)"] #[514 "\300\301#\207" [propertize face] 6 "\n\n(fn S FACE)"] #[642 "\300\301\300\302##c\207" [apply propertize format] 9 "\n\n(fn PROPERTIES FMT &rest ARGS)"] #[771 "\242H@=\207" [] 6 "\n\n(fn ENDS NODE BIX)"] #[771 "\242\300\301\242\"\302\"\203\211\202B\262#\207" [puthash gethash memql] 11 "\n\n(fn SOIL NODE OTHER)"] puthash switch-to-buffer gnugo-frolic-mode erase-buffer make-string 11 32 mapconcat #[257 "\300\301\"\207" [format "%-5s"] 4 "\n\n(fn N)"] " " :eval funcall "\305 \306=\205 \n\206\307\310\302\"\311 \203\245\202\312!\266\202\306\313 \203,\314\202-\315\f\306=\2037\316\2028\317\320 !\206?\321\322\311 !\"*\211\321U?\205O!\262\3231^\300\324 \310O0\202`\210\325Q\207" [scroll-bar-mode scroll-bar-width real side #[257 "\300\301\302\303\304E#\207" [propertize " " display space :width] 7 "\n\n(fn W)"] left frame-parameter nil frame-char-width 2 t / ceiling car cadr window-fringes 0 float (error) window-hscroll #1=""] 6 make-local-variable buffer-local-value n "%3d %s -- " ["W" "B"] logand bx :C #1# :B :W "-" help-echo gethash sort < "%c%-5s" 33 point-marker frame-parameter cursor-color "\n" mapcar car cdr #[514 "\300\301#\207" [mapconcat " "] 6 "\n\n(fn LANES FUNC)"] #[514 "\300\301#\207" [mapconcat "-----"] 6 "\n\n(fn LANES FUNC)"] 514 "\300\301\302\303\304\305!\306\"\307\310%\"\207" [make-byte-code 257 "\211\300>\203\301\207\302\207" vconcat vector ["|" " "] 3 "\n\n(fn BX)"] 10 "\n\n(fn LANES SET)" #[257 "\211\203\300\207\301\207" [#1# " "] 2 "\n\n(fn CONDITION)"] #[1028 "\"\300\261\207" ["\n"] 8 "\n\n(fn LANES MARGIN --CL-CNXN-- SET)"] last #[1028 "\300\"\"\207" [number-sequence] 8 "\n\n(fn --CL-CNXN-- YES B E)"] "\211\301>\203\302\207\211\300>\203\303\207\304\207" ["+" "|" "-"] 3 "\n\n(fn BX)" aa2u line-beginning-position gnugo-frolic-return-to-origin] 55 (#$ . 4188) nil]) #@12 (fn HOW) (defalias 'gnugo--awake #[257 "\300\301!\211\211\302H\262\211G\300\303!\304\236A\266\202\305\306\"\203%\307e\310 \"\202=\305\311\"\203<\212\312\313\314\315#\2058\316\302!)\202=\314\262i\317V?\205V\211\317Z\320\245X?\205T\211\262\211C\321 >\203g\204g\322\323!\210\324 \236A\266\202\304B\325\326HB\327B\330\nB\331\fB\332B\257\314\211:\203\260@\262\211A\262\242\262\211>\204\251B\262A\262\202\215\266\207" [gnugo-get :sgf-gametree 0 :monkey line eql numeric count-lines line-beginning-position move-string re-search-backward "^ *[0-9]+ [BW]" nil t match-string 10 6 require-valid-branch user-error "No branch here" omit bidx 1 monkey width ends tree] 17 (#$ . 9486)]) #@23 (fn HOW &rest BODY) (defalias 'gnugo--awakened '(macro . #[385 "\300\301\236A\266\202\302C\303\304:\203(@\262\211>\204!\211B\262A\262\202 \266\204\305\306DDBBB\207" [cl-destructuring-bind omit a (line bidx monkey width ends tree) nil gnugo--awake quote] 9 (#$ . 10219)])) (byte-code "\300\301\302\303#\300\207" [function-put gnugo--awakened lisp-indent-function 1] 4) #@13 (fn BIDX) (defalias 'gnugo--move-to-bcol #[257 "\300\301\302_\\!\207" [move-to-column 10 6] 5 (#$ . 10612)]) (put 'gnugo--move-to-bcol 'byte-optimizer 'byte-compile-inline-expand) #@34 (fn DIRECTION &optional BLUNT) (defalias 'gnugo--swiz #[513 "\300\301!\211G\302U\203\211A\262\242\202\303\304\305GD\"\211A\262\242\211A\262\242\211A\262\242\211A\262\242@\247\203S\306W\203HW\204N\307\310 \"\210\202[\311 \\\"\203r\312\313\314\315\316\"\317\"\320\321%\202\201\312\313\322\315\316 \"\323\"\324\321%\325!!\326 W\203\243 !HI\210T\262\202\214\266\211U\204\262\327I\210\330 \210eb\210y\210\331\332\302_\\!\262\207" [gnugo--awake (require-valid-branch (omit tree) (line . numeric)) 6 signal wrong-number-of-arguments nil -1 user-error "No such branch: %s" mod make-byte-code 257 "\211\300U\203\301\207\211\301U\203\300\207\207" vconcat vector [] 3 "\n\n(fn N)" "\302\300\\\301\"\207" [mod] 4 copy-sequence 0 1 gnugo-frolic-in-the-leaves move-to-column 10] 19 (#$ . 10801)]) #@55 Exchange the current branch with the one to its left. (defalias 'gnugo-frolic-exchange-left #[0 "\300\301\302\"\207" [gnugo--swiz -1 t] 3 (#$ . 11670) nil]) #@27 Rotate all branches left. (defalias 'gnugo-frolic-rotate-left #[0 "\300\301!\207" [gnugo--swiz -1] 2 (#$ . 11833) nil]) #@56 Exchange the current branch with the one to its right. (defalias 'gnugo-frolic-exchange-right #[0 "\300\301\302\"\207" [gnugo--swiz 1 t] 3 (#$ . 11959) nil]) #@28 Rotate all branches right. (defalias 'gnugo-frolic-rotate-right #[0 "\300\301!\207" [gnugo--swiz 1] 2 (#$ . 12123) nil]) #@40 Make the current branch the main line. (defalias 'gnugo-frolic-set-as-main-line #[0 "\300\301\302\"\207" [gnugo--swiz nil 0] 3 (#$ . 12250) nil]) #@208 Remove the current branch from the gametree. This fails if there is only one branch in the tree. This fails if the monkey is on the current branch (a restriction that will probably be lifted Real Soon Now). (defalias 'gnugo-frolic-prune-branch #[0 "\300\301!\211G\302U\203\211A\262\242\202\303\304\305GD\"\211A\262\242\211A\262\242\211A\262\242\211A\262\242\211A\262\242@\211U\203E\306\307!\210\310U\203O\306\311!\210\312\305\"\211\233\211\313X\203fA\262\202nS\233A\241\210\266\313\314\315\"I\210\211\313H\266\211W\203\220\310S\211\262I\210\316 \210\205\254eb\210\317!\210\211\320Z^\321\322\323_\\!\262\207" [gnugo--awake (require-valid-branch (line . move-string)) 7 signal wrong-number-of-arguments nil user-error "Cannot prune with monkey on branch" 1 "Cannot prune last remaining branch" append 0 apply vector gnugo-frolic-in-the-leaves search-forward 2 move-to-column 10 6] 16 (#$ . 12403) nil]) #@20 (fn BACKWARDS N) (defalias 'gnugo--sideways #[514 "\300\301!\211G\302U\203\211A\262\242\202\303\304\305GD\"@\306\203+\206&Z\2022\2060\307\\\"\310\311\312_\\!\262\207" [gnugo--awake ((omit tree ends monkey bidx line)) 2 signal wrong-number-of-arguments nil mod -1 move-to-column 10 6] 10 (#$ . 13364)]) #@57 Move backward N (default 1) branches. (fn &optional N) (defalias 'gnugo-frolic-backward-branch #[256 "\300\301\"\207" [gnugo--sideways t] 4 (#$ . 13695) "p"]) #@56 Move forward N (default 1) branches. (fn &optional N) (defalias 'gnugo-frolic-forward-branch #[256 "\300\301\"\207" [gnugo--sideways nil] 4 (#$ . 13862) "p"]) #@20 (fn N DIRECTION) (defalias 'gnugo--vertical #[514 "\300V\203[\262\211[\262\301\302!\211G\303U\203!\211A\262\242\202(\304\305\306GD\"@\300V\2034\300\202;\300\307ed\"S]?\205AiU\204by\210\\\262\310`\311\"\203GS\211\262\300U\203A\203s\312\313\314_\\!\262\202v\312!\266\202\207" [0 gnugo--awake ((line . numeric) (omit tree ends width monkey bidx)) 2 signal wrong-number-of-arguments nil count-lines get-text-property n move-to-column 10 6] 12 (#$ . 14029)]) #@62 Move to the Nth (default 1) previous move. (fn &optional N) (defalias 'gnugo-frolic-previous-move #[256 "\300\301\"\207" [gnugo--vertical -1] 4 (#$ . 14528) "p"]) #@58 Move to the Nth (default 1) next move. (fn &optional N) (defalias 'gnugo-frolic-next-move #[256 "\300\301\"\207" [gnugo--vertical 1] 4 (#$ . 14699) "p"]) #@40 Move to the tip of the current branch. (defalias 'gnugo-frolic-tip-move #[0 "\300\301!\211G\302U\203\211A\262\242\202\303\304\305GD\"\211A\262\242@db\210\211\306H\262H@\307\310\311\312\"\"!\210\313\314\315_\\!\262\266\202\207" [gnugo--awake ((omit line bidx monkey width) require-valid-branch) 3 signal wrong-number-of-arguments nil 1 re-search-backward format "^%3d" gethash move-to-column 10 6] 12 (#$ . 14861) nil]) (provide 'gnugo-frolic)