diff options
author | Stephane Glondu <steph@glondu.net> | 2010-12-24 11:53:29 +0100 |
---|---|---|
committer | Stephane Glondu <steph@glondu.net> | 2010-12-24 11:53:29 +0100 |
commit | 6b691bbd2101fd39395c0d2135fd7c06a8915e14 (patch) | |
tree | b04b45d1a6f42d19b1428c522d647afbad2f9b83 /ide | |
parent | 3e96002677226c0cdaa8f355938a76cfb37a722a (diff) |
Imported Upstream version 8.3pl1upstream/8.3pl1
Diffstat (limited to 'ide')
-rw-r--r-- | ide/coqide.ml | 106 | ||||
-rw-r--r-- | ide/uim/coqide-custom.scm | 99 | ||||
-rw-r--r-- | ide/uim/coqide-rules.scm | 1142 | ||||
-rw-r--r-- | ide/uim/coqide.scm | 277 |
4 files changed, 1591 insertions, 33 deletions
diff --git a/ide/coqide.ml b/ide/coqide.ml index 08452fe2..fdf33c39 100644 --- a/ide/coqide.ml +++ b/ide/coqide.ml @@ -6,7 +6,7 @@ (* * GNU Lesser General Public License Version 2.1 *) (************************************************************************) -(* $Id: coqide.ml 13323 2010-07-24 15:57:30Z herbelin $ *) +(* $Id: coqide.ml 13708 2010-12-13 14:49:29Z gmelquio $ *) open Preferences open Vernacexpr @@ -251,27 +251,31 @@ let break () = end let do_if_not_computing text f x = - if Mutex.try_lock coq_computing then - let threaded_task () = - prerr_endline "Getting lock"; - try - f x; - prerr_endline "Releasing lock"; - Mutex.unlock coq_computing; - with e -> - prerr_endline "Releasing lock (on error)"; - Mutex.unlock coq_computing; - raise e - in - prerr_endline ("Launching thread " ^ text); - ignore (Glib.Timeout.add ~ms:300 ~callback: - (fun () -> if Mutex.try_lock coq_computing - then (Mutex.unlock coq_computing; false) - else (pbar#pulse (); true))); - ignore (Thread.create threaded_task ()) - else - prerr_endline - "Discarded order (computations are ongoing)" + let threaded_task () = + (* Beware: mutexes must be locked and unlocked in the same thread + on at least FreeBSD (see bug #2431) *) + if Mutex.try_lock coq_computing then + begin + prerr_endline "Getting lock"; + try + f x; + prerr_endline "Releasing lock"; + Mutex.unlock coq_computing; + with e -> + prerr_endline "Releasing lock (on error)"; + Mutex.unlock coq_computing; + raise e + end + else + prerr_endline + "Discarded order (computations are ongoing)" + in + prerr_endline ("Launching thread " ^ text); + ignore (Glib.Timeout.add ~ms:300 ~callback: + (fun () -> if Mutex.try_lock coq_computing + then (Mutex.unlock coq_computing; false) + else (pbar#pulse (); true))); + ignore (Thread.create threaded_task ()) (* XXX - 1 appel *) let kill_input_view i = @@ -282,15 +286,59 @@ let kill_input_view i = v.proof_view#destroy (); v.message_view#destroy (); session_notebook#remove_page i + +let warning msg = + GToolbox.message_box ~title:"Warning" + ~icon:(let img = GMisc.image () in + img#set_stock `DIALOG_WARNING; + img#set_icon_size `DIALOG; + img#coerce) + msg + (* (* XXX - beaucoups d'appels, a garder *) let get_current_view = focused_session *) let remove_current_view_page () = - let c = session_notebook#current_page in - kill_input_view c - + let do_remove () = + let c = session_notebook#current_page in + kill_input_view c + in + let current = session_notebook#current_term in + if current.script#buffer#modified then + match GToolbox.question_box ~title:"Close" + ~buttons:["Save Buffer and Close"; + "Close without Saving"; + "Don't Close"] + ~default:0 + ~icon:(let img = GMisc.image () in + img#set_stock `DIALOG_WARNING; + img#set_icon_size `DIALOG; + img#coerce) + "This buffer has unsaved modifications" + with + | 1 -> + begin match current.analyzed_view#filename with + | None -> + begin match select_file_for_save ~title:"Save file" () with + | None -> () + | Some f -> + if current.analyzed_view#save_as f then begin + flash_info ("File " ^ f ^ " saved") ; + do_remove () + end else + warning ("Save Failed (check if " ^ f ^ " is writable)") + end + | Some f -> + if current.analyzed_view#save f then begin + flash_info ("File " ^ f ^ " saved") ; + do_remove () + end else + warning ("Save Failed (check if " ^ f ^ " is writable)") + end + | 2 -> do_remove () + | _ -> () (* Reset this to None on page change ! *) let (last_completion:(string*int*int*bool) option ref) = ref None @@ -383,14 +431,6 @@ let activate_input i = set_active_view i; prerr_endline "exiting activate_input" -let warning msg = - GToolbox.message_box ~title:"Warning" - ~icon:(let img = GMisc.image () in - img#set_stock `DIALOG_WARNING; - img#set_icon_size `DIALOG; - img#coerce) - msg - let apply_tag (buffer:GText.buffer) orig off_conv from upto sort = let conv_and_apply start stop tag = let start = orig#forward_chars (off_conv from) in diff --git a/ide/uim/coqide-custom.scm b/ide/uim/coqide-custom.scm new file mode 100644 index 00000000..622f5063 --- /dev/null +++ b/ide/uim/coqide-custom.scm @@ -0,0 +1,99 @@ +;;; coqide-custom.scm -- customization variables for coqide.scm +;;; +;;; Copyright (c) 2003-2009 uim Project http://code.google.com/p/uim/ +;;; +;;; All rights reserved. +;;; +;;; Redistribution and use in source and binary forms, with or without +;;; modification, are permitted provided that the following conditions +;;; are met: +;;; 1. Redistributions of source code must retain the above copyright +;;; notice, this list of conditions and the following disclaimer. +;;; 2. Redistributions in binary form must reproduce the above copyright +;;; notice, this list of conditions and the following disclaimer in the +;;; documentation and/or other materials provided with the distribution. +;;; 3. Neither the name of authors nor the names of its contributors +;;; may be used to endorse or promote products derived from this software +;;; without specific prior written permission. +;;; +;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND +;;; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +;;; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +;;; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE +;;; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +;;; OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +;;; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +;;; LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +;;; SUCH DAMAGE. +;;;; + +(require "i18n.scm") + +(define coqide-im-name-label (N_ "CoqIDE")) +(define coqide-im-short-desc (N_ "Emacs-style Latin characters input")) +(define coqide-im-long-desc (N_ "An input method for entering Latin letters used in European languages with the key translations adopted in Emacs.")) + +(define-custom-group 'coqide + coqide-im-name-label + coqide-im-short-desc) + +(define-custom-group 'coqide-properties + (N_ "Properties") + (N_ "long description will be here.")) + +(define-custom 'coqide-rules 'coqide-rules-latin-ltx + '(coqide coqide-properties) + (list 'choice + (list 'coqide-rules-latin-ltx + (N_ "TeX") + (N_ "long description will be here."))) + (N_ "Latin characters keyboard layout") + (N_ "long description will be here.")) + +(custom-add-hook 'coqide-rules + 'custom-set-hooks + (lambda () + (map (lambda (lc) + (let ((new-rkc (rk-context-new + (symbol-value coqide-rules) #f #f))) + (coqide-context-flush lc) + (coqide-update-preedit lc) + (coqide-context-set-rkc! lc new-rkc))) + coqide-context-list))) + +;; For VI users. +(define-custom 'coqide-esc-turns-off? #f + '(coqide coqide-properties) + '(boolean) + (N_ "ESC turns off composition mode (for vi users)") + (N_ "long description will be here.")) + + +(define-custom-group 'coqide-keys + (N_ "CoqIDE key bindings") + (N_ "long description will be here.")) + +(define-custom 'coqide-on-key '("<Control>\\") + '(coqide coqide-keys) + '(key) + (N_ "CoqIDE on") + (N_ "long description will be here")) + +(define-custom 'coqide-off-key '("<Control>\\") + '(coqide coqide-keys) + '(key) + (N_ "CoqIDE off") + (N_ "long description will be here")) + +(define-custom 'coqide-backspace-key '(generic-backspace-key) + '(coqide coqide-keys) + '(key) + (N_ "CoqIDE backspace") + (N_ "long description will be here")) + +;; Local Variables: +;; mode: scheme +;; coding: utf-8 +;; End: diff --git a/ide/uim/coqide-rules.scm b/ide/uim/coqide-rules.scm new file mode 100644 index 00000000..c483c88b --- /dev/null +++ b/ide/uim/coqide-rules.scm @@ -0,0 +1,1142 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; v ; The Coq Proof Assistant / The Coq Development Team ;; +;; <O___,, ; INRIA - CNRS - LIX - LRI - PPS - Copyright 1999-2010 ;; +;; \VV/ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; // ; This file is distributed under the terms of the ;; +;; ; GNU Lesser General Public License Version 2.1 ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;;; coqide-rules.scm -- key sequence tables for coqide.scm + +;; Copyright (c) 2003-2009 uim Project http://code.google.com/p/uim/ +;; +;; All rights reserved. + +;; The translation tables in this file were derived from +;; the emacs-lisp source files latin-pre.el, latin-post.el, latin-alt.el +;; included in GNU Emacs. The following is the original copyright notice +;; therein, with the name GNU Emacs replaced by "this program". + +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +;; 2006, 2007 +;; Free Software Foundation, Inc. +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +;; 2006, 2007 +;; National Institute of Advanced Industrial Science and Technology (AIST) +;; Registration Number H14PRO021 + +;; This program 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 2, or (at your option) +;; any later version. + +;; This program 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, write to the +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Commentary: + +;; Key translation maps were originally copied from iso-acc.el. +;; latin-1-prefix: extra special characters added, adapted from the vim +;; digraphs (from J.H.M.Dassen <jdassen@wi.leidenuniv.nl>) +;; by R.F. Smith <rsmith@xs4all.nl> +;; +;; polish-slash: +;; Author: Włodek Bzyl <matwb@univ.gda.pl> +;; Maintainer: Włodek Bzyl <matwb@univ.gda.pl> +;; +;; latin-[89]-prefix: Dave Love <fx@gnu.org> + +(define coqide-rules-latin-ltx '( +((("!" "`")) ("¡")) +((("\\" "p" "o" "u" "n" "d" "s")) ("£")) +((("\\" "S")) ("§")) +((("\\" "\"" "{" "}")) ("¨")) +((("\\" "c" "o" "p" "y" "r" "i" "g" "h" "t")) ("©")) +((("$" "^" "a" "$")) ("ª")) +((("\\" "=" "{" "}")) ("¯")) +((("$" "\\" "p" "m" "$")) ("±")) +((("\\" "p" "m")) ("±")) +((("$" "^" "2" "$")) ("²")) +((("$" "^" "3" "$")) ("³")) +((("\\" "'" "{" "}")) ("´")) +((("\\" "P")) ("¶")) +((("$" "\\" "c" "d" "o" "t" "$")) ("·")) +((("\\" "c" "d" "o" "t")) ("·")) +((("\\" "c" "{" "}")) ("¸")) +((("$" "^" "1" "$")) ("¹")) +((("$" "^" "o" "$")) ("º")) +((("?" "`")) ("¿")) +((("\\" "`" "{" "A" "}")) ("À")) +((("\\" "`" "A")) ("À")) +((("\\" "'" "{" "A" "}")) ("Á")) +((("\\" "'" "A")) ("Á")) +((("\\" "^" "{" "A" "}")) ("Â")) +((("\\" "^" "A")) ("Â")) +((("\\" "~" "{" "A" "}")) ("Ã")) +((("\\" "~" "A")) ("Ã")) +((("\\" "\"" "{" "A" "}")) ("Ä")) +((("\\" "\"" "A")) ("Ä")) +((("\\" "k" "{" "A" "}")) ("Ą")) +((("\\" "A" "A")) ("Å")) +((("\\" "A" "E")) ("Æ")) +((("\\" "c" "{" "C" "}")) ("Ç")) +((("\\" "c" "C")) ("Ç")) +((("\\" "`" "{" "E" "}")) ("È")) +((("\\" "`" "E")) ("È")) +((("\\" "'" "{" "E" "}")) ("É")) +((("\\" "'" "E")) ("É")) +((("\\" "^" "{" "E" "}")) ("Ê")) +((("\\" "^" "E")) ("Ê")) +((("\\" "\"" "{" "E" "}")) ("Ë")) +((("\\" "\"" "E")) ("Ë")) +((("\\" "k" "{" "E" "}")) ("Ę")) +((("\\" "`" "{" "I" "}")) ("Ì")) +((("\\" "`" "I")) ("Ì")) +((("\\" "'" "{" "I" "}")) ("Í")) +((("\\" "'" "I")) ("Í")) +((("\\" "^" "{" "I" "}")) ("Î")) +((("\\" "^" "I")) ("Î")) +((("\\" "\"" "{" "I" "}")) ("Ï")) +((("\\" "\"" "I")) ("Ï")) +((("\\" "k" "{" "I" "}")) ("Į")) +((("\\" "~" "{" "N" "}")) ("Ñ")) +((("\\" "~" "N")) ("Ñ")) +((("\\" "`" "{" "O" "}")) ("Ò")) +((("\\" "`" "O")) ("Ò")) +((("\\" "'" "{" "O" "}")) ("Ó")) +((("\\" "'" "O")) ("Ó")) +((("\\" "^" "{" "O" "}")) ("Ô")) +((("\\" "^" "O")) ("Ô")) +((("\\" "~" "{" "O" "}")) ("Õ")) +((("\\" "~" "O")) ("Õ")) +((("\\" "\"" "{" "O" "}")) ("Ö")) +((("\\" "\"" "O")) ("Ö")) +((("\\" "k" "{" "O" "}")) ("Ǫ")) +((("$" "\\" "t" "i" "m" "e" "s" "$")) ("×")) +((("\\" "t" "i" "m" "e" "s")) ("×")) +((("\\" "O")) ("Ø")) +((("\\" "`" "{" "U" "}")) ("Ù")) +((("\\" "`" "U")) ("Ù")) +((("\\" "'" "{" "U" "}")) ("Ú")) +((("\\" "'" "U")) ("Ú")) +((("\\" "^" "{" "U" "}")) ("Û")) +((("\\" "^" "U")) ("Û")) +((("\\" "\"" "{" "U" "}")) ("Ü")) +((("\\" "\"" "U")) ("Ü")) +((("\\" "k" "{" "U" "}")) ("Ų")) +((("\\" "'" "{" "Y" "}")) ("Ý")) +((("\\" "'" "Y")) ("Ý")) +((("\\" "s" "s")) ("ß")) +((("\\" "`" "{" "a" "}")) ("à")) +((("\\" "`" "a")) ("à")) +((("\\" "'" "{" "a" "}")) ("á")) +((("\\" "'" "a")) ("á")) +((("\\" "^" "{" "a" "}")) ("â")) +((("\\" "^" "a")) ("â")) +((("\\" "~" "{" "a" "}")) ("ã")) +((("\\" "~" "a")) ("ã")) +((("\\" "\"" "{" "a" "}")) ("ä")) +((("\\" "\"" "a")) ("ä")) +((("\\" "k" "{" "a" "}")) ("ą")) +((("\\" "a" "a")) ("å")) +((("\\" "a" "e")) ("æ")) +((("\\" "c" "{" "c" "}")) ("ç")) +((("\\" "c" "c")) ("ç")) +((("\\" "`" "{" "e" "}")) ("è")) +((("\\" "`" "e")) ("è")) +((("\\" "'" "{" "e" "}")) ("é")) +((("\\" "'" "e")) ("é")) +((("\\" "^" "{" "e" "}")) ("ê")) +((("\\" "^" "e")) ("ê")) +((("\\" "\"" "{" "e" "}")) ("ë")) +((("\\" "\"" "e")) ("ë")) +((("\\" "k" "{" "e" "}")) ("ę")) +((("\\" "`" "{" "\\" "i" "}")) ("ì")) +((("\\" "`" "i")) ("ì")) +((("\\" "'" "{" "\\" "i" "}")) ("í")) +((("\\" "'" "i")) ("í")) +((("\\" "^" "{" "\\" "i" "}")) ("î")) +((("\\" "^" "i")) ("î")) +((("\\" "\"" "{" "\\" "i" "}")) ("ï")) +((("\\" "\"" "i")) ("ï")) +((("\\" "k" "{" "i" "}")) ("į")) +((("\\" "~" "{" "n" "}")) ("ñ")) +((("\\" "~" "n")) ("ñ")) +((("\\" "`" "{" "o" "}")) ("ò")) +((("\\" "`" "o")) ("ò")) +((("\\" "'" "{" "o" "}")) ("ó")) +((("\\" "'" "o")) ("ó")) +((("\\" "^" "{" "o" "}")) ("ô")) +((("\\" "^" "o")) ("ô")) +((("\\" "~" "{" "o" "}")) ("õ")) +((("\\" "~" "o")) ("õ")) +((("\\" "\"" "{" "o" "}")) ("ö")) +((("\\" "\"" "o")) ("ö")) +((("\\" "k" "{" "o" "}")) ("ǫ")) +((("$" "\\" "d" "i" "v" "$")) ("÷")) +((("\\" "d" "i" "v")) ("÷")) +((("\\" "o")) ("ø")) +((("\\" "`" "{" "u" "}")) ("ù")) +((("\\" "`" "u")) ("ù")) +((("\\" "'" "{" "u" "}")) ("ú")) +((("\\" "'" "u")) ("ú")) +((("\\" "^" "{" "u" "}")) ("û")) +((("\\" "^" "u")) ("û")) +((("\\" "\"" "{" "u" "}")) ("ü")) +((("\\" "\"" "u")) ("ü")) +((("\\" "k" "{" "u" "}")) ("ų")) +((("\\" "'" "{" "y" "}")) ("ý")) +((("\\" "'" "y")) ("ý")) +((("\\" "\"" "{" "y" "}")) ("ÿ")) +((("\\" "\"" "y")) ("ÿ")) +((("\\" "=" "{" "A" "}")) ("Ā")) +((("\\" "=" "A")) ("Ā")) +((("\\" "=" "{" "a" "}")) ("ā")) +((("\\" "=" "a")) ("ā")) +((("\\" "u" "{" "A" "}")) ("Ă")) +((("\\" "u" "A")) ("Ă")) +((("\\" "u" "{" "a" "}")) ("ă")) +((("\\" "u" "a")) ("ă")) +((("\\" "'" "{" "C" "}")) ("Ć")) +((("\\" "'" "C")) ("Ć")) +((("\\" "'" "{" "c" "}")) ("ć")) +((("\\" "'" "c")) ("ć")) +((("\\" "^" "{" "C" "}")) ("Ĉ")) +((("\\" "^" "C")) ("Ĉ")) +((("\\" "^" "{" "c" "}")) ("ĉ")) +((("\\" "^" "c")) ("ĉ")) +((("\\" "." "{" "C" "}")) ("Ċ")) +((("\\" "." "C")) ("Ċ")) +((("\\" "." "{" "c" "}")) ("ċ")) +((("\\" "." "c")) ("ċ")) +((("\\" "v" "{" "C" "}")) ("Č")) +((("\\" "v" "C")) ("Č")) +((("\\" "v" "{" "c" "}")) ("č")) +((("\\" "v" "c")) ("č")) +((("\\" "v" "{" "D" "}")) ("Ď")) +((("\\" "v" "D")) ("Ď")) +((("\\" "v" "{" "d" "}")) ("ď")) +((("\\" "v" "d")) ("ď")) +((("\\" "=" "{" "E" "}")) ("Ē")) +((("\\" "=" "E")) ("Ē")) +((("\\" "=" "{" "e" "}")) ("ē")) +((("\\" "=" "e")) ("ē")) +((("\\" "u" "{" "E" "}")) ("Ĕ")) +((("\\" "u" "E")) ("Ĕ")) +((("\\" "u" "{" "e" "}")) ("ĕ")) +((("\\" "u" "e")) ("ĕ")) +((("\\" "." "{" "E" "}")) ("Ė")) +((("\\" "." "E")) ("Ė")) +((("\\" "e" "{" "e" "}")) ("ė")) +((("\\" "e" "e")) ("ė")) +((("\\" "v" "{" "E" "}")) ("Ě")) +((("\\" "v" "E")) ("Ě")) +((("\\" "v" "{" "e" "}")) ("ě")) +((("\\" "v" "e")) ("ě")) +((("\\" "^" "{" "G" "}")) ("Ĝ")) +((("\\" "^" "G")) ("Ĝ")) +((("\\" "^" "{" "g" "}")) ("ĝ")) +((("\\" "^" "g")) ("ĝ")) +((("\\" "u" "{" "G" "}")) ("Ğ")) +((("\\" "u" "G")) ("Ğ")) +((("\\" "u" "{" "g" "}")) ("ğ")) +((("\\" "u" "g")) ("ğ")) +((("\\" "." "{" "G" "}")) ("Ġ")) +((("\\" "." "G")) ("Ġ")) +((("\\" "." "{" "g" "}")) ("ġ")) +((("\\" "." "g")) ("ġ")) +((("\\" "c" "{" "G" "}")) ("Ģ")) +((("\\" "c" "G")) ("Ģ")) +((("\\" "c" "{" "g" "}")) ("ģ")) +((("\\" "c" "g")) ("ģ")) +((("\\" "^" "{" "H" "}")) ("Ĥ")) +((("\\" "^" "H")) ("Ĥ")) +((("\\" "^" "{" "h" "}")) ("ĥ")) +((("\\" "^" "h")) ("ĥ")) +((("\\" "~" "{" "I" "}")) ("Ĩ")) +((("\\" "~" "I")) ("Ĩ")) +((("\\" "~" "{" "\\" "i" "}")) ("ĩ")) +((("\\" "~" "i")) ("ĩ")) +((("\\" "=" "{" "I" "}")) ("Ī")) +((("\\" "=" "I")) ("Ī")) +((("\\" "=" "{" "\\" "i" "}")) ("ī")) +((("\\" "=" "i")) ("ī")) +((("\\" "u" "{" "I" "}")) ("Ĭ")) +((("\\" "u" "I")) ("Ĭ")) +((("\\" "u" "{" "\\" "i" "}")) ("ĭ")) +((("\\" "u" "i")) ("ĭ")) +((("\\" "." "{" "I" "}")) ("İ")) +((("\\" "." "I")) ("İ")) +((("\\" "i")) ("ı")) +((("\\" "^" "{" "J" "}")) ("Ĵ")) +((("\\" "^" "J")) ("Ĵ")) +((("\\" "^" "{" "\\" "j" "}")) ("ĵ")) +((("\\" "^" "j")) ("ĵ")) +((("\\" "c" "{" "K" "}")) ("Ķ")) +((("\\" "c" "K")) ("Ķ")) +((("\\" "c" "{" "k" "}")) ("ķ")) +((("\\" "c" "k")) ("ķ")) +((("\\" "'" "{" "L" "}")) ("Ĺ")) +((("\\" "'" "L")) ("Ĺ")) +((("\\" "'" "{" "l" "}")) ("ĺ")) +((("\\" "'" "l")) ("ĺ")) +((("\\" "c" "{" "L" "}")) ("Ļ")) +((("\\" "c" "L")) ("Ļ")) +((("\\" "c" "{" "l" "}")) ("ļ")) +((("\\" "c" "l")) ("ļ")) +((("\\" "L")) ("Ł")) +((("\\" "l")) ("ł")) +((("\\" "'" "{" "N" "}")) ("Ń")) +((("\\" "'" "N")) ("Ń")) +((("\\" "'" "{" "n" "}")) ("ń")) +((("\\" "'" "n")) ("ń")) +((("\\" "c" "{" "N" "}")) ("Ņ")) +((("\\" "c" "N")) ("Ņ")) +((("\\" "c" "{" "n" "}")) ("ņ")) +((("\\" "c" "n")) ("ņ")) +((("\\" "v" "{" "N" "}")) ("Ň")) +((("\\" "v" "N")) ("Ň")) +((("\\" "v" "{" "n" "}")) ("ň")) +((("\\" "v" "n")) ("ň")) +((("\\" "=" "{" "O" "}")) ("Ō")) +((("\\" "=" "O")) ("Ō")) +((("\\" "=" "{" "o" "}")) ("ō")) +((("\\" "=" "o")) ("ō")) +((("\\" "u" "{" "O" "}")) ("Ŏ")) +((("\\" "u" "O")) ("Ŏ")) +((("\\" "u" "{" "o" "}")) ("ŏ")) +((("\\" "u" "o")) ("ŏ")) +((("\\" "H" "{" "O" "}")) ("Ő")) +((("\\" "H" "O")) ("Ő")) +((("\\" "U" "{" "o" "}")) ("ő")) +((("\\" "U" "o")) ("ő")) +((("\\" "O" "E")) ("Œ")) +((("\\" "o" "e")) ("œ")) +((("\\" "'" "{" "R" "}")) ("Ŕ")) +((("\\" "'" "R")) ("Ŕ")) +((("\\" "'" "{" "r" "}")) ("ŕ")) +((("\\" "'" "r")) ("ŕ")) +((("\\" "c" "{" "R" "}")) ("Ŗ")) +((("\\" "c" "R")) ("Ŗ")) +((("\\" "c" "{" "r" "}")) ("ŗ")) +((("\\" "c" "r")) ("ŗ")) +((("\\" "v" "{" "R" "}")) ("Ř")) +((("\\" "v" "R")) ("Ř")) +((("\\" "v" "{" "r" "}")) ("ř")) +((("\\" "v" "r")) ("ř")) +((("\\" "'" "{" "S" "}")) ("Ś")) +((("\\" "'" "S")) ("Ś")) +((("\\" "'" "{" "s" "}")) ("ś")) +((("\\" "'" "s")) ("ś")) +((("\\" "^" "{" "S" "}")) ("Ŝ")) +((("\\" "^" "S")) ("Ŝ")) +((("\\" "^" "{" "s" "}")) ("ŝ")) +((("\\" "^" "s")) ("ŝ")) +((("\\" "c" "{" "S" "}")) ("Ş")) +((("\\" "c" "S")) ("Ş")) +((("\\" "c" "{" "s" "}")) ("ş")) +((("\\" "c" "s")) ("ş")) +((("\\" "v" "{" "S" "}")) ("Š")) +((("\\" "v" "S")) ("Š")) +((("\\" "v" "{" "s" "}")) ("š")) +((("\\" "v" "s")) ("š")) +((("\\" "c" "{" "T" "}")) ("Ţ")) +((("\\" "c" "T")) ("Ţ")) +((("\\" "c" "{" "t" "}")) ("ţ")) +((("\\" "c" "t")) ("ţ")) +((("\\" "v" "{" "T" "}")) ("Ť")) +((("\\" "v" "T")) ("Ť")) +((("\\" "v" "{" "t" "}")) ("ť")) +((("\\" "v" "t")) ("ť")) +((("\\" "~" "{" "U" "}")) ("Ũ")) +((("\\" "~" "U")) ("Ũ")) +((("\\" "~" "{" "u" "}")) ("ũ")) +((("\\" "~" "u")) ("ũ")) +((("\\" "=" "{" "U" "}")) ("Ū")) +((("\\" "=" "U")) ("Ū")) +((("\\" "=" "{" "u" "}")) ("ū")) +((("\\" "=" "u")) ("ū")) +((("\\" "u" "{" "U" "}")) ("Ŭ")) +((("\\" "u" "U")) ("Ŭ")) +((("\\" "u" "{" "u" "}")) ("ŭ")) +((("\\" "u" "u")) ("ŭ")) +((("\\" "H" "{" "U" "}")) ("Ű")) +((("\\" "H" "U")) ("Ű")) +((("\\" "H" "{" "u" "}")) ("ű")) +((("\\" "H" "u")) ("ű")) +((("\\" "^" "{" "W" "}")) ("Ŵ")) +((("\\" "^" "W")) ("Ŵ")) +((("\\" "^" "{" "w" "}")) ("ŵ")) +((("\\" "^" "w")) ("ŵ")) +((("\\" "^" "{" "Y" "}")) ("Ŷ")) +((("\\" "^" "Y")) ("Ŷ")) +((("\\" "^" "{" "y" "}")) ("ŷ")) +((("\\" "^" "y")) ("ŷ")) +((("\\" "\"" "{" "Y" "}")) ("Ÿ")) +((("\\" "\"" "Y")) ("Ÿ")) +((("\\" "'" "{" "Z" "}")) ("Ź")) +((("\\" "'" "Z")) ("Ź")) +((("\\" "'" "{" "z" "}")) ("ź")) +((("\\" "'" "z")) ("ź")) +((("\\" "." "{" "Z" "}")) ("Ż")) +((("\\" "." "Z")) ("Ż")) +((("\\" "." "{" "z" "}")) ("ż")) +((("\\" "." "z")) ("ż")) +((("\\" "v" "{" "Z" "}")) ("Ž")) +((("\\" "v" "Z")) ("Ž")) +((("\\" "v" "{" "z" "}")) ("ž")) +((("\\" "v" "z")) ("ž")) +((("\\" "v" "{" "A" "}")) ("Ǎ")) +((("\\" "v" "A")) ("Ǎ")) +((("\\" "v" "{" "a" "}")) ("ǎ")) +((("\\" "v" "a")) ("ǎ")) +((("\\" "v" "{" "I" "}")) ("Ǐ")) +((("\\" "v" "I")) ("Ǐ")) +((("\\" "v" "{" "\\" "i" "}")) ("ǐ")) +((("\\" "v" "i")) ("ǐ")) +((("\\" "v" "{" "O" "}")) ("Ǒ")) +((("\\" "v" "O")) ("Ǒ")) +((("\\" "v" "{" "o" "}")) ("ǒ")) +((("\\" "v" "o")) ("ǒ")) +((("\\" "v" "{" "U" "}")) ("Ǔ")) +((("\\" "v" "U")) ("Ǔ")) +((("\\" "v" "{" "u" "}")) ("ǔ")) +((("\\" "v" "u")) ("ǔ")) +((("\\" "=" "{" "\\" "A" "E" "}")) ("Ǣ")) +((("\\" "=" "\\" "A" "E")) ("Ǣ")) +((("\\" "=" "{" "\\" "a" "e" "}")) ("ǣ")) +((("\\" "=" "\\" "a" "e")) ("ǣ")) +((("\\" "v" "{" "G" "}")) ("Ǧ")) +((("\\" "v" "G")) ("Ǧ")) +((("\\" "v" "{" "g" "}")) ("ǧ")) +((("\\" "v" "g")) ("ǧ")) +((("\\" "v" "{" "K" "}")) ("Ǩ")) +((("\\" "v" "K")) ("Ǩ")) +((("\\" "v" "{" "k" "}")) ("ǩ")) +((("\\" "v" "k")) ("ǩ")) +((("\\" "v" "{" "\\" "j" "}")) ("ǰ")) +((("\\" "v" "j")) ("ǰ")) +((("\\" "'" "{" "G" "}")) ("Ǵ")) +((("\\" "'" "G")) ("Ǵ")) +((("\\" "'" "{" "g" "}")) ("ǵ")) +((("\\" "'" "g")) ("ǵ")) +((("\\" "`" "{" "N" "}")) ("Ǹ")) +((("\\" "`" "N")) ("Ǹ")) +((("\\" "`" "{" "n" "}")) ("ǹ")) +((("\\" "`" "n")) ("ǹ")) +((("\\" "'" "{" "\\" "A" "E" "}")) ("Ǽ")) +((("\\" "'" "\\" "A" "E")) ("Ǽ")) +((("\\" "'" "{" "\\" "a" "e" "}")) ("ǽ")) +((("\\" "'" "\\" "a" "e")) ("ǽ")) +((("\\" "'" "{" "\\" "O" "}")) ("Ǿ")) +((("\\" "'" "\\" "O")) ("Ǿ")) +((("\\" "'" "{" "\\" "o" "}")) ("ǿ")) +((("\\" "'" "\\" "o")) ("ǿ")) +((("\\" "v" "{" "H" "}")) ("Ȟ")) +((("\\" "v" "H")) ("Ȟ")) +((("\\" "v" "{" "h" "}")) ("ȟ")) +((("\\" "v" "h")) ("ȟ")) +((("\\" "." "{" "A" "}")) ("Ȧ")) +((("\\" "." "A")) ("Ȧ")) +((("\\" "." "{" "a" "}")) ("ȧ")) +((("\\" "." "a")) ("ȧ")) +((("\\" "c" "{" "E" "}")) ("Ȩ")) +((("\\" "c" "E")) ("Ȩ")) +((("\\" "c" "{" "e" "}")) ("ȩ")) +((("\\" "c" "e")) ("ȩ")) +((("\\" "." "{" "O" "}")) ("Ȯ")) +((("\\" "." "O")) ("Ȯ")) +((("\\" "." "{" "o" "}")) ("ȯ")) +((("\\" "." "o")) ("ȯ")) +((("\\" "=" "{" "Y" "}")) ("Ȳ")) +((("\\" "=" "Y")) ("Ȳ")) +((("\\" "=" "{" "y" "}")) ("ȳ")) +((("\\" "=" "y")) ("ȳ")) +((("\\" "v" "{" "}")) ("ˇ")) +((("\\" "u" "{" "}")) ("˘")) +((("\\" "." "{" "}")) ("˙")) +((("\\" "~" "{" "}")) ("˜")) +((("\\" "H" "{" "}")) ("˝")) +((("\\" "'")) ("́")) +((("\\" "'" "K")) ("Ḱ")) +((("\\" "'" "M")) ("Ḿ")) +((("\\" "'" "P")) ("Ṕ")) +((("\\" "'" "W")) ("Ẃ")) +((("\\" "'" "k")) ("ḱ")) +((("\\" "'" "m")) ("ḿ")) +((("\\" "'" "p")) ("ṕ")) +((("\\" "'" "w")) ("ẃ")) +((("\\" ",")) (" ")) +((("\\" ".")) ("̇")) +((("\\" "." "B")) ("Ḃ")) +((("\\" "." "D")) ("Ḋ")) +((("\\" "." "F")) ("Ḟ")) +((("\\" "." "H")) ("Ḣ")) +((("\\" "." "M")) ("Ṁ")) +((("\\" "." "N")) ("Ṅ")) +((("\\" "." "P")) ("Ṗ")) +((("\\" "." "R")) ("Ṙ")) +((("\\" "." "S")) ("Ṡ")) +((("\\" "." "T")) ("Ṫ")) +((("\\" "." "W")) ("Ẇ")) +((("\\" "." "X")) ("Ẋ")) +((("\\" "." "Y")) ("Ẏ")) +((("\\" "." "b")) ("ḃ")) +((("\\" "." "d")) ("ḋ")) +((("\\" "." "e")) ("ė")) +((("\\" "." "f")) ("ḟ")) +((("\\" "." "h")) ("ḣ")) +((("\\" "." "m")) ("ṁ")) +((("\\" "." "n")) ("ṅ")) +((("\\" "." "p")) ("ṗ")) +((("\\" "." "r")) ("ṙ")) +((("\\" "." "s")) ("ṡ")) +((("\\" "." "t")) ("ṫ")) +((("\\" "." "w")) ("ẇ")) +((("\\" "." "x")) ("ẋ")) +((("\\" "." "y")) ("ẏ")) +((("\\" "/")) ("")) +((("\\" ":")) (" ")) +((("\\" ";")) (" ")) +((("\\" "=")) ("̄")) +((("\\" "=" "G")) ("Ḡ")) +((("\\" "=" "g")) ("ḡ")) +((("^" "(")) ("⁽")) +((("^" ")")) ("⁾")) +((("^" "+")) ("⁺")) +((("^" "-")) ("⁻")) +((("^" "0")) ("⁰")) +((("^" "1")) ("¹")) +((("^" "2")) ("²")) +((("^" "3")) ("³")) +((("^" "4")) ("⁴")) +((("^" "5")) ("⁵")) +((("^" "6")) ("⁶")) +((("^" "7")) ("⁷")) +((("^" "8")) ("⁸")) +((("^" "9")) ("⁹")) +((("^" "=")) ("⁼")) +((("^" "\\" "g" "a" "m" "m" "a")) ("ˠ")) +((("^" "h")) ("ʰ")) +((("^" "j")) ("ʲ")) +((("^" "l")) ("ˡ")) +((("^" "n")) ("ⁿ")) +((("^" "o")) ("º")) +((("^" "r")) ("ʳ")) +((("^" "s")) ("ˢ")) +((("^" "w")) ("ʷ")) +((("^" "x")) ("ˣ")) +((("^" "y")) ("ʸ")) +((("^" "{" "S" "M" "}")) ("℠")) +((("^" "{" "T" "E" "L" "}")) ("℡")) +((("^" "{" "T" "M" "}")) ("™")) +((("_" "(")) ("₍")) +((("_" ")")) ("₎")) +((("_" "+")) ("₊")) +((("_" "-")) ("₋")) +((("_" "0")) ("₀")) +((("_" "1")) ("₁")) +((("_" "2")) ("₂")) +((("_" "3")) ("₃")) +((("_" "4")) ("₄")) +((("_" "5")) ("₅")) +((("_" "6")) ("₆")) +((("_" "7")) ("₇")) +((("_" "8")) ("₈")) +((("_" "9")) ("₉")) +((("_" "=")) ("₌")) +((("\\" "~")) ("̃")) +((("\\" "~" "E")) ("Ẽ")) +((("\\" "~" "V")) ("Ṽ")) +((("\\" "~" "Y")) ("Ỹ")) +((("\\" "~" "e")) ("ẽ")) +((("\\" "~" "v")) ("ṽ")) +((("\\" "~" "y")) ("ỹ")) +((("\\" "\"")) ("̈")) +((("\\" "\"" "H")) ("Ḧ")) +((("\\" "\"" "W")) ("Ẅ")) +((("\\" "\"" "X")) ("Ẍ")) +((("\\" "\"" "h")) ("ḧ")) +((("\\" "\"" "t")) ("ẗ")) +((("\\" "\"" "w")) ("ẅ")) +((("\\" "\"" "x")) ("ẍ")) +((("\\" "^")) ("̂")) +((("\\" "^" "Z")) ("Ẑ")) +((("\\" "^" "z")) ("ẑ")) +((("\\" "`")) ("̀")) +((("\\" "`" "W")) ("Ẁ")) +((("\\" "`" "Y")) ("Ỳ")) +((("\\" "`" "w")) ("ẁ")) +((("\\" "`" "y")) ("ỳ")) +((("\\" "b")) ("̱")) +((("\\" "c")) ("̧")) +((("\\" "c" "{" "D" "}")) ("Ḑ")) +((("\\" "c" "{" "H" "}")) ("Ḩ")) +((("\\" "c" "{" "d" "}")) ("ḑ")) +((("\\" "c" "{" "h" "}")) ("ḩ")) +((("\\" "d")) ("̣")) +((("\\" "d" "{" "A" "}")) ("Ạ")) +((("\\" "d" "{" "B" "}")) ("Ḅ")) +((("\\" "d" "{" "D" "}")) ("Ḍ")) +((("\\" "d" "{" "E" "}")) ("Ẹ")) +((("\\" "d" "{" "H" "}")) ("Ḥ")) +((("\\" "d" "{" "I" "}")) ("Ị")) +((("\\" "d" "{" "K" "}")) ("Ḳ")) +((("\\" "d" "{" "L" "}")) ("Ḷ")) +((("\\" "d" "{" "M" "}")) ("Ṃ")) +((("\\" "d" "{" "N" "}")) ("Ṇ")) +((("\\" "d" "{" "O" "}")) ("Ọ")) +((("\\" "d" "{" "R" "}")) ("Ṛ")) +((("\\" "d" "{" "S" "}")) ("Ṣ")) +((("\\" "d" "{" "T" "}")) ("Ṭ")) +((("\\" "d" "{" "U" "}")) ("Ụ")) +((("\\" "d" "{" "V" "}")) ("Ṿ")) +((("\\" "d" "{" "W" "}")) ("Ẉ")) +((("\\" "d" "{" "Y" "}")) ("Ỵ")) +((("\\" "d" "{" "Z" "}")) ("Ẓ")) +((("\\" "d" "{" "a" "}")) ("ạ")) +((("\\" "d" "{" "b" "}")) ("ḅ")) +((("\\" "d" "{" "d" "}")) ("ḍ")) +((("\\" "d" "{" "e" "}")) ("ẹ")) +((("\\" "d" "{" "h" "}")) ("ḥ")) +((("\\" "d" "{" "i" "}")) ("ị")) +((("\\" "d" "{" "k" "}")) ("ḳ")) +((("\\" "d" "{" "l" "}")) ("ḷ")) +((("\\" "d" "{" "m" "}")) ("ṃ")) +((("\\" "d" "{" "n" "}")) ("ṇ")) +((("\\" "d" "{" "o" "}")) ("ọ")) +((("\\" "d" "{" "r" "}")) ("ṛ")) +((("\\" "d" "{" "s" "}")) ("ṣ")) +((("\\" "d" "{" "t" "}")) ("ṭ")) +((("\\" "d" "{" "u" "}")) ("ụ")) +((("\\" "d" "{" "v" "}")) ("ṿ")) +((("\\" "d" "{" "w" "}")) ("ẉ")) +((("\\" "d" "{" "y" "}")) ("ỵ")) +((("\\" "d" "{" "z" "}")) ("ẓ")) +((("\\" "r" "q")) ("’")) +((("\\" "u")) ("̆")) +((("\\" "v")) ("̌")) +((("\\" "v" "{" "L" "}")) ("Ľ")) +((("\\" "v" "{" "i" "}")) ("ǐ")) +((("\\" "v" "{" "j" "}")) ("ǰ")) +((("\\" "v" "{" "l" "}")) ("ľ")) +((("\\" "y" "e" "n")) ("¥")) +((("\\" "B" "o" "x")) ("□")) +((("\\" "B" "u" "m" "p" "e" "q")) ("≎")) +((("\\" "C" "a" "p")) ("⋒")) +((("\\" "C" "u" "p")) ("⋓")) +((("\\" "D" "e" "l" "t" "a")) ("Δ")) +((("\\" "D" "i" "a" "m" "o" "n" "d")) ("◇")) +((("\\" "D" "o" "w" "n" "a" "r" "r" "o" "w")) ("⇓")) +((("\\" "G" "a" "m" "m" "a")) ("Γ")) +((("\\" "H")) ("̋")) +((("\\" "H" "{" "o" "}")) ("ő")) +((("\\" "I" "m")) ("ℑ")) +((("\\" "J" "o" "i" "n")) ("⋈")) +((("\\" "L" "a" "m" "b" "d" "a")) ("Λ")) +((("\\" "L" "e" "f" "t" "a" "r" "r" "o" "w")) ("⇐")) +((("\\" "L" "e" "f" "t" "r" "i" "g" "h" "t" "a" "r" "r" "o" "w")) ("⇔")) +((("\\" "L" "l")) ("⋘")) +((("\\" "L" "l" "e" "f" "t" "a" "r" "r" "o" "w")) ("⇚")) +((("\\" "L" "o" "n" "g" "l" "e" "f" "t" "a" "r" "r" "o" "w")) ("⇐")) +((("\\" "L" "o" "n" "g" "l" "e" "f" "t" "r" "i" "g" "h" "t" "a" "r" "r" "o" "w")) ("⇔")) +((("\\" "L" "o" "n" "g" "r" "i" "g" "h" "t" "a" "r" "r" "o" "w")) ("⇒")) +((("\\" "L" "s" "h")) ("↰")) +((("\\" "O" "m" "e" "g" "a")) ("Ω")) +((("\\" "P" "h" "i")) ("Φ")) +((("\\" "P" "i")) ("Π")) +((("\\" "P" "s" "i")) ("Ψ")) +((("\\" "R" "e")) ("ℜ")) +((("\\" "R" "i" "g" "h" "t" "a" "r" "r" "o" "w")) ("⇒")) +((("\\" "R" "r" "i" "g" "h" "t" "a" "r" "r" "o" "w")) ("⇛")) +((("\\" "R" "s" "h")) ("↱")) +((("\\" "S" "i" "g" "m" "a")) ("Σ")) +((("\\" "S" "u" "b" "s" "e" "t")) ("⋐")) +((("\\" "S" "u" "p" "s" "e" "t")) ("⋑")) +((("\\" "T" "h" "e" "t" "a")) ("Θ")) +((("\\" "U" "p" "a" "r" "r" "o" "w")) ("⇑")) +((("\\" "U" "p" "d" "o" "w" "n" "a" "r" "r" "o" "w")) ("⇕")) +((("\\" "U" "p" "s" "i" "l" "o" "n")) ("Υ")) +((("\\" "V" "d" "a" "s" "h")) ("⊩")) +((("\\" "V" "e" "r" "t")) ("‖")) +((("\\" "V" "v" "d" "a" "s" "h")) ("⊪")) +((("\\" "X" "i")) ("Ξ")) +((("\\" "a" "l" "e" "p" "h")) ("א")) +((("\\" "a" "l" "p" "h" "a")) ("α")) +((("\\" "a" "m" "a" "l" "g")) ("∐")) +((("\\" "a" "n" "g" "l" "e")) ("∠")) +((("\\" "a" "p" "p" "r" "o" "x")) ("≈")) +((("\\" "a" "p" "p" "r" "o" "x" "e" "q")) ("≊")) +((("\\" "a" "s" "t")) ("∗")) +((("\\" "a" "s" "y" "m" "p")) ("≍")) +((("\\" "b" "a" "c" "k" "c" "o" "n" "g")) ("≌")) +((("\\" "b" "a" "c" "k" "e" "p" "s" "i" "l" "o" "n")) ("∍")) +((("\\" "b" "a" "c" "k" "p" "r" "i" "m" "e")) ("‵")) +((("\\" "b" "a" "c" "k" "s" "i" "m")) ("∽")) +((("\\" "b" "a" "c" "k" "s" "i" "m" "e" "q")) ("⋍")) +((("\\" "b" "a" "c" "k" "s" "l" "a" "s" "h")) ("\\")) +((("\\" "b" "a" "r" "w" "e" "d" "g" "e")) ("⊼")) +((("\\" "b" "e" "c" "a" "u" "s" "e")) ("∵")) +((("\\" "b" "e" "t" "a")) ("β")) +((("\\" "b" "e" "t" "h")) ("ב")) +((("\\" "b" "e" "t" "w" "e" "e" "n")) ("≬")) +((("\\" "b" "i" "g" "c" "a" "p")) ("⋂")) +((("\\" "b" "i" "g" "c" "i" "r" "c")) ("◯")) +((("\\" "b" "i" "g" "c" "u" "p")) ("⋃")) +((("\\" "b" "i" "g" "s" "t" "a" "r")) ("★")) +((("\\" "b" "i" "g" "t" "r" "i" "a" "n" "g" "l" "e" "d" "o" "w" "n")) ("▽")) +((("\\" "b" "i" "g" "t" "r" "i" "a" "n" "g" "l" "e" "u" "p")) ("△")) +((("\\" "b" "i" "g" "v" "e" "e")) ("⋁")) +((("\\" "b" "i" "g" "w" "e" "d" "g" "e")) ("⋀")) +((("\\" "b" "l" "a" "c" "k" "l" "o" "z" "e" "n" "g" "e")) ("✦")) +((("\\" "b" "l" "a" "c" "k" "s" "q" "u" "a" "r" "e")) ("▪")) +((("\\" "b" "l" "a" "c" "k" "t" "r" "i" "a" "n" "g" "l" "e")) ("▴")) +((("\\" "b" "l" "a" "c" "k" "t" "r" "i" "a" "n" "g" "l" "e" "d" "o" "w" "n")) ("▾")) +((("\\" "b" "l" "a" "c" "k" "t" "r" "i" "a" "n" "g" "l" "e" "l" "e" "f" "t")) ("◂")) +((("\\" "b" "l" "a" "c" "k" "t" "r" "i" "a" "n" "g" "l" "e" "r" "i" "g" "h" "t")) ("▸")) +((("\\" "b" "o" "t")) ("⊥")) +((("\\" "b" "o" "w" "t" "i" "e")) ("⋈")) +((("\\" "b" "o" "x" "m" "i" "n" "u" "s")) ("⊟")) +((("\\" "b" "o" "x" "p" "l" "u" "s")) ("⊞")) +((("\\" "b" "o" "x" "t" "i" "m" "e" "s")) ("⊠")) +((("\\" "b" "u" "l" "l" "e" "t")) ("•")) +((("\\" "b" "u" "m" "p" "e" "q")) ("≏")) +((("\\" "c" "a" "p")) ("∩")) +((("\\" "c" "d" "o" "t" "s")) ("⋯")) +((("\\" "c" "e" "n" "t" "e" "r" "d" "o" "t")) ("·")) +((("\\" "c" "h" "e" "c" "k" "m" "a" "r" "k")) ("✓")) +((("\\" "c" "h" "i")) ("χ")) +((("\\" "c" "i" "r" "c")) ("○")) +((("\\" "c" "i" "r" "c" "e" "q")) ("≗")) +((("\\" "c" "i" "r" "c" "l" "e" "a" "r" "r" "o" "w" "l" "e" "f" "t")) ("↺")) +((("\\" "c" "i" "r" "c" "l" "e" "a" "r" "r" "o" "w" "r" "i" "g" "h" "t")) ("↻")) +((("\\" "c" "i" "r" "c" "l" "e" "d" "R")) ("®")) +((("\\" "c" "i" "r" "c" "l" "e" "d" "S")) ("Ⓢ")) +((("\\" "c" "i" "r" "c" "l" "e" "d" "a" "s" "t")) ("⊛")) +((("\\" "c" "i" "r" "c" "l" "e" "d" "c" "i" "r" "c")) ("⊚")) +((("\\" "c" "i" "r" "c" "l" "e" "d" "d" "a" "s" "h")) ("⊝")) +((("\\" "c" "l" "u" "b" "s" "u" "i" "t")) ("♣")) +((("\\" "c" "o" "l" "o" "n")) (":")) +((("\\" "c" "o" "l" "o" "n" "e" "q")) ("≔")) +((("\\" "c" "o" "m" "p" "l" "e" "m" "e" "n" "t")) ("∁")) +((("\\" "c" "o" "n" "g")) ("≅")) +((("\\" "c" "o" "p" "r" "o" "d")) ("∐")) +((("\\" "c" "u" "p")) ("∪")) +((("\\" "c" "u" "r" "l" "y" "e" "q" "p" "r" "e" "c")) ("⋞")) +((("\\" "c" "u" "r" "l" "y" "e" "q" "s" "u" "c" "c")) ("⋟")) +((("\\" "c" "u" "r" "l" "y" "p" "r" "e" "c" "e" "q")) ("≼")) +((("\\" "c" "u" "r" "l" "y" "v" "e" "e")) ("⋎")) +((("\\" "c" "u" "r" "l" "y" "w" "e" "d" "g" "e")) ("⋏")) +((("\\" "c" "u" "r" "v" "e" "a" "r" "r" "o" "w" "l" "e" "f" "t")) ("↶")) +((("\\" "c" "u" "r" "v" "e" "a" "r" "r" "o" "w" "r" "i" "g" "h" "t")) ("↷")) +((("\\" "d" "a" "g")) ("†")) +((("\\" "d" "a" "g" "g" "e" "r")) ("†")) +((("\\" "d" "a" "l" "e" "t" "h")) ("ד")) +((("\\" "d" "a" "s" "h" "v")) ("⊣")) +((("\\" "d" "d" "a" "g")) ("‡")) +((("\\" "d" "d" "a" "g" "g" "e" "r")) ("‡")) +((("\\" "d" "d" "o" "t" "s")) ("⋱")) +((("\\" "d" "e" "l" "t" "a")) ("δ")) +((("\\" "d" "i" "a" "m" "o" "n" "d")) ("⋄")) +((("\\" "d" "i" "a" "m" "o" "n" "d" "s" "u" "i" "t")) ("♢")) +((("\\" "d" "i" "g" "a" "m" "m" "a")) ("Ϝ")) +((("\\" "d" "i" "v" "i" "d" "e" "o" "n" "t" "i" "m" "e" "s")) ("⋇")) +((("\\" "d" "o" "t" "e" "q")) ("≐")) +((("\\" "d" "o" "t" "e" "q" "d" "o" "t")) ("≑")) +((("\\" "d" "o" "t" "p" "l" "u" "s")) ("∔")) +((("\\" "d" "o" "t" "s" "q" "u" "a" "r" "e")) ("⊡")) +((("\\" "d" "o" "w" "n" "a" "r" "r" "o" "w")) ("↓")) +((("\\" "d" "o" "w" "n" "d" "o" "w" "n" "a" "r" "r" "o" "w" "s")) ("⇊")) +((("\\" "d" "o" "w" "n" "l" "e" "f" "t" "h" "a" "r" "p" "o" "o" "n")) ("⇃")) +((("\\" "d" "o" "w" "n" "r" "i" "g" "h" "t" "h" "a" "r" "p" "o" "o" "n")) ("⇂")) +((("\\" "e" "l" "l")) ("ℓ")) +((("\\" "e" "m" "p" "t" "y" "s" "e" "t")) ("∅")) +((("\\" "e" "p" "s" "i" "l" "o" "n")) ("ε")) +((("\\" "e" "q" "c" "i" "r" "c")) ("≖")) +((("\\" "e" "q" "c" "o" "l" "o" "n")) ("≕")) +((("\\" "e" "q" "s" "l" "a" "n" "t" "g" "t" "r")) ("⋝")) +((("\\" "e" "q" "s" "l" "a" "n" "t" "l" "e" "s" "s")) ("⋜")) +((("\\" "e" "q" "u" "i" "v")) ("≡")) +((("\\" "e" "t" "a")) ("η")) +((("\\" "e" "u" "r" "o")) ("€")) +((("\\" "e" "x" "i" "s" "t" "s")) ("∃")) +((("\\" "f" "a" "l" "l" "i" "n" "g" "d" "o" "t" "s" "e" "q")) ("≒")) +((("\\" "f" "l" "a" "t")) ("♭")) +((("\\" "f" "o" "r" "a" "l" "l")) ("∀")) +((("\\" "f" "r" "a" "c" "1")) ("⅟")) +((("\\" "f" "r" "a" "c" "1" "2")) ("½")) +((("\\" "f" "r" "a" "c" "1" "3")) ("⅓")) +((("\\" "f" "r" "a" "c" "1" "4")) ("¼")) +((("\\" "f" "r" "a" "c" "1" "5")) ("⅕")) +((("\\" "f" "r" "a" "c" "1" "6")) ("⅙")) +((("\\" "f" "r" "a" "c" "1" "8")) ("⅛")) +((("\\" "f" "r" "a" "c" "2" "3")) ("⅔")) +((("\\" "f" "r" "a" "c" "2" "5")) ("⅖")) +((("\\" "f" "r" "a" "c" "3" "4")) ("¾")) +((("\\" "f" "r" "a" "c" "3" "5")) ("⅗")) +((("\\" "f" "r" "a" "c" "3" "8")) ("⅜")) +((("\\" "f" "r" "a" "c" "4" "5")) ("⅘")) +((("\\" "f" "r" "a" "c" "5" "6")) ("⅚")) +((("\\" "f" "r" "a" "c" "5" "8")) ("⅝")) +((("\\" "f" "r" "a" "c" "7" "8")) ("⅞")) +((("\\" "f" "r" "o" "w" "n")) ("⌢")) +((("\\" "g" "a" "m" "m" "a")) ("γ")) +((("\\" "g" "e")) ("≥")) +((("\\" "g" "e" "q")) ("≥")) +((("\\" "g" "e" "q" "q")) ("≧")) +((("\\" "g" "e" "q" "s" "l" "a" "n" "t")) ("≥")) +((("\\" "g" "e" "t" "s")) ("←")) +((("\\" "g" "g")) ("≫")) +((("\\" "g" "g" "g")) ("⋙")) +((("\\" "g" "i" "m" "e" "l")) ("ג")) +((("\\" "g" "n" "a" "p" "p" "r" "o" "x")) ("⋧")) +((("\\" "g" "n" "e" "q")) ("≩")) +((("\\" "g" "n" "e" "q" "q")) ("≩")) +((("\\" "g" "n" "s" "i" "m")) ("⋧")) +((("\\" "g" "t" "r" "a" "p" "p" "r" "o" "x")) ("≳")) +((("\\" "g" "t" "r" "d" "o" "t")) ("⋗")) +((("\\" "g" "t" "r" "e" "q" "l" "e" "s" "s")) ("⋛")) +((("\\" "g" "t" "r" "e" "q" "q" "l" "e" "s" "s")) ("⋛")) +((("\\" "g" "t" "r" "l" "e" "s" "s")) ("≷")) +((("\\" "g" "t" "r" "s" "i" "m")) ("≳")) +((("\\" "g" "v" "e" "r" "t" "n" "e" "q" "q")) ("≩")) +((("\\" "h" "b" "a" "r")) ("ℏ")) +((("\\" "h" "e" "a" "r" "t" "s" "u" "i" "t")) ("♥")) +((("\\" "h" "o" "o" "k" "l" "e" "f" "t" "a" "r" "r" "o" "w")) ("↩")) +((("\\" "h" "o" "o" "k" "r" "i" "g" "h" "t" "a" "r" "r" "o" "w")) ("↪")) +((("\\" "i" "f" "f")) ("⇔")) +((("\\" "i" "m" "a" "t" "h")) ("ı")) +((("\\" "i" "n")) ("∈")) +((("\\" "i" "n" "f" "t" "y")) ("∞")) +((("\\" "i" "n" "t")) ("∫")) +((("\\" "i" "n" "t" "e" "r" "c" "a" "l")) ("⊺")) +((("\\" "i" "o" "t" "a")) ("ι")) +((("\\" "k" "a" "p" "p" "a")) ("κ")) +((("\\" "l" "a" "m" "b" "d" "a")) ("λ")) +((("\\" "l" "a" "n" "g" "l" "e")) ("〈")) +((("\\" "l" "b" "r" "a" "c" "e")) ("{")) +((("\\" "l" "b" "r" "a" "c" "k")) ("[")) +((("\\" "l" "c" "e" "i" "l")) ("⌈")) +((("\\" "l" "d" "o" "t" "s")) ("…")) +((("\\" "l" "e")) ("≤")) +((("\\" "l" "e" "a" "d" "s" "t" "o")) ("↝")) +((("\\" "l" "e" "f" "t" "a" "r" "r" "o" "w")) ("←")) +((("\\" "l" "e" "f" "t" "a" "r" "r" "o" "w" "t" "a" "i" "l")) ("↢")) +((("\\" "l" "e" "f" "t" "h" "a" "r" "p" "o" "o" "n" "d" "o" "w" "n")) ("↽")) +((("\\" "l" "e" "f" "t" "h" "a" "r" "p" "o" "o" "n" "u" "p")) ("↼")) +((("\\" "l" "e" "f" "t" "l" "e" "f" "t" "a" "r" "r" "o" "w" "s")) ("⇇")) +((("\\" "l" "e" "f" "t" "p" "a" "r" "e" "n" "g" "t" "r")) ("〈")) +((("\\" "l" "e" "f" "t" "r" "i" "g" "h" "t" "a" "r" "r" "o" "w")) ("↔")) +((("\\" "l" "e" "f" "t" "r" "i" "g" "h" "t" "a" "r" "r" "o" "w" "s")) ("⇆")) +((("\\" "l" "e" "f" "t" "r" "i" "g" "h" "t" "h" "a" "r" "p" "o" "o" "n" "s")) ("⇋")) +((("\\" "l" "e" "f" "t" "r" "i" "g" "h" "t" "s" "q" "u" "i" "g" "a" "r" "r" "o" "w")) ("↭")) +((("\\" "l" "e" "f" "t" "t" "h" "r" "e" "e" "t" "i" "m" "e" "s")) ("⋋")) +((("\\" "l" "e" "q")) ("≤")) +((("\\" "l" "e" "q" "q")) ("≦")) +((("\\" "l" "e" "q" "s" "l" "a" "n" "t")) ("≤")) +((("\\" "l" "e" "s" "s" "a" "p" "p" "r" "o" "x")) ("≲")) +((("\\" "l" "e" "s" "s" "d" "o" "t")) ("⋖")) +((("\\" "l" "e" "s" "s" "e" "q" "g" "t" "r")) ("⋚")) +((("\\" "l" "e" "s" "s" "e" "q" "q" "g" "t" "r")) ("⋚")) +((("\\" "l" "e" "s" "s" "g" "t" "r")) ("≶")) +((("\\" "l" "e" "s" "s" "s" "i" "m")) ("≲")) +((("\\" "l" "f" "l" "o" "o" "r")) ("⌊")) +((("\\" "l" "h" "d")) ("◁")) +((("\\" "r" "h" "d")) ("▷")) +((("\\" "l" "l")) ("≪")) +((("\\" "l" "l" "c" "o" "r" "n" "e" "r")) ("⌞")) +((("\\" "l" "n" "a" "p" "p" "r" "o" "x")) ("⋦")) +((("\\" "l" "n" "e" "q")) ("≨")) +((("\\" "l" "n" "e" "q" "q")) ("≨")) +((("\\" "l" "n" "s" "i" "m")) ("⋦")) +((("\\" "l" "o" "n" "g" "l" "e" "f" "t" "a" "r" "r" "o" "w")) ("←")) +((("\\" "l" "o" "n" "g" "l" "e" "f" "t" "r" "i" "g" "h" "t" "a" "r" "r" "o" "w")) ("↔")) +((("\\" "l" "o" "n" "g" "m" "a" "p" "s" "t" "o")) ("↦")) +((("\\" "l" "o" "n" "g" "r" "i" "g" "h" "t" "a" "r" "r" "o" "w")) ("→")) +((("\\" "l" "o" "o" "p" "a" "r" "r" "o" "w" "l" "e" "f" "t")) ("↫")) +((("\\" "l" "o" "o" "p" "a" "r" "r" "o" "w" "r" "i" "g" "h" "t")) ("↬")) +((("\\" "l" "o" "z" "e" "n" "g" "e")) ("✧")) +((("\\" "l" "q")) ("‘")) +((("\\" "l" "r" "c" "o" "r" "n" "e" "r")) ("⌟")) +((("\\" "l" "t" "i" "m" "e" "s")) ("⋉")) +((("\\" "l" "v" "e" "r" "t" "n" "e" "q" "q")) ("≨")) +((("\\" "m" "a" "l" "t" "e" "s" "e")) ("✠")) +((("\\" "m" "a" "p" "s" "t" "o")) ("↦")) +((("\\" "m" "e" "a" "s" "u" "r" "e" "d" "a" "n" "g" "l" "e")) ("∡")) +((("\\" "m" "h" "o")) ("℧")) +((("\\" "m" "i" "d")) ("∣")) +((("\\" "m" "o" "d" "e" "l" "s")) ("⊧")) +((("\\" "m" "p")) ("∓")) +((("\\" "m" "u" "l" "t" "i" "m" "a" "p")) ("⊸")) +((("\\" "n" "L" "e" "f" "t" "a" "r" "r" "o" "w")) ("⇍")) +((("\\" "n" "L" "e" "f" "t" "r" "i" "g" "h" "t" "a" "r" "r" "o" "w")) ("⇎")) +((("\\" "n" "R" "i" "g" "h" "t" "a" "r" "r" "o" "w")) ("⇏")) +((("\\" "n" "V" "D" "a" "s" "h")) ("⊯")) +((("\\" "n" "V" "d" "a" "s" "h")) ("⊮")) +((("\\" "n" "a" "b" "l" "a")) ("∇")) +((("\\" "n" "a" "p" "p" "r" "o" "x")) ("≉")) +((("\\" "n" "a" "t" "u" "r" "a" "l")) ("♮")) +((("\\" "n" "c" "o" "n" "g")) ("≇")) +((("\\" "n" "e")) ("≠")) +((("\\" "n" "e" "a" "r" "r" "o" "w")) ("↗")) +((("\\" "n" "e" "g")) ("¬")) +((("\\" "n" "e" "q")) ("≠")) +((("\\" "n" "e" "q" "u" "i" "v")) ("≢")) +((("\\" "n" "e" "w" "l" "i" "n" "e")) ("
")) +((("\\" "n" "e" "x" "i" "s" "t" "s")) ("∄")) +((("\\" "n" "g" "e" "q")) ("≱")) +((("\\" "n" "g" "e" "q" "q")) ("≱")) +((("\\" "n" "g" "e" "q" "s" "l" "a" "n" "t")) ("≱")) +((("\\" "n" "g" "t" "r")) ("≯")) +((("\\" "n" "i")) ("∋")) +((("\\" "n" "l" "e" "f" "t" "a" "r" "r" "o" "w")) ("↚")) +((("\\" "n" "l" "e" "f" "t" "r" "i" "g" "h" "t" "a" "r" "r" "o" "w")) ("↮")) +((("\\" "n" "l" "e" "q")) ("≰")) +((("\\" "n" "l" "e" "q" "q")) ("≰")) +((("\\" "n" "l" "e" "q" "s" "l" "a" "n" "t")) ("≰")) +((("\\" "n" "l" "e" "s" "s")) ("≮")) +((("\\" "n" "m" "i" "d")) ("∤")) +((("\\" "n" "o" "t")) ("̸")) +((("\\" "n" "o" "t" "i" "n")) ("∉")) +((("\\" "n" "p" "a" "r" "a" "l" "l" "e" "l")) ("∦")) +((("\\" "n" "p" "r" "e" "c")) ("⊀")) +((("\\" "n" "p" "r" "e" "c" "e" "q")) ("⋠")) +((("\\" "n" "r" "i" "g" "h" "t" "a" "r" "r" "o" "w")) ("↛")) +((("\\" "n" "s" "h" "o" "r" "t" "m" "i" "d")) ("∤")) +((("\\" "n" "s" "h" "o" "r" "t" "p" "a" "r" "a" "l" "l" "e" "l")) ("∦")) +((("\\" "n" "s" "i" "m")) ("≁")) +((("\\" "n" "s" "i" "m" "e" "q")) ("≄")) +((("\\" "n" "s" "u" "b" "s" "e" "t")) ("⊄")) +((("\\" "n" "s" "u" "b" "s" "e" "t" "e" "q")) ("⊈")) +((("\\" "n" "s" "u" "b" "s" "e" "t" "e" "q" "q")) ("⊈")) +((("\\" "n" "s" "u" "c" "c")) ("⊁")) +((("\\" "n" "s" "u" "c" "c" "e" "q")) ("⋡")) +((("\\" "n" "s" "u" "p" "s" "e" "t")) ("⊅")) +((("\\" "n" "s" "u" "p" "s" "e" "t" "e" "q")) ("⊉")) +((("\\" "n" "s" "u" "p" "s" "e" "t" "e" "q" "q")) ("⊉")) +((("\\" "n" "t" "r" "i" "a" "n" "g" "l" "e" "l" "e" "f" "t")) ("⋪")) +((("\\" "n" "t" "r" "i" "a" "n" "g" "l" "e" "l" "e" "f" "t" "e" "q")) ("⋬")) +((("\\" "n" "t" "r" "i" "a" "n" "g" "l" "e" "r" "i" "g" "h" "t")) ("⋫")) +((("\\" "n" "t" "r" "i" "a" "n" "g" "l" "e" "r" "i" "g" "h" "t" "e" "q")) ("⋭")) +((("\\" "n" "u")) ("ν")) +((("\\" "n" "v" "D" "a" "s" "h")) ("⊭")) +((("\\" "n" "v" "d" "a" "s" "h")) ("⊬")) +((("\\" "n" "w" "a" "r" "r" "o" "w")) ("↖")) +((("\\" "o" "d" "o" "t")) ("⊙")) +((("\\" "o" "i" "n" "t")) ("∮")) +((("\\" "o" "m" "e" "g" "a")) ("ω")) +((("\\" "o" "m" "i" "n" "u" "s")) ("⊖")) +((("\\" "o" "p" "l" "u" "s")) ("⊕")) +((("\\" "o" "s" "l" "a" "s" "h")) ("⊘")) +((("\\" "o" "t" "i" "m" "e" "s")) ("⊗")) +((("\\" "p" "a" "r")) ("
")) +((("\\" "p" "a" "r" "a" "l" "l" "e" "l")) ("∥")) +((("\\" "p" "a" "r" "t" "i" "a" "l")) ("∂")) +((("\\" "p" "e" "r" "p")) ("⊥")) +((("\\" "p" "h" "i")) ("φ")) +((("\\" "p" "i")) ("π")) +((("\\" "p" "i" "t" "c" "h" "f" "o" "r" "k")) ("⋔")) +((("\\" "p" "r" "e" "c")) ("≺")) +((("\\" "p" "r" "e" "c" "a" "p" "p" "r" "o" "x")) ("≾")) +((("\\" "p" "r" "e" "c" "e" "q")) ("≼")) +((("\\" "p" "r" "e" "c" "n" "a" "p" "p" "r" "o" "x")) ("⋨")) +((("\\" "p" "r" "e" "c" "n" "s" "i" "m")) ("⋨")) +((("\\" "p" "r" "e" "c" "s" "i" "m")) ("≾")) +((("\\" "p" "r" "i" "m" "e")) ("′")) +((("\\" "p" "r" "o" "d")) ("∏")) +((("\\" "p" "r" "o" "p" "t" "o")) ("∝")) +((("\\" "p" "s" "i")) ("ψ")) +((("\\" "q" "e" "d")) ("∎")) +((("\\" "q" "u" "a" "d")) (" ")) +((("\\" "r" "a" "n" "g" "l" "e")) ("〉")) +((("\\" "r" "b" "r" "a" "c" "e")) ("}")) +((("\\" "r" "b" "r" "a" "c" "k")) ("]")) +((("\\" "r" "c" "e" "i" "l")) ("⌉")) +((("\\" "r" "f" "l" "o" "o" "r")) ("⌋")) +((("\\" "r" "i" "g" "h" "t" "a" "r" "r" "o" "w")) ("→")) +((("\\" "r" "i" "g" "h" "t" "a" "r" "r" "o" "w" "t" "a" "i" "l")) ("↣")) +((("\\" "r" "i" "g" "h" "t" "h" "a" "r" "p" "o" "o" "n" "d" "o" "w" "n")) ("⇁")) +((("\\" "r" "i" "g" "h" "t" "h" "a" "r" "p" "o" "o" "n" "u" "p")) ("⇀")) +((("\\" "r" "i" "g" "h" "t" "l" "e" "f" "t" "a" "r" "r" "o" "w" "s")) ("⇄")) +((("\\" "r" "i" "g" "h" "t" "l" "e" "f" "t" "h" "a" "r" "p" "o" "o" "n" "s")) ("⇌")) +((("\\" "r" "i" "g" "h" "t" "p" "a" "r" "e" "n" "g" "t" "r")) ("〉")) +((("\\" "r" "i" "g" "h" "t" "r" "i" "g" "h" "t" "a" "r" "r" "o" "w" "s")) ("⇉")) +((("\\" "r" "i" "g" "h" "t" "t" "h" "r" "e" "e" "t" "i" "m" "e" "s")) ("⋌")) +((("\\" "r" "i" "s" "i" "n" "g" "d" "o" "t" "s" "e" "q")) ("≓")) +((("\\" "r" "t" "i" "m" "e" "s")) ("⋊")) +((("\\" "s" "b" "s")) ("﹨")) +((("\\" "s" "e" "a" "r" "r" "o" "w")) ("↘")) +((("\\" "s" "e" "t" "m" "i" "n" "u" "s")) ("∖")) +((("\\" "s" "h" "a" "r" "p")) ("♯")) +((("\\" "s" "h" "o" "r" "t" "m" "i" "d")) ("∣")) +((("\\" "s" "h" "o" "r" "t" "p" "a" "r" "a" "l" "l" "e" "l")) ("∥")) +((("\\" "s" "i" "g" "m" "a")) ("σ")) +((("\\" "s" "i" "m")) ("∼")) +((("\\" "s" "i" "m" "e" "q")) ("≃")) +((("\\" "s" "m" "a" "l" "l" "a" "m" "a" "l" "g")) ("∐")) +((("\\" "s" "m" "a" "l" "l" "s" "e" "t" "m" "i" "n" "u" "s")) ("∖")) +((("\\" "s" "m" "a" "l" "l" "s" "m" "i" "l" "e")) ("⌣")) +((("\\" "s" "m" "i" "l" "e")) ("⌣")) +((("\\" "s" "p" "a" "d" "e" "s" "u" "i" "t")) ("♠")) +((("\\" "s" "p" "h" "e" "r" "i" "c" "a" "l" "a" "n" "g" "l" "e")) ("∢")) +((("\\" "s" "q" "c" "a" "p")) ("⊓")) +((("\\" "s" "q" "c" "u" "p")) ("⊔")) +((("\\" "s" "q" "s" "u" "b" "s" "e" "t")) ("⊏")) +((("\\" "s" "q" "s" "u" "b" "s" "e" "t" "e" "q")) ("⊑")) +((("\\" "s" "q" "s" "u" "p" "s" "e" "t")) ("⊐")) +((("\\" "s" "q" "s" "u" "p" "s" "e" "t" "e" "q")) ("⊒")) +((("\\" "s" "q" "u" "a" "r" "e")) ("□")) +((("\\" "s" "q" "u" "i" "g" "a" "r" "r" "o" "w" "r" "i" "g" "h" "t")) ("⇝")) +((("\\" "s" "t" "a" "r")) ("⋆")) +((("\\" "s" "t" "r" "a" "i" "g" "h" "t" "p" "h" "i")) ("φ")) +((("\\" "s" "u" "b" "s" "e" "t")) ("⊂")) +((("\\" "s" "u" "b" "s" "e" "t" "e" "q")) ("⊆")) +((("\\" "s" "u" "b" "s" "e" "t" "e" "q" "q")) ("⊆")) +((("\\" "s" "u" "b" "s" "e" "t" "n" "e" "q")) ("⊊")) +((("\\" "s" "u" "b" "s" "e" "t" "n" "e" "q" "q")) ("⊊")) +((("\\" "s" "u" "c" "c")) ("≻")) +((("\\" "s" "u" "c" "c" "a" "p" "p" "r" "o" "x")) ("≿")) +((("\\" "s" "u" "c" "c" "c" "u" "r" "l" "y" "e" "q")) ("≽")) +((("\\" "s" "u" "c" "c" "e" "q")) ("≽")) +((("\\" "s" "u" "c" "c" "n" "a" "p" "p" "r" "o" "x")) ("⋩")) +((("\\" "s" "u" "c" "c" "n" "s" "i" "m")) ("⋩")) +((("\\" "s" "u" "c" "c" "s" "i" "m")) ("≿")) +((("\\" "s" "u" "m")) ("∑")) +((("\\" "s" "u" "p" "s" "e" "t")) ("⊃")) +((("\\" "s" "u" "p" "s" "e" "t" "e" "q")) ("⊇")) +((("\\" "s" "u" "p" "s" "e" "t" "e" "q" "q")) ("⊇")) +((("\\" "s" "u" "p" "s" "e" "t" "n" "e" "q")) ("⊋")) +((("\\" "s" "u" "p" "s" "e" "t" "n" "e" "q" "q")) ("⊋")) +((("\\" "s" "u" "r" "d")) ("√")) +((("\\" "s" "w" "a" "r" "r" "o" "w")) ("↙")) +((("\\" "t" "a" "u")) ("τ")) +((("\\" "t" "h" "e" "r" "e" "f" "o" "r" "e")) ("∴")) +((("\\" "t" "h" "e" "t" "a")) ("θ")) +((("\\" "t" "h" "i" "c" "k" "a" "p" "p" "r" "o" "x")) ("≈")) +((("\\" "t" "h" "i" "c" "k" "s" "i" "m")) ("∼")) +((("\\" "t" "o")) ("→")) +((("\\" "t" "o" "p")) ("⊤")) +((("\\" "t" "r" "i" "a" "n" "g" "l" "e")) ("▵")) +((("\\" "t" "r" "i" "a" "n" "g" "l" "e" "d" "o" "w" "n")) ("▿")) +((("\\" "t" "r" "i" "a" "n" "g" "l" "e" "l" "e" "f" "t")) ("◃")) +((("\\" "t" "r" "i" "a" "n" "g" "l" "e" "l" "e" "f" "t" "e" "q")) ("⊴")) +((("\\" "t" "r" "i" "a" "n" "g" "l" "e" "q")) ("≜")) +((("\\" "t" "r" "i" "a" "n" "g" "l" "e" "r" "i" "g" "h" "t")) ("▹")) +((("\\" "t" "r" "i" "a" "n" "g" "l" "e" "r" "i" "g" "h" "t" "e" "q")) ("⊵")) +((("\\" "t" "w" "o" "h" "e" "a" "d" "l" "e" "f" "t" "a" "r" "r" "o" "w")) ("↞")) +((("\\" "t" "w" "o" "h" "e" "a" "d" "r" "i" "g" "h" "t" "a" "r" "r" "o" "w")) ("↠")) +((("\\" "u" "l" "c" "o" "r" "n" "e" "r")) ("⌜")) +((("\\" "u" "p" "a" "r" "r" "o" "w")) ("↑")) +((("\\" "u" "p" "d" "o" "w" "n" "a" "r" "r" "o" "w")) ("↕")) +((("\\" "u" "p" "l" "e" "f" "t" "h" "a" "r" "p" "o" "o" "n")) ("↿")) +((("\\" "u" "p" "l" "u" "s")) ("⊎")) +((("\\" "u" "p" "r" "i" "g" "h" "t" "h" "a" "r" "p" "o" "o" "n")) ("↾")) +((("\\" "u" "p" "s" "i" "l" "o" "n")) ("υ")) +((("\\" "u" "p" "u" "p" "a" "r" "r" "o" "w" "s")) ("⇈")) +((("\\" "u" "r" "c" "o" "r" "n" "e" "r")) ("⌝")) +((("\\" "u" "{" "i" "}")) ("ĭ")) +((("\\" "v" "D" "a" "s" "h")) ("⊨")) +((("\\" "v" "a" "r" "k" "a" "p" "p" "a")) ("ϰ")) +((("\\" "v" "a" "r" "p" "h" "i")) ("ϕ")) +((("\\" "v" "a" "r" "p" "i")) ("ϖ")) +((("\\" "v" "a" "r" "p" "r" "i" "m" "e")) ("′")) +((("\\" "v" "a" "r" "p" "r" "o" "p" "t" "o")) ("∝")) +((("\\" "v" "a" "r" "r" "h" "o")) ("ϱ")) +((("\\" "v" "a" "r" "s" "i" "g" "m" "a")) ("ς")) +((("\\" "v" "a" "r" "t" "h" "e" "t" "a")) ("ϑ")) +((("\\" "v" "a" "r" "t" "r" "i" "a" "n" "g" "l" "e" "l" "e" "f" "t")) ("⊲")) +((("\\" "v" "a" "r" "t" "r" "i" "a" "n" "g" "l" "e" "r" "i" "g" "h" "t")) ("⊳")) +((("\\" "v" "d" "a" "s" "h")) ("⊢")) +((("\\" "v" "d" "o" "t" "s")) ("⋮")) +((("\\" "v" "e" "e")) ("∨")) +((("\\" "v" "e" "e" "b" "a" "r")) ("⊻")) +((("\\" "v" "e" "r" "t")) ("|")) +((("\\" "w" "e" "d" "g" "e")) ("∧")) +((("\\" "w" "p")) ("℘")) +((("\\" "w" "r")) ("≀")) +((("\\" "x" "i")) ("ξ")) +((("\\" "z" "e" "t" "a")) ("ζ")) +((("\\" "B" "b" "b" "{" "N" "}")) ("ℕ")) +((("\\" "B" "b" "b" "{" "P" "}")) ("ℙ")) +((("\\" "B" "b" "b" "{" "R" "}")) ("ℝ")) +((("\\" "B" "b" "b" "{" "Z" "}")) ("ℤ")) +((("-" "-")) ("–")) +((("-" "-" "-")) ("—")) +((("\\" " ")) (" ")) +((("\\" "\\")) ("\\")) +((("\\" "m" "u")) ("μ")) +((("\\" "r" "h" "o")) ("ρ")) +((("\\" "m" "a" "t" "h" "s" "c" "r" "{" "I" "}")) ("ℐ")) +((("\\" "S" "m" "i" "l" "e" "y")) ("☺")) +((("\\" "b" "l" "a" "c" "k" "s" "m" "i" "l" "e" "y")) ("☻")) +((("\\" "F" "r" "o" "w" "n" "y")) ("☹")) +((("\\" "L" "e" "t" "t" "e" "r")) ("✉")) +((("\\" "p" "e" "r" "m" "i" "l")) ("‰")) +((("\\" "r" "e" "g" "i" "s" "t" "e" "r" "e" "d")) ("®")) +((("\\" "c" "u" "r" "r" "e" "n" "c" "y")) ("¤")) +((("\\" "d" "h")) ("ð")) +((("\\" "D" "H")) ("Ð")) +((("\\" "t" "h")) ("þ")) +((("\\" "T" "H")) ("Þ")) +((("\\" "m" "i" "c" "r" "o")) ("µ")) +((("\\" "l" "n" "o" "t")) ("¬")) +((("\\" "o" "r" "d" "f" "e" "m" "i" "n" "i" "n" "e")) ("ª")) +((("\\" "o" "r" "d" "m" "a" "s" "c" "u" "l" "i" "n" "e")) ("º")) +((("\\" "l" "a" "m" "b" "d" "a" "b" "a" "r")) ("ƛ")) +((("\\" "c" "e" "l" "s" "i" "u" "s")) ("℃")) +((("\\" "l" "d" "q")) ("“")) +((("\\" "r" "d" "q")) ("”")) +((("\\" "m" "i" "n" "u" "s")) ("−")) +((("\\" "d" "e" "f" "s")) ("≙")) +((("\\" "l" "l" "b" "r" "a" "c" "k" "e" "t")) ("〚")) +((("\\" "r" "r" "b" "r" "a" "c" "k" "e" "t")) ("〛")) +((("\\" "l" "d" "a" "t" "a")) ("《")) +((("\\" "r" "d" "a" "t" "a")) ("》")) +((("\\" "g" "l" "q")) ("‚")) +((("\\" "g" "r" "q")) ("‘")) +((("\\" "g" "l" "q" "q")) ("„")) +((("\\" "\"" "`")) ("„")) +((("\\" "g" "r" "q" "q")) ("“")) +((("\\" "\"" "'")) ("“")) +((("\\" "f" "l" "q")) ("‹")) +((("\\" "f" "r" "q")) ("›")) +((("\\" "f" "l" "q" "q")) ("«")) +((("\\" "\"" "<")) ("«")) +((("\\" "f" "r" "q" "q")) ("»")) +((("\\" "\"" ">")) ("»")) +((("\\" "-")) ("")) +((("\\" "t" "e" "x" "t" "m" "u")) ("µ")) +((("\\" "t" "e" "x" "t" "f" "r" "a" "c" "t" "i" "o" "n" "s" "o" "l" "i" "d" "u" "s")) ("⁄")) +((("\\" "t" "e" "x" "t" "b" "i" "g" "c" "i" "r" "c" "l" "e")) ("⃝")) +((("\\" "t" "e" "x" "t" "m" "u" "s" "i" "c" "a" "l" "n" "o" "t" "e")) ("♪")) +((("\\" "t" "e" "x" "t" "d" "i" "e" "d")) ("✝")) +((("\\" "t" "e" "x" "t" "c" "o" "l" "o" "n" "m" "o" "n" "e" "t" "a" "r" "y")) ("₡")) +((("\\" "t" "e" "x" "t" "w" "o" "n")) ("₩")) +((("\\" "t" "e" "x" "t" "n" "a" "i" "r" "a")) ("₦")) +((("\\" "t" "e" "x" "t" "p" "e" "s" "o")) ("₱")) +((("\\" "t" "e" "x" "t" "l" "i" "r" "a")) ("₤")) +((("\\" "t" "e" "x" "t" "r" "e" "c" "i" "p" "e")) ("℞")) +((("\\" "t" "e" "x" "t" "i" "n" "t" "e" "r" "r" "o" "b" "a" "n" "g")) ("‽")) +((("\\" "t" "e" "x" "t" "p" "e" "r" "t" "e" "n" "t" "h" "o" "u" "s" "a" "n" "d")) ("‱")) +((("\\" "t" "e" "x" "t" "b" "a" "h" "t")) ("฿")) +((("\\" "t" "e" "x" "t" "n" "u" "m" "e" "r" "o")) ("№")) +((("\\" "t" "e" "x" "t" "d" "i" "s" "c" "o" "u" "n" "t")) ("⁒")) +((("\\" "t" "e" "x" "t" "e" "s" "t" "i" "m" "a" "t" "e" "d")) ("℮")) +((("\\" "t" "e" "x" "t" "o" "p" "e" "n" "b" "u" "l" "l" "e" "t")) ("◦")) +((("\\" "t" "e" "x" "t" "l" "q" "u" "i" "l" "l")) ("⁅")) +((("\\" "t" "e" "x" "t" "r" "q" "u" "i" "l" "l")) ("⁆")) +((("\\" "t" "e" "x" "t" "c" "i" "r" "c" "l" "e" "d" "P")) ("℗")) +((("\\" "t" "e" "x" "t" "r" "e" "f" "e" "r" "e" "n" "c" "e" "m" "a" "r" "k")) ("※")) +)) + +;; Local Variables: +;; mode: scheme +;; coding: utf-8 +;; End: diff --git a/ide/uim/coqide.scm b/ide/uim/coqide.scm new file mode 100644 index 00000000..62355ac2 --- /dev/null +++ b/ide/uim/coqide.scm @@ -0,0 +1,277 @@ +;;; coqide.scm -- Emacs-style Latin characters translation +;;; +;;; Copyright (c) 2003-2009 uim Project http://code.google.com/p/uim/ +;;; +;;; All rights reserved. +;;; +;;; Redistribution and use in source and binary forms, with or without +;;; modification, are permitted provided that the following conditions +;;; are met: +;;; 1. Redistributions of source code must retain the above copyright +;;; notice, this list of conditions and the following disclaimer. +;;; 2. Redistributions in binary form must reproduce the above copyright +;;; notice, this list of conditions and the following disclaimer in the +;;; documentation and/or other materials provided with the distribution. +;;; 3. Neither the name of authors nor the names of its contributors +;;; may be used to endorse or promote products derived from this software +;;; without specific prior written permission. +;;; +;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND +;;; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +;;; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +;;; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE +;;; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +;;; OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +;;; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +;;; LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +;;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +;;; SUCH DAMAGE. +;;;; + +;; This input method implements character composition rules for the +;; Latin letters used in European languages. The rules, defined in +;; the file coqide-rules.scm, have been adapted from GNU Emacs 22. + +(require "util.scm") +(require "rk.scm") +(require "coqide-rules.scm") +(require-custom "generic-key-custom.scm") +(require-custom "coqide-custom.scm") + +(define coqide-context-rec-spec + (append + context-rec-spec + '((on #f) + (rkc #f) + (show-cands #f)))) +(define-record 'coqide-context coqide-context-rec-spec) +(define coqide-context-new-internal coqide-context-new) + +(define (coqide-context-new id im) + (let ((lc (coqide-context-new-internal id im)) + (rkc (rk-context-new (symbol-value coqide-rules) #f #f))) + (coqide-context-set-widgets! lc coqide-widgets) + (coqide-context-set-rkc! lc rkc) + lc)) + +(define (coqide-current-translation lc) + (let ((rkc (coqide-context-rkc lc))) + (or (rk-peek-terminal-match rkc) + (and (not (null? (rk-context-seq rkc))) + (list (rk-pending rkc)))))) + +(define (coqide-current-string lc) + (let ((trans (coqide-current-translation lc))) + (if trans (car trans) ""))) + +(define (coqide-context-clear lc) + (rk-flush (coqide-context-rkc lc))) + +(define (coqide-context-flush lc) + (let ((str (coqide-current-string lc))) + (if (not (equal? str "")) (im-commit lc str)) + (coqide-context-clear lc))) + +(define (coqide-open-candidates-window lc height) + (if (coqide-context-show-cands lc) + (im-deactivate-candidate-selector lc)) + (im-activate-candidate-selector lc height height) + (im-select-candidate lc 0) + (coqide-context-set-show-cands! lc #t)) + +(define (coqide-close-candidates-window lc) + (if (coqide-context-show-cands lc) + (im-deactivate-candidate-selector lc)) + (coqide-context-set-show-cands! lc #f)) + +(define (coqide-update-preedit lc) + (if (coqide-context-on lc) + (let ((trans (coqide-current-translation lc)) + (ltrans 0)) + (im-clear-preedit lc) + (if trans + (begin (im-pushback-preedit lc + preedit-underline + (car trans)) + (set! ltrans (length trans)))) + (im-pushback-preedit lc + preedit-cursor + "") + (im-update-preedit lc) + (if (> ltrans 1) + (coqide-open-candidates-window lc ltrans) + (coqide-close-candidates-window lc))))) + +(define (coqide-prepare-activation lc) + (coqide-context-flush lc) + (coqide-update-preedit lc)) + +(register-action 'action_coqide_off + (lambda (lc) + (list + 'off + "a" + (N_ "CoqIDE mode off") + (N_ "CoqIDE composition off"))) + (lambda (lc) + (not (coqide-context-on lc))) + (lambda (lc) + (coqide-prepare-activation lc) + (coqide-context-set-on! lc #f))) + +(register-action 'action_coqide_on + (lambda (lc) + (list + 'on + "à" + (N_ "CoqIDE mode on") + (N_ "CoqIDE composition on"))) + (lambda (lc) + (coqide-context-on lc)) + (lambda (lc) + (coqide-prepare-activation lc) + (coqide-context-set-on! lc #t))) + +(define coqide-input-mode-actions + '(action_coqide_off action_coqide_on)) + +(define coqide-widgets '(widget_coqide_input_mode)) + +(define default-widget_coqide_input_mode 'action_coqide_on) + +(register-widget 'widget_coqide_input_mode + (activity-indicator-new coqide-input-mode-actions) + (actions-new coqide-input-mode-actions)) + +(define coqide-context-list '()) + +(define (coqide-init-handler id im arg) + (let ((lc (coqide-context-new id im))) + (set! coqide-context-list (cons lc coqide-context-list)) + lc)) + +(define (coqide-release-handler lc) + (let ((rkc (coqide-context-rkc lc))) + (set! coqide-context-list + ;; (delete lc coqide-context-list eq?) does not work + (remove (lambda (c) (eq? (coqide-context-rkc c) rkc)) + coqide-context-list)))) + +(define coqide-control-key? + (let ((shift-or-no-modifier? (make-key-predicate '("<Shift>" "")))) + (lambda (key key-state) + (not (shift-or-no-modifier? -1 key-state))))) + +(define (coqide-proc-on-state lc key key-state) + (let ((rkc (coqide-context-rkc lc)) + (cur-trans (coqide-current-translation lc))) + (cond + + ((or (coqide-off-key? key key-state) + (and coqide-esc-turns-off? (eq? key 'escape))) + (coqide-context-flush lc) + (if (eq? key 'escape) + (im-commit-raw lc)) + (coqide-context-set-on! lc #f) + (coqide-close-candidates-window lc) + (im-clear-preedit lc) + (im-update-preedit lc)) + + ((coqide-backspace-key? key key-state) + (if (not (rk-backspace rkc)) + (im-commit-raw lc))) + + ((coqide-control-key? key key-state) + (coqide-context-flush lc) + (im-commit-raw lc)) + + ((and (ichar-numeric? key) + (coqide-context-show-cands lc) + (let ((idx (- (numeric-ichar->integer key) 1))) + (if (= idx -1) (set! idx 9)) + (and (>= idx 0) (< idx (length cur-trans)) + (begin + (im-commit lc (nth idx cur-trans)) + (coqide-context-clear lc) + #t))))) + + (else + (let* ((key-str (if (symbol? key) + (symbol->string key) + (charcode->string key))) + (cur-seq (rk-context-seq rkc)) + (res (rk-push-key! rkc key-str)) + (new-seq (rk-context-seq rkc)) + (new-trans (coqide-current-translation lc))) + (if (equal? new-seq (cons key-str cur-seq)) + (if (not (or (rk-partial? rkc) (> (length new-trans) 1))) + (begin (im-commit lc (car (rk-peek-terminal-match rkc))) + (coqide-context-clear lc))) + (begin (if (not (null? cur-seq)) (im-commit lc (car cur-trans))) + (if (null? new-seq) (im-commit-raw lc))))))))) + +(define (coqide-proc-off-state lc key key-state) + (if (coqide-on-key? key key-state) + (coqide-context-set-on! lc #t) + (im-commit-raw lc))) + +(define (coqide-key-press-handler lc key key-state) + (if (coqide-context-on lc) + (coqide-proc-on-state lc key key-state) + (coqide-proc-off-state lc key key-state)) + (coqide-update-preedit lc)) + +(define (coqide-key-release-handler lc key key-state) + (if (or (ichar-control? key) + (not (coqide-context-on lc))) + ;; don't discard key release event for apps + (im-commit-raw lc))) + +(define (coqide-reset-handler lc) + (coqide-context-clear lc)) + +(define (coqide-get-candidate-handler lc idx accel-enum-hint) + (let* ((candidates (coqide-current-translation lc)) + (candidate (nth idx candidates))) + (list candidate (digit->string (+ idx 1)) ""))) + +;; Emacs does nothing on focus-out +;; TODO: this should be configurable +(define (coqide-focus-out-handler lc) + #f) + +(define (coqide-place-handler lc) + (coqide-update-preedit lc)) + +(define (coqide-displace-handler lc) + (coqide-context-flush lc) + (coqide-update-preedit lc)) + +(register-im + 'coqide + "" + "UTF-8" + coqide-im-name-label + coqide-im-short-desc + #f + coqide-init-handler + coqide-release-handler + context-mode-handler + coqide-key-press-handler + coqide-key-release-handler + coqide-reset-handler + coqide-get-candidate-handler + #f + context-prop-activate-handler + #f + #f + coqide-focus-out-handler + coqide-place-handler + coqide-displace-handler +) + +;; Local Variables: +;; mode: scheme +;; coding: utf-8 +;; End: |