blob: de792b58e4703f1619d64cabbba66c7e6ad81725 (
plain) (
tree)
|
|
;;; haskell-unicode-input-method.el --- Haskell Unicode helper functions -*- coding: utf-8; lexical-binding: t -*-
;; Copyright (C) 2010-2011 Roel van Dijk
;; Author: Roel van Dijk <vandijk.roel@gmail.com>
;; This file is not part of GNU Emacs.
;; This file is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 3 of the License, or
;; (at your option) any later version.
;; This file is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;;; Code:
(require 'quail)
;;;###autoload
(defun turn-on-haskell-unicode-input-method ()
"Set input method `haskell-unicode'."
(interactive)
(set-input-method "haskell-unicode"))
(quail-define-package
"haskell-unicode" ;; name
"UTF-8" ;; language
"\\" ;; title
t ;; guidance
"Haskell Unicode input method.
Designed to be used with the Haskell UnicodeSyntax language
extension in combination with the x-unicode-symbols set of
packages (base-unicode-symbols and containers-unicode-symbols).
" ;; docstring
nil ;; translation-keys
nil ;; forget-last-selection
nil ;; deterministic
nil ;; kbd-translate
nil ;; show-layout
nil ;; create-decode-map
nil ;; maximum-shortest
nil ;; overlay-plist
nil ;; update-translation-function
nil ;; conversion-keys
t ;; simple
)
(quail-define-rules
;; Greek letters
("alpha " ["α"])
("Alpha " ["Α"])
("beta " ["β"])
("Beta " ["Β"])
("gamma " ["γ"])
("Gamma " ["Γ"])
("delta " ["δ"])
("Delta " ["Δ"])
("epsilon " ["ε"])
("Epsilon " ["Ε"])
("zeta " ["ζ"])
("Zeta " ["Ζ"])
("eta " ["η"])
("Eta " ["Η"])
("theta " ["θ"])
("Theta " ["Θ"])
("iota " ["ι"])
("Iota " ["Ι"])
("kappa " ["κ"])
("Kappa " ["Κ"])
("lambda " ["λ"])
("Lambda " ["Λ"])
("lamda " ["λ"])
("Lamda " ["Λ"])
("mu " ["μ"])
("Mu " ["Μ"])
("nu " ["ν"])
("Nu " ["Ν"])
("xi " ["ξ"])
("Xi " ["Ξ"])
("omicron " ["ο"])
("Omicron " ["Ο"])
("pi " ["π"])
("Pi " ["Π"])
("rho " ["ρ"])
("Rho " ["Ρ"])
("sigma " ["σ"])
("Sigma " ["Σ"])
("tau " ["τ"])
("Tau " ["Τ"])
("upsilon " ["υ"])
("Upsilon " ["Υ"])
("phi " ["φ"])
("Phi " ["Φ"])
("chi " ["χ"])
("Chi " ["Χ"])
("psi " ["ψ"])
("Psi " ["Ψ"])
("omega " ["ω"])
("Omega " ["Ω"])
("digamma " ["ϝ"])
("Digamma " ["Ϝ"])
("san " ["ϻ"])
("San " ["Ϻ"])
("qoppa " ["ϙ"])
("Qoppa " ["Ϙ"])
("sampi " ["ϡ"])
("Sampi " ["Ϡ"])
("stigma " ["ϛ"])
("Stigma " ["Ϛ"])
("heta " ["ͱ"])
("Heta " ["Ͱ"])
("sho " ["ϸ"])
("Sho " ["Ϸ"])
;; Double-struck letters
("|A|" ["𝔸"])
("|B|" ["𝔹"])
("|C|" ["ℂ"])
("|D|" ["𝔻"])
("|E|" ["𝔼"])
("|F|" ["𝔽"])
("|G|" ["𝔾"])
("|H|" ["ℍ"])
("|I|" ["𝕀"])
("|J|" ["𝕁"])
("|K|" ["𝕂"])
("|L|" ["𝕃"])
("|M|" ["𝕄"])
("|N|" ["ℕ"])
("|O|" ["𝕆"])
("|P|" ["ℙ"])
("|Q|" ["ℚ"])
("|R|" ["ℝ"])
("|S|" ["𝕊"])
("|T|" ["𝕋"])
("|U|" ["𝕌"])
("|V|" ["𝕍"])
("|W|" ["𝕎"])
("|X|" ["𝕏"])
("|Y|" ["𝕐"])
("|Z|" ["ℤ"])
("|gamma|" ["ℽ"])
("|Gamma|" ["ℾ"])
("|pi|" ["ℼ"])
("|Pi|" ["ℿ"])
;; Types
("::" ["∷"])
;; Quantifiers
("forall" ["∀"])
("exists" ["∃"])
;; Arrows
("->" ["→"])
;; ("-->" ["⟶"])
("<-" ["←"])
;; ("<--" ["⟵"])
;; ("<->" ["↔"])
;; ("<-->" ["⟷"])
("=>" ["⇒"])
;; ("==>" ["⟹"])
;; ("<=" ["⇐"])
;; ("<==" ["⟸"])
;; ("<=>" ["⇔"])
;; ("<==>" ["⟺"])
;; ("|->" ["↦"])
;; ("|-->" ["⟼"])
;; ("<-|" ["↤"])
;; ("<--|" ["⟻"])
;; ("|=>" ["⤇"])
;; ("|==>" ["⟾"])
;; ("<=|" ["⤆"])
;; ("<==|" ["⟽"])
("~>" ["⇝"])
;; ("~~>" ["⟿"])
("<~" ["⇜"])
;; ("<~~" ["⬳"])
;; (">->" ["↣"])
;; ("<-<" ["↢"])
;; ("->>" ["↠"])
;; ("<<-" ["↞"])
;; (">->>" ["⤖"])
;; ("<<-<" ["⬻"])
;; ("<|-" ["⇽"])
;; ("-|>" ["⇾"])
;; ("<|-|>" ["⇿"])
;; ("<-/-" ["↚"])
;; ("-/->" ["↛"])
;; ("<-|-" ["⇷"])
;; ("-|->" ["⇸"])
;; ("<-|->" ["⇹"])
;; ("<-||-" ["⇺"])
;; ("-||->" ["⇻"])
;; ("<-||->" ["⇼"])
;; ("-o->" ["⇴"])
;; ("<-o-" ["⬰"])
;; Boolean operators
;; ("not" ["¬"])
("&&" ["∧"])
("||" ["∨"])
;; Relational operators
("==" ["≡"])
("/=" ["≢" "≠"])
("<=" ["≤"])
(">=" ["≥"])
("/<" ["≮"])
("/>" ["≯"])
;; Arithmetic
;; (" / " [" ÷ "])
(" * " [" ⋅ "])
;; Containers / Collections
;; ("++" ["⧺"])
;; ("+++" ["⧻"])
;; ("|||" ["⫴"])
;; ("empty" ["∅"])
("elem" ["∈"])
("notElem" ["∉"])
("member" ["∈"])
("notMember" ["∉"])
("union" ["∪"])
("intersection" ["∩"])
("isSubsetOf" ["⊆"])
("isProperSubsetOf" ["⊂"])
;; Other
;; ("<<" ["≪"])
;; (">>" ["≫"])
("<<<" ["⋘"])
(">>>" ["⋙"])
("<|" ["⊲"])
("|>" ["⊳"])
("><" ["⋈"])
;; ("mempty" ["∅"])
("mappend" ["⊕"])
;; ("<*>" ["⊛"])
(" . " [" ∘ "])
("undefined" ["⊥"])
(":=" ["≔"])
("=:" ["≕"])
("=def" ["≝"])
("=?" ["≟"])
("..." ["…"])
;; Braces
;; ("[|" ["〚"])
;; ("|]" ["〛"])
;; Numeric subscripts
("_0 " ["₀"])
("_1 " ["₁"])
("_2 " ["₂"])
("_3 " ["₃"])
("_4 " ["₄"])
("_5 " ["₅"])
("_6 " ["₆"])
("_7 " ["₇"])
("_8 " ["₈"])
("_9 " ["₉"])
;; Numeric superscripts
("^0 " ["⁰"])
("^1 " ["¹"])
("^2 " ["²"])
("^3 " ["³"])
("^4 " ["⁴"])
("^5 " ["⁵"])
("^6 " ["⁶"])
("^7 " ["⁷"])
("^8 " ["⁸"])
("^9 " ["⁹"])
)
(provide 'haskell-unicode-input-method)
;;; haskell-unicode-input-method.el ends here
|