https://github.com/emacs-mirror/emacs/blob/7cb77385d38b96377...
it seems to be intended for character set conversion especially JIS.
The directory is lisp/international, that already tells something
;; CCL is used for code conversion at process I/O and file I/O for
;; non-standard coding-systems. In addition, it is used for
;; calculating code points of X fonts from character codes.
And $ find /usr/share/emacs/26.3/lisp/ \! -name ccl.el.gz -name \*.el.gz -exec zgrep ccl- {} +
/usr/share/emacs/26.3/lisp/obsolete/pgg-parse.el.gz:(when (fboundp 'define-ccl-program)
/usr/share/emacs/26.3/lisp/obsolete/pgg-parse.el.gz: (define-ccl-program pgg-parse-crc24
/usr/share/emacs/26.3/lisp/obsolete/pgg-parse.el.gz: (ccl-execute-on-string pgg-parse-crc24 h string)
/usr/share/emacs/26.3/lisp/international/mule.el.gz:specified by the attributes `:ccl-decoder' and `:ccl-encoder'.
/usr/share/emacs/26.3/lisp/international/mule.el.gz:`:ccl-decoder' (required if :coding-type is `ccl')
/usr/share/emacs/26.3/lisp/international/mule.el.gz:VALUE is a CCL program name defined by `define-ccl-program'. The
/usr/share/emacs/26.3/lisp/international/mule.el.gz:`:ccl-encoder' (required if :coding-type is `ccl')
/usr/share/emacs/26.3/lisp/international/mule.el.gz:VALUE is a CCL program name defined by `define-ccl-program'. The
/usr/share/emacs/26.3/lisp/international/mule.el.gz: '(:ccl-decoder
/usr/share/emacs/26.3/lisp/international/mule.el.gz: :ccl-encoder
/usr/share/emacs/26.3/lisp/international/mule.el.gz: (plist-put properties :ccl-decoder (car flags))
/usr/share/emacs/26.3/lisp/international/mule.el.gz: (plist-put properties :ccl-encoder (cdr flags))))
/usr/share/emacs/26.3/lisp/language/vietnamese.el.gz:;; '(ccl-decode-vps . ccl-encode-vps)
/usr/share/emacs/26.3/lisp/language/ethiopic.el.gz:(define-ccl-program ccl-encode-ethio-font
/usr/share/emacs/26.3/lisp/language/ethiopic.el.gz:(setq font-ccl-encoder-alist
/usr/share/emacs/26.3/lisp/language/ethiopic.el.gz: (cons (cons (purecopy "ethiopic") ccl-encode-ethio-font) font-ccl-encoder-alist))
Mule was non-ASCII support in the 1990s before Unicode was a thing.Here is my first CCL program.
(define-ccl-program hw
'(1
(loop
(write r0 [72 101 108 111])
(r1 += 1)
(if (r1 == 3) (repeat) ())
(r0 += 1)
(if (r0 < 4) (repeat) (break))
)
)
)
(ccl-execute-on-string
'hw
[0 0 0 0 0 0 0 0 1] "")
Tested in *scratch* buffer, worked. Probably not very idiomatic...I've nosed through some of the elisp files for the games - little goldmines everywhere in there.
> Special thanks to Julian Assange (proff@iq.org), whose change-windows-intuitively.el predates Windmove, and provided the inspiration for it.
Source: https://github.com/emacs-mirror/emacs/blob/4823fa1077e4330bd...
change-windows-intuitively: http://quimby.gnus.org/s/change-windows-intuitively.el
B. I am not a big tetris player (too afraid of the inevitable addiction), but had a game there to see, and am now looking at the source code. ~tetris-allow-repetitions~ just has to be changed to nil, and then it does the correct bag rule behaviour?
C. I wonder why Emacs' tetris default is without the bag rule then... maybe you could submit a patch and propose a tournament? I only learned recently that the platform used for official tournaments is the NES version of Tetris, and now I'm learning that they use the bag rule. Tetris is more serious than I ever knew.
(when (fboundp 'windmove-default-keybindings)
(windmove-default-keybindings))
Thanks Julian![0] in the early MIT sense.