(setq *gb-translate* (sort (copy-list '( ("^1" . "¹") ("^2" . "²") ("^3" . "³") ("^4" . "⁴") ("^5" . "⁵") ("^6" . "⁶") ("^7" . "⁷") ("^8" . "⁸") ("^9" . "⁹") ("^0" . "⁰") ("^+" . "⁺") ("^-" . "⁻") ("^=" . "⁼") ("^(" . "⁽") ("^)" . "⁾") ("^n" . "ⁿ") ;; ("_i" . "ᵢ") ("_r" . "ᵣ") ("_u" . "ᵤ") ("_v" . "ᵥ") ("_beta" . "ᵦ") ("_gamma" . "ᵧ") ("_rho" . "ᵨ") ("_phi" . "ᵩ") ("_chi" . "ᵪ") ("_0" . "₀") ("_1" . "₁") ("_2" . "₂") ("_3" . "₃") ("_4" . "₄") ("_5" . "₅") ("_6" . "₆") ("_7" . "₇") ("_8" . "₈") ("_9" . "₉") ("_+" . "₊") ("_-" . "₋") ("_=" . "₌") ("_(" . "₍") ("_)" . "₎") ("_schwa" . "ₔ") ("_a" . "ₐ") ("_e" . "ₑ") ("_j" . "ⱼ") ("_h" . "ₕ") ("_k" . "ₖ") ("_l" . "ₗ") ("_m" . "ₘ") ("_n" . "ₙ") ("_o" . "ₒ") ("_p" . "ₚ") ("_q" . "ₜ") ("_s" . "ₛ") ("_t" . "ₜ") ("_x" . "ₓ") ;; ("x12" . "x1 y1 x2 y2") ("x1234" . "x1 y1 x2 y2 x3 y3 x4 y4") ("u12" . "u1 v1 u2 v2") ("a" . "foo") ("bullet" . "•") ("cdot" . "•") ("==>" . "⇒") ("=>" . "⇒") ("->" . "→") ("<-" . "←") (":=" . "←") ;pascal ("vv" . "↓") ("^^" . "↑") ("<=" . "≤") (">=" . "≥") ("/=" . "≠") ("|" . "∨") ("&" . "∧") ("or" . "∨") ("and" . "∧") ("^" . "↑") (":=" . "←") ("<>" . "≠") ("." . "∙") ;bullect operator ;; ("nand" . "⊼") ("xor" . "⊕") ;; ("<" . "〈") (">" . "〉") ;; ("null" . "∅") ("empty" . "∅") ;; ("in" . "∈") ("U" . "∪") ;; ("^" . "∩") ("!" . "¬") ("x" . "×") ("L" . "λ") ("c" . "⊂") ("!c" . "⊄") ("0" . "∅") ("<=>" . "⇔") ("W" . "Ω") ("---" . "—") ;em dash ("--" . "–") ;en dash ("EUR" . "€") ("cent" . "¢") ;; ("_0" . "₀") ("_1" . "₁") ("_2" . "₂") ("_3" . "₃") ("_4" . "₄") ("_5" . "₅") ("_6" . "₆") ("_7" . "₇") ("_8" . "₈") ("_9" . "₉") ;; ;("phi" . "ɸ") ("tau" . "τ") ;; --- Greek ("alpha" . "α") ("beta" . "β") ("gamma" . "γ") ("delta" . "δ") ("epsilon" . "ε") ("eps" . "ε") ("zeta" . "ζ") ("eta" . "η") ("theta" . "θ") ("iota" . "ι") ("kappa" . "κ") ("lambda" . "λ") ("\\" . "λ") ("mu" . "μ") ("nu" . "ν") ("xi" . "ξ") ("omicron" . "ο") ("pi" . "π") ("rho" . "ρ") ("sigma" . "σ") ("tau" . "τ") ("upsilon" . "υ") ;;("phi" . "φ") ("phi" . "φ") ("chi" . "χ") ("psi" . "ψ") ("omega" . "ω") ;; ("Alpha" . "Α") ("Beta" . "Β") ("Gamma" . "Γ") ("Delta" . "Δ") ("Epsilon" . "Ε") ("Zeta" . "Ζ") ("Eta" . "Η") ("Theta" . "Θ") ("Iota" . "Ι") ("Kappa" . "Κ") ("Lambda" . "Λ") ("Mu" . "Μ") ("Nu" . "Ν") ("Xi" . "Ξ") ("Omicron" . "Ο") ("Pi" . "Π") ("Rho" . "Ρ") ("Sigma" . "Σ") ("Tau" . "Τ") ("Upsilon" . "Υ") ("Phi" . "Φ") ("Chi" . "Χ") ("Psi" . "Ψ") ("Omega" . "Ω") ;; ("1/2" . "½") ;; ("..." . "…") (":" . "︙") ("_" . "␣") ;open box = space marker ("for all" . "∀") ("exists" . "∃") ("sum" . "∑") ("inf" . "∞") ("infinity" . "∞") ("deg" . "°") ("degree" . "°") ;; ("===" . "≡") ("eof" . "∎") ("shy" . "­") )) (lambda (x y) (> (length (car x)) (length (car y)))))) (defun gb-input () (interactive "") (let ((trans (dolist (trans *gb-translate*) (when (and (> (point) (length (car trans))) (equal (car trans) (buffer-substring (- (point) (length (car trans))) (point)))) (return trans))))) (when trans (delete-backward-char (length (car trans)) nil) (insert-string (cdr trans))))) ;; (global-set-key [end] 'gb-input) (global-set-key (kbd "s-SPC") 'gb-input)