diff options
Diffstat (limited to 'isar/x-symbol-isar.el')
-rw-r--r-- | isar/x-symbol-isar.el | 517 |
1 files changed, 0 insertions, 517 deletions
diff --git a/isar/x-symbol-isar.el b/isar/x-symbol-isar.el deleted file mode 100644 index 6a8a8fbf..00000000 --- a/isar/x-symbol-isar.el +++ /dev/null @@ -1,517 +0,0 @@ -;; x-symbol-isar.el -;; Token language "Isabelle Symbols" for package x-symbol -;; -;; ID: $Id$ -;; Author: David von Oheimb -;; Updates by Markus Wenzel, Christoph Wedler, David Aspinall. -;; Copyright 1998 Technische Universitaet Muenchen -;; License GPL (GNU GENERAL PUBLIC LICENSE) -;; -;; This file is part of the Proof General distribution. - -(eval-when-compile - (require 'cl)) ; to properly compile 'block' - -(defvar x-symbol-isar-required-fonts nil) - -;;;=========================================================================== -;;; General language accesses, see `x-symbol-language-access-alist' -;;;=========================================================================== - -;; NB da: these next two are also set in proof-x-symbol.el, but -;; it would be handy to be able to use this file away from PG. -(defvar x-symbol-isar-name "Isabelle Symbol") -(defvar x-symbol-isar-modeline-name "isa") - -(defcustom x-symbol-isar-header-groups-alist nil - "*If non-nil, used in isasym specific grid/menu. -See `x-symbol-header-groups-alist'." - :group 'x-symbol-isar - :group 'x-symbol-input-init - :type 'x-symbol-headers) - -(defcustom x-symbol-isar-electric-ignore - "[:'][A-Za-z]\\|<=\\|\\[\\[\\|\\]\\]\\|~=" - "*Additional Isabelle version of `x-symbol-electric-ignore'." - :group 'x-symbol-isar - :group 'x-symbol-input-control - :type 'x-symbol-function-or-regexp) - - -(defvar x-symbol-isar-required-fonts nil - "List of features providing fonts for language `isabelle'.") - -(defvar x-symbol-isar-extra-menu-items nil - "Extra menu entries for language `isabelle'.") - - -(defvar x-symbol-isar-token-grammar - '(x-symbol-make-grammar - :encode-spec (((t . "\\\\"))) - :decode-regexp "\\\\+<[A-Za-z]+>" - :input-spec nil - :token-list x-symbol-isar-token-list)) - -(defun x-symbol-isar-token-list (tokens) - (mapcar (lambda (x) (cons x t)) tokens)) - -(defvar x-symbol-isar-user-table nil - "User table defining Isabelle commands, used in `x-symbol-isar-table'.") - -(defvar x-symbol-isar-generated-data nil - "Internal.") - - -;;;=========================================================================== -;;; No image support -;;;=========================================================================== - -(defvar x-symbol-isar-master-directory 'ignore) -(defvar x-symbol-isar-image-searchpath '("./")) -(defvar x-symbol-isar-image-cached-dirs '("images/" "pictures/")) -(defvar x-symbol-isar-image-file-truename-alist nil) -(defvar x-symbol-isar-image-keywords nil) - - -;;;=========================================================================== -;; super- and subscripts -;;;=========================================================================== - -;; one char: \<^sup>, \<^sub>, \<^isub>, and \<^isup> -;; spanning: \<^bsup>...\<^esup> and \<^bsub>..\<^esub> - -(defcustom x-symbol-isar-subscript-matcher 'x-symbol-isar-subscript-matcher - "Function matching super-/subscripts for language `isa'. -See language access `x-symbol-LANG-subscript-matcher'." - :group 'x-symbol-isar - :type 'function) - -(defcustom x-symbol-isar-font-lock-regexp "\\\\<\\^[ib]?su[bp]>" - "Regexp matching the start tag of Isabelle super- and subscripts." - :group 'x-symbol-isar - :type 'regexp) - -(defcustom x-symbol-isar-font-lock-limit-regexp "\n\\|\\\\<\\^[be]su[bp]>" - "Regexp matching the end of line and the start and end tags of Isabelle -spanning super- and subscripts." - :group 'x-symbol-isar - :type 'regexp) - -(defcustom x-symbol-isar-font-lock-contents-regexp "." - "*Regexp matching the spanning super- and subscript contents. -This regexp should match the text between the opening and closing super- -or subscript tag." - :group 'x-symbol-isar - :type 'regexp) - - -;; the [\350-\357].\350\\|\^A[A-H].\^AA part is there to enable single -;; char sub/super scripts with coloured Isabelle output. -(defcustom x-symbol-isar-single-char-regexp - "\\([^\\]\\|\\\\<[A-Za-z]+>\\)\\|[\350-\357]\\([^\\]\\|\\\\<[A-Za-z]+>\\)\350\\|\^A[A-H]\\([^\\]\\|\\\\<[A-Za-z]+>\\)\^AA" - "Return regexp matching \<ident> or c for some char c." - :group 'x-symbol-isar - :type 'regexp) - -(defun x-symbol-isar-subscript-matcher (limit) - (block nil - (let (open-beg open-end close-end close-beg script-type) - (while (re-search-forward x-symbol-isar-font-lock-regexp limit t) - (setq open-beg (match-beginning 0) - open-end (match-end 0) - script-type (if (eq (char-after (- open-end 2)) ?b) - 'x-symbol-sub-face - 'x-symbol-sup-face)) - (when (not (proof-string-match "[ \t\n]" (string (char-after open-end)))) - (if (eq (char-after (- open-end 5)) ?b) ; if is spanning sup-/subscript - (let ((depth 1)) ; level of nesting - (while (and (not (eq depth 0)) - (re-search-forward x-symbol-isar-font-lock-limit-regexp - limit 'limit)) - (setq close-beg (match-beginning 0) - close-end (match-end 0)) - (if (eq (char-after (- close-end 1)) ?\n) ; if eol - (setq depth 0) - (if (eq (char-after (- close-end 5)) ?b) ; if end of span - (setq depth (+ depth 1)) - (setq depth (- depth 1))))) - (when (eq depth 0) - (when - (save-excursion - (goto-char open-end) - (re-search-forward x-symbol-isar-font-lock-contents-regexp - close-beg t)) - (store-match-data (list open-beg close-end - open-beg open-end - open-end close-beg - close-beg close-end)) - (return script-type))) - (goto-char close-beg)) - (when (re-search-forward x-symbol-isar-single-char-regexp - limit 'limit) - (setq close-end (match-end 0)) - (store-match-data (list open-beg close-end - open-beg open-end - open-end close-end)) - (return script-type)))))))) - -(defun isabelle-match-subscript (limit) - (if isar-x-symbol-enable - (setq x-symbol-isar-subscript-type - (funcall x-symbol-isar-subscript-matcher limit)))) - -;; these are used for Isabelle output only. x-symbol does its own -;; setup of font-lock-keywords for the theory buffer -;; (x-symbol-isar-font-lock-keywords does not belong to language -;; access any more) -(defvar x-symbol-isar-font-lock-keywords - '((isabelle-match-subscript - (1 x-symbol-invisible-face t) - (2 (progn x-symbol-isar-subscript-type) prepend) - (3 x-symbol-invisible-face t t))) - "Isabelle font-lock keywords for super- and subscripts.") - -(defvar x-symbol-isar-font-lock-allowed-faces t) - - -;;;=========================================================================== -;;; Charsym Info -;;;=========================================================================== - -(defcustom x-symbol-isar-class-alist - '((VALID "Isabelle Symbol" (x-symbol-info-face)) - (INVALID "no Isabelle Symbol" (red x-symbol-info-face))) - "Alist for Isabelle's token classes displayed by info in echo area. -See `x-symbol-language-access-alist' for details." - :group 'x-symbol-texi - :group 'x-symbol-info-strings -;; :set 'x-symbol-set-cache-variable [causes compile error] - :type 'x-symbol-class-info) - - -(defcustom x-symbol-isar-class-face-alist nil - "Alist for Isabelle's color scheme in TeXinfo's grid and info. -See `x-symbol-language-access-alist' for details." - :group 'x-symbol-isar - :group 'x-symbol-input-init - :group 'x-symbol-info-general -;; :set 'x-symbol-set-cache-variable [causes compile error] - :type 'x-symbol-class-faces) - - - -;;;=========================================================================== -;;; The tables -;;;=========================================================================== - -(defvar x-symbol-isar-case-insensitive nil) -(defvar x-symbol-isar-token-shape nil) -(defvar x-symbol-isar-input-token-ignore nil) -(defvar x-symbol-isar-token-list 'identity) - -(defvar x-symbol-isar-symbol-table ; symbols (isabelle font) - '((visiblespace "\\<spacespace>") - (Gamma "\\<Gamma>") - (Delta "\\<Delta>") - (Theta "\\<Theta>") - (Lambda "\\<Lambda>") - (Pi "\\<Pi>") - (Sigma "\\<Sigma>") - (Phi "\\<Phi>") - (Psi "\\<Psi>") - (Omega "\\<Omega>") - (alpha "\\<alpha>") - (beta "\\<beta>") - (gamma "\\<gamma>") - (delta "\\<delta>") - (epsilon1 "\\<epsilon>") - (zeta "\\<zeta>") - (eta "\\<eta>") - (theta "\\<theta>") - (kappa1 "\\<kappa>") - (lambda "\\<lambda>") - (mu "\\<mu>") - (nu "\\<nu>") - (xi "\\<xi>") - (pi "\\<pi>") - (rho1 "\\<rho>") - (sigma "\\<sigma>") - (tau "\\<tau>") - (phi1 "\\<phi>") - (chi "\\<chi>") - (psi "\\<psi>") - (omega "\\<omega>") - (notsign "\\<not>") - (logicaland "\\<and>") - (logicalor "\\<or>") - (universal1 "\\<forall>") - (existential1 "\\<exists>") - (epsilon "\\<some>") - (biglogicaland "\\<And>") - (ceilingleft "\\<lceil>") - (ceilingright "\\<rceil>") - (floorleft "\\<lfloor>") - (floorright "\\<rfloor>") - (bardash "\\<turnstile>") - (bardashdbl "\\<Turnstile>") - (semanticsleft "\\<lbrakk>") - (semanticsright "\\<rbrakk>") - (periodcentered "\\<cdot>") - (element "\\<in>") - (reflexsubset "\\<subseteq>") - (intersection "\\<inter>") - (union "\\<union>") - (bigintersection "\\<Inter>") - (bigunion "\\<Union>") - (sqintersection "\\<sqinter>") - (squnion "\\<squnion>") - (bigsqintersection "\\<Sqinter>") - (bigsqunion "\\<Squnion>") - (perpendicular "\\<bottom>") - (dotequal "\\<doteq>") - (wrong "\\<wrong>") - (equivalence "\\<equiv>") - (notequal "\\<noteq>") - (propersqsubset "\\<sqsubset>") - (reflexsqsubset "\\<sqsubseteq>") - (properprec "\\<prec>") - (reflexprec "\\<preceq>") - (propersucc "\\<succ>") - (approxequal "\\<approx>") - (similar "\\<sim>") - (simequal "\\<simeq>") - (lessequal "\\<le>") - (coloncolon "\\<Colon>") - (arrowleft "\\<leftarrow>") - (endash "\\<midarrow>") - (arrowright "\\<rightarrow>") - (arrowdblleft "\\<Leftarrow>") -; (nil "\\<Midarrow>") - (arrowdblright "\\<Rightarrow>") - (frown "\\<frown>") - (mapsto "\\<mapsto>") - (leadsto "\\<leadsto>") - (arrowup "\\<up>") - (arrowdown "\\<down>") - (notelement "\\<notin>") - (multiply "\\<times>") - (circleplus "\\<oplus>") - (circleminus "\\<ominus>") - (circlemultiply "\\<otimes>") - (circleslash "\\<oslash>") - (propersubset "\\<subset>") - (infinity "\\<infinity>") - (box "\\<box>") - (lozenge1 "\\<diamond>") - (circ "\\<circ>") - (bullet "\\<bullet>") - (bardbl "\\<parallel>") - (radical "\\<surd>") - (copyright "\\<copyright>"))) - -(defvar x-symbol-isar-xsymbol-table ; xsymbols - '((Xi "\\<Xi>") - (Upsilon1 "\\<Upsilon>") - (iota "\\<iota>") - (upsilon "\\<upsilon>") - (plusminus "\\<plusminus>") - (division "\\<div>") - (longarrowright "\\<longrightarrow>") - (longarrowleft "\\<longleftarrow>") - (longarrowboth "\\<longleftrightarrow>") - (longarrowdblright "\\<Longrightarrow>") - (longarrowdblleft "\\<Longleftarrow>") - (longarrowdblboth "\\<Longleftrightarrow>") - (brokenbar "\\<bar>") - (hyphen "\\<hyphen>") - (macron "\\<inverse>") - (exclamdown "\\<exclamdown>") - (questiondown "\\<questiondown>") - (guillemotleft "\\<guillemotleft>") - (guillemotright "\\<guillemotright>") - (degree "\\<degree>") - (onesuperior "\\<onesuperior>") - (onequarter "\\<onequarter>") - (twosuperior "\\<twosuperior>") - (onehalf "\\<onehalf>") - (threesuperior "\\<threesuperior>") - (threequarters "\\<threequarters>") - (paragraph "\\<paragraph>") - (registered "\\<registered>") - (ordfeminine "\\<ordfeminine>") - (masculine "\\<ordmasculine>") - (section "\\<section>") - (sterling "\\<pounds>") - (yen "\\<yen>") - (cent "\\<cent>") - (currency "\\<currency>") - (braceleft2 "\\<lbrace>") - (braceright2 "\\<rbrace>") - (top "\\<top>") - (congruent "\\<cong>") - (club "\\<clubsuit>") - (diamond "\\<diamondsuit>") - (heart "\\<heartsuit>") - (spade "\\<spadesuit>") - (arrowboth "\\<leftrightarrow>") - (greaterequal "\\<ge>") - (proportional "\\<propto>") - (partialdiff "\\<partial>") - (ellipsis "\\<dots>") - (aleph "\\<aleph>") - (Ifraktur "\\<Im>") - (Rfraktur "\\<Re>") - (weierstrass "\\<wp>") - (emptyset "\\<emptyset>") - (angle "\\<angle>") - (gradient "\\<nabla>") - (product "\\<Prod>") - (arrowdblboth "\\<Leftrightarrow>") - (arrowdblup "\\<Up>") - (arrowdbldown "\\<Down>") - (angleleft "\\<langle>") - (angleright "\\<rangle>") - (summation "\\<Sum>") - (integral "\\<integral>") - (circleintegral "\\<ointegral>") - (dagger "\\<dagger>") - (sharp "\\<sharp>") - (star "\\<star>") - (smltriangleright "\\<triangleright>") - (triangleleft "\\<lhd>") - (triangle "\\<triangle>") - (triangleright "\\<rhd>") - (trianglelefteq "\\<unlhd>") - (trianglerighteq "\\<unrhd>") - (smltriangleleft "\\<triangleleft>") - (natural "\\<natural>") - (flat "\\<flat>") - (amalg "\\<amalg>") - (Mho "\\<mho>") - (arrowupdown "\\<updown>") - (longmapsto "\\<longmapsto>") - (arrowdblupdown "\\<Updown>") - (hookleftarrow "\\<hookleftarrow>") - (hookrightarrow "\\<hookrightarrow>") - (rightleftharpoons "\\<rightleftharpoons>") - (leftharpoondown "\\<leftharpoondown>") - (rightharpoondown "\\<rightharpoondown>") - (leftharpoonup "\\<leftharpoonup>") - (rightharpoonup "\\<rightharpoonup>") - (asym "\\<asymp>") - (minusplus "\\<minusplus>") - (bowtie "\\<bowtie>") - (centraldots "\\<cdots>") - (circledot "\\<odot>") - (propersuperset "\\<supset>") - (reflexsuperset "\\<supseteq>") - (propersqsuperset "\\<sqsupset>") - (reflexsqsuperset "\\<sqsupseteq>") - (lessless "\\<lless>") - (greatergreater "\\<ggreater>") - (unionplus "\\<uplus>") - (backslash3 "\\<setminus>") - (smile "\\<smile>") - (reflexsucc "\\<succeq>") - (dashbar "\\<stileturn>") - (biglogicalor "\\<Or>") - (bigunionplus "\\<Uplus>") - (daggerdbl "\\<ddagger>") - (bigbowtie "\\<Join>") - (booleans "\\<bool>") - (complexnums "\\<complex>") - (natnums "\\<nat>") - (rationalnums "\\<rat>") - (realnums "\\<real>") - (integers "\\<int>") - (lesssim "\\<lesssim>") - (greatersim "\\<greatersim>") - (lessapprox "\\<lessapprox>") - (greaterapprox "\\<greaterapprox>") - (definedas "\\<triangleq>") - (cataleft "\\<lparr>") - (cataright "\\<rparr>") - (bigcircledot "\\<Odot>") - (bigcirclemultiply "\\<Otimes>") - (bigcircleplus "\\<Oplus>") - (coproduct "\\<Coprod>") - (cedilla "\\<cedilla>") - (diaeresis "\\<dieresis>") - (acute "\\<acute>") - (hungarumlaut "\\<hungarumlaut>") - (lozenge "\\<lozenge>") - (smllozenge "\\<struct>") - (dotlessi "\\<index>") - (euro "\\<euro>") - (zero1 "\\<zero>") - (one1 "\\<one>") - (two1 "\\<two>") - (three1 "\\<three>") - (four1 "\\<four>") - (five1 "\\<five>") - (six1 "\\<six>") - (seven1 "\\<seven>") - (eight1 "\\<eight>") - (nine1 "\\<nine>") - )) - -(defun x-symbol-isar-prepare-table (table) - "Prepare table for Isabelle/Isar." - (mapcar (lambda (entry) - (list (car entry) nil - (cadr entry) - (concat "\\" (cadr entry)))) - table)) - -(defvar x-symbol-isar-table - (x-symbol-isar-prepare-table - (append - x-symbol-isar-user-table - x-symbol-isar-symbol-table - x-symbol-isar-xsymbol-table))) - - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; User-level settings for X-Symbol -;; -;; this is MODE-ON CODING 8BITS UNIQUE SUBSCRIPTS IMAGE -(defcustom x-symbol-isar-auto-style - '(isar-x-symbol-enable ; MODE-ON: whether to turn on interactively - nil ;; x-symbol-coding - 'null ;; x-symbol-8bits [NEVER want it; null disables search] - nil ;; x-symbol-unique - t ;; x-symbol-subscripts - nil) ;; x-symbol-image - "Variable used to document a language access. -See documentation of `x-symbol-auto-style'." - :group 'x-symbol-isar - :group 'x-symbol-mode - :type 'x-symbol-auto-style) - -;; FIXME da: is this needed? -(defcustom x-symbol-isar-auto-coding-alist nil - "*Alist used to determine the file coding of ISABELLE buffers. -Used in the default value of `x-symbol-auto-mode-alist'. See -variable `x-symbol-auto-coding-alist' for details." - :group 'x-symbol-isar - :group 'x-symbol-mode - :type 'x-symbol-auto-coding) - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; x-symbol support -;; -;; The following settings configure the generic PG package. -;; - -(eval-after-load "isar" ;; allow use outside PG - '(setq - proof-xsym-activate-command - (isar-markup-ml "change print_mode (insert (op =) \"xsymbols\")") - proof-xsym-deactivate-command - (isar-markup-ml "change print_mode (remove (op =) \"xsymbols\")"))) - -(provide 'x-symbol-isar) |