aboutsummaryrefslogtreecommitdiffhomepage
path: root/x-symbol/lisp/x-symbol-nomule.el
diff options
context:
space:
mode:
Diffstat (limited to 'x-symbol/lisp/x-symbol-nomule.el')
-rw-r--r--x-symbol/lisp/x-symbol-nomule.el382
1 files changed, 0 insertions, 382 deletions
diff --git a/x-symbol/lisp/x-symbol-nomule.el b/x-symbol/lisp/x-symbol-nomule.el
deleted file mode 100644
index 9ca2d483..00000000
--- a/x-symbol/lisp/x-symbol-nomule.el
+++ /dev/null
@@ -1,382 +0,0 @@
-;;; x-symbol-nomule.el --- XEmacs/no-Mule support for package x-symbol
-
-;; Copyright (C) 1996-1998, 2002 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
-;; 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]).
-
-;;; Code:
-
-(when (featurep 'mule)
- (error "This file is meant to be used with XEmacs/no-Mule"))
-(provide 'x-symbol-nomule)
-(require 'x-symbol-hooks)
-(eval-when-compile (require 'x-symbol)) ; x-symbol also requires this file
-;;(eval-when-compile
-;; (defvar x-symbol-encode-rchars)
-;; (defvar x-symbol-face-docstrings))
-
-
-;;;===========================================================================
-;;; Function aliases and internal variables
-;;;===========================================================================
-
-(defalias 'x-symbol-make-cset 'x-symbol-nomule-make-cset)
-(defalias 'x-symbol-make-char 'x-symbol-nomule-make-char)
-(defalias 'x-symbol-init-charsym-syntax 'ignore)
-(defalias 'x-symbol-charsym-after 'x-symbol-nomule-charsym-after)
-(defalias 'x-symbol-string-to-charsyms 'x-symbol-nomule-string-to-charsyms)
-(defalias 'x-symbol-match-before 'x-symbol-nomule-match-before)
-(defalias 'x-symbol-encode-lisp 'x-symbol-nomule-encode-lisp)
-(defalias 'x-symbol-pre-command-hook 'x-symbol-nomule-pre-command-hook)
-(defalias 'x-symbol-post-command-hook 'x-symbol-nomule-post-command-hook)
-(defalias 'x-symbol-encode-charsym-after 'x-symbol-nomule-encode-charsym-after)
-(defalias 'x-symbol-init-quail-bindings 'ignore)
-
-(defvar x-symbol-nomule-mouse-yank-function mouse-yank-function
- "Function that is called upon by `x-symbol-nomule-mouse-yank-function'.")
-
-(defvar x-symbol-nomule-mouse-track-function
- (and (boundp 'default-mouse-track-normalize-point-function)
- default-mouse-track-normalize-point-function)
- "Function that is called upon by `x-symbol-nomule-mouse-track-function'.")
-
-(defvar x-symbol-nomule-cstring-regexp "[\231-\237][\041-\176\240-\377]"
- "Internal configuration. Regexp matching cstrings of length 2.
-You should probably change the value when adding additional csets.")
-;; should match `x-symbol-nomule-multibyte-char-p'.
-
-(defvar x-symbol-nomule-char-table nil
- "Internal. Map characters to charsyms.")
-(defvar x-symbol-nomule-pre-command nil
- "Internal. Used for pre- and post-command handling.")
-
-(defvar x-symbol-nomule-leading-faces-alist nil
- "Internal. Alist of leading character with their faces.
-Each element looks like (LEADING NORMAL SUBSCRIPT SUPERSCRIPT).")
-(defvar x-symbol-nomule-font-lock-face nil
- "Internal. Face to fontify current font-lock match.")
-
-(defvar x-symbol-nomule-display-table
- ;; display-table via characters table is not implemented in XEmacs yet...
- (let ((table (make-vector 256 nil))
- (i 128))
- (while (< i 160)
- (aset table i "")
- (incf i))
- table)
- "Display table in faces with non-standard charset registry.
-It makes the leading characters, range \\200-\\237, invisible.")
-
-(defvar x-symbol-nomule-character-quote-syntax "\\" ; bug in XEmacs
- "Syntax designator for leading characters in cstrings.")
-
-
-;;;===========================================================================
-;;; Init code
-;;;===========================================================================
-
-(defun x-symbol-nomule-init-faces (fonts prefix &optional display-table)
- "Create and return faces for FONTS.
-If a font can not be found, return nil for that font. PREFIX is the
-prefix in the name of the new face. If non-nil, the new faces use
-display table DISPLAY-TABLE."
- (let ((suffixes '("-face" "-sub-face" "-sup-face"))
- (docstrings x-symbol-face-docstrings)
- (raise 0)
- faces font face)
- (while suffixes
- (push (when (setq font (x-symbol-try-font-name (car fonts) raise))
- (setq face (intern (concat prefix (car suffixes))))
- (make-face face (car docstrings))
- (set-face-font face font)
- (if display-table (set-face-display-table face display-table))
- face)
- faces)
- (setq fonts (cdr fonts)
- suffixes (cdr suffixes)
- raise (1+ raise)
- docstrings (cdr docstrings)))
- (nreverse faces)))
-
-(defun x-symbol-nomule-make-cset (cset fonts)
- "Define new charsets according to CSET using FONTS.
-See `x-symbol-init-cset'. Return (NORMAL SUBSCRIPT SUPERSCIPT). Each
-element is a face or nil if the corresponding font in FONTS could not be
-found. Return nil, if no default font for that registry could be found."
- (cond ((noninteractive) (list nil))
- ((eq (x-symbol-cset-coding cset) x-symbol-default-coding)
- (or (x-symbol-nomule-init-faces fonts "x-symbol") ; no registry!
- (list nil)))
- ((x-symbol-try-font-name (car fonts))
- (let* ((faces (x-symbol-nomule-init-faces
- fonts
- (concat "x-symbol-" (x-symbol-cset-registry cset))
- x-symbol-nomule-display-table))
- (leading (x-symbol-cset-leading cset))
- (ass (assq leading x-symbol-nomule-leading-faces-alist)))
- (if x-symbol-nomule-character-quote-syntax
- (modify-syntax-entry leading
- x-symbol-nomule-character-quote-syntax
- (standard-syntax-table)))
- (if ass
- (setcdr ass faces)
- (push (cons leading faces)
- x-symbol-nomule-leading-faces-alist))
- faces))))
-
-(defun x-symbol-nomule-make-char (cset encoding charsym face coding)
- "Define character in CSET with ENCODING, represented by CHARSYM.
-The character is considered to be a 8bit character in CODING. Use FACE
-when character is presented in the grid or has a non-standard registry."
- (unless (char-table-p x-symbol-nomule-char-table)
- (setq x-symbol-nomule-char-table (make-char-table 'generic))
- (put-char-table t nil x-symbol-nomule-char-table))
- (let* ((leading (and (null (eq coding
- (or x-symbol-default-coding 'iso-8859-1)))
- (cadar cset)))
- (table (if leading
- (get-char-table leading x-symbol-nomule-char-table)
- x-symbol-nomule-char-table))
- (cstring (if leading
- (concat (list leading encoding))
- (char-to-string (int-to-char encoding)))))
- (unless (char-table-p table)
- (setq table (make-char-table 'generic))
- (put-char-table t nil table)
- (put-char-table leading table x-symbol-nomule-char-table))
- (put-char-table encoding charsym table)
- (x-symbol-set-cstrings charsym coding cstring
- (and coding (>= encoding 160) (int-to-char encoding))
- face)))
-
-
-;;;===========================================================================
-;;; Character recognition
-;;;===========================================================================
-
-(defun x-symbol-nomule-multibyte-char-p (leading octet)
- "Non-nil if LEADING and OCTET are a multibyte character."
- (and leading (>= leading ?\200) (< leading ?\240)
- octet (or (< octet ?\177) (>= octet ?\240)) (>= octet ?\41)))
-
-(defun x-symbol-nomule-encode-charsym-after ()
- (let ((charsym (get-char-table (char-after) x-symbol-nomule-char-table)))
- (if (char-table-p charsym)
- (let ((after (char-after (1+ (point)))))
- (if after
- (progn (setq x-symbol-encode-rchars 2)
- (get-char-table after charsym))
- (setq x-symbol-encode-rchars 1)
- nil))
- (setq x-symbol-encode-rchars 1)
- charsym)))
-
-(defun x-symbol-nomule-charsym-after (&optional pos)
- "Return x-symbol charsym for character at POS.
-POS defaults to point. If POS is out of range, return nil. Otherwise,
-return (POS1 . CHARSYM) where POS1 is POS-1 if the character before POS
-is a leading character and POS1 is POS otherwise. CHARSYM is the
-x-symbol charsym for the character at POS1 or nil otherwise."
- (or pos (setq pos (point)))
- (let ((before (char-before pos))
- (after (char-after pos)))
- (and after
- (if (or (x-symbol-nomule-multibyte-char-p before after)
- (x-symbol-nomule-multibyte-char-p
- (setq before after)
- (setq after (char-after (incf pos)))))
- (let ((table (get-char-table before x-symbol-nomule-char-table)))
- (cons (1- pos)
- (and (char-table-p table) (get-char-table after table))))
- (cons (1- pos)
- (and (symbolp (setq after (get-char-table
- before
- x-symbol-nomule-char-table)))
- after))))))
-
-(defun x-symbol-nomule-string-to-charsyms (string)
- "Return list of charsyms for the characters in STRING.
-If a character is not represented as a charsym, use the character itself
-if is an ascii in the range \\040-\\176, otherwise nil."
- (let ((chars (nreverse (append string nil)))
- result after table)
- (while chars
- (setq after (pop chars))
- (push (if (x-symbol-nomule-multibyte-char-p (car chars) after)
- (and (setq table (get-char-table (pop chars)
- x-symbol-nomule-char-table))
- (get-char-table after table))
- (or (get-char-table after x-symbol-nomule-char-table) after))
- result))
- result))
-
-(defun x-symbol-nomule-match-before (atree pos &optional case-fn)
- "Return association in ATREE for longest match before POS.
-Return (START . VALUE) where the buffer substring between START and
-point is the key to the association VALUE in ATREE. Do not use matches
-where the character before START is a leading character. If optional
-CASE-FN is non-nil, convert characters before the current position with
-CASE-FN. See `x-symbol-atree-push'."
- (or pos (setq pos (point)))
- (let ((result nil)
- char)
- (while (setq char (if case-fn
- (funcall case-fn (char-after (decf pos)))
- (char-after (decf pos)))
- atree (cdr (assoc char (cdr atree))))
- (and (car atree)
- (not (x-symbol-nomule-multibyte-char-p (char-before pos) char))
- (setq result (cons pos (car atree)))))
- result))
-
-
-;;;===========================================================================
-;;; Point correction
-;;;===========================================================================
-
-;; `mouse-track', `mouse-yank': If you set `mouse-yank-function' and/or
-;; `default-mouse-track-normalize-point-function', set them before initializing
-;; package X-Symbol.
-(and x-symbol-nomule-mouse-yank-function
- (setq mouse-yank-function 'x-symbol-nomule-mouse-yank-function))
-(and x-symbol-nomule-mouse-track-function
- (setq default-mouse-track-normalize-point-function
- 'x-symbol-nomule-mouse-track-function))
-
-(defun x-symbol-nomule-goto-leading-char ()
- "If character before point is a leading character, move point left."
- (if (x-symbol-nomule-multibyte-char-p (char-before (point))
- (char-after (point)))
- (backward-char)))
-
-(defun x-symbol-nomule-mouse-yank-function ()
- "Function used as value for `mouse-yank'.
-If character under point is a x-symbol character, move point to its
-leading character before calling `x-symbol-nomule-mouse-yank-function'."
- (x-symbol-nomule-goto-leading-char)
- (funcall x-symbol-nomule-mouse-yank-function))
-
-(defun x-symbol-nomule-mouse-track-function (type forwardp)
- ;; checkdoc-params: (type forwardp)
- "Function used as value for `default-mouse-track-normalize-point-function'.
-After calling `x-symbol-nomule-mouse-track-function', if character under
-point is a x-symbol character, move point to its leading character."
- (funcall x-symbol-nomule-mouse-track-function type forwardp)
- (x-symbol-nomule-goto-leading-char))
-
-
-;;;===========================================================================
-;;; Command hooks
-;;;===========================================================================
-
-;; Functions in these hooks are run twice (and more) when pressing a key which
-;; runs a keyboard macro, e.g., if [backspace] runs [delete] and [delete] runs
-;; `delete-backward-char'.
-
-(defun x-symbol-nomule-pre-command-hook ()
- "Function used in `pre-command-hook' when `x-symbol-mode' is turned on.
-Hide revealed characters, see `x-symbol-hide-revealed-at-point'.
-Provide input method TOKEN, see `x-symbol-token-input'. If character
-under point is a x-symbol character, move point to its leading character."
- (x-symbol-hide-revealed-at-point)
- (when (and x-symbol-mode (null x-symbol-nomule-pre-command))
- (setq x-symbol-nomule-pre-command
- (if (x-symbol-nomule-multibyte-char-p (char-before (point))
- (char-after (point)))
- (prog1 (point) (backward-char))
- t))
- (x-symbol-token-input)))
-
-(defun x-symbol-nomule-post-command-hook ()
- "Function used in `post-command-hook' when `x-symbol-mode' is turned on.
-Provide input method ELECTRIC, see `x-symbol-electric-input'. Start
-idle timer for info in echo area and revealing invisible characters, see
-`x-symbol-start-itimer-once'. Make sure that not only a part of a
-length-two cstring has been deleted by the previous command."
- (when (and x-symbol-nomule-pre-command x-symbol-mode)
- (if (stringp (car-safe (car-safe buffer-undo-list)))
- ;; i.e., after deleting text (`delete-char',...)
- (let* ((pos (abs (cdar buffer-undo-list)))
- (str (caar buffer-undo-list))
- (len (length str))
- (pre (and (> len 0)
- (x-symbol-nomule-multibyte-char-p
- (char-before (point)) (aref str 0))))
- (post (and (> len 0)
- (x-symbol-nomule-multibyte-char-p
- (aref str (1- len)) (char-after pos)))))
- (if (or pre post)
- (delete-region (if pre (1- pos) pos) (if post (1+ pos) pos))))
- (and (null (car-safe buffer-undo-list))
- (integerp x-symbol-nomule-pre-command)
- (= (point) x-symbol-nomule-pre-command)
- ;; i.e., after pressing Right
- (< x-symbol-nomule-pre-command (point-max))
- (goto-char (1+ x-symbol-nomule-pre-command))))
- (x-symbol-electric-input)
- (if (x-symbol-nomule-multibyte-char-p (char-after (point))
- (char-after (1+ (point))))
- (forward-char))
- (x-symbol-start-itimer-once))
- (setq x-symbol-nomule-pre-command nil))
-
-
-;;;===========================================================================
-;;; Font-lock support
-;;;===========================================================================
-
-(defun x-symbol-nomule-match-cstring (limit)
- "Match next cstring of length 2 before LIMIT if `x-symbol-mode' is on.
-Sets `x-symbol-nomule-font-lock-face' to the face used for this cstring
-considering super- and subscripts."
- (when x-symbol-mode
- (let (faces old)
- (block nil
- (while (re-search-forward x-symbol-nomule-cstring-regexp limit t)
- (setq faces (cdr (assq (char-after (match-beginning 0))
- x-symbol-nomule-leading-faces-alist))
- old (get-text-property (match-beginning 0) 'face))
- (or (listp old) (setq old (list old)))
- (if (setq x-symbol-nomule-font-lock-face
- (or (and (memq 'x-symbol-sup-face old) (caddr faces))
- (and (memq 'x-symbol-sub-face old) (cadr faces))
- (car faces)))
- (return t)))))))
-
-(defun x-symbol-nomule-fontify-cstrings ()
- "Fontify all cstrings in buffer even when `x-symbol-mode' is off.
-Faces according to the cstrings are prepended to existing face settings.
-See also `x-symbol-nomule-match-cstring'."
- (let ((x-symbol-mode t)
- (limit (point-max)))
- (goto-char (point-min))
- (while (x-symbol-nomule-match-cstring limit)
- (font-lock-prepend-text-property (match-beginning 0) (match-end 0)
- 'face
- x-symbol-nomule-font-lock-face))))
-
-;;; Local IspellPersDict: .ispell_xsymb
-;;; x-symbol-nomule.el ends here