Warning: this is an htmlized version! The original is across this link, and the conversion rules are here.
```;; dnc-0.el - my first attempt at implementing dnc abbreviations to
;; eepitch.

;; Author:     Eduardo Ochs <eduardoochs@gmail.com>
;; Maintainer: Eduardo Ochs <eduardoochs@gmail.com>
;; Version:    2009jul31
;; Keywords:   e-scripts, Coq.
;;
;;       htmlized: <http://angg.twu.net/COQ/dnc-0.el.html>
;;            and: <http://angg.twu.net/eev-current/eev-langs.el.html>

;;
;;                                           [a>1]^2  [b>0]^1  [b>0]^1
;;                                           ----------------  -------
;;            [a<1]^2              [b=0]^1        ab>b          b>=1
;;            -------              -------        ------------------
;;              a=0                 ab=0               ab>1
;;              ----    --------    -----             -----
;;   a~=1       ab=0    b=0\/b>0    ab~=1             ab~=1
;;  -------    -----    -----------------------------------
;;  a<1\/a>1   ab~=1                ab~=1
;;  -------------------------------------
;;                     ab~=1
;;
(defun dnc-strings (str) (setq dnc-strings (ee-split str)))

(dnc-strings "[a<1]^2 [a>1]^2 [b=0]^1 [b>0]^1 a<1\\/a>1 a=0 ab=0 ab>1
ab>b ab~=1 a~=1 b=0\\/b>0 b>=1")

(defun dnc-to-number (str)
(let ((m (member str dnc-strings)))
(if m (- (length dnc-strings) (length m)))))

(defun dnc-to-dncnnn (str)
(let ((n (dnc-to-number str)))
(if n (format "dnc%d" n))))

;; (dnc-to-number "[a>1]^2")
;; (dnc-to-dncnnn "[a>1]^2")
;; (defun dnc-expand1 (str) (format "<%s>" str))
(defun dnc-expand1 (str) (or (dnc-to-dncnnn str)
(error "Not in dnc-strings: %S" str)))

(defun dnc-expand (bigstr)
(replace-regexp-in-string
"\\([^ \t\n]+\\)"
(lambda (str) (dnc-expand1 (substring str 1 -1)))
bigstr
'fixedcase))

;; (dnc-expand "fooa=0bar")
;; (dnc-expand "fooa=2bar")

;; (find-efunctiondescr 'replace-regexp-in-string)
;; (find-efunctiondescr 'match-string)
;; (find-elnode "Creating Strings")
;; (substring "abcdefg" 1 -1)
;; (find-efunction 'ee-aref)
;; (find-elnode "Index" "* member:")

;; (find-efunction 'eepitch-line)
;; (find-eev "eev-mini-steps.el" "eepitch-line")

(defun eepitch-line-orig (line)
(save-selected-window
(select-window (get-buffer-window eepitch-target-buffer))
(insert line)                              ; "type" the line
(call-interactively (key-binding "\r"))))  ; then do a RET

(defun eepitch-line (line)
(eepitch-line-orig (dnc-expand line)))

;; (find-angg ".emacs" "eev-traffic-light-glyphs")
;; (find-efunction 'eev-math-glyphs-set)
;; (find-efunction 'eev-set-glyph)
;; (find-epalette my-palette)
;; (find-ecolor-links (ee-choosecolor "#6c1829"))

(eev-glyphs-set-face 'eev-glyph-dnc-open  "red"  nil)
(eev-glyphs-set-face 'eev-glyph-dnc-open  "red"  "#6c1829")
(eev-glyphs-set-face 'eev-glyph-dnc-close "gold" nil)
(eev-glyphs-set-face 'eev-glyph-dnc-close "magenta" nil)
(eev-glyphs-set-face 'eev-glyph-dnc-close "magenta" "#6c1829")
(eev-set-glyph ? ?< 'eev-glyph-dnc-open)
(eev-set-glyph ? ?> 'eev-glyph-dnc-close)

'("

# A test:

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
echo a=0-ab=0

")

;; Local Variables:
;; coding:               raw-text-unix
;; ee-anchor-format:     "«%s»"
;; End:
```