diff options
Diffstat (limited to 'x-symbol/lisp/x-symbol-vars.el')
| -rw-r--r-- | x-symbol/lisp/x-symbol-vars.el | 2107 |
1 files changed, 0 insertions, 2107 deletions
diff --git a/x-symbol/lisp/x-symbol-vars.el b/x-symbol/lisp/x-symbol-vars.el deleted file mode 100644 index c4c59b5b..00000000 --- a/x-symbol/lisp/x-symbol-vars.el +++ /dev/null @@ -1,2107 +0,0 @@ -;;; x-symbol-vars.el --- customizable variables for package x-symbol - -;; Copyright (C) 1995-1999, 2001-2003 Free Software Foundation, Inc. -;; -;; Author: Christoph Wedler <wedler@users.sourceforge.net> -;; Maintainer: (Please use `M-x x-symbol-package-bug' to contact the maintainer) -;; Version: 4.5.X -;; Keywords: WYSIWYG, LaTeX, HTML, wp, math, internationalization -;; X-URL: http://x-symbol.sourceforge.net/ - -;; 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., 675 Mass Ave, Cambridge, MA 02139, USA. - -;;; Commentary: - -;; If you want to use package x-symbol, please visit the URL (use -;; \\[x-symbol-package-web]) and read the info (use \\[x-symbol-package-info]). - -;; This file contains all customizable variables, except token language -;; specific ones. It avoids loading the main file when browsing the customize -;; menus. - -;;; Code: - -(provide 'x-symbol-vars) -(require 'x-symbol-hooks) -(eval-when-compile (require 'cl)) - -(defconst x-symbol-version "4.5.1 [Proof General]" - "Current development version of package X-Symbol. -Check <http://x-symbol.sourceforge.net/> for the newest.") - - -;;;=========================================================================== -;;; Custom groups -;;;=========================================================================== - -(defgroup x-symbol nil - "Semi WYSIWYG for LaTeX, HTML, etc using additional fonts." - :group 'wp - :link '(info-link "(x-symbol)") - :link '(url-link "http://x-symbol.sourceforge.net/") - :prefix "x-symbol-") - -(defgroup x-symbol-mode nil - "Controlling whether and how to turn on X-Symbol mode." - :group 'x-symbol - :prefix "x-symbol-") - -(defgroup x-symbol-input-init nil - "Initialization of input methods supported by X-Symbol." - :group 'x-symbol - :prefix "x-symbol-") - -(defgroup x-symbol-input-control nil - "Control if input methods supported by X-Symbol." - :group 'x-symbol - :prefix "x-symbol-") - -(defgroup x-symbol-info-general nil - "General customization of X-Symbol info in echo area." - :group 'x-symbol - :prefix "x-symbol-") - -(defgroup x-symbol-info-strings nil - "Customization of X-Symbol info strings in echo area." - :group 'x-symbol - :prefix "x-symbol-") - -(defgroup x-symbol-miscellaneous nil - "Miscellaneous customization for X-Symbol." - :group 'x-symbol - :prefix "x-symbol-") - -(defgroup x-symbol-image-general nil - "General customization of images in X-Symbol buffers." - :group 'x-symbol - :prefix "x-symbol-") ; not "x-symbol-image-" ! - -(defgroup x-symbol-image-language nil - "Language dependent customization of images in X-Symbol buffers." - :group 'x-symbol - :prefix "x-symbol-") ; not "x-symbol-image-" ! - -;;; language specific groups ================================================= -;; they should not be defined in the x-symbol-LANG.el because this would -;; require the custom commands to load all languages when customizing the top -;; group `x-symbol'. - -(defgroup x-symbol-tex nil - "X-Symbol token language \"TeX macro\"." - :group 'x-symbol - :group 'tex - :prefix "x-symbol-tex-") - -(defgroup x-symbol-sgml nil - "X-Symbol token language \"SGML entity\"." - :group 'x-symbol - :group 'sgml - :prefix "x-symbol-sgml-") - -(defgroup x-symbol-bib nil - "X-Symbol token language \"BibTeX macro\"." - :group 'x-symbol - :group 'tex - :prefix "x-symbol-bib-") - -(defgroup x-symbol-texi nil - "X-Symbol token language \"TeXinfo command\"." - :group 'x-symbol - :group 'tex - :group 'docs - :prefix "x-symbol-texi-") - - -;;;=========================================================================== -;;; Custom widgets -;;;=========================================================================== - -;; Shouldn't this be a generally useful widget type? -(define-widget 'x-symbol-key 'sexp - "A key or mouse stroke." - :tag "Key/Mouse stroke") - -(define-widget 'x-symbol-auto-style 'list - "Auto-mode setup." - ;; Also allows=matches (t) as (t nil nil nil nil nil). In older XEmacsen, - ;; this was not possible and we had to use an "option-group-inline chain". - ;; Drop support for all XEmacsen where this is still necessary: - ;; * (group foo bar ...) - ;; * (group foo (option (group :inline t :extra-offset -4 bar (...)))) - :args '((sexp :tag "Turn on if (eval'd)") - (sexp :tag "Coding (eval'd)") - (sexp :tag "Save 8bits (eval'd)") - (sexp :tag "Unique decoding (eval'd)") - (sexp :tag "Super/subscripts (eval'd)") - (sexp :tag "Show images (eval'd)"))) - - -;;;=========================================================================== -;;; Custom widgets, general -;;;=========================================================================== - -;; Shouldn't this be generally a useful widget type? -(define-widget 'x-symbol-command 'function - "A lisp command." - :prompt-match 'commandp - :tag "Command") - -(define-widget 'x-symbol-charsym 'symbol - "X-Symbol charsym." - :tag "X-Symbol charsym") - -(define-widget 'x-symbol-group 'symbol - "X-Symbol charsym group." - :tag "Charsym group") - -(define-widget 'x-symbol-coding 'choice - "X-Symbol 8bit character coding." - :tag "8bit coding" - :args '((const iso-8859-1) - (const iso-8859-2) - (const iso-8859-3) - (const iso-8859-9) - (const iso-8859-15))) - -(define-widget 'x-symbol-function-or-regexp 'choice - "Function or regexp, see `x-symbol-call-function-or-regexp'." - :args '((const :tag "None" nil) regexp function)) - -(define-widget 'x-symbol-fancy-spec 'repeat - "X-Symbol specification for fancy strings, without string." - :args '((group :value (0 -1 x-symbol-info-face) - (option (group :inline t :extra-offset -4 - :value (0 -1) - (integer :tag "From") - (option (integer :tag "To" :value -1)))) - (repeat :tag "Faces" :inline t (face :tag "Face"))))) - -(define-widget 'x-symbol-fancy 'cons - "X-Symbol specification for fancy strings, with string." - :args '(string (x-symbol-fancy-spec :tag "Face specifications"))) - - -;;;=========================================================================== -;;; Custom simple, special -;;;=========================================================================== - -(define-widget 'x-symbol-auto-coding 'repeat - "X-Symbol automatic coding control." - :args '((cons :format "%v" - regexp - (choice x-symbol-coding - (cons :tag "Depending on" - (integer :tag "Match") - (repeat (cons :format "%v" - (string :tag "Key") - x-symbol-coding))))))) - -(define-widget 'x-symbol-headers 'repeat - "Headers for grid and menu." - :args '((cons :format "%v" - (string :tag "Header") - (repeat x-symbol-group)))) - -(define-widget 'x-symbol-class-info 'repeat - "Definitions for X-Symbol token language classes." - :args '((cons :format "%v" - (symbol :tag "Token class" :value VALID) - (choice (const :tag "No info" nil) - (x-symbol-fancy :tag "Info"))))) - -(define-widget 'x-symbol-class-faces 'repeat - "Definitions for X-Symbol token language classes." - :args '((list :format "%v" - (symbol :tag "Token class") - (face :tag "Face in grid" :value default) - (x-symbol-fancy-spec :inline t - :tag "Faces for tokens in info")))) - -(define-widget 'x-symbol-image-keywords 'cons - "Format of image keywords" - :args '((regexp :tag "Regexp matching all image files") - (repeat - (list :format "%v" - :value ("IMAGE \"\\([A-Za-z0-9]\\)\"" 1) - regexp - (option (function :match (lambda (widget arg) - (and arg (symbolp arg))) - :value x-symbol-image-default-file-name)) - (repeat :inline t :tag "Arguments" sexp))))) - - -;;;=========================================================================== -;;; custom set function -;;;=========================================================================== - -(defconst x-symbol-cache-variables '(x-symbol-fancy-value-cache - x-symbol-charsym-info-cache - x-symbol-charsym-info-cache - x-symbol-language-info-caches - x-symbol-coding-info-cache - x-symbol-keys-info-cache) - "Internal. Cache variables.") - -;; TODO: not used anymore (would prevent files to be compilable w/o X-Symbol -(defun x-symbol-set-cache-variable (var value) - "Set VAR's value to VALUE. -Custom set function of variables for fancy strings." - (set var value) - (dolist (cache x-symbol-cache-variables) - (and (boundp cache) (set cache nil)))) - - -;;;=========================================================================== -;;; Language Accesses -;;;=========================================================================== - -(defconst x-symbol-LANG-name "Token Language" - "Language access: standard name of the token language. -For each token language LANG, `x-symbol-LANG-name' is a string with the -standard name of the token language LANG. See -`x-symbol-register-language'.") - -(defconst x-symbol-LANG-modes '(major-mode-1 major-mode-2) - "Language access: major modes typically using the token language. -For each token language LANG, `x-symbol-LANG-modes' is a list of major -modes of buffers which will typically use X-Symbol with token language -LANG. See `x-symbol-register-language' and `x-symbol-mode'.") - -(defconst x-symbol-LANG-auto-style '(t nil nil nil nil nil) - "Language access: values for X-Symbol's buffer-local variables. -For each token language LANG, `x-symbol-LANG-auto-style' determines how -to set X-Symbol specific buffer-local variables if these variables do -not already have a buffer-local value. - -A value of such a language access looks like - (MODE-ON CODING 8BITS UNIQUE SUBSCRIPTS IMAGE) - -If `x-symbol-mode' is not already buffer-local, MODE-ON determines -whether to turn the mode on with `turn-on-x-symbol-conditionally'. -CODING, 8BITS, UNIQUE, SUBSCRIPTS and IMAGE are used to set -`x-symbol-coding', `x-symbol-8bits', `x-symbol-unique', -`x-symbol-subscripts' and `x-symbol-image' if these values are not -already buffer-local. - -During evaluation, a non-nil `buffer-file-name' is sans backup versions -or strings, and without suffixes in `x-symbol-auto-mode-suffixes', and -`x-symbol-mode' is bound to the `eval'ed MODE-ON. Then, the above -mentioned variables are set to the `eval'ed CODING, 8BITS, UNIQUE, -SUBSCRIPTS and IMAGE in that order, if the variables is not already -buffer-local. If CODING evaluates to nil, `x-symbol-coding' is set -according to `x-symbol-auto-8bit-search-limit', if CODING evaluates to -`null', `x-symbol-coding' is set to nil. - -Users might prefer to customize `x-symbol-auto-style-alist' instead.") - -;; :value (nil nil nil nil nil nil))) -;;(define-widget 'x-symbol-auto-style 'checklist -;; "Auto-mode setup." -;; :args '((group -;; :inline t :extra-offset -4 -;; (sexp :tag "Turn on if (eval'd)") -;; (option -;; (group -;; :inline t :extra-offset -4 -;; (sexp :tag "Coding (eval'd)") -;; (option -;; (group -;; :inline t :extra-offset -4 -;; (sexp :tag "Save 8bit (eval'd)") -;; (option -;; (group -;; :inline t :extra-offset -4 -;; (sexp :tag "Unique decoding (eval'd)") -;; (option -;; (group -;; :inline t :extra-offset -4 -;; (sexp :tag "Super/subscripts (eval'd)") -;; (option -;; (group -;; :inline t :extra-offset -4 -;; (sexp :tag "Show images (eval'd)")))))))))))))) - -(defcustom x-symbol-LANG-modeline-name "lang" - "Language access: modeline name of the token language. -For each token language LANG, `x-symbol-LANG-modeline-name' is a -string with the name of the token language LANG in the modeline." - :group 'x-symbol-miscellaneous - :type 'string) - -(defconst x-symbol-LANG-required-fonts nil - "Language access: features providing required fonts. -For each token language LANG, `x-symbol-LANG-required-fonts' is a list -of features which are required for the tokens of language LANG.") - -(defconst x-symbol-LANG-token-grammar - '(x-symbol-make-grammar :decode-regexp "&[#0-9A-Za-z]+;") - "Language access: grammar of token language. -For each token language LANG, `x-symbol-LANG-token-grammar' describes -the grammar of the language LANG. The value looks like - (x-symbol-make-grammar - :token-list TOKEN-LIST - :after-init AFTER-INIT - :case-function CASE-FUNCTION - :encode-spec ENCODE-SPEC - :decode-regexp DECODE-REGEXP - :decode-spec DECODE-SPEC - :input-regexp INPUT-REGEXP - :input-spec INPUT-SPEC) - -Optional TOKEN-LIST, if non-nil, is a function which converts TOKEN-SPEC -in `x-symbol-LANG-table' into a list with elements \(TOKEN . SHAPE). -With value nil, TOKEN-SPEC is must have the form \(TOKEN...) and each -SHAPE is defined as nil. - -Optional AFTER-INIT, if non-nil, is a function which is called at the -end of the initialization of token language LANG, right before creating -the language dependent grid and menu. - -Optional CASE-FUNCTION is non-nil if the token language is case -insensitive. In that case it is a function which normalizes tokens in -the buffer. Typically values are nil, `downcase' and `upcase'. - -Optional ENCODE-SPEC is used during encoding and is either a function -FUNC or a cons \(BEFORE . AFTER). FUNC is called with three arguments, -the arguments ENCODE-TABLE, FCHAR-TABLE and FCHAR-FB-TABLE of -`x-symbol-encode-lisp'. See below for BEFORE and AFTER. - -Required DECODE-REGEXP is a regexp matching tokens during decoding. - -Optional DECODE-SPEC is used during decoding and is either a function -FUNC or a cons \(BEFORE . AFTER). FUNC is called with three arguments, -DECODE-REGEXP and the arguments DECODE-OBARRAY and UNIQUE of -`x-symbol-decode-lisp'. See below for BEFORE and AFTER. - -Optional INPUT-REGEXP is a regexp or a list of regexps matching tokens -for input method Token, see `x-symbol-token-input'. If it is not -provided, it is similar to the regexp DECODE-REGEXP, but only matches at -the end of the buffer or restriction. - -Argument INPUT-SPEC is used for input method Token and is either a -function FUNC or a cons \(BEFORE . AFTER). FUNC is called with three -arguments, DECODE-REGEXP and the arguments DECODE-OBARRAY and -COMMAND-CHAR of `x-symbol-match-token-before'. See below for BEFORE and -AFTER. Each REGEXP in AFTER matches the string containing COMMAND-CHAR, -usually nil or `last-command-char'. If INPUT-SPEC is not provided, it -is set to DECODE-SPEC if this is equal to ENCODE-SPEC and not a -function. - -BEFORE and AFTER define bad contexts of the position before and after -characters and tokens. BEFORE is either a character CHAR or a CONTEXT, -AFTER is a CONTEXT. During encoding, having a bad context means -inserting an additional space at the position. During decoding and -input method token, having a bad context means no conversion. - -CHAR defines a context which consists of an odd number of characters -CHAR before the position. CONTEXT is a list with elements of the form -\(SHAPE . REGEXP). If the token or token for the current character has -the shape SHAPE, REGEXP matches the bad context. In BEFORE, each REGEXP -matches the character before the position. In AFTER, each REGEXP -matches the buffer contents directly following the position, except in -INPUT-SPEC.") - -(defconst x-symbol-LANG-generated-data nil - "Language access: generated data for token language. -For each token language LANG, `x-symbol-LANG-generated-data' is used to -store various generated data for a token language, like the conversion -tables.") - -(defconst x-symbol-LANG-table '((adiaeresis () "ä")) - "Language access: table defining tokens for the characters. -For each token language LANG, `x-symbol-LANG-table' is a list with -elements defining the tokens for the characters with its token classes -etc. Each element in TABLE looks like - - \(CHARSYM CLASSES . TOKEN-SPEC) or nil. - -CHARSYM is the charsym of the character which represents the tokens -defined via TOKEN-SPEC, see also TOKEN-LIST in language access -`x-symbol-LANG-token-grammar'. CLASSES are the token classes of the -character.") - -(defconst x-symbol-LANG-header-groups-alist nil - "Language access: header/submenu specification for characters. -For each token language LANG, `x-symbol-LANG-header-groups-alist', if -non-nil, is used instead `x-symbol-header-groups-alist' to specify the -structure of language specific grid and menu.") - -(defconst x-symbol-LANG-class-alist - '((VALID "Language Token" (x-symbol-info-face)) - (INVALID "no Language Token" (x-symbol-emph-info-face))) - "Language access: token classes displayed by info in echo area. -For each token language LANG, `x-symbol-LANG-class-alist' is a list of -token class specifications used for the info in the echo area, see -`x-symbol-character-info'. Each element looks like - - \(CLASS . SPEC) - -where CLASS is a valid token class, see `x-symbol-init-language' and -SPEC is used according to `x-symbol-fancy-string'. You should define -entries for the CLASSes `VALID' and `INVALID'.") - -(defconst x-symbol-LANG-class-face-alist nil - "Language access: color scheme in language specific grid and info. -For each token language LANG, `x-symbol-LANG-class-face-alist' is used -for the color scheme in the language dependent grid and token info. -Each element looks like - - \(CLASS FACE . FACE-SPECS) - -where CLASS is a valid token class, FACE is used for the character in -the grid, and FACE-SPECS is used according to `x-symbol-fancy-string'.") - -(defconst x-symbol-LANG-electric-ignore nil - "Language access: specification restricting input method ELECTRIC. -For each token language LANG, `x-symbol-LANG-electric-ignore' is used -additionaly to `x-symbol-electric-ignore' to match contexts/charsyms to -be ignored by input method ELECTRIC. - -The value is nil, a regexp matching contexts not to be replaced, or a -function valled with arguments CONTEXT and CHARSYM, which should return -non-nil if the context should not be replaced by the character for -CHARSYM.") - -(defconst x-symbol-LANG-extra-menu-items nil - "Language access: extra menu items in language specific menu. -For each token language LANG, `x-symbol-LANG-extra-menu-items' defines -extra menu items to be used in the language specific menu. Its value is -a list of elements in the form \(SUBMENU ITEM...) where SUBMENU is -either \"Conversion\" or \"Other Commands\", the ITEMs are additional -menu items at the end of the corresponding submenu.") - -(defconst x-symbol-LANG-subscript-matcher nil - "Language access: function matching super-/subscripts. -For each token language LANG, `x-symbol-LANG-subscript-matcher', if -non-nil, is a matcher function for font-lock. It should return nil for -no match, `x-symbol-sup-face'/`x-symbol-sub-face' for a super-/subscript -match. The `match-date' should have three regexp groups: group 1 for -the open command, group 2 for the contents, and group 3 for the close -command.") - -(defconst x-symbol-LANG-image-keywords nil - "Language access: keywords for image insertion commands. -For each token language LANG, `x-symbol-LANG-image-keywords' is a list - - \(IMAGE-REGEXP KEYWORD...). - -IMAGE-REGEXP should match all images files and is used to initialize the -buffer local memory cache, see `x-symbol-image-init-memory-cache'. - -Each KEYWORD looks like (REGEXP [FUNCTION] ARG...). Image insertion -commands matched by REGEXP are highlighted. FUNCTION, which defaults to -`x-symbol-image-default-file-name', is called with ARGs to get the file -name of the corresponding image file. If FUNCTION returns nil, the -command is not highlighted. See `x-symbol-image-parse-buffer'.") - -(defconst x-symbol-LANG-master-directory nil - "Language access: specification of the master directory for images. -For each token language LANG, `x-symbol-LANG-master-directory', if -non-nil, is a function which returns the directory of the master file, -see `x-symbol-image-parse-buffer'.") - -(defconst x-symbol-LANG-image-searchpath nil - "Language access: search path for implicitly relative image file names. -For each token language LANG, `x-symbol-LANG-image-searchpath' is a list -of directories which are checked if the image file name is implicitly -relative. Relative directories are relative to the directory returned -by the language access `x-symbol-LANG-master-directory'. See -`x-symbol-image-use-remote'.") - -(defconst x-symbol-LANG-image-cached-dirs nil - "Language access: directory parts of images stored in the memory cache. -For each token language LANG, `x-symbol-LANG-image-cached-dirs' is a -list of directory parts of image file names stored in the memory cache. -See `x-symbol-image-use-remote'.") - - -;;;=========================================================================== -;;; Identity -;;;=========================================================================== - -(defvar x-symbol-package-url "http://x-symbol.sourceforge.net/index.html" - "URL used by \\[x-symbol-package-web]. -If you have a local copy, you might want to change the value. The -default is \"http://x-symbol.sourceforge.net/index.html\".") - -(defconst x-symbol-maintainer-address "wedler@users.sourceforge.net" - "E-mail address of maintainer, used by \\[x-symbol-package-bug].") - -(defvar x-symbol-installer-address nil - "E-mail address of person who has installed package X-Symbol system-wide. -Used for normal reports by \\[x-symbol-package-bug]. If nil, normal -reports are sent to `x-symbol-maintainer-address'.") - - -;;;=========================================================================== -;;; General Options (appear in the menu) -;;;=========================================================================== - -(defcustom x-symbol-token-input t - "*If non-nil, enable input method TOKEN. -With input method TOKEN, and if the characters before point represent a -token, an insertion command after a completed token forces Emacs to -replace the token before point by the corresponding character. Use -\"\\[universal-argument] 0 space\" to just replace the token. Use -\\[undo] or \\[unexpand-abbrev] to undo the replacement. - -A command is considered to be a insertion command if it is a self-insert -command or has a non-nil symbol property `x-symbol-input'." - :group 'x-symbol-input-control - :type 'boolean) - -(x-symbol-define-user-options 'x-symbol-token-input '(t)) - -(defcustom x-symbol-electric-input t - "*If non-nil, enable input method ELECTRIC. -With this features, some contexts of input method CONTEXTS are -automatically replaced with the corresponding character, i.e., you do -not have to invoke \\[x-symbol-modify-key]. Use \\[undo] or -\\[unexpand-abbrev] to undo the replacement. - -Because an unwanted replacement of a context with a character can be -quite annoying, the following conditions must be fulfilled: - - * The context must have been defined as an electric context for the - character, see `x-symbol-init-cset'. - * The character must be valid, i.e., represent a token of the current - token language, see `x-symbol-valid-charsym-function'. - * All characters of the context have been typed without any other - command in between, e.g., with language \"TeX macro\", \"- >\" inserts - \\to, \"- \\[backward-char] \\[forward-char] >\" simply inserts \"->\". - * No prefix argument has been used for any character in the context. - * The electric context must not be a suffix of a longer valid context - for another character. E.g., \"''o\" is not changed to \"'\"+`oacute' - because \"''o\" is the context for `ohungarumlaut'. - * Contexts matched by a global or a token language dependent regexp are - not replaced. Functions can also be used to prevent a context to be - replaced by a character. E.g., with language \"TeX macro\", only - replace \"->\" by \\to if we are in TeX's math mode (using texmathp). - See `x-symbol-context-ignore' and `x-symbol-electric-ignore'." - :group 'x-symbol-input-control - :type 'boolean) - -(x-symbol-define-user-options 'x-symbol-electric-input '(t)) - -(defcustom x-symbol-local-menu t - "*If non-nil, provide a token language specific menu. -In a language specific menu, only insertion commands for valid -characters appear. The entries are mentioned and sorted according to -the token." - :group 'x-symbol-input-control - :type 'boolean) - -(x-symbol-define-user-options 'x-symbol-local-menu '(t)) - -(defcustom x-symbol-local-grid t - "*If non-nil, provide a token language specific grid. -See `x-symbol-grid'. In a language specific grid, only valid characters -appear. They may be also colored according to some language specific -token class coloring scheme. E.g., with language \"TeX macro\", purple -character can only be used in TeX's math mode, blue character can only -be used in TeX's text mode, see `x-symbol-charsym-face'." - :group 'x-symbol-input-control - :type 'boolean) - -(x-symbol-define-user-options 'x-symbol-local-grid '(t)) - -(defcustom x-symbol-temp-grid nil - "*If non-nil, the X-Symbol grid buffer only appears temporarily. -If a temporary grid is still visible, the first insertion of an X-Symbol -characters restores the window configuration current before the -invocation of `x-symbol-grid'." - :group 'x-symbol-input-control - :type 'boolean) - -(x-symbol-define-user-options 'x-symbol-temp-grid '(t)) - -(defcustom x-symbol-temp-help t - "*If non-nil, the key completion buffer only appears temporarily. -If the temporary key completions buffer is still visible, the first -insertion of an X-Symbol characters restores the window configuration -current before the invocation of `x-symbol-help'." - :group 'x-symbol-input-control - :type 'boolean) - -(x-symbol-define-user-options 'x-symbol-temp-help '(t)) - -(defvar x-symbol-use-refbuffer-once 'get-buffer-window - ;; TODO: customize (probably) - ;; `pop-up-frames'=t seems to be broken in XEmacs and I don't like - ;; multi-frames anyway, so I cannot say how it is supposed to work whether - ;; this really works - "*Use reference buffer just once when selecting a X-Symbol character. -For both the GRID and the Help buffer. TODO: more... A function means, -just once if function returns non-nil. Function is called with the -reference buffer and called from within the list buffer. - -E.g. `get-buffer-window' means: just once only if reference and list -buffer is on same frame.") -;;; :group 'x-symbol-input-control -;;; :type 'boolean) ; no, nil or function or sexp=t - -;;;(x-symbol-define-user-options 'x-symbol-use-reference-buffer-once '(t)) - -(defcustom x-symbol-reveal-invisible t - "*If non-nil, reveal invisible characters at point. -Usually, with a non-nil `x-symbol-subscripts', some parts of the text -might be invisible. With this feature and if point is in such an area, -all the text in the area is revealed and displayed with -`x-symbol-revealed-face'. With value t, also reveal if point is -directly after such an area. See function `x-symbol-reveal-invisible'." - :group 'x-symbol-info-general - :group 'x-symbol-miscellaneous - :type '(radio (const :tag "No" nil) - (const :tag "Characters Around Point" t) - (sexp :tag "Character After Point" :format "%t" :value after))) - -(x-symbol-define-user-options 'x-symbol-reveal-invisible - '(after - (nil . "No") - (after . "Character After Point") - (t . "Characters Around Point"))) - -(defcustom x-symbol-character-info t - "*If non-nil, display info for characters at point in echo area. -The info for the character after point includes the character itself, -the token of the current language, eventually colored according to some -coloring scheme, the token specific classes, the codings in which the -characters is considered to be a 8bit character and the key bindings. -With value t and no info for the character after point, show info for -character before point instead. See also `x-symbol-context-info'." - :group 'x-symbol-info-general - :type '(radio (const :tag "None" nil) - (const :tag "Characters Around Point" t) - (sexp :tag "Character After Point" :format "%t" :value after))) - -(x-symbol-define-user-options 'x-symbol-character-info - '(after - (nil . "None") - (after . "Character After Point") - (t . "Characters Around Point"))) - -(defcustom x-symbol-context-info t - "*If non-nil, display info for context before point in echo area. -If enabled and no info for characters at point, display the info for -the character to which \\[x-symbol-modify-key] would replace the context -before point. See also `x-symbol-character-info'." - :group 'x-symbol-info-general - :type 'boolean) - -(x-symbol-define-user-options 'x-symbol-context-info '(t)) - - -;;;=========================================================================== -;;; Texts, Modeline appearance -;;;=========================================================================== - -(defcustom x-symbol-charsym-modeline-name "none" - "Modeline name of the pseudo language x-symbol charsym. -See language access `x-symbol-LANG-modeline-name'." - :group 'x-symbol-miscellaneous - :type 'string) - -(defcustom x-symbol-coding-name-alist - '((iso-8859-1 . "Latin-1") - (iso-8859-2 . "Latin-2") - (iso-8859-3 . "Latin-3") - (iso-8859-9 . "Latin-5") - (iso-8859-15 . "Latin-9")) - "*Alist of codings with their names presented to the user. -The elements look like (CODING . NAME) where CODING is a valid value for -`x-symbol-coding' and NAME is the NAME used in the menu." - :group 'x-symbol-miscellaneous - :type '(repeat (cons :format "%v" x-symbol-coding string))) - -;;;(defface x-symbol-modeline-warning-face -;;; `((((class color) (background light)) -;;; (:foreground "red4"))) -;;; "*TODO" -;;; :group 'x-symbol-mode) - -;;(defcustom x-symbol-coding-modeline-warning-format "%s-err" -;; "*Format used to display coding which is not supported. -;;See `x-symbol-coding-modeline-text'." -;; ;; using text properties with faces for the modeline string doesn't work on -;; ;; XEmacs-21.4.5... -;; :group 'x-symbol-mode -;; :type 'string) - -(defcustom x-symbol-coding-modeline-alist - '((iso-8859-1 . "-l1") - (iso-8859-2 . "-l2") - (iso-8859-3 . "-l3") - (iso-8859-9 . "-l5") - (iso-8859-15 . "-l9") - (info . "-i") - (error . "-err")) - ;; TODO: describe none, info, error - "*Alist of codings with their names in the modeline. -The elements look like (CODING . NAME) where CODING is a valid value for -`x-symbol-coding' and NAME is used by `x-symbol-coding-modeline-text'." - :group 'x-symbol-mode - :type '(repeat (cons :format "%v" x-symbol-coding string))) - -(defcustom x-symbol-modeline-state-list - '(" XS:" - (x-symbol-language . x-symbol-language-modeline-text) - (x-symbol-8bits "8") - (x-symbol-unique "*") - (x-symbol-coding . x-symbol-coding-modeline-text) - "/" - (x-symbol-subscripts "s") - (x-symbol-image "i")) - "*Alist used by `x-symbol-update-modeline' to construct the modeline. -This function constructs `x-symbol-modeline-string' by concatenating the -result from the elements in this list. Each element looks like - SEPARATOR or - (VARIABLE NON-NIL . NIL) or - (VARIABLE . FUNCTION) - -SEPARATOR is a string and is used directly, only use the first from two -consecutive SEPARATORs. If VARIABLE is non-nil, use NON-NIL, otherwise -NIL, both NON-NIL and NIL should be strings or nil. FUNCTION is called -with the value of VARIABLE as argument and should return a string or -nil. Two SEPARATORs where all the elements in between return nil, are -considered to be consecutive." - :group 'x-symbol-mode - :type '(repeat (choice (string :tag "Separator") - (cons :tag "Depending on variable" - variable - (cons :format "%v" - (choice :tag "Non-nil" - (const :tag "Nothing" nil) string) - (choice :tag "Nil" - (const :tag "Nothing" nil) - string))) - (cons :tag "Calling function" - (sexp :tag "With argument") - function)))) - -;; Emacs only? -(defcustom x-symbol-set-coding-system-if-undecided t ; TODO: nil? - "*If non-nil, set coding system if undecided when turning on X-Symbol. -If this variable is non-nil, `x-symbol-default-coding' is non-nil, and -`buffer-file-coding-system' specifies an undecided coding system, set -`buffer-file-coding-system' according to `x-symbol-default-coding'." - :group 'x-symbol-mode - :type 'boolean) - - -;;;=========================================================================== -;;; Minor mode control -;;;=========================================================================== - -(defcustom x-symbol-auto-coding-search-limit 10000 - "*Limits searching for coding strings in the file. -Used in variable `x-symbol-auto-mode-alist' when finding an appropriate -value for `x-symbol-coding'." - :group 'x-symbol-mode - :type '(choice (const :tag "No limit" nil) (integer :tag "Limit"))) - - -;;;=========================================================================== -;;; Misc -;;;=========================================================================== - -(defcustom x-symbol-charsym-ascii-alist nil - "Alist of charsyms and their Ascii representation. -Each element looks like (CHARSYM . ASCII) where CHARSYM is a x-symbol -charsym and ASCII is a string. Used by `x-symbol-translate-to-ascii'. - -E.g., if you prefer the German way to Asciify accented characters, use - (setq x-symbol-charsym-ascii-alist - '((adiaeresis . \"ae\") (Adiaeresis . \"Ae\") - (odiaeresis . \"oe\") (Odiaeresis . \"Oe\") - (udiaeresis . \"ue\") (Udiaeresis . \"Ue\")))" - :group 'x-symbol-miscellaneous - :type '(repeat (cons :format "%v" x-symbol-charsym string))) - -(defcustom x-symbol-charsym-ascii-groups - '(digit1 - letter slash cedilla ogonek dotaccent ring tilde breve - circumflex caron diaeresis hungarumlaut acute grave) - "Charsym groups with default ascii representations. -Charsyms with a group in this list use their subgroup string as the last -possibility as the ascii representation. See `x-symbol-init-cset' for -details. Used by `x-symbol-translate-to-ascii'." - :group 'x-symbol-miscellaneous - :type '(repeat x-symbol-group)) - -(defcustom x-symbol-valid-charsym-function 'x-symbol-default-valid-charsym - "Function which should return non-nil if a charsym is valid. -Function is called with the charsym and optional language." - :group 'x-symbol-input-control - :type 'function) - -(defvar x-symbol-user-table nil - "List of character definitions: groups, aspects, input. -Used to shadow default elements with key CHARSYM in the default tables. -The elements have the following form, as explained in -`x-symbol-init-cset', DUMMY is not used: - (CHARSYM DUMMY GROUPING ASPECTS SCORE INPUT PREFIXES) - -E.g., if you prefer charsym `epsilon1' over `epsilon', you might want to -copy the table element from `x-symbol-xsymb1-table' and change its score: -use the following element in this table: - (epsilon1 t (greek1 \"e\" nil \"epsilon\") nil -3000)") - -(defvar x-symbol-mule-change-default-face nil - "If non-nil, change font of default face for existing charsets. -The default face is never changed for the charset registry corresponding -to `x-symbol-default-coding'. It is always set for new charsets. -Otherwise, this value determines whether it is changed.") - - -;;;=========================================================================== -;;; Commands in X-Symbol map -;;;=========================================================================== - -(defcustom x-symbol-map-default-keys-alist - '((help x-symbol-help) - ((control ?h) x-symbol-help) - (button1) - (button2) - (button3) - (down-mouse-1 ignore) - (down-mouse-2 ignore) - (down-mouse-3 ignore) - (mouse-1) - (mouse-2) - (mouse-3) - ((meta home) beginning-of-buffer-other-window t) - ((meta end) end-of-buffer-other-window t) - ((meta prior) scroll-other-window-down t) - ((meta next) scroll-other-window t)) - "Alist used by `x-symbol-map-default-binding'. -Each element looks like (KEY COMMAND TEMPORARYP). - -If the last event in the undefined X-Symbol key sequence matches KEY, -see `events-to-keys', COMMAND is executed. If COMMAND is nil, execute -command which has binding KEY without prefix of the X-Symbol key -sequence. IF TEMPORARYP is non-nil, use key prefix and the prefix -argument for the following command." - :group 'x-symbol-input-control - :type '(repeat (group x-symbol-key - (choice (const :tag "Usual command" nil) - x-symbol-command) - (boolean :tag "Temporary")))) - -(defcustom x-symbol-map-default-bindings - '(("\C-i" x-symbol-read-token-direct) - ("\C-m" x-symbol-read-token) - (nil x-symbol-grid) - ([(left)] x-symbol-modify-key) - ([(right)] x-symbol-modify-key) - ([(up)] x-symbol-rotate-key) - ([(down)] x-symbol-rotate-key)) - "TODO. nil = (vector x-symbol-compose-key)" - :group 'x-symbol-input-control - :type '(repeat (group (sexp :tag "Key sequence" nil) - x-symbol-command))) - -(defvar x-symbol-after-init-input-hook nil - "Hook run after the initialization of all input methods. -See `x-symbol-init-input'. If you want define key bindings starting -with \\[x-symbol-map], do it here. It is a bad idea to use this for -additional self insert commands, use \"character descriptions\" in -`x-symbol-user-table' instead.") - - -;;;=========================================================================== -;;; Menu (option part) -;;;=========================================================================== - -;; As long as custom does not offer a widget for menu entries...no defcustom -;; WARNING: XEmacs-20.4 :suffix STRING -(defvar x-symbol-menu - '("X-Symbol" :filter x-symbol-menu-filter - ("Conversion in %s" :filter x-symbol-extra-filter - ["Conversion" nil x-symbol-region-text] ; pseudo entry - ["Encode Characters" x-symbol-encode - :active (and x-symbol-language (not buffer-read-only))] - ["Encode & Recode" x-symbol-encode-recode - :active (and x-symbol-coding x-symbol-language (not buffer-read-only) - (not (eq x-symbol-coding x-symbol-default-coding)) - (eq (x-symbol-buffer-coding) x-symbol-default-coding) - (assq x-symbol-coding x-symbol-fchar-tables))] - ["Decode Tokens" x-symbol-decode - :active (and x-symbol-language (not buffer-read-only))] - ["Recode & Decode" x-symbol-decode-recode - :active (and x-symbol-coding x-symbol-language (not buffer-read-only) - (not (eq x-symbol-coding x-symbol-default-coding)) - (eq (x-symbol-buffer-coding) x-symbol-default-coding) - (assq x-symbol-coding x-symbol-fchar-tables))] - ["Replace Char Aliases" x-symbol-unalias - :active (not buffer-read-only)]) - ;; - ("Other Commands" :filter x-symbol-extra-filter - ["Other Commands" nil nil] ; pseudo entry - ["Copy Encoded" x-symbol-copy-region-encoded - ;;(x-symbol-copy-region-encoded (region-beginning) (region-end)) - :active (and x-symbol-language (region-active-p))] - ["Paste Decoded" x-symbol-yank-decoded - :active (and x-symbol-mode (not buffer-read-only))] - "---" - ["GRID Of Characters" x-symbol-grid t] - ["READ Token Character" x-symbol-read-token (not buffer-read-only)] - "---" - ["Modify CONTEXT" x-symbol-modify-key (not buffer-read-only)] - ["Rotate CONTEXT" x-symbol-rotate-key (not buffer-read-only)] - "---" - ["Info Page" x-symbol-package-info t] - ["Web Page" x-symbol-package-web t] - ["Send Bug/Problem Report" x-symbol-package-bug t]) - ;; - ("Buffer/File Options" :filter x-symbol-options-filter - ["X-Symbol Mode" x-symbol-mode t] - "---" - ["Token Language:" x-symbol-language t] - ["8bit Char Encoding:" x-symbol-coding t] - ["Store 8bit In File" x-symbol-8bits t] - ["Unique Decoding" x-symbol-unique t] - "---" - ["Super-/Subscripts" x-symbol-subscripts - (x-symbol-subscripts-available-p)] - ["Show Images" x-symbol-image (x-symbol-image-available-p)]) - ;; - ("General Options" :filter x-symbol-options-filter - ["Input Method TOKEN" x-symbol-token-input t] - ["Input Method ELECTRIC" x-symbol-electric-input t] - "---" - ["Language Specific GRID" x-symbol-local-grid t] - ["Language Specific MENU" x-symbol-local-menu t] - "---" - ["Temporary GRID" x-symbol-temp-grid t] - ["Temporary Key Completions" x-symbol-temp-help t] - "---" - ["Reveal Invisible" x-symbol-reveal-invisible t] - ["Display Character Info" x-symbol-character-info t] - ["Display Context Info" x-symbol-context-info t] - "---" - ["Browse Customization" (customize-browse 'x-symbol) t]) - "---") - "First entries of the x-symbol menu, language specific or not. -The next items are submenus with commands to insert x-symbol characters. -See also `x-symbol-header-groups-alist'.") - - -;;;=========================================================================== -;;; Menu (insert commands part), Grid -;;;=========================================================================== - -(defcustom x-symbol-menu-max-items 30 - "*Maximum number of entries in submenus of the x-symbol menu. -If the number of character input commands in a submenu exceed this -value, use more than one submenu for the same header. These submenus -have nearly the same length. See also `x-symbol-header-groups-alist'." - :group 'x-symbol-input-init - :type 'integer) - -(defcustom x-symbol-header-groups-alist - '(("Operator" bigop operator) - ("Relation" relation) - ("Arrow" arrow) - ("Shaped" triangle shape) - ("Punctuation" white line dots punctuation quote parenthesis) - ("Symbol" symbol currency) - ("Math Letter" mathletter setsymbol) - ("Greek Letter" greek greek1) - ("Misc. Letter" letter slash) - ("Cedilla, Ogonek" cedilla ogonek) - ("Dotaccent, Ring" dotaccent ring) - ("Tilde, Breve" tilde breve) - ("Circumflex, Caron" circumflex caron) - ("Diaeresis, Umlaut" diaeresis hungarumlaut) - ("Acute, Grave" acute grave)) - "Alist to determine the header/submenu for characters. -Each element looks like (HEADER GROUP...) where HEADER is a string and -GROUP is the group of a character as explained in `x-symbol-init-cset'. -This alist is used for `x-symbol-grid' and the `x-symbol-menu'. -Token languages might define their own alist. - -For each token language LANG, `x-symbol-LANG-header-groups-alist', if -non-nil, contains the specification for the language specific grid and -menu." -;; TODO: mention: before init - :group 'x-symbol-input-init - :type 'x-symbol-headers) - -(defcustom x-symbol-completions-buffer "*X-Symbol Key Completions*" - "Buffer name for key completions buffer. -Used by `x-symbol-help', i.e., when pressing Help during a x-symbol -key sequence." - :group 'x-symbol-input-init - :type 'string) - -(defcustom x-symbol-grid-buffer-format "*X-Symbol Grid (%s)*" - "Buffer name format for grid buffers. -Used with substitution `x-symbol-charsym-name'/%s when invoked from a -buffer without a valid token language or if `x-symbol-local-grid' has -value nil. Otherwise, used with substitution NAME/%s where NAME is the -name of `x-symbol-language'." - :group 'x-symbol-input-init - :type 'string) - -(defcustom x-symbol-grid-reuse t - "If non-nil, \\[x-symbol-grid] reuses old grid buffers. -If non-nil, avoid unnecessary computations. You should probably set -this to nil, if you use side-by-side buffers with different width." - :group 'x-symbol-input-control - :type 'boolean) - -(defcustom x-symbol-grid-header-echo - '("button2 scrolls up/down, button3 pops up X-Symbol menu (all non-highlighted parts)" - (8 24 x-symbol-info-face) (33 54 x-symbol-info-face) - (56 x-symbol-info-face)) - "Text used for the echo are if mouse if over a heading. -See `x-symbol-fancy-value' for the value type." - :group 'x-symbol-input-init - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defcustom x-symbol-grid-ignore-charsyms '(nobreakspace) - "Charsyms not being displayed in the grid, see `x-symbol-grid'." - :group 'x-symbol-input-control - :type '(repeat x-symbol-charsym)) -;; problems with var-space fonts - -(defcustom x-symbol-grid-tab-width 4 ; TODO Emacs better? 3 too small - "Tab width in the grid between characters, see `x-symbol-grid'. -The widest character should not be wider than the tab width if the -default face has font of `x-symbol-heading-face'." - :group 'x-symbol-input-init - :type 'number) - -(defface x-symbol-heading-face - `((((class color) (background light)) - (:foreground "green4" - :bold t :family "Helvetica" - ,@(if (featurep 'xemacs) '(:size "12pt")) - :underline t))) ; underline must be last... - ;;(:foreground "green4" :underline t))) - "Face used for headers in the grid buffers. -The defined font is used as default font and influences the correct -value of `x-symbol-grid-tab-width'." - :group 'x-symbol-input-init) - -(defvar x-symbol-heading-strut-glyph - (make-glyph (eval-when-compile - `(((x) . [xbm :data (6 20 ,(make-string 20 0))]) - ((mswindows) . [xbm :data (6 20 ,(make-string 20 0))]) - ((tty) . [string :data " "])))) - "Glyph at the end of headers in grid buffers, see `x-symbol-grid'. -Allows to have a larger interline spacing when the line starts with a -header.") - - -;;;=========================================================================== -;;; Other input methods -;;;=========================================================================== - -(defvar x-symbol-key-init-ignore nil - "Regexp matching contexts not being used by input method QUAIL.") -;; TODO: just regexp, more text - -(defvar x-symbol-quail-init-ignore " " - "Regexp matching contexts not being used by input method QUAIL.") -;; TODO: just regexp, more text - -(defvar x-symbol-context-init-ignore " " - "Regexp matching contexts not being used by input method CONTEXT. -As opposed to `x-symbol-context-ignore', this is already used during -initialization. It also allows the input method CONTEXT to consider the -next shorter context.") -;; just regexp - -(defcustom x-symbol-context-ignore nil - "Regexp matching contexts not to be replaced by input method CONTEXT. -You may also use a function instead of a regexp, see -`x-symbol-call-function-or-regexp'." - :group 'x-symbol-input-control - :type 'x-symbol-function-or-regexp) -;; TODO: mention that fn is called with CONTEXT CHARSYM - -(defcustom x-symbol-electric-ignore "[ \t]\\|'[ls]" - "Regexp matching contexts not to be replaced by input method ELECTRIC. -A language dependent regexp is also checked before a context is -replaced, see `x-symbol-electric-input' for details. You may also use a -function instead of a regexp, see `x-symbol-call-function-or-regexp'. - -For each token language LANG, `x-symbol-LANG-electric-ignore', if -non-nil, defines the language dependent version." - :group 'x-symbol-input-control - :type 'x-symbol-function-or-regexp) - -(defcustom x-symbol-rotate-suffix-char ?\# - "Additional suffix character usually used to simulate Greekifying. -\\[x-symbol-modify-key] modifies the longest context before point -whereas \\[x-symbol-rotate-key] appends this character to the context to -determine the correct target character for the context. The value is -typically a suffix being defined in `x-symbol-group-input-alist'." - :group 'x-symbol-input-control - :type 'character) - -(defcustom x-symbol-rotate-prefix-alist - '((8 . north) - (7 . north-west) - (4 . west) - (1 . south-west) - (2 . south) - (28 . vertical) - (82 . vertical) - (3 . south-east) - (6 . east) - (64 . horizontal) - (46 . horizontal) - (9 . north-east) - (5 . nil)) - "Alist used if `x-symbol-rotate-key' is called with a prefix arg. -Each element looks like (NUMBER . DIRECTION) where NUMBER is the numeric -value of the prefix argument and DIRECTION is a valid direction in -`x-symbol-rotate-aspects-alist'." - :group 'x-symbol-input-control - :type '(repeat (cons :format "%v" - (integer :tag "Numeric Prefix Arg") - (symbol :tag "Direction")))) - -(defvar x-symbol-list-mode-hook nil - "Hook run at the end of `x-symbol-list-mode'.") - -;;; Before init-input: ====================================================== - -(defvar x-symbol-key-min-length 2 - "Minimum number of key strokes in a x-symbol key sequence. -If the key context is shorter than this value, use \"1\" as an -additional key suffix. See `x-symbol-init-input' for details.") - -(defvar x-symbol-quail-suffix-string ";" - "TODO") - -(defvar x-symbol-define-input-method-quail (featurep 'mule)) - - -;;;=========================================================================== -;;; Invisible and Info (part 1) -;;;=========================================================================== - -(defcustom x-symbol-idle-delay 0.5 - "*Time in seconds of idle time before showing info in the echo area. -Also used as idle time before revealing invisible characters. See -`x-symbol-character-info', `x-symbol-context-info' and -`x-symbol-reveal-invisible'. See also `x-symbol-start-itimer-once'." - :group 'x-symbol-miscellaneous - :type 'number) - -(defface x-symbol-revealed-face - '((((class color) (background light)) - (:background "pink"))) - "Face used when revealing invisible characters. -Used instead `x-symbol-invisible-face'. See `x-symbol-reveal-invisible'." - :group 'x-symbol-info-general - :group 'x-symbol-miscellaneous) - -(defcustom x-symbol-context-info-ignore 'x-symbol-default-context-info-ignore - "Regexp matching contexts not used to display a context info for. -See `x-symbol-context-info'. You may also use a function instead of a -regexp, see `x-symbol-call-function-or-regexp'." -;; TODO: mention that fn is called with CONTEXT CHARSYM - :group 'x-symbol-info-general - :type 'x-symbol-function-or-regexp) - -(defcustom x-symbol-context-info-threshold 2 - "Minimum length of contexts to display a context info for. -Used by `x-symbol-default-context-info-ignore'." - :group 'x-symbol-info-general - :type 'integer) - -(defcustom x-symbol-context-info-ignore-regexp "\\`[A-Za-z]+\\'" - "Regexp matching contexts not to display a context info for. -Used by `x-symbol-default-context-info-ignore'." - :group 'x-symbol-info-general - :type 'regexp) - -(defcustom x-symbol-context-info-ignore-groups - '(letter - slash cedilla ogonek dotaccent ring tilde breve - circumflex caron diaeresis hungarumlaut acute grave) - "Groups of characters not to display a context info for. -Used by `x-symbol-default-context-info-ignore'." - :group 'x-symbol-info-general - :type '(repeat x-symbol-group)) - - -;;;=========================================================================== -;;; Character Info -;;;=========================================================================== - -(defface x-symbol-info-face - (eval-when-compile - `((((class color) (background light)) - (:foreground "green4" :family "Helvetica" - ;; :size necessary with XEmacs, I get huge fonts otherwise, - ;; at least if x-symbol is enabled from a buffer with a - ;; nonstandard default font... - ,@(if (featurep 'xemacs) '(:size "12pt")))))) - "Face normally used for the info in the echo area." - :group 'x-symbol-info-strings) - -(defface x-symbol-emph-info-face - (eval-when-compile - `((((class color) (background light)) - (:foreground "red4" :family "Helvetica" - ,@(if (featurep 'xemacs) '(:size "12pt")))))) - "Face used for the emphasized info in the echo area." - :group 'x-symbol-info-strings) - -(defcustom x-symbol-info-intro-after - '("AFTER: " (0 -2 x-symbol-info-face)) - "Intro spec of info for the character after point. -See `x-symbol-character-info'. See `x-symbol-fancy-value' for the value -type." - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defcustom x-symbol-info-intro-before - '("BEFORE: " (0 -2 x-symbol-info-face)) - "Intro spec of info for character before point. -See `x-symbol-character-info'. See `x-symbol-fancy-value' for the value -type." - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defcustom x-symbol-info-intro-highlight - '("button2 inserts: " (-10 -2 x-symbol-info-face)) - "Intro spec of the info character in grid under mouse. -See `x-symbol-fancy-value' for the value type, STRING is passed to -`substitute-command-keys'." - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defcustom x-symbol-info-intro-list - '("\\[x-symbol-list-selected] inserts: " (-10 -2 x-symbol-info-face)) - "Intro spec of the info character in grid under point. -Used by \\[x-symbol-list-info]. See `x-symbol-fancy-value' for the -value type, STRING is passed to `substitute-command-keys'." - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defcustom x-symbol-info-intro-yank - '("\\[yank] inserts: " (-10 -2 x-symbol-info-face)) - "Intro spec of info for the character inserted in read-only buffer. -See `x-symbol-insert-command'. See `x-symbol-fancy-value' for the value -type, STRING is passed to `substitute-command-keys'." - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defcustom x-symbol-info-alias-after - '("\\[forward-char] \\[x-symbol-modify-key] replaces char alias with: " - (-27 -2 x-symbol-emph-info-face)) - "Intro spec of short info for character alias after point. -See `x-symbol-character-info'. See `x-symbol-fancy-value' for the value -type, STRING is passed to `substitute-command-keys'." - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defcustom x-symbol-info-alias-before - '("\\[x-symbol-modify-key] replaces char alias with: " - (-27 -2 x-symbol-emph-info-face)) - "Intro spec of short info for character alias before point. -See `x-symbol-character-info'. See `x-symbol-fancy-value' for the value -type, STRING is passed to `substitute-command-keys'." - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defcustom x-symbol-info-context-pre - '("\\[x-symbol-modify-key] replaces " (-9 -1 x-symbol-info-face)) - "Spec of text before context in info for context before point. -See `x-symbol-context-info'. See `x-symbol-fancy-value' for the value -type, STRING is passed to `substitute-command-keys'." - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defcustom x-symbol-info-context-post - '(" with: " (1 -2 x-symbol-info-face)) - "Spec of text after context in info for context before point. -See `x-symbol-context-info'. See `x-symbol-fancy-value' for the value -type." - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defcustom x-symbol-info-token-pre '(" = " (x-symbol-info-face)) - "Spec of text between character and token in info. -See `x-symbol-fancy-value' for the value type." - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defcustom x-symbol-info-token-charsym - '("<%s>" (0 1 x-symbol-info-face) (-1 x-symbol-info-face)) - "Spec with format for x-symbol charsym in info. -See `x-symbol-fancy-string' for the value type, the format with -substitution CHARSYM/%s is the STRING." - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defcustom x-symbol-info-classes-pre '(" (" (1 x-symbol-info-face)) - "Spec of text before token classes in info. -See `x-symbol-fancy-associations' for details." - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defcustom x-symbol-info-classes-sep '(", " (x-symbol-info-face)) - "Spec of text between token classes in info. -See `x-symbol-fancy-associations' for details." - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defcustom x-symbol-info-classes-post '(")" (x-symbol-info-face)) - "Spec of text before after token classes in info. -See `x-symbol-fancy-associations' for details." - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defcustom x-symbol-info-classes-charsym '("charsym" (x-symbol-info-face)) - "Spec of token class string for x-symbol charsyms in info. -See `x-symbol-fancy-value' for the value type." - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defcustom x-symbol-info-coding-pre '("." (x-symbol-info-face)) - "Spec of text before codings in info. -See `x-symbol-fancy-associations' for details." - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defcustom x-symbol-info-coding-sep '("." (x-symbol-info-face)) - "Spec of text between codings in info. -See `x-symbol-fancy-associations' for details." - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defcustom x-symbol-info-coding-post '("") - "Spec of text after codings in info. -See `x-symbol-fancy-associations' for details." - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defcustom x-symbol-info-coding-alist - '((iso-8859-1 "l1" (x-symbol-info-face)) - (iso-8859-2 "l2" (x-symbol-info-face)) - (iso-8859-3 "l3" (x-symbol-info-face)) - (iso-8859-9 "l5" (x-symbol-info-face)) - (iso-8859-15 "l9" (x-symbol-info-face))) - "Specs for coding info. -Each element looks like (CODING . SPEC). Characters which are defined -to be 8bit characters with CODING, are displayed with SPEC in the info. -See `x-symbol-fancy-associations' for details." - :group 'x-symbol-info-strings - :type '(repeat (group x-symbol-coding - string - (x-symbol-fancy-spec :inline t - :tag "Face specifications")))) - -(defcustom x-symbol-info-keys-keymaps 'x-symbol-default-info-keys-keymaps - "Function returning the root keymaps for the key info. -If non-nil, called with the current charsym as argument, the result is -the second argument to `where-is-internal'. See also -`x-symbol-info-keys-pre'." - :group 'x-symbol-info-strings - :type '(choice (const :tag "Current maps" nil) function)) - -(defcustom x-symbol-info-keys-pre - '(" \\[x-symbol-map] +: " (-4 -1 x-symbol-info-face)) - "Spec of text before key bindings in info. -See `x-symbol-fancy-associations' for details, STRING is passed to -`substitute-command-keys'. See also `x-symbol-info-keys-keymaps'." - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defcustom x-symbol-info-keys-sep '(" , " (0 -1 x-symbol-info-face)) - "Spec of text between key bindings in info. -See `x-symbol-fancy-associations' for details." - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defcustom x-symbol-info-keys-post '("") - "Spec of text after key bindings in info. -See `x-symbol-fancy-associations' for details." - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defconst x-symbol-fancy-cache-size 25 - "Internal. Number of variables whose fancy values are cached.") - -(defvar x-symbol-cache-size 100 - "*Size of caches for fancy strings. -See `x-symbol-ensure-hashtable' and `x-symbol-puthash'.") - - -;;;=========================================================================== -;;; Init: aspects, default input -;;;=========================================================================== - -(defvar x-symbol-modify-aspects-alist - '((shift (nil . 0) (up . 300) (down . 600)) - (shape (nil . 0) (round . 1000) (square . 2000) (curly . 3000)) - (size (nil . 0) (big . 5000) (sml . 9000))) - "Alist of modify aspects with their values and scores. -Each element looks like (ASPECT (VALUE . SCORE)...) where ASPECT is a -modify aspect. It is a good idea to have a value nil with score 0 in -the alist of all aspects. - -The aspect value must be equal to one VALUE, the modify score is -incremented by the corresponding SCORE. A higher modify score makes a -character likely to appear late in the modify-to chain. See -`x-symbol-init-cset' and `x-symbol-init-input'.") - -(defvar x-symbol-rotate-aspects-alist - '((direction (north . -5000) (north-west . -4500) (west . -4000) - (south-west . -3500) (south . -3000) (vertical . -2500) - (south-east . -2000) (east . -1500) - (horizontal . -1000) (north-east . -500) (nil . 0))) - "Alist of rotate aspects with their values and scores. -Each element looks like (ASPECT (VALUE . SCORE)...) where ASPECT is a -rotate aspect. It is a good idea to have a value nil with score 0 in -the alist of all aspects. Aspect `direction' is also used by -`x-symbol-rotate-prefix-alist'. - -The aspect value must be equal to one VALUE, the rotate score is -incremented by the corresponding SCORE. A higher rotate score makes a -character likely to appear late in the rotate-to chain. See -`x-symbol-init-cset' and `x-symbol-init-input'.") - -(defvar x-symbol-group-input-alist - '((bigop 0) - (operator -120) - (relation -120) - (arrow 0) - (triangle 0) - (shape 0) - (white 1500) - (line 0) - (dots 0) - (punctuation 0) - (quote 0) - (parenthesis 0) - (symbol 0) - (currency 0) - (digit1 0 "%sd") - (mathletter 500 "%s") - (setsymbol 120 "%s") - (greek1 1500 "%s#" "#%s") - (greek 0 "%s#" "#%s") - (letter 0 "%s") - (slash 120 "%s/" "/%s") - (ogonek 250 "%s," ",%s") - (cedilla 120 "%s," ",%s") - (dotaccent 250 "%s." ".%s") - (ring 250 "%s*" "*%s") - (breve 250 "%sv" "v%s") - (caron 120 "%sv" "v%s") - (circumflex 120 "%s^" "^%s") - (tilde 120 t "%s~" "~%s") - (hungarumlaut 250 "''%s") - (diaeresis 120 "%s:" t ":%s" "%s\"" "\"%s") - (grave 120 t "%s`" "`%s") - (acute 120 "%s'" t "'%s")) - "Alist of character groups with their scores and default input formats. -Each element looks like (GROUP GROUP-SCORE . INPUT). If the group of a -charsym is equal to GROUP, its score is incremented by GROUP-SCORE, see -`x-symbol-init-cset'. - -INPUT = nil | (FORMAT . INPUT) | (t FORMAT . INPUT). It is used if the -charsym has no input definitions, but a SUBGROUP which might have been -processed using `x-symbol-subgroup-string-alist'. In that case, the -FORMATs with substitutions SUBGROUP/%s are the CONTEXTs as described in -`x-symbol-init-cset'.") - - -;;;=========================================================================== -;;; Init: char syntax -;;;=========================================================================== - -(defvar x-symbol-group-syntax-alist - '((bigop "_") - (operator "_") - (relation "_") - (arrow "_") - (triangle "_") - (shape "_") - (white " ") - (line ".") - (dots ".") - (punctuation ".") - (quote "." (open . "(%s") (close . ")%s")) - (parenthesis "." (open . "(%s") (close . ")%s")) - (symbol "_") - (currency "_") - (digit1 "_") - (mathletter "w") - (setsymbol "w") - (greek "w") - (greek1 "w") - (letter "w") - (slash "w") - (cedilla "w") - (ogonek "w") - (dotaccent "w") - (ring "w") - (tilde "w") - (breve "w") - (circumflex "w") - (caron "w") - (diaeresis "w") - (hungarumlaut "w") - (acute "w") - (grave "w")) - "Alist of groups with their syntax designators used in XEmacs/Mule. -Each element looks like (GROUP SYNTAX (RAW-SUBGROUP . FORMAT)...). A -charsym with group GROUP has normally the syntax designator SYNTAX. If -its raw subgroup, i.e., a symbol, is equal to a RAW-SUBGROUP and the -OPPOSITE of the charsym is defined in the same or previous csets, FORMAT -with substitution CSTRING/%s is used as the syntax designator where -CSTRING is the cstring of OPPOSITE. See `x-symbol-init-cset' and -`x-symbol-subgroup-string-alist'.") - -(defvar x-symbol-subgroup-string-alist - '((accent . " ") - (open . "(") - (close . ")")) - "Alist of subgroup symbols with their string representation. -Each element looks like (RAW . STRING) where RAW is a symbol used in the -SUBGROUP position of entries in cset tables, see `x-symbol-init-cset' -and STRING is its string representation.") - - -;;;=========================================================================== -;;; Fonts -;;;=========================================================================== - -(defvar x-symbol-latin-force-use - (equal window-system 'mac) ;; da: very approximate - "If non-nil, define latin characters even when fonts are missing. -If nil, it is a bad idea to decode a file when its `x-symbol-coding' -corresponds to a missing font, i.e., 8bit characters are assumed to have -encoding `x-symbol-default-coding' in this case. If nil, tokens are not -decoded if they require the missing font. Values other than nil are -safe, but latin characters without correct fonts will look strange.") - -(defvar x-symbol-font-sizes - (let ((env-fontsize (getenv "XSYMBOL_FONTSIZE"))) - (if (equal env-fontsize "14") '(("" 14 12)) - (if (equal env-fontsize "18") '(("" 18 14)) - (if (equal env-fontsize "24") '(("" 24 18)) - '(("\\`-etl-" 16 14) ("" 14 12))))))) - -;; (defvar x-symbol-font-sizes '(("\\`-etl-" 16 14) ("" 14 12))) -;; '(14 ("\\`-etl-.+_su[bp]-" . 14) ("\\`-etl-" . 16) ("_su[bp]-" . 12))) - -(defvar x-symbol-font-lock-with-extra-props - (and (boundp 'x-symbol-emacs-has-font-lock-with-props) - x-symbol-emacs-has-font-lock-with-props)) - -(defvar x-symbol-latin1-fonts - '("-adobe-helvetica%s-medium-r-normal-*-%d-*-*-*-*-*-iso8859-1") - "Fonts with registry/encoding \"iso8859-1\". -See `x-symbol-latin1-cset' and `x-symbol-init-cset'.") - -(defvar x-symbol-latin2-fonts - '("-adobe-helvetica%s-medium-r-normal-*-%d-*-*-*-*-*-iso8859-2" - "-etl-fixed%s-medium-r-normal--%d-%d0-72-72-c-*-iso8859-2") - "Fonts with registry/encoding \"iso8859-2\". -See `x-symbol-latin2-cset' and `x-symbol-init-cset'.") - -(defvar x-symbol-latin3-fonts - '("-adobe-helvetica%s-medium-r-normal-*-%d-*-*-*-*-*-iso8859-3" - "-etl-fixed%s-medium-r-normal--%d-%d0-72-72-c-*-iso8859-3") - "Fonts with registry/encoding \"iso8859-3\". -See `x-symbol-latin3-cset' and `x-symbol-init-cset'.") - -(defvar x-symbol-latin5-fonts - '("-etl-fixed%s-medium-r-normal--%d-%d0-72-72-c-*-iso8859-9") - "Fonts with registry/encoding \"iso8859-9\". -See `x-symbol-latin5-cset' and `x-symbol-init-cset'.") - -;; for some reason, the font foundry and family name have been renamed, it is -;; the normal helvetica font... -(defvar x-symbol-latin9-fonts - '("-vh-herilane%s-medium-r-normal-*-%d-*-*-*-*-*-iso8859-15") - "Fonts with registry/encoding \"iso8859-15\". -See `x-symbol-latin9-cset' and `x-symbol-init-cset'.") - -(defvar x-symbol-xsymb0-fonts - '("-xsymb-xsymb0%s-medium-r-normal--%d-*-75-75-p-*-adobe-fontspecific" - "-adobe-symbol%s-medium-r-normal-*-*-%d0-*-*-*-*-adobe-fontspecific") - "Fonts with registry/encoding \"adobe-fontspecific\". -See `x-symbol-xsymb0-cset' and `x-symbol-init-cset'.") - -(defvar x-symbol-xsymb1-fonts - '("-xsymb-xsymb1%s-medium-r-normal--%d-*-75-75-p-*-xsymb-xsymb1" - "-apple-isaxsym-medium-r-normal--%d-%d0-75-75-p-*-xsymb-xsymb1") - "Fonts with registry/encoding \"xsymb-xsymb1\". -See `x-symbol-xsymb1-cset' and `x-symbol-init-cset'.") - - -;;;=========================================================================== -;;; X-Symbol Image: general -;;;=========================================================================== - -(defcustom x-symbol-image-max-width 120 - "*Maximum width of glyphs." - :group 'x-symbol-image-general - :type 'integer) - -(defcustom x-symbol-image-max-height 80 - "*Maximum height of glyphs." - :group 'x-symbol-image-general - :type 'integer) - -(defcustom x-symbol-image-update-cache 'old - "*If non-nil, automatically update the image cache file. -With value nil, only create an image cache file if it does not exist. -With value t, always produce a new cache file. With any other value, -only produce a cache file if it does not exist or is older than the -corresponding image file. This variable has no influence if a glyph -having used the image cache file in question is stored in the buffer -local memory cache, see `x-symbol-image-memory-cache'. - -See `x-symbol-image-cache-directories' for the file name of the -cached image. See also `x-symbol-image-special-glyphs'." - :group 'x-symbol-image-general - :type '(radio (const :tag "No" nil) - (const :tag "Always" t) - (sexp :tag "Old" :format "%t" :value old))) - -(defcustom x-symbol-image-use-remote nil - "*If nil, only show glyphs which can be stored in the memory cache. -The memory cache stores glyphs for file names without directory part or -a directory part in the language access -`x-symbol-LANG-image-cached-dirs', e.g., it should contain \"images\", -if \"images/mail.png\" should be stored in the memory cache. - -If this variable is nil, use `x-symbol-image-remote-glyph' for image -files not in the memory cache. If it is non-nil, try to find the image -file during editing, ignoring the searchpath, for speed, though. -Editing lines with image files not in the memory cache will be slow, -since file accesses are necessary for every command. - -When searching for the images file, all file names, including -directories in a search path, are relative to the return value of the -function in language access `x-symbol-LANG-master-directory', value nil -means function `default-directory'. - -Implicitly relative file names, i.e., those which are neither absolute -nor are matched by `x-symbol-image-explicitly-relative-regexp', are -searched in the directories of language access -`x-symbol-LANG-image-searchpath'." - :group 'x-symbol-image-general - :type 'boolean) - -(defcustom x-symbol-image-current-marker " *" - "*Marker to indicate the directory of the image file. -Marker used in `x-symbol-image-menu' to indicate directories in the -image search path containing the image file. The first marked directory -is used by button2 over an image insertion command." - :group 'x-symbol-image-general - :type 'string) - -(defcustom x-symbol-image-scale-method "\\.[0-9][0-9]\\'" - "*Regexp matching the scale factor in the image file name. -If non-nil and this regexp matches the image file name without its final -extension, only the part up to the beginning of the match is used to -determine the name of the image cache file and the design file if it -differs from the image file, see `x-symbol-image-editor-alist'. - -Example: with the default values, for the image and image design file -\"file.70.jpeg\", the image cache file is \"file.png\", for the image -file \"file.70.eps\", the image cache file is \"file.png\", the image -design file is \"file.fig\"." - :group 'x-symbol-image-general - :type '(choice (const :tag "No scale method" nil) regexp)) - -(defcustom x-symbol-image-explicitly-relative-regexp "\\`\\.\\.?/" - "Regexp matching files considered to be explicitly relative." - :group 'x-symbol-image-general - :type 'regexp) - -(defcustom x-symbol-image-searchpath-follow-symlink nil - "*Non-nil, if recursive searching for dirs should follow symbolic links. -Directories in the image search path ending with \"//\" are recursively -inserted. With value nil, do not include subdirectories which are -symbolic links. Directories which are directly specified in the image -searchpath are always included." - :group 'x-symbol-image-general - :type 'boolean) - - -;;;=========================================================================== -;;; Configuration: Image file cache -;;;=========================================================================== - -;; Influenced by `fast-lock-cache-directories' but different semantics! -(defcustom x-symbol-image-cache-directories - `((,(concat "\\`" (regexp-quote (file-truename "~/"))) . "~/.images/") - ("." . t)) - "List of directories for image cache files. -Each element should be of the form: - (REGEXP) or - (REGEXP . t) or - (REGEXP . NEWDIR) or - (REGEXP FUNCTION ARG...) - -Used by `x-symbol-image-cache-name' to determine the directory where to -store the image cache files. The elements in this list are processed -until REGEXP matches the directory part INDIR of the fully expanded -image file name, see `file-truename'. - -With the first form, no image cache file will be produced and -`x-symbol-image-junk-glyph' represents the image file. With the second -form, the image cache file is just produced temporary and is stored in -`x-symbol-image-temp-name'+SUFFIX. If the glyph for the image file is -not stored in `x-symbol-image-memory-cache', the second form is an alias -for the first form. - -With the third form, the match by REGEXP in INDIR is replaced with -NEWDIR, see `replace-match'. With the fourth from, FUNCTION is called -with INDIR and arguments ARGs. In both cases, the result is expanded -with INDIR to get the directory for the image cache file. - -Example: if we have the value - ((\"\\\\`/home/user/junk/\") - (\"\\\\`/home/user/tmp/.*\" . \".images/\") - (\"\\\\`/home/user/\" . \"~/.images/\") - (\".\" . t) -and the following image files, we get: - /home/user/junk/stupid.eps is not cached, a recycle sign is shown - /home/user/tmp/tmp1/image.eps is cached in /home/user/tmp/tmp1/.images/ - /home/user/d1/d2/image.eps is cached in /home/user/.images/d1/d2/ - /usr/local/image.eps is temporary cached in file /tmp/xsi-a006JH.SUFFIX" - :group 'x-symbol-image-general - :type '(repeat (cons :format "%v" - :value (".") - regexp - (choice - (const :tag "Junk" nil) - (const :tag "Temporary" t) - (string :tag "Replace match with") - (cons :tag "Call" - function - (repeat :tag "With arguments" sexp)))))) - -(defvar x-symbol-image-temp-name - (and (featurep 'xemacs) ; temp image files don't work in Emacs - (if (fboundp 'make-temp-file) - (make-temp-file "xsi-") ; Emacs - (expand-file-name (make-temp-name "xsi-") (temp-directory)))) - "Name without suffix of the temporary image cache file. -This should be a unique, at best generated with `make-temp-name'. See -`x-symbol-image-cache-directories' for details.") - -(defcustom x-symbol-image-convert-mono-regexp - (and x-symbol-image-temp-name (regexp-quote x-symbol-image-temp-name)) - "Regexp matching image cache file names not using a colormap. -Used by `x-symbol-image-start-convert-colormap' to determine monochrome -image cache files. This regexp should match temporary image cache files -since \"convert\" is slow when using a colormap." - :group 'x-symbol-image-general - :type '(choice (const :tag "None" nil) regexp)) - - -;;;=========================================================================== -;;; Configuration: highlighting image insertion commands, editor -;;;=========================================================================== - -(defcustom x-symbol-image-help-echo - '("button2 runs: %S , button3 pops up menu" - (8 13 x-symbol-info-face) (-23 -21 x-symbol-info-face) - (-12 x-symbol-info-face)) - "Format string for info when the mouse is over image insertion commands. -Used with substitution COMMAND/%S, where COMMAND describes the -invocation of the image editor, see `x-symbol-image-editor-alist'." - :group 'x-symbol-image-general - :group 'x-symbol-info-strings - :set 'x-symbol-set-cache-variable - :type 'x-symbol-fancy) - -(defcustom x-symbol-image-editor-alist - '(("\\.\\(eps\\|ps\\(tex\\)?\\)\\'" "xfig %s &" ".fig") - ("." "display %s &")) - "Alist of image editors used by `x-symbol-image-editor'. -Each element looks like (REGEXP . EDITOR-SPEC) where EDITOR-SPEC looks -like (SHELL-COMMAND-FORMAT [EXT]) or (FUNCTION ARG...). - -If REGEXP matches the image file, EDITOR-SPEC is used. With the first -form, a shell command SHELL-COMMAND-FORMAT with substitution FILE/%s is -invoked where the image design file FILE is the image file, if used -without optional EXT or EXT with value nil, or the result of -`x-symbol-image-file-name' otherwise, called with arguments image file -name and EXT. - -With the second form, calling (FUNCTION FILE nil ARG...) should return a -string describing the editor, used by function -`x-symbol-image-help-echo' and the title of `x-symbol-image-menu'. -Calling (FUNCTION FILE BUFFER ARG...) should invoke the image editor. -FILE is the image file, BUFFER is the buffer in which the image is -used." - :group 'x-symbol-image-general - :type '(repeat - (cons :format "%v" - :value ("." "display %s &") - regexp - (choice (list :tag "Shell command" - string - (choice (const :tag "Unchanged filename" nil) - (string :tag "Abstract extension"))) - (cons :tag "Call" - function - (repeat :tag "With arguments" sexp)))))) - -(defvar x-symbol-image-menu - '("Run %S in" - "--:shadowDoubleEtchedIn" - ["Rescan buffer" (x-symbol-image-parse-buffer 'OTHER) - :active (x-symbol-event-in-current-buffer)] - ["Update file cache" (x-symbol-image-parse-buffer t) - :active (x-symbol-event-in-current-buffer)]) - "Definition for the popup menu over image insertion commands. -It has the form (HEADER LAST-ITEM...). The menu title is TITLE with -substitution COMMAND/%S, where COMMAND describes the invocation of the -image editor, see `x-symbol-image-editor-alist'. The next menu items -are the directories in the image search path, see -`x-symbol-image-use-remote'. If a image file is found in a -directory, it is marked with `x-symbol-image-current-marker'.") - - -;;;=========================================================================== -;;; Configuration: special-purpose images/glyphs and conversion program -;;;=========================================================================== - -;; `defcustom' with set function -(defvar x-symbol-image-data-directory x-symbol-data-directory - "Configuration variable. Directory of special purpose images. -See `x-symbol-image-special-glyphs'.") - -(defvar x-symbol-image-special-glyphs - '(("RIP.xbm" . xbm) ("hourglass.xbm" . xbm) ("drawing.xbm" . xbm) - ("termlock.xbm" . xbm) ("escherknot.xbm" . xbm) ("recycle.xbm" . xbm)) - ;;'(("splat.xbm" . xbm) ("abacus.xbm" . xbm) ("scroll2.xbm" . xbm) - ;; ("stopsign.xbm" . xbm) ("filing.xbm" . xbm)) - "Special images used for recognized image insertion commands. -The value looks like (BROKEN CREATE DESIGN LOCKED REMOTE JUNK). Each -element looks like (FILE . IMAGE-FORMAT) where FILE is a file name, -expanded with `x-symbol-image-data-directory' and IMAGE-FORMAT is a -image format compiled into your XEmacs. - -They are used to initialize variables containing images/glyphs: - * BROKEN for `x-symbol-image-broken-image', - * CREATE for `x-symbol-image-create-image', - * DESIGN for `x-symbol-image-design-glyph', - * LOCKED for `x-symbol-image-locked-glyph', - * REMOTE for `x-symbol-image-remote-glyph' and - * JUNK for `x-symbol-image-junk-glyph'. - -Special images are used in the following situations: REMOTE represents -images in a file, if the file is remote or if the image name prohibits -the use of the memory cache as specified by `x-symbol-image-use-remote'. -JUNK is used if `x-symbol-image-converter' is nil, if no image should be -created as specified by `x-symbol-image-cache-directories' or if the -image cache file cannot be written. - -LOCKED represents existent image files which cannot be read or -non-existent image files which cannot be created. DESIGN represents -non-existent image files which could be created. CREATE is used during -the creation of the image cache file, an old image cache is used instead -if it exists. BROKEN is used if the creation of the image cache file -failed.") - -(defcustom x-symbol-image-convert-file-alist - '(("\\.pstex\\'" . "ps:")) - "Alist to determine a prefix for the INFILE passed to \"convert\". -Each element looks like (REGEXP . PREFIX). If REGEXP matches INFILE, -INFILE is prefixed by PREFIX for the invocation of \"convert\". If no -REGEXP matches, no prefix is used. See `x-symbol-image-convert-file'." - :group 'x-symbol-image-general - :type '(repeat (cons :format "%v" - regexp (string :tag "Prefix")))) - -(defcustom x-symbol-image-convert-program - (if (eq system-type 'windows-nt) "C:\\ImageMagick\\convert" "convert") - "*Name of the program used in `x-symbol-image-converter'." - :group 'x-symbol-image-general - :type 'string) - -(defcustom x-symbol-image-converter-required nil - "*Whether or not images are required. For Proof General, defaults to nil." - :group 'x-symbol-image-general - :type 'boolean) - -(defcustom x-symbol-image-converter - (when (and (console-type) - x-symbol-image-converter-required) - (save-excursion - (set-buffer (get-buffer-create " *x-symbol-image command*")) - (erase-buffer) - (call-process shell-file-name nil t nil shell-command-switch - (concat x-symbol-image-convert-program " -list Format")) - (call-process shell-file-name nil t nil shell-command-switch - (concat x-symbol-image-convert-program " -h")) - (let (iformat) - (cond ((when (featurep 'png) - (goto-char (point-min)) - (re-search-forward "^[ \t]*[pP][nN][gG]" nil t)) - (setq iformat 'png)) - ((when (featurep 'gif) - (goto-char (point-min)) - (re-search-forward "^[ \t]*[gG][iI][fF]" nil t)) - (setq iformat 'gif)) - (t - (setq iformat (cond ((featurep 'png) 'png) - ((featurep 'gif) 'gif))) - (unless iformat - (warn "x-symbol-image: your Emacs neither supports png nor gif")) - (goto-char (point-min)) - (if (re-search-forward "ImageMagick" nil t) - (if iformat (warn "x-symbol-image: \"convert\" doesn't list recognized formats, I'll try %S" iformat)) - (warn "x-symbol-image: no valid image converter (ImageMagick convert binary required for images)") - (setq iformat nil)))) - (kill-buffer (current-buffer)) - (when iformat - (list* iformat - (cdr (assq iformat '((png . ".png") (gif . ".gif")))) - (if (and (boundp 'system-type) (eq system-type 'windows-nt)) - 'x-symbol-image-start-convert-mswindows - (let ((colors (if (featurep 'xemacs) - (or (device-color-cells) 2) - (if (display-color-p) 256 2)))) - (cond ((< colors 32) 'x-symbol-image-start-convert-mono) - ((> colors 767) - 'x-symbol-image-start-convert-truecolor) - (x-symbol-image-convert-colormap - 'x-symbol-image-start-convert-colormap) - (t 'x-symbol-image-start-convert-color))))))))) - "Converter to produce the image cache file from the image file. -This definition has the form (IMAGE-FORMAT EXTENSION . COMMAND). -IMAGE-FORMAT is a image format compiled into your XEmacs. EXTENSION is -the extension used for image cache file names. - -COMMAND, called with arguments INFILE and OUTFILE should start and -return the process which creates the image cache file OUTFILE from the -image file INFILE. COMMAND should also use `x-symbol-image-max-width' -and `x-symbol-image-max-height'. Value nil means, use -`x-symbol-image-junk-glyph' instead creating a glyph from IMAGE. - -Predefined COMMANDS start \"convert\" from ImageMagick with different -options according to the number of colors in your device: -`x-symbol-image-start-convert-truecolor', -`x-symbol-image-start-convert-color' and -`x-symbol-image-start-convert-mono'." - :group 'x-symbol-image-general - :type '(choice - (const :tag "No image converter" nil) - (cons :tag "Converter" - (symbol :tag "Image format") - (cons :format "%v" - (string :tag "File extension") - (choice - :tag "Convert function" - (function-item :tag "To monochrome" - x-symbol-image-start-convert-mono) - (function-item :tag "To color, restricted" - x-symbol-image-start-convert-color) - (function-item :tag "To color, colormap" - x-symbol-image-start-convert-colormap) - (function-item :tag "To color, unrestricted" - x-symbol-image-start-convert-truecolor) - (function :tag "Other function")))))) - - -;;;=========================================================================== -;;; Package Integration -;;;=========================================================================== - -(put 'x-symbol-insert-command 'x-symbol-input t) -(put 'newline 'x-symbol-input t) -(put 'newline-and-indent 'x-symbol-input t) -(put 'reindent-then-newline-and-indent 'x-symbol-input t) -(put 'tex-insert-quote 'x-symbol-input t) -(put 'TeX-insert-quote 'x-symbol-input t) -(put 'TeX-insert-punctuation 'x-symbol-input t) -(put 'TeX-insert-dollar 'x-symbol-input t) -(put 'sgml-close-angle 'x-symbol-input t) -(put 'sgml-slash 'x-symbol-input t) -(put 'completion-separator-self-insert-command 'x-symbol-input t) -(put 'completion-separator-self-insert-autofilling 'x-symbol-input t) - -(put 'forward-char 'x-symbol-point-function '1+) -(put 'backward-char 'x-symbol-point-function '1-) -(put 'forward-char-command 'x-symbol-point-function '1+) -(put 'backward-char-command 'x-symbol-point-function '1-) - - -;;;=========================================================================== -;;; For `set-variable' -;;;=========================================================================== - -;;;###autoload -(defun x-symbol-variable-interactive (var) - "Provide interactive specification for `set-variable'. -VAR's options has been defined with `x-symbol-define-user-options'." - (let* ((options (if (functionp (get var 'x-symbol-options)) - (funcall (get var 'x-symbol-options)) - (get var 'x-symbol-options))) - (alist (mapcar (lambda (x) (cons (symbol-name (car x)) (car x))) - (or (cdr options) (list '(nil) options)))) - (val (completing-read (format "Set `%s' to symbol (default %s): " - var (symbol-value var)) - alist nil t))) - (list (if (equal val "") - (symbol-value var) - (cdr (assoc val alist)))))) - -;;;=========================================================================== -;;; DA's crude unicode hack -;;;=========================================================================== - -(defcustom x-symbol-use-unicode nil - "*Non-nil to use default font as unicode font." - :group 'x-symbol-miscellaneous - :type 'boolean) - - - -;;; Local IspellPersDict: .ispell_xsymb -;;; x-symbol-vars.el ends here |
