annotate yatexlib.el @ 566:2ef9f21dd13b dev

Add note on YaTeX::usepackage-alist-default
author HIROSE Yuuji <yuuji@gentei.org>
date Thu, 24 Jan 2019 15:19:32 +0900
parents 43508ed8bcc8
children 4dad5f91b26c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
395
5aa8208fbef0 Change header lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 393
diff changeset
1 ;;; yatexlib.el --- YaTeX and yahtml common libraries -*- coding: sjis -*-
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 266
diff changeset
2 ;;;
515
b6853d450b0a Add a function to examine the point is in %#BEGIN/%#END or not.
HIROSE Yuuji <yuuji@gentei.org>
parents: 503
diff changeset
3 ;;; (c)1994-2018 by HIROSE Yuuji.[yuuji@yatex.org]
562
43508ed8bcc8 XEmacs needs 'coding-system-name before calling symbol-name
HIROSE Yuuji <yuuji@gentei.org>
parents: 561
diff changeset
4 ;;; Last modified Wed Jan 16 07:55:43 2019 on firestorm
366
HIROSE Yuuji <yuuji@gentei.org>
parents: 364
diff changeset
5 ;;; $Id$
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
6
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 266
diff changeset
7 ;;; Code:
451
2011de73a671 Who owes the incompatibility of string-to-int?
HIROSE Yuuji <yuuji@gentei.org>
parents: 443
diff changeset
8
2011de73a671 Who owes the incompatibility of string-to-int?
HIROSE Yuuji <yuuji@gentei.org>
parents: 443
diff changeset
9 ;; High-precedence compatible function
2011de73a671 Who owes the incompatibility of string-to-int?
HIROSE Yuuji <yuuji@gentei.org>
parents: 443
diff changeset
10 (fset 'YaTeX-str2int
2011de73a671 Who owes the incompatibility of string-to-int?
HIROSE Yuuji <yuuji@gentei.org>
parents: 443
diff changeset
11 (if (fboundp 'string-to-number)
2011de73a671 Who owes the incompatibility of string-to-int?
HIROSE Yuuji <yuuji@gentei.org>
parents: 443
diff changeset
12 (function
2011de73a671 Who owes the incompatibility of string-to-int?
HIROSE Yuuji <yuuji@gentei.org>
parents: 443
diff changeset
13 (lambda (string &optional base)
2011de73a671 Who owes the incompatibility of string-to-int?
HIROSE Yuuji <yuuji@gentei.org>
parents: 443
diff changeset
14 (ceiling (string-to-number string base))))
2011de73a671 Who owes the incompatibility of string-to-int?
HIROSE Yuuji <yuuji@gentei.org>
parents: 443
diff changeset
15 'string-to-int))
2011de73a671 Who owes the incompatibility of string-to-int?
HIROSE Yuuji <yuuji@gentei.org>
parents: 443
diff changeset
16
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
17 ;; General variables
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
18 (defvar YaTeX-dos (memq system-type '(ms-dos windows-nt OS/2)))
79
0734be649cb8 Do not care file-coding-system when YaTeX-kanji-code is nil.
yuuji
parents: 77
diff changeset
19 (defvar YaTeX-macos (memq system-type '(darwin)))
451
2011de73a671 Who owes the incompatibility of string-to-int?
HIROSE Yuuji <yuuji@gentei.org>
parents: 443
diff changeset
20 (defvar YaTeX-emacs-19 (>= (YaTeX-str2int emacs-version) 19))
2011de73a671 Who owes the incompatibility of string-to-int?
HIROSE Yuuji <yuuji@gentei.org>
parents: 443
diff changeset
21 (defvar YaTeX-emacs-20 (>= (YaTeX-str2int emacs-version) 20))
2011de73a671 Who owes the incompatibility of string-to-int?
HIROSE Yuuji <yuuji@gentei.org>
parents: 443
diff changeset
22 (defvar YaTeX-emacs-21 (>= (YaTeX-str2int emacs-version) 21))
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
23 (defvar YaTeX-user-completion-table
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
24 (if YaTeX-dos "~/_yatexrc" "~/.yatexrc")
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
25 "*Default filename in which user completion table is saved.")
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
26
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
27 (defvar YaTeX-display-color-p
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
28 (or (and (fboundp 'display-color-p) (display-color-p))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
29 (and (fboundp 'device-class)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
30 (eq 'color (device-class (selected-device))))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
31 window-system) ; falls down lazy check..
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
32 "Current display's capability of expressing colors.")
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
33
79
0734be649cb8 Do not care file-coding-system when YaTeX-kanji-code is nil.
yuuji
parents: 77
diff changeset
34 (defvar YaTeX-japan
0734be649cb8 Do not care file-coding-system when YaTeX-kanji-code is nil.
yuuji
parents: 77
diff changeset
35 (or (boundp 'NEMACS)
0734be649cb8 Do not care file-coding-system when YaTeX-kanji-code is nil.
yuuji
parents: 77
diff changeset
36 (boundp 'MULE)
0734be649cb8 Do not care file-coding-system when YaTeX-kanji-code is nil.
yuuji
parents: 77
diff changeset
37 (and (boundp 'current-language-environment)
0734be649cb8 Do not care file-coding-system when YaTeX-kanji-code is nil.
yuuji
parents: 77
diff changeset
38 (string-match "[Jj]apanese" current-language-environment)))
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
39 "Whether yatex mode is running on Japanese environment or not.")
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
40
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
41 ;; autoload from yahtml.el
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
42 (autoload 'yahtml-inner-environment-but "yahtml" "yahtml internal func." t)
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
43
80
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
44 (defvar latex-message-kanji-code 2
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
45 "*Kanji coding system latex command types out.
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
46 1 = Shift JIS, 2 = JIS, 3 = EUC. 4 = UTF-8")
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
47
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
48 (defvar YaTeX-kanji-code-alist
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
49 (cond
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
50 ((boundp '*junet*)
77
1b172d26b55e Fix auto-fill movement on Emacs21.
yuuji
parents: 73
diff changeset
51 (list '(0 . *noconv*)
1b172d26b55e Fix auto-fill movement on Emacs21.
yuuji
parents: 73
diff changeset
52 (cons
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
53 1
79
0734be649cb8 Do not care file-coding-system when YaTeX-kanji-code is nil.
yuuji
parents: 77
diff changeset
54 (cond
0734be649cb8 Do not care file-coding-system when YaTeX-kanji-code is nil.
yuuji
parents: 77
diff changeset
55 (YaTeX-dos (if (boundp '*sjis-dos*) *sjis-dos* *sjis*dos))
0734be649cb8 Do not care file-coding-system when YaTeX-kanji-code is nil.
yuuji
parents: 77
diff changeset
56 (YaTeX-macos (if (boundp '*sjis-mac*) *sjis-mac* *sjis*mac))
0734be649cb8 Do not care file-coding-system when YaTeX-kanji-code is nil.
yuuji
parents: 77
diff changeset
57 (t *sjis*)))
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
58 '(2 . *junet*) '(3 . *euc-japan*)))
80
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
59 ((and YaTeX-emacs-20 (featurep 'mule))
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
60 ;;(cdr-safe(assq 'coding-system (assoc "Japanese" language-info-alist)))
77
1b172d26b55e Fix auto-fill movement on Emacs21.
yuuji
parents: 73
diff changeset
61 (list '(0 . no-conversion)
1b172d26b55e Fix auto-fill movement on Emacs21.
yuuji
parents: 73
diff changeset
62 (cons
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
63 1 (cond (YaTeX-dos 'shift_jis-dos)
79
0734be649cb8 Do not care file-coding-system when YaTeX-kanji-code is nil.
yuuji
parents: 77
diff changeset
64 (YaTeX-macos 'shift_jis-mac)
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
65 ((member 'shift_jis (coding-system-list)) 'shift_jis-unix)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
66 (t 'sjis)))
68
0eb6997bee16 More adjustment for Emacs20 and XEmacs
yuuji
parents: 64
diff changeset
67 '(2 . iso-2022-jp-unix)
80
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
68 '(3 . euc-jp-unix)
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
69 '(4 . utf-8))))
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
70 "Kanji-code expression translation table.")
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
71 (defvar YaTeX-inhibit-prefix-letter nil
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
72 "*T for changing key definitions from [prefix] Letter to [prefix] C-Letter.")
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
73
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
74 (defvar YaTeX-no-begend-shortcut nil
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
75 "*T for disabling shortcut of begin-type completion, [prefix] b d, etc.")
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
76
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
77 (defvar YaTeX-default-pop-window-height 10
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
78 "Default typesetting buffer height.
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
79 If integer, sets the window-height of typesetting buffer.
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
80 If string, sets the percentage of it.
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
81 If nil, use default pop-to-buffer.")
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
82
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
83 (defvar YaTeX-create-file-prefix-g nil
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
84 "*Non-nil creates new file when [prefix] g on \\include{foo}.")
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
85
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
86 (defvar YaTeX-nervous t
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
87 "*If you are nervous about maintenance of yatexrc, set this value to T.
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
88 And you will have the local dictionary.")
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
89
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
90 (defvar YaTeX-use-italic-bold (string< "20" emacs-version)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
91 "*Non-nil tries to find italic/bold fontset.
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
92 This variable is effective when font-lock is used.
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
93 \it, \bf 内部での日本語が□になってしまう場合はこれをnilにして下さい。")
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
94
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
95 ;----------- work variables ----------------------------------------
80
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
96 (defvar YaTeX-minibuffer-completion-map nil
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
97 "Minibuffer completion key map that allows comma completion.")
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
98 (if YaTeX-minibuffer-completion-map nil
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
99 (setq YaTeX-minibuffer-completion-map
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
100 (copy-keymap minibuffer-local-completion-map))
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
101 (define-key YaTeX-minibuffer-completion-map " "
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
102 'YaTeX-minibuffer-complete)
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
103 (define-key YaTeX-minibuffer-completion-map "\t"
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
104 'YaTeX-minibuffer-complete))
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
105
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
106 (defvar YaTeX-typesetting-mode-map nil
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
107 "Keymap used in YaTeX typesetting buffer")
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
108
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
109 (if YaTeX-typesetting-mode-map nil
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
110 (setq YaTeX-typesetting-mode-map (make-keymap))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
111 ;(suppress-keymap YaTeX-typesetting-mode-map t)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
112 (define-key YaTeX-typesetting-mode-map " " 'YaTeX-jump-error-line)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
113 (define-key YaTeX-typesetting-mode-map "\C-m" 'YaTeX-send-string)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
114 (define-key YaTeX-typesetting-mode-map "1" 'delete-other-windows)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
115 (define-key YaTeX-typesetting-mode-map "0" 'delete-window)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
116 (define-key YaTeX-typesetting-mode-map "q" 'delete-window))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
117
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
118 (defvar YaTeX-parent-file nil
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
119 "*Main LaTeX source file name used when %#! expression doesn't exist.")
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
120 (make-variable-buffer-local 'YaTeX-parent-file)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
121
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
122 ;---------- Define default key bindings on YaTeX mode map ----------
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
123 ;;;###autoload
503
d675f6d06481 Format string `%k' in tex-command replaced to kanji-coding mnemonic.
HIROSE Yuuji <yuuji@gentei.org>
parents: 497
diff changeset
124 (defun YaTeX-kanji-ptex-mnemonic ()
d675f6d06481 Format string `%k' in tex-command replaced to kanji-coding mnemonic.
HIROSE Yuuji <yuuji@gentei.org>
parents: 497
diff changeset
125 "Return the kanji-mnemonic of pTeX from current buffer's coding-system."
d675f6d06481 Format string `%k' in tex-command replaced to kanji-coding mnemonic.
HIROSE Yuuji <yuuji@gentei.org>
parents: 497
diff changeset
126 (if (boundp 'NEMACS)
d675f6d06481 Format string `%k' in tex-command replaced to kanji-coding mnemonic.
HIROSE Yuuji <yuuji@gentei.org>
parents: 497
diff changeset
127 (or (cdr-safe (assq kanji-fileio-code
d675f6d06481 Format string `%k' in tex-command replaced to kanji-coding mnemonic.
HIROSE Yuuji <yuuji@gentei.org>
parents: 497
diff changeset
128 '((1 . "sjis") (2 . "jis") (3 . "euc"))))
d675f6d06481 Format string `%k' in tex-command replaced to kanji-coding mnemonic.
HIROSE Yuuji <yuuji@gentei.org>
parents: 497
diff changeset
129 "")
d675f6d06481 Format string `%k' in tex-command replaced to kanji-coding mnemonic.
HIROSE Yuuji <yuuji@gentei.org>
parents: 497
diff changeset
130 (let ((coding
d675f6d06481 Format string `%k' in tex-command replaced to kanji-coding mnemonic.
HIROSE Yuuji <yuuji@gentei.org>
parents: 497
diff changeset
131 (cond
d675f6d06481 Format string `%k' in tex-command replaced to kanji-coding mnemonic.
HIROSE Yuuji <yuuji@gentei.org>
parents: 497
diff changeset
132 ((boundp 'buffer-file-coding-system)
562
43508ed8bcc8 XEmacs needs 'coding-system-name before calling symbol-name
HIROSE Yuuji <yuuji@gentei.org>
parents: 561
diff changeset
133 (symbol-name (if (fboundp 'coding-system-name)
43508ed8bcc8 XEmacs needs 'coding-system-name before calling symbol-name
HIROSE Yuuji <yuuji@gentei.org>
parents: 561
diff changeset
134 (coding-system-name buffer-file-coding-system)
43508ed8bcc8 XEmacs needs 'coding-system-name before calling symbol-name
HIROSE Yuuji <yuuji@gentei.org>
parents: 561
diff changeset
135 buffer-file-coding-system)))
503
d675f6d06481 Format string `%k' in tex-command replaced to kanji-coding mnemonic.
HIROSE Yuuji <yuuji@gentei.org>
parents: 497
diff changeset
136 ((boundp 'file-coding-system) (symbol-name file-coding-system))))
d675f6d06481 Format string `%k' in tex-command replaced to kanji-coding mnemonic.
HIROSE Yuuji <yuuji@gentei.org>
parents: 497
diff changeset
137 (case-fold-search t))
529
b742adfa30e2 UTF-8 mnemonic for command line option changed as s/utf-8/utf8/
HIROSE Yuuji <yuuji@gentei.org>
parents: 524
diff changeset
138 (cond ((string-match "utf-8\\>" coding) "utf8")
503
d675f6d06481 Format string `%k' in tex-command replaced to kanji-coding mnemonic.
HIROSE Yuuji <yuuji@gentei.org>
parents: 497
diff changeset
139 ((string-match "shift.jis\\|cp932\\>" coding) "sjis")
d675f6d06481 Format string `%k' in tex-command replaced to kanji-coding mnemonic.
HIROSE Yuuji <yuuji@gentei.org>
parents: 497
diff changeset
140 ((string-match "junet\\|iso.2022" coding) "jis")
d675f6d06481 Format string `%k' in tex-command replaced to kanji-coding mnemonic.
HIROSE Yuuji <yuuji@gentei.org>
parents: 497
diff changeset
141 ((string-match "euc.jp\\|ja.*iso.8bit" coding) "euc")
d675f6d06481 Format string `%k' in tex-command replaced to kanji-coding mnemonic.
HIROSE Yuuji <yuuji@gentei.org>
parents: 497
diff changeset
142 (t "")))))
d675f6d06481 Format string `%k' in tex-command replaced to kanji-coding mnemonic.
HIROSE Yuuji <yuuji@gentei.org>
parents: 497
diff changeset
143
d675f6d06481 Format string `%k' in tex-command replaced to kanji-coding mnemonic.
HIROSE Yuuji <yuuji@gentei.org>
parents: 497
diff changeset
144 ;;;###autoload
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
145 (defun YaTeX-define-key (key binding &optional map)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
146 "Define key on YaTeX-prefix-map."
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
147 (if YaTeX-inhibit-prefix-letter
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
148 (let ((c (aref key 0)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
149 (cond
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
150 ((and (>= c ?a) (<= c ?z)) (aset key 0 (1+ (- c ?a))))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
151 ((and (>= c ?A) (<= c ?Z) (numberp YaTeX-inhibit-prefix-letter))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
152 (aset key 0 (1+ (- c ?A))))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
153 (t nil))))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
154 (define-key (or map YaTeX-prefix-map) key binding))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
155
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
156 ;;;###autoload
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
157 (defun YaTeX-local-table-symbol (symbol)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
158 "Return the lisp symbol which keeps local completion table of SYMBOL."
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
159 (intern (concat "YaTeX$"
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
160 default-directory
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
161 (symbol-name symbol))))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
162
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
163 ;;;###autoload
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
164 (defun YaTeX-sync-local-table (symbol)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
165 "Synchronize local variable SYMBOL.
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
166 Copy its corresponding directory dependent completion table to SYMBOL."
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
167 (if (boundp (YaTeX-local-table-symbol symbol))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
168 (set symbol (symbol-value (YaTeX-local-table-symbol symbol)))))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
169
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
170 (defvar YaTeX-user-table-is-read nil
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
171 "Flag that means whether user completion table has been read or not.")
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
172 ;;;###autoload
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
173 (defun YaTeX-read-user-completion-table (&optional forcetoread)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
174 "Append user completion table of LaTeX macros"
80
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
175 (interactive)
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
176 (let*((user-table (expand-file-name YaTeX-user-completion-table))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
177 (local-table (expand-file-name (file-name-nondirectory user-table)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
178 var localvar localbuf (curbuf (current-buffer)) sexp)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
179 (if YaTeX-user-table-is-read nil
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
180 (message "Loading user completion table")
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
181 (if (file-exists-p user-table) (load-file user-table)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
182 (message "Welcome to the field of YaTeX. I'm glad to see you!")))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
183 (setq YaTeX-user-table-is-read t)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
184 (cond
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
185 ((file-exists-p local-table)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
186 (set-buffer (setq localbuf (find-file-noselect local-table)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
187 (widen)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
188 (goto-char (point-min))
80
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
189 (while (re-search-forward "(setq \\([^ \t\n]+\\)" nil t)
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
190 (setq var (intern (buffer-substring
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
191 (match-beginning 1) (match-end 1)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
192 localvar (YaTeX-local-table-symbol var))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
193 (goto-char (match-beginning 0))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
194 (setq sexp (buffer-substring (point)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
195 (progn (forward-sexp) (point))))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
196 (set-buffer curbuf)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
197 (or (assq var (buffer-local-variables)) (make-local-variable var))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
198 (eval (read sexp))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
199 (or (and (boundp localvar)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
200 (symbol-value localvar)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
201 (not forcetoread))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
202 (set localvar (symbol-value var)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
203 (set-buffer localbuf))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
204 (kill-buffer localbuf)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
205 (set-buffer curbuf)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
206
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
207 ;;;###autoload
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
208 (defun YaTeX-reload-dictionary ()
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
209 "Reload local dictionary.
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
210 Use this function after editing ./.yatexrc."
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
211 (interactive)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
212 (let ((YaTeX-user-table-is-read nil))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
213 (YaTeX-read-user-completion-table t)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
214
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
215 ;;;###autoload
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
216 (defun YaTeX-lookup-table (word type)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
217 "Lookup WORD in completion table whose type is TYPE.
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
218 This function refers the symbol tmp-TYPE-table, user-TYPE-table, TYPE-table.
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
219 Typically, TYPE is one of 'env, 'section, 'fontsize, 'singlecmd."
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
220 (if (symbolp type) (setq type (symbol-name type)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
221 (or (assoc word (symbol-value (intern (concat "tmp-" type "-table"))))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
222 (assoc word (symbol-value (intern (concat "user-" type "-table"))))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
223 (assoc word (symbol-value (intern (concat type "-table"))))))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
224
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
225 ;;;###autoload
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
226 (defun YaTeX-update-table (vallist default-table user-table local-table)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
227 "Update completion table if the car of VALLIST is not in current tables.
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
228 Second argument DEFAULT-TABLE is the quoted symbol of default completion
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
229 table, third argument USER-TABLE is user table which will be saved in
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
230 YaTeX-user-completion-table, fourth argument LOCAL-TABLE should have the
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
231 completion which is valid during current Emacs's session. If you
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
232 want to make LOCAL-TABLE valid longer span (but restrict in this directory)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
233 create the file in current directory which has the same name with
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
234 YaTeX-user-completion-table."
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
235 (let ((car-v (car vallist)) key answer
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
236 (file (file-name-nondirectory YaTeX-user-completion-table)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
237 (cond
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
238 ((assoc car-v (symbol-value default-table))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
239 nil) ;Nothing to do
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
240 ((setq key (assoc car-v (symbol-value user-table)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
241 (if (equal (cdr vallist) (cdr key)) nil
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
242 ;; if association hits, but contents differ.
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
243 (message
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
244 "%s's attributes turned into %s" (car vallist) (cdr vallist))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
245 (set user-table (delq key (symbol-value user-table)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
246 (set user-table (cons vallist (symbol-value user-table)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
247 (YaTeX-update-dictionary
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
248 YaTeX-user-completion-table user-table "user")))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
249 ((setq key (assoc car-v (symbol-value local-table)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
250 (if (equal (cdr vallist) (cdr key)) nil
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
251 (message
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
252 "%s's attributes turned into %s" (car vallist) (cdr vallist))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
253 (set local-table (delq key (symbol-value local-table)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
254 (set local-table (cons vallist (symbol-value local-table)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
255 (set (YaTeX-local-table-symbol local-table) (symbol-value local-table))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
256 (YaTeX-update-dictionary file local-table)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
257 ;; All of above cases, there are some completion in tables.
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
258 ;; Then update tables.
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
259 (t
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
260 (if (not YaTeX-nervous)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
261 (setq answer "u")
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
262 (message
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
263 (cond
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
264 (YaTeX-japan
68
0eb6997bee16 More adjustment for Emacs20 and XEmacs
yuuji
parents: 64
diff changeset
265 "`%s'の登録先: U)ユーザ辞書 L)ローカル辞書 N)メモリ D)しない")
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
266 (t
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
267 "Register `%s' into: U)serDic L)ocalDic N)one D)iscard"))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
268 (if (> (length car-v) 23)
68
0eb6997bee16 More adjustment for Emacs20 and XEmacs
yuuji
parents: 64
diff changeset
269 (concat (substring car-v 0 10) "..." (substring car-v -9))
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
270 car-v))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
271 (setq answer (char-to-string (read-char))))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
272 (cond
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
273 ((string-match answer "uy")
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
274 (set user-table (cons vallist (symbol-value user-table)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
275 (YaTeX-update-dictionary YaTeX-user-completion-table user-table "user")
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
276 )
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
277 ((string-match answer "tl")
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
278 (set local-table (cons vallist (symbol-value local-table)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
279 (set (YaTeX-local-table-symbol local-table) (symbol-value local-table))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
280 (YaTeX-update-dictionary file local-table))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
281 ((string-match answer "d") nil) ;discard it
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
282 (t (set default-table
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
283 (cons vallist (symbol-value default-table)))))))))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
284
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
285 ;;;###autoload
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
286 (defun YaTeX-cplread-with-learning
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
287 (prom default-table user-table local-table
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
288 &optional pred reqmatch init hsym)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
289 "Completing read with learning.
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
290 Do a completing read with prompt PROM. Completion table is what
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
291 DEFAULT-TABLE, USER-TABLE, LOCAL table are appended in reverse order.
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
292 Note that these tables are passed by the symbol.
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
293 Optional arguments PRED, REQMATH and INIT are passed to completing-read
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
294 as its arguments PREDICATE, REQUIRE-MATCH and INITIAL-INPUT respectively.
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
295 If optional 8th argument HSYM, history symbol, is passed, use it as
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
296 history list variable."
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
297 (YaTeX-sync-local-table local-table)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
298 (let*((table (append (symbol-value local-table)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
299 (symbol-value user-table)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
300 (symbol-value default-table)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
301 (word (completing-read-with-history
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
302 prom table pred reqmatch init hsym)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
303 (if (and (string< "" word) (not (assoc word table)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
304 (YaTeX-update-table (list word) default-table user-table local-table))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
305 word))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
306
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
307 ;;;###autoload
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
308 (defun YaTeX-update-dictionary (file symbol &optional type)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
309 (let ((local-table-buf (find-file-noselect file))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
310 (name (symbol-name symbol))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
311 (value (symbol-value symbol)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
312 (save-excursion
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
313 (message "Updating %s dictionary..." (or type "local"))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
314 (set-buffer local-table-buf)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
315 (goto-char (point-max))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
316 (search-backward (concat "(setq " name) nil t)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
317 (delete-region (point) (progn (forward-sexp) (point)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
318 (delete-blank-lines)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
319 (insert "(setq " name " '(\n")
353
2a72779d9c50 Rewrite lambda notations to suppress annoying warnings from emacs24
HIROSE Yuuji <yuuji@gentei.org>
parents: 310
diff changeset
320 (mapcar (function (lambda (s)
2a72779d9c50 Rewrite lambda notations to suppress annoying warnings from emacs24
HIROSE Yuuji <yuuji@gentei.org>
parents: 310
diff changeset
321 (insert (format "%s\n" (prin1-to-string s)))))
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
322 value)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
323 (insert "))\n\n")
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
324 (delete-blank-lines)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
325 (basic-save-buffer)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
326 (kill-buffer local-table-buf)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
327 (message "Updating %s dictionary...Done" (or type "local")))))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
328
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
329 ;;;###autoload
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
330 (defun YaTeX-define-begend-key-normal (key env &optional map)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
331 "Define short cut YaTeX-make-begin-end key."
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
332 (YaTeX-define-key
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
333 key
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
334 (list 'lambda '(arg) '(interactive "P")
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
335 (list 'YaTeX-insert-begin-end env 'arg))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
336 map))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
337
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
338 ;;;###autoload
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
339 (defun YaTeX-define-begend-region-key (key env &optional map)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
340 "Define short cut YaTeX-make-begin-end-region key."
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
341 (YaTeX-define-key key (list 'lambda nil '(interactive)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
342 (list 'YaTeX-insert-begin-end env t)) map))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
343
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
344 ;;;###autoload
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
345 (defun YaTeX-define-begend-key (key env &optional map)
86
f14ec50103d0 as of 2009/9/28
yuuji@gentei.org
parents: 80
diff changeset
346 "Define short cut key for begin type completion.
f14ec50103d0 as of 2009/9/28
yuuji@gentei.org
parents: 80
diff changeset
347 Define both strokes for normal and region mode.
f14ec50103d0 as of 2009/9/28
yuuji@gentei.org
parents: 80
diff changeset
348 To customize YaTeX, user should use this function."
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
349 (YaTeX-define-begend-key-normal key env map)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
350 (if YaTeX-inhibit-prefix-letter nil
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
351 (YaTeX-define-begend-region-key
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
352 (concat (upcase (substring key 0 1)) (substring key 1)) env)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
353
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
354 ;;;###autoload
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
355 (defun YaTeX-search-active-forward (string cmntrx &optional bound err cnt func)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
356 "Search STRING which is not commented out by CMNTRX.
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
357 Optional arguments after BOUND, ERR, CNT are passed literally to search-forward
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
358 or search-backward.
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
359 Optional sixth argument FUNC changes search-function."
49
eb0512bfcb7f Abolish user-article table.
yuuji
parents: 47
diff changeset
360 (let ((sfunc (or func 'search-forward)) found md)
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
361 (while (and (prog1
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
362 (setq found (funcall sfunc string bound err cnt))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
363 (setq md (match-data)))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
364 (or
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
365 (and (eq major-mode 'yatex-mode)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
366 (YaTeX-in-verb-p (match-beginning 0)))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
367 (save-excursion
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
368 (goto-char (match-beginning 0))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
369 (beginning-of-line)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
370 (re-search-forward cmntrx (match-beginning 0) t)))))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
371 (store-match-data md)
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
372 found))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
373
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
374 (defun YaTeX-re-search-active-forward (regexp cmntrx &optional bound err cnt)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
375 "Search REGEXP backward which is not commented out by regexp CMNTRX.
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
376 See also YaTeX-search-active-forward."
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
377 (YaTeX-search-active-forward regexp cmntrx bound err cnt 're-search-forward))
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
378
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
379 (defun YaTeX-search-active-backward (string cmntrx &optional bound err cnt)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
380 "Search STRING backward which is not commented out by regexp CMNTRX.
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
381 See also YaTeX-search-active-forward."
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
382 (YaTeX-search-active-forward string cmntrx bound err cnt 'search-backward))
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
383
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
384 (defun YaTeX-re-search-active-backward (regexp cmntrx &optional bound err cnt)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
385 "Search REGEXP backward which is not commented out by regexp CMNTRX.
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
386 See also YaTeX-search-active-forward."
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
387 (YaTeX-search-active-forward
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
388 regexp cmntrx bound err cnt 're-search-backward))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
389
80
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
390 (defun YaTeX-relative-path-p (path)
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
391 "Return non-nil if PATH is not absolute one."
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
392 (let ((md (match-data)))
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
393 (unwind-protect
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
394 (not (string-match "^\\(/\\|[a-z]:\\|\\\\\\).*/" file))
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
395 (store-match-data md))))
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
396
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
397 ;;;###autoload
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
398 (defun YaTeX-switch-to-buffer (file &optional setbuf)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
399 "Switch to buffer if buffer exists, find file if not.
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
400 Optional second arg SETBUF t make use set-buffer instead of switch-to-buffer."
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
401 (interactive "Fswitch to file: ")
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
402 (if (bufferp file)
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
403 (setq file (buffer-file-name file))
80
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
404 (and (YaTeX-relative-path-p file)
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
405 (eq major-mode 'yatex-mode)
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
406 YaTeX-search-file-from-top-directory
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
407 (save-excursion
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
408 (YaTeX-visit-main t)
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
409 (setq file (expand-file-name file)))))
52
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
410 (let (buf (hilit-auto-highlight (not setbuf)))
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
411 (cond
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
412 ((setq buf (get-file-buffer file))
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
413 (funcall (if setbuf 'set-buffer 'switch-to-buffer)
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
414 (get-file-buffer file))
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
415 buf)
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
416 ((or YaTeX-create-file-prefix-g (file-exists-p file))
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
417 (or ;find-file returns nil but set current-buffer...
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
418 (if setbuf (set-buffer (find-file-noselect file))
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
419 (find-file file))
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
420 (current-buffer)))
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
421 (t (message "%s was not found in this directory." file)
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
422 nil))))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
423
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
424 ;;;###autoload
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
425 (defun YaTeX-switch-to-buffer-other-window (file)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
426 "Switch to buffer if buffer exists, find file if not."
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
427 (interactive "Fswitch to file: ")
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
428 (and (eq major-mode 'yatex-mode)
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
429 (stringp file)
80
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
430 (YaTeX-relative-path-p file)
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
431 YaTeX-search-file-from-top-directory
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
432 (save-excursion
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
433 (YaTeX-visit-main t)
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
434 (setq file (expand-file-name file))))
52
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
435 (if (bufferp file) (setq file (buffer-file-name file)))
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
436 (cond
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
437 ((get-file-buffer file)
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
438 (switch-to-buffer-other-window (get-file-buffer file))
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
439 t)
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
440 ((or YaTeX-create-file-prefix-g (file-exists-p file))
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
441 (find-file-other-window file) t)
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
442 (t (message "%s was not found in this directory." file)
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
443 nil)))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
444
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
445 (defun YaTeX-get-file-buffer (file)
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
446 "Return the FILE's buffer.
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
447 Base directory is that of main file or current directory."
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
448 (let (dir main (cdir default-directory))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
449 (or (and (eq major-mode 'yatex-mode)
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
450 YaTeX-search-file-from-top-directory
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
451 (save-excursion
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
452 (YaTeX-visit-main t)
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
453 (get-file-buffer file)))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
454 (get-file-buffer file))))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
455
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
456 (defun YaTeX-replace-format-sub (string format repl)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
457 (let ((beg (or (string-match (concat "^\\(%" format "\\)") string)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
458 (string-match (concat "[^%]\\(%" format "\\)") string)))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
459 (len (length format)))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
460 (if (null beg) string ;no conversion
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
461 (concat
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
462 (substring string 0 (match-beginning 1)) (or repl "")
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
463 (substring string (match-end 1))))))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
464
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
465 ;;;###autoload
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
466 (defun YaTeX-replace-format (string format repl)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
467 "In STRING, replace first appearance of FORMAT to REPL as if
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
468 function `format' does. FORMAT does not contain `%'"
80
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
469 (let ((ans string) (case-fold-search nil))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
470 (while (not (string=
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
471 ans (setq string (YaTeX-replace-format-sub ans format repl))))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
472 (setq ans string))
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
473 string))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
474
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
475 ;;;###autoload
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
476 (defun YaTeX-replace-formats (string replace-list)
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
477 (let ((list replace-list))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
478 (while list
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
479 (setq string (YaTeX-replace-format
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
480 string (car (car list)) (cdr (car list)))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
481 list (cdr list)))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
482 string))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
483
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
484 ;;;###autoload
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
485 (defun YaTeX-replace-format-args (string &rest args)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
486 "Translate the argument mark #1, #2, ... #n in the STRING into the
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
487 corresponding real arguments ARGS."
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
488 (let ((argp 1))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
489 (while args
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
490 (setq string
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
491 (YaTeX-replace-format string (int-to-string argp) (car args)))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
492 (setq args (cdr args) argp (1+ argp))))
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
493 string)
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
494
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
495 ;;;###autoload
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
496 (defun rindex (string char)
226
60844b664f54 Add docstring to rindex().
yuuji@gentei.org
parents: 225
diff changeset
497 "Return the last position of STRING where character CHAR found."
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
498 (let ((pos (1- (length string)))(index -1))
174
ab02213f5683 rindex: return nil, instead of -1, if no match found.
yuuji@gentei.org
parents: 168
diff changeset
499 (catch 'rindex
ab02213f5683 rindex: return nil, instead of -1, if no match found.
yuuji@gentei.org
parents: 168
diff changeset
500 (while (>= pos 0)
ab02213f5683 rindex: return nil, instead of -1, if no match found.
yuuji@gentei.org
parents: 168
diff changeset
501 (cond
ab02213f5683 rindex: return nil, instead of -1, if no match found.
yuuji@gentei.org
parents: 168
diff changeset
502 ((= (aref string pos) char)
ab02213f5683 rindex: return nil, instead of -1, if no match found.
yuuji@gentei.org
parents: 168
diff changeset
503 (throw 'rindex pos))
ab02213f5683 rindex: return nil, instead of -1, if no match found.
yuuji@gentei.org
parents: 168
diff changeset
504 (t (setq pos (1- pos))))))))
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
505
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
506 ;;;###autoload
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
507 (defun point-beginning-of-line ()
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
508 (save-excursion (beginning-of-line)(point)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
509
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
510 ;;;###autoload
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
511 (defun point-end-of-line ()
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
512 (save-excursion (end-of-line)(point)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
513
354
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
514 (defun YaTeX-showup-buffer-bottom-most (x) (nth 3 (window-edges x)))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
515 ;;;###autoload
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
516 (defun YaTeX-showup-buffer (buffer &optional func select)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
517 "Make BUFFER show up in certain window (but current window)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
518 that gives the maximum value by the FUNC. FUNC should take an argument
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
519 of its window object. Non-nil for optional third argument SELECT selects
49
eb0512bfcb7f Abolish user-article table.
yuuji
parents: 47
diff changeset
520 that window. This function never selects minibuffer window."
86
f14ec50103d0 as of 2009/9/28
yuuji@gentei.org
parents: 80
diff changeset
521 (or (and (if (and YaTeX-emacs-19 select window-system)
47
d7e7b4654058 Support special popup frame.
yuuji
parents: 46
diff changeset
522 (get-buffer-window buffer t)
d7e7b4654058 Support special popup frame.
yuuji
parents: 46
diff changeset
523 (get-buffer-window buffer))
d7e7b4654058 Support special popup frame.
yuuji
parents: 46
diff changeset
524 (progn
d7e7b4654058 Support special popup frame.
yuuji
parents: 46
diff changeset
525 (if select
51
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
526 (goto-buffer-window buffer))
47
d7e7b4654058 Support special popup frame.
yuuji
parents: 46
diff changeset
527 t))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
528 (let ((window (selected-window))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
529 (wlist (YaTeX-window-list)) win w (x 0))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
530 (cond
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
531 ((> (length wlist) 2)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
532 (if func
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
533 (while wlist
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
534 (setq w (car wlist))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
535 (if (and (not (eq window w))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
536 (> (funcall func w) x))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
537 (setq win w x (funcall func w)))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
538 (setq wlist (cdr wlist)))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
539 (setq win (get-lru-window)))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
540 (select-window win)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
541 (switch-to-buffer buffer)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
542 (or select (select-window window)))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
543 ((= (length wlist) 2)
49
eb0512bfcb7f Abolish user-article table.
yuuji
parents: 47
diff changeset
544 ;(other-window 1);This does not work properly on Emacs-19
eb0512bfcb7f Abolish user-article table.
yuuji
parents: 47
diff changeset
545 (select-window (get-lru-window))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
546 (switch-to-buffer buffer)
354
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
547 (if (< (window-height) (/ YaTeX-default-pop-window-height 2))
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
548 (enlarge-window (- YaTeX-default-pop-window-height
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
549 (window-height))))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
550 (or select (select-window window)))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
551 (t ;if one-window
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
552 (cond
86
f14ec50103d0 as of 2009/9/28
yuuji@gentei.org
parents: 80
diff changeset
553 ((and YaTeX-emacs-19 window-system (get-buffer-window buffer t))
47
d7e7b4654058 Support special popup frame.
yuuji
parents: 46
diff changeset
554 nil) ;if found in other frame
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
555 (YaTeX-default-pop-window-height
51
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
556 (split-window-calculate-height YaTeX-default-pop-window-height)
59
48ac97a6b6ce Call drawing tools
yuuji
parents: 58
diff changeset
557 ;;(pop-to-buffer buffer) ;damn! emacs-19.30
48ac97a6b6ce Call drawing tools
yuuji
parents: 58
diff changeset
558 (select-window (next-window nil 1))
48ac97a6b6ce Call drawing tools
yuuji
parents: 58
diff changeset
559 (switch-to-buffer (get-buffer-create buffer))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
560 (or select (select-window window)))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
561 (t nil)))
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
562 ))))
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
563
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
564 (cond
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
565 ((fboundp 'screen-height)
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
566 (fset 'YaTeX-screen-height 'screen-height)
182
67b1e094e151 Direct call to screen-{height,width} avoided for coming emacsen.
yuuji@gentei.org
parents: 174
diff changeset
567 (fset 'YaTeX-screen-width 'screen-width)
67b1e094e151 Direct call to screen-{height,width} avoided for coming emacsen.
yuuji@gentei.org
parents: 174
diff changeset
568 (fset 'YaTeX-set-screen-height 'set-screen-height)
67b1e094e151 Direct call to screen-{height,width} avoided for coming emacsen.
yuuji@gentei.org
parents: 174
diff changeset
569 (fset 'YaTeX-set-screen-width 'set-screen-width))
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
570 ((fboundp 'frame-height)
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
571 (fset 'YaTeX-screen-height 'frame-height)
182
67b1e094e151 Direct call to screen-{height,width} avoided for coming emacsen.
yuuji@gentei.org
parents: 174
diff changeset
572 (fset 'YaTeX-screen-width 'frame-width)
67b1e094e151 Direct call to screen-{height,width} avoided for coming emacsen.
yuuji@gentei.org
parents: 174
diff changeset
573 (fset 'YaTeX-set-screen-height 'set-frame-height)
67b1e094e151 Direct call to screen-{height,width} avoided for coming emacsen.
yuuji@gentei.org
parents: 174
diff changeset
574 (fset 'YaTeX-set-screen-width 'set-frame-width))
67b1e094e151 Direct call to screen-{height,width} avoided for coming emacsen.
yuuji@gentei.org
parents: 174
diff changeset
575 (t (error "I don't know how to run YaTeX on this Emacs...")))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
576
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
577 ;;;###autoload
51
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
578 (defun split-window-calculate-height (height)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
579 "Split current window wight specified HEIGHT.
59
48ac97a6b6ce Call drawing tools
yuuji
parents: 58
diff changeset
580 If HEIGHT is number, make a new window that has HEIGHT lines.
48ac97a6b6ce Call drawing tools
yuuji
parents: 58
diff changeset
581 If HEIGHT is string, make a new window that occupies HEIGT % of screen height.
51
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
582 Otherwise split window conventionally."
59
48ac97a6b6ce Call drawing tools
yuuji
parents: 58
diff changeset
583 (if (one-window-p t)
51
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
584 (split-window
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
585 (selected-window)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
586 (max
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
587 (min
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
588 (- (YaTeX-screen-height)
59
48ac97a6b6ce Call drawing tools
yuuji
parents: 58
diff changeset
589 (if (numberp height)
48ac97a6b6ce Call drawing tools
yuuji
parents: 58
diff changeset
590 (+ height 2)
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
591 (/ (* (YaTeX-screen-height)
451
2011de73a671 Who owes the incompatibility of string-to-int?
HIROSE Yuuji <yuuji@gentei.org>
parents: 443
diff changeset
592 (YaTeX-str2int height))
51
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
593 100)))
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
594 (- (YaTeX-screen-height) window-min-height 1))
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
595 window-min-height))))
51
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
596
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
597 ;;;###autoload
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
598 (defun YaTeX-window-list ()
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
599 (let*((curw (selected-window)) (win curw) (wlist (list curw)))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
600 (while (not (eq curw (setq win (next-window win))))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
601 (or (eq win (minibuffer-window))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
602 (setq wlist (cons win wlist))))
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
603 wlist))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
604
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
605 (if YaTeX-emacs-21
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
606 ;; Emacs-21's next-window returns other frame's window even if called
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
607 ;; with argument ALL-FRAMES nil, when called from minibuffer context.
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
608 ;; Therefore, check frame identity here.
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
609 (defun YaTeX-window-list ()
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
610 (let*((curw (selected-window)) (win curw) (wlist (list curw))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
611 (curf (window-frame curw)))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
612 (while (and (not (eq curw (setq win (next-window win))))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
613 (eq curf (window-frame win)))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
614 (or (eq win (minibuffer-window))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
615 (setq wlist (cons win wlist))))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
616 wlist)))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
617
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
618 ;;;###autoload
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
619 (defun substitute-all-key-definition (olddef newdef keymap)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
620 "Replace recursively OLDDEF with NEWDEF for any keys in KEYMAP now
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
621 defined as OLDDEF. In other words, OLDDEF is replaced with NEWDEF
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
622 where ever it appears."
68
0eb6997bee16 More adjustment for Emacs20 and XEmacs
yuuji
parents: 64
diff changeset
623 (if YaTeX-emacs-19
0eb6997bee16 More adjustment for Emacs20 and XEmacs
yuuji
parents: 64
diff changeset
624 (substitute-key-definition olddef newdef keymap global-map)
0eb6997bee16 More adjustment for Emacs20 and XEmacs
yuuji
parents: 64
diff changeset
625 (mapcar
0eb6997bee16 More adjustment for Emacs20 and XEmacs
yuuji
parents: 64
diff changeset
626 (function (lambda (key) (define-key keymap key newdef)))
0eb6997bee16 More adjustment for Emacs20 and XEmacs
yuuji
parents: 64
diff changeset
627 (where-is-internal olddef keymap))))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
628
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
629 ;;;###autoload
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
630 (defun YaTeX-match-string (n &optional m)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
631 "Return (buffer-substring (match-beginning n) (match-beginning m))."
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
632 (if (match-beginning n)
80
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
633 (YaTeX-buffer-substring (match-beginning n)
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
634 (match-end (or m n)))))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
635
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
636 ;;;###autoload
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
637 (defun YaTeX-minibuffer-complete ()
49
eb0512bfcb7f Abolish user-article table.
yuuji
parents: 47
diff changeset
638 "Complete in minibuffer.
51
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
639 If the symbol 'delim is bound and is string, its value is assumed to be
49
eb0512bfcb7f Abolish user-article table.
yuuji
parents: 47
diff changeset
640 the character class of delimiters. Completion will be performed on
51
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
641 the last field separated by those delimiters.
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
642 If the symbol 'quick is bound and is 't, when the try-completion results
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
643 in t, exit minibuffer immediately."
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
644 (interactive)
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
645 (save-restriction
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
646 (narrow-to-region
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
647 (if (fboundp 'field-beginning) (field-beginning (point-max)) (point-min))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
648 (point-max))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
649 (let ((md (match-data)) beg word compl
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
650 (quick (and (boundp 'quick) (eq quick t)))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
651 (displist ;function to display completion-list
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
652 (function
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
653 (lambda ()
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
654 (with-output-to-temp-buffer "*Completions*"
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
655 (display-completion-list
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
656 (all-completions word minibuffer-completion-table)))))))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
657 (setq beg (if (and (boundp 'delim) (stringp delim))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
658 (save-excursion
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
659 (skip-chars-backward (concat "^" delim))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
660 (point))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
661 (point-min))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
662 word (buffer-substring beg (point-max))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
663 compl (try-completion word minibuffer-completion-table))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
664 (cond
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
665 ((eq compl t)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
666 (if quick (exit-minibuffer)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
667 (let ((p (point)) (max (point-max)))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
668 (unwind-protect
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
669 (progn
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
670 (goto-char max)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
671 (insert " [Sole completion]")
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
672 (goto-char p)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
673 (sit-for 1))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
674 (delete-region max (point-max))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
675 (goto-char p)))))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
676 ((eq compl nil)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
677 (ding)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
678 (save-excursion
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
679 (let (p)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
680 (unwind-protect
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
681 (progn
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
682 (goto-char (setq p (point-max)))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
683 (insert " [No match]")
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
684 (goto-char p)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
685 (sit-for 2))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
686 (delete-region p (point-max))))))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
687 ((string= compl word)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
688 (funcall displist))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
689 (t (delete-region beg (point-max))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
690 (insert compl)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
691 (if quick
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
692 (if (eq (try-completion compl minibuffer-completion-table) t)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
693 (exit-minibuffer)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
694 (funcall displist)))))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
695 (store-match-data md))))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
696
51
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
697 (defun YaTeX-minibuffer-quick-complete ()
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
698 "Set 'quick to 't and call YaTeX-minibuffer-complete.
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
699 See documentation of YaTeX-minibuffer-complete."
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
700 (interactive)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
701 (let ((quick t))
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
702 (self-insert-command 1)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
703 (YaTeX-minibuffer-complete)))
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
704
168
191cffccc912 Replace all \ref{LABEL} when changing \label{LABEL}.
yuuji@gentei.org
parents: 142
diff changeset
705 (defun YaTeX-yatex-buffer-list ()
191cffccc912 Replace all \ref{LABEL} when changing \label{LABEL}.
yuuji@gentei.org
parents: 142
diff changeset
706 (save-excursion
191cffccc912 Replace all \ref{LABEL} when changing \label{LABEL}.
yuuji@gentei.org
parents: 142
diff changeset
707 (delq nil (mapcar (function (lambda (buf)
191cffccc912 Replace all \ref{LABEL} when changing \label{LABEL}.
yuuji@gentei.org
parents: 142
diff changeset
708 (set-buffer buf)
191cffccc912 Replace all \ref{LABEL} when changing \label{LABEL}.
yuuji@gentei.org
parents: 142
diff changeset
709 (if (eq major-mode 'yatex-mode) buf)))
191cffccc912 Replace all \ref{LABEL} when changing \label{LABEL}.
yuuji@gentei.org
parents: 142
diff changeset
710 (buffer-list)))))
191cffccc912 Replace all \ref{LABEL} when changing \label{LABEL}.
yuuji@gentei.org
parents: 142
diff changeset
711
51
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
712 (defun foreach-buffers (pattern job)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
713 "For each buffer which matches with PATTERN, do JOB."
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
714 (let ((list (buffer-list)))
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
715 (save-excursion
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
716 (while list
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
717 (set-buffer (car list))
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
718 (if (or (and (stringp pattern)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
719 (buffer-file-name)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
720 (string-match pattern (buffer-file-name)))
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
721 (and (symbolp pattern) major-mode (eq major-mode pattern)))
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
722 (eval job))
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
723 (setq list (cdr list))))))
51
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
724
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
725 (defun goto-buffer-window (buffer)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
726 "Select window which is bound to BUFFER.
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
727 If no such window exist, switch to buffer BUFFER."
52
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
728 (interactive "BGoto buffer: ")
51
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
729 (if (stringp buffer)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
730 (setq buffer (or (get-file-buffer buffer) (get-buffer buffer))))
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
731 (if (get-buffer buffer)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
732 (cond
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
733 ((get-buffer-window buffer)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
734 (select-window (get-buffer-window buffer)))
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
735 ((and YaTeX-emacs-19 (get-buffer-window buffer t))
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
736 (let*((win (get-buffer-window buffer t))
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
737 (frame (window-frame win)))
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
738 (select-frame frame)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
739 (raise-frame frame)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
740 (focus-frame frame)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
741 (select-window win)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
742 (set-mouse-position frame 0 0)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
743 (and (featurep 'windows) (fboundp 'win:adjust-window)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
744 (win:adjust-window))))
54
2d45e43fb35f Full support of English documents
yuuji
parents: 53
diff changeset
745 ((and (featurep 'windows) (fboundp 'win:get-buffer-window)
56
a9653fbd1c1c Bug fix version
yuuji
parents: 54
diff changeset
746 (let ((w (win:get-buffer-window buffer)))
a9653fbd1c1c Bug fix version
yuuji
parents: 54
diff changeset
747 (and w (win:switch-window w))))
54
2d45e43fb35f Full support of English documents
yuuji
parents: 53
diff changeset
748 (select-window (get-buffer-window buffer)))
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
749 (t (switch-to-buffer buffer)))))
51
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
750
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
751 ;; Here starts the functions which support gmhist-vs-Emacs19 compatible
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
752 ;; reading with history.
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
753 ;;;###autoload
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
754 (defun completing-read-with-history
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
755 (prompt table &optional predicate must-match initial hsym)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
756 "Completing read with general history: gmhist, Emacs-19."
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
757 (let ((minibuffer-history
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
758 (or (symbol-value hsym)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
759 (and (boundp 'minibuffer-history) minibuffer-history)))
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
760 (minibuffer-history-symbol (or hsym 'minibuffer-history)))
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
761 (prog1
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
762 (if (fboundp 'completing-read-with-history-in)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
763 (completing-read-with-history-in
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
764 minibuffer-history-symbol prompt table predicate must-match initial)
393
318841b09570 Workaround to avoid cursor warp.
HIROSE Yuuji <yuuji@gentei.org>
parents: 392
diff changeset
765 (save-excursion ;work around to avoid cursor warp
318841b09570 Workaround to avoid cursor warp.
HIROSE Yuuji <yuuji@gentei.org>
parents: 392
diff changeset
766 (completing-read prompt table predicate must-match initial)))
51
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
767 (if (and YaTeX-emacs-19 hsym) (set hsym minibuffer-history)))))
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
768
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
769 ;;;###autoload
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
770 (defun read-from-minibuffer-with-history (prompt &optional init map read hsym)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
771 "Read from minibuffer with general history: gmhist, Emacs-19."
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
772 (cond
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
773 (YaTeX-emacs-19
393
318841b09570 Workaround to avoid cursor warp.
HIROSE Yuuji <yuuji@gentei.org>
parents: 392
diff changeset
774 (save-excursion ;work around to avoid cursor warp
318841b09570 Workaround to avoid cursor warp.
HIROSE Yuuji <yuuji@gentei.org>
parents: 392
diff changeset
775 (read-from-minibuffer prompt init map read hsym)))
51
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
776 (t
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
777 (let ((minibuffer-history-symbol hsym))
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
778 (read-from-minibuffer prompt init map read)))))
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
779
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
780 ;;;###autoload
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
781 (defun read-string-with-history (prompt &optional init hsym)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
782 "Read string with history: gmhist(Emacs-18) and Emacs-19."
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
783 (cond
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
784 (YaTeX-emacs-19
393
318841b09570 Workaround to avoid cursor warp.
HIROSE Yuuji <yuuji@gentei.org>
parents: 392
diff changeset
785 (save-excursion ;work around to avoid cursor warp
318841b09570 Workaround to avoid cursor warp.
HIROSE Yuuji <yuuji@gentei.org>
parents: 392
diff changeset
786 (read-from-minibuffer prompt init minibuffer-local-map nil hsym)))
51
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
787 ((featurep 'gmhist-mh)
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
788 (read-with-history-in hsym prompt init))
b0371b6ed799 Created `ChangeLog'.
yuuji
parents: 49
diff changeset
789 (t (read-string prompt init))))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents:
diff changeset
790
234
b75390dd4260 C-j can skip further parameter input for table/figure environment.
yuuji@gentei.org
parents: 226
diff changeset
791 (defvar YaTeX-skip-next-reader-char ?\C-j)
237
af1e6c48eac0 YaTeX-skip-next-reader-p turns to YaTeX-read-string-or-skip.
yuuji@gentei.org
parents: 234
diff changeset
792 (defun YaTeX-read-string-or-skip (&rest args)
af1e6c48eac0 YaTeX-skip-next-reader-p turns to YaTeX-read-string-or-skip.
yuuji@gentei.org
parents: 234
diff changeset
793 "Read string, or skip if last input char is \C-j."
293
f5151d4240a9 Fix for going away of last-input-char
HIROSE Yuuji <yuuji@gentei.org>
parents: 290
diff changeset
794 (if (equal (if (boundp 'last-input-event) last-input-event last-input-char)
f5151d4240a9 Fix for going away of last-input-char
HIROSE Yuuji <yuuji@gentei.org>
parents: 290
diff changeset
795 YaTeX-skip-next-reader-char)
237
af1e6c48eac0 YaTeX-skip-next-reader-p turns to YaTeX-read-string-or-skip.
yuuji@gentei.org
parents: 234
diff changeset
796 ""
393
318841b09570 Workaround to avoid cursor warp.
HIROSE Yuuji <yuuji@gentei.org>
parents: 392
diff changeset
797 (save-excursion ;work around to avoid cursor warp
318841b09570 Workaround to avoid cursor warp.
HIROSE Yuuji <yuuji@gentei.org>
parents: 392
diff changeset
798 (apply 'read-string args))))
234
b75390dd4260 C-j can skip further parameter input for table/figure environment.
yuuji@gentei.org
parents: 226
diff changeset
799
244
d5e0c33d7dfd YaTeX-completing-read-or-skip introduced
yuuji@gentei.org
parents: 237
diff changeset
800 (defun YaTeX-completing-read-or-skip (&rest args)
d5e0c33d7dfd YaTeX-completing-read-or-skip introduced
yuuji@gentei.org
parents: 237
diff changeset
801 "Do completing-read, or skip if last input char is \C-j."
293
f5151d4240a9 Fix for going away of last-input-char
HIROSE Yuuji <yuuji@gentei.org>
parents: 290
diff changeset
802 (if (equal (if (boundp 'last-input-event) last-input-event last-input-char)
f5151d4240a9 Fix for going away of last-input-char
HIROSE Yuuji <yuuji@gentei.org>
parents: 290
diff changeset
803 YaTeX-skip-next-reader-char)
244
d5e0c33d7dfd YaTeX-completing-read-or-skip introduced
yuuji@gentei.org
parents: 237
diff changeset
804 ""
393
318841b09570 Workaround to avoid cursor warp.
HIROSE Yuuji <yuuji@gentei.org>
parents: 392
diff changeset
805 (save-excursion ;work around to avoid cursor warp
318841b09570 Workaround to avoid cursor warp.
HIROSE Yuuji <yuuji@gentei.org>
parents: 392
diff changeset
806 (apply 'completing-read args))))
244
d5e0c33d7dfd YaTeX-completing-read-or-skip introduced
yuuji@gentei.org
parents: 237
diff changeset
807
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
808 ;;;###autoload
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
809 (fset 'YaTeX-rassoc
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
810 (if (and nil (fboundp 'rassoc) (subrp (symbol-function 'rassoc)))
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
811 (symbol-function 'rassoc)
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
812 (function
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
813 (lambda (key list)
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
814 (let ((l list))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
815 (catch 'found
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
816 (while l
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
817 (if (equal key (cdr (car l)))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
818 (throw 'found (car l)))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
819 (setq l (cdr l)))))))))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
820
354
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
821 (defun YaTeX-set-file-coding-system (code coding)
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
822 "Set current buffer's coding system according to symbol."
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
823 (cond ((null code)
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
824 nil)
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
825 ((boundp 'MULE)
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
826 (set-file-coding-system coding))
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
827 ((and YaTeX-emacs-20 (boundp 'buffer-file-coding-system))
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
828 (setq buffer-file-coding-system
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
829 (or (and (fboundp 'set-auto-coding) buffer-file-name
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
830 (save-excursion
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
831 (goto-char (point-min))
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
832 (set-auto-coding buffer-file-name (buffer-size))))
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
833 coding)))
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
834 ((featurep 'mule)
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
835 (set-file-coding-system coding))
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
836 ((boundp 'NEMACS)
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
837 (make-local-variable 'kanji-fileio-code)
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
838 (setq kanji-fileio-code code))))
5465428f5a68 `[prefix] t e' displays typesetting image in the next window, if possible.
HIROSE Yuuji <yuuji@gentei.org>
parents: 353
diff changeset
839
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
840 (defun YaTeX-insert-file-contents (file visit &optional beg end)
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
841 (cond
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
842 ((and (string< "19" emacs-version) (not (featurep 'xemacs)))
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
843 (insert-file-contents file visit beg end))
77
1b172d26b55e Fix auto-fill movement on Emacs21.
yuuji
parents: 73
diff changeset
844 ((string-match "unix\\|linux" (symbol-name system-type))
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
845 (let ((default-process-coding-system
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
846 (and (boundp '*noconv*) (list '*noconv*)))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
847 (file-coding-system (and (boundp '*noconv*) '*noconv*))
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
848 kanji-fileio-code
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
849 (default-process-kanji-code 0))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
850 (call-process shell-file-name file (current-buffer) nil
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
851 (or (and (boundp 'shell-command-option)
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
852 shell-command-option)
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
853 "-c")
77
1b172d26b55e Fix auto-fill movement on Emacs21.
yuuji
parents: 73
diff changeset
854 (format "dd bs=1 count=%d | tail -c +%d" end beg))))
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
855 (t (insert-file-contents file))))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
856
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
857 (defun YaTeX-split-string (str &optional sep null)
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
858 "Split string STR by every occurrence of SEP(regexp).
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
859 If the optional second argument SEP is nil, it defaults to \"[ \f\t\n\r\v]+\".
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
860 Do not include null string by default. Non-nil for optional third argument
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
861 NULL includes null string in a list."
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
862 (let ((sep (or sep "[ \f\t\n\r\v]+"))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
863 list m)
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
864 (while str
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
865 (if (setq m (string-match sep str))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
866 (progn
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
867 (if (or (> m 0) null)
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
868 (setq list (cons (substring str 0 m) list)))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
869 (setq str (substring str (match-end 0))))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
870 (if (or null (string< "" str))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
871 (setq list (cons str list)))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
872 (setq str nil)))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
873 (nreverse list)))
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
874
73
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
875 ;;;###autoload
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
876 (defun YaTeX-delete1 (elt list)
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
877 "Delete"
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
878 (let (e)
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
879 (while (setq e (YaTeX-member elt list))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
880 (setq list (delq (car e) list))))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
881 list)
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
882 (if (fboundp 'delete)
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
883 (fset 'YaTeX-delete (symbol-function 'delete))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
884 (fset 'YaTeX-delete (symbol-function 'YaTeX-delete1)))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
885
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
886 (defun YaTeX-member1 (elt list)
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
887 (catch 'found
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
888 (while list
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
889 (if (equal elt (car list))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
890 (throw 'found list))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
891 (setq list (cdr list)))))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
892
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
893 (if (and (fboundp 'member) (subrp (symbol-function 'member)))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
894 (fset 'YaTeX-member (symbol-function 'member))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
895 (fset 'YaTeX-member (symbol-function 'YaTeX-member1)))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
896
53
5f4b18da14b3 Fix functions relating YaTeX-beginning-of-environment or
yuuji
parents: 52
diff changeset
897 ;;;
5f4b18da14b3 Fix functions relating YaTeX-beginning-of-environment or
yuuji
parents: 52
diff changeset
898 ;; Interface function for windows.el
5f4b18da14b3 Fix functions relating YaTeX-beginning-of-environment or
yuuji
parents: 52
diff changeset
899 ;;;
5f4b18da14b3 Fix functions relating YaTeX-beginning-of-environment or
yuuji
parents: 52
diff changeset
900 ;;;###autoload
290
1a4332ecc58b For emacs-24.3+ and NEmacs(last-command-{char,event} handling)
HIROSE Yuuji <yuuji@gentei.org>
parents: 287
diff changeset
901 (fset 'YaTeX-last-key
1a4332ecc58b For emacs-24.3+ and NEmacs(last-command-{char,event} handling)
HIROSE Yuuji <yuuji@gentei.org>
parents: 287
diff changeset
902 (if (fboundp 'win:last-key)
1a4332ecc58b For emacs-24.3+ and NEmacs(last-command-{char,event} handling)
HIROSE Yuuji <yuuji@gentei.org>
parents: 287
diff changeset
903 'win:last-key
353
2a72779d9c50 Rewrite lambda notations to suppress annoying warnings from emacs24
HIROSE Yuuji <yuuji@gentei.org>
parents: 310
diff changeset
904 (function (lambda () (if (boundp 'last-command-char)
2a72779d9c50 Rewrite lambda notations to suppress annoying warnings from emacs24
HIROSE Yuuji <yuuji@gentei.org>
parents: 310
diff changeset
905 last-command-char
2a72779d9c50 Rewrite lambda notations to suppress annoying warnings from emacs24
HIROSE Yuuji <yuuji@gentei.org>
parents: 310
diff changeset
906 last-command-event)))))
53
5f4b18da14b3 Fix functions relating YaTeX-beginning-of-environment or
yuuji
parents: 52
diff changeset
907 (defun YaTeX-switch-to-window ()
5f4b18da14b3 Fix functions relating YaTeX-beginning-of-environment or
yuuji
parents: 52
diff changeset
908 "Switch to windows.el's window decided by last pressed key."
5f4b18da14b3 Fix functions relating YaTeX-beginning-of-environment or
yuuji
parents: 52
diff changeset
909 (interactive)
5f4b18da14b3 Fix functions relating YaTeX-beginning-of-environment or
yuuji
parents: 52
diff changeset
910 (or (featurep 'windows) (error "Why don't you use `windows.el'?"))
290
1a4332ecc58b For emacs-24.3+ and NEmacs(last-command-{char,event} handling)
HIROSE Yuuji <yuuji@gentei.org>
parents: 287
diff changeset
911 (win-switch-to-window 1 (- (YaTeX-last-key) win:base-key)))
1a4332ecc58b For emacs-24.3+ and NEmacs(last-command-{char,event} handling)
HIROSE Yuuji <yuuji@gentei.org>
parents: 287
diff changeset
912
53
5f4b18da14b3 Fix functions relating YaTeX-beginning-of-environment or
yuuji
parents: 52
diff changeset
913
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
914 ;;;###autoload
138
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents: 130
diff changeset
915 (defun YaTeX-command-to-string (cmd)
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents: 130
diff changeset
916 (if (fboundp 'shell-command-to-string)
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents: 130
diff changeset
917 (funcall 'shell-command-to-string cmd)
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents: 130
diff changeset
918 (let ((tbuf " *tmpout*"))
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents: 130
diff changeset
919 (if (get-buffer-create tbuf) (kill-buffer tbuf))
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents: 130
diff changeset
920 (let ((standard-output (get-buffer-create tbuf)))
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents: 130
diff changeset
921 (unwind-protect
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents: 130
diff changeset
922 (save-excursion
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents: 130
diff changeset
923 (call-process
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents: 130
diff changeset
924 shell-file-name nil tbuf nil YaTeX-shell-command-option cmd)
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents: 130
diff changeset
925 (set-buffer tbuf)
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents: 130
diff changeset
926 (buffer-string))
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents: 130
diff changeset
927 (kill-buffer tbuf))))))
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents: 130
diff changeset
928
372
e8f95c375526 YaTeX-executable-find added
HIROSE Yuuji <yuuji@gentei.org>
parents: 366
diff changeset
929 ;;; (defun YaTeX-executable-find(cmd)...)
e8f95c375526 YaTeX-executable-find added
HIROSE Yuuji <yuuji@gentei.org>
parents: 366
diff changeset
930 (fset 'YaTeX-executable-find
e8f95c375526 YaTeX-executable-find added
HIROSE Yuuji <yuuji@gentei.org>
parents: 366
diff changeset
931 (if (fboundp 'executable-find)
e8f95c375526 YaTeX-executable-find added
HIROSE Yuuji <yuuji@gentei.org>
parents: 366
diff changeset
932 'executable-find
e8f95c375526 YaTeX-executable-find added
HIROSE Yuuji <yuuji@gentei.org>
parents: 366
diff changeset
933 (function (lambda (cmd)
e8f95c375526 YaTeX-executable-find added
HIROSE Yuuji <yuuji@gentei.org>
parents: 366
diff changeset
934 (let ((list exec-path) path)
e8f95c375526 YaTeX-executable-find added
HIROSE Yuuji <yuuji@gentei.org>
parents: 366
diff changeset
935 (catch 'exec
e8f95c375526 YaTeX-executable-find added
HIROSE Yuuji <yuuji@gentei.org>
parents: 366
diff changeset
936 (while list
e8f95c375526 YaTeX-executable-find added
HIROSE Yuuji <yuuji@gentei.org>
parents: 366
diff changeset
937 (if (file-executable-p
e8f95c375526 YaTeX-executable-find added
HIROSE Yuuji <yuuji@gentei.org>
parents: 366
diff changeset
938 (setq path (expand-file-name cmd (car list))))
e8f95c375526 YaTeX-executable-find added
HIROSE Yuuji <yuuji@gentei.org>
parents: 366
diff changeset
939 (throw 'exec path))
e8f95c375526 YaTeX-executable-find added
HIROSE Yuuji <yuuji@gentei.org>
parents: 366
diff changeset
940 (setq list (cdr list)))))))))
e8f95c375526 YaTeX-executable-find added
HIROSE Yuuji <yuuji@gentei.org>
parents: 366
diff changeset
941
138
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents: 130
diff changeset
942 ;;;###autoload
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
943 (defun YaTeX-reindent (col)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
944 "Remove current indentation and reindento to COL column."
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
945 (save-excursion
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
946 (beginning-of-line)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
947 (skip-chars-forward " \t")
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
948 (if (/= col (current-column))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
949 (progn
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
950 (delete-region (point) (progn (beginning-of-line) (point)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
951 (indent-to col))))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
952 (skip-chars-forward " \t" (point-end-of-line)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
953
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
954 (defun YaTeX-inner-environment (&optional quick)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
955 "Return current inner-most environment.
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
956 Non-nil for optional argument QUICK restricts search bound to most
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
957 recent sectioning command. Matching point is stored to property 'point
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
958 of 'YaTeX-inner-environment, which can be referred by
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
959 (get 'YaTeX-inner-environment 'point)."
73
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
960 (put 'YaTeX-inner-environment 'point (point-min))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
961 (put 'YaTeX-inner-environment 'indent 0)
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
962 (let*((nest 0)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
963 (beg (YaTeX-replace-format-args
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
964 (regexp-quote YaTeX-struct-begin)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
965 ;YaTeX-struct-begin ;=== TENTATIVE!! ==
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
966 YaTeX-struct-name-regexp
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
967 (if (eq major-mode 'yahtml-mode) "\\s *.*" "")
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
968 ""))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
969 (end (YaTeX-replace-format-args
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
970 (regexp-quote YaTeX-struct-end)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
971 YaTeX-struct-name-regexp "" ""))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
972 (begend (concat "\\(" beg "\\)\\|\\(" end "\\)"))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
973 bound m0
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
974 (htmlp (eq major-mode 'yahtml-mode))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
975 (open
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
976 (concat "^" (or (cdr (assq major-mode '((yahtml-mode . "<")))) "{")))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
977 (close
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
978 (concat "^"
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
979 (or (cdr(assq major-mode '((yahtml-mode . "\n\t >")))) "}"))))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
980 (save-excursion
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
981 (if quick
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
982 (setq bound
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
983 (save-excursion
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
984 (if htmlp
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
985 ;;(re-search-backward YaTeX-sectioning-regexp nil 1)
73
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
986 ;;(goto-char (point-min)) ;Is this enough? 97/6/26
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
987 (re-search-backward yahtml-indentation-boundary nil 1)
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
988 (YaTeX-re-search-active-backward
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
989 (concat YaTeX-ec-regexp
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
990 "\\(" YaTeX-sectioning-regexp "\\)\\*?{")
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
991 YaTeX-comment-prefix nil 1))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
992 (or (bobp) (end-of-line))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
993 (point))))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
994 (if (catch 'begin
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
995 (if (and (numberp bound) (< (point) bound)) (throw 'begin nil))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
996 (while (YaTeX-re-search-active-backward
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
997 begend YaTeX-comment-prefix bound t)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
998 (setq m0 (match-beginning 0))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
999 (if (looking-at end) ;;(match-beginning 2)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1000 (setq nest (1+ nest))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1001 (setq nest (1- nest)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1002 (if (< nest 0)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1003 (progn
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1004 (put 'YaTeX-inner-environment 'point m0)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1005 (goto-char m0)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1006 (put 'YaTeX-inner-environment 'indent (current-column))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1007 (throw 'begin t)))))
187
2f91947a43a1 YaTeX-end-environment
yuuji@gentei.org
parents: 182
diff changeset
1008 (YaTeX-buffer-substring
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1009 (progn (skip-chars-forward open) (1+ (point)))
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
1010 (progn (skip-chars-forward close) (point)))))))
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1011
392
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1012 (defun YaTeX-in-environment-p (env)
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1013 "Return if current LaTeX environment is ENV.
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1014 ENV is given in the form of environment's name or its list."
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1015 (let ((md (match-data)) (nest 0) p envrx)
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1016 (cond
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1017 ((atom env)
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1018 (setq envrx
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1019 (concat "\\("
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1020 (regexp-quote
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1021 (YaTeX-replace-format-args
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1022 YaTeX-struct-begin env "" ""))
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1023 "\\>\\)\\|\\("
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1024 (regexp-quote
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1025 (YaTeX-replace-format-args
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1026 YaTeX-struct-end env "" ""))
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1027 "\\)"))
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1028 (save-excursion
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1029 (setq p (catch 'open
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1030 (while (YaTeX-re-search-active-backward
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1031 envrx YaTeX-comment-prefix nil t)
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1032 (if (match-beginning 2)
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1033 (setq nest (1+ nest))
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1034 (setq nest (1- nest)))
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1035 (if (< nest 0)
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1036 (throw 'open (cons env (match-beginning 0)))))))))
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1037 ((listp env)
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1038 (setq p
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1039 (or (YaTeX-in-environment-p (car env))
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1040 (and (cdr env) (YaTeX-in-environment-p (cdr env)))))))
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1041 (store-match-data md)
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1042 p;(or p (YaTeX-in-verb-p (match-beginning 0)))
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1043 ))
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1044
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1045 (defun YaTeX-quick-in-environment-p (env)
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1046 "Check quickly but unsure if current environment is ENV.
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1047 ENV is given in the form of environment's name or its list.
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1048 This function returns correct result only if ENV is NOT nested."
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1049 (save-excursion
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1050 (let ((md (match-data)) m0 (p (point)) rc clfound)
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1051 (cond
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1052 ((listp env)
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1053 (or (YaTeX-quick-in-environment-p (car env))
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1054 (and (cdr env) (YaTeX-quick-in-environment-p (cdr env)))))
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1055 (t
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1056 (unwind-protect
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1057 (if (prog1
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1058 (YaTeX-search-active-backward
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1059 (YaTeX-replace-format-args YaTeX-struct-begin env "" "")
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1060 YaTeX-comment-prefix nil t)
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1061 (setq m0 (match-beginning 0)))
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1062 (if (YaTeX-search-active-forward
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1063 (YaTeX-replace-format-args
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1064 YaTeX-struct-end env)
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1065 YaTeX-comment-prefix p t nil)
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1066 nil ;if \end{env} found, return nil
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1067 (cons env m0))) ;else, return meaningful values
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1068 (store-match-data md)))))))
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1069
451
2011de73a671 Who owes the incompatibility of string-to-int?
HIROSE Yuuji <yuuji@gentei.org>
parents: 443
diff changeset
1070 (defun YaTeX-goto-corresponding-environment (&optional allow-mismatch noerr bg)
73
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1071 "Go to corresponding begin/end enclosure.
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1072 Optional argument ALLOW-MISMATCH allows mismatch open/clese. Use this
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1073 for \left(, \right).
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1074 Optional third argument NOERR causes no error for unballanced environment."
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1075 (interactive)
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1076 (if (not (YaTeX-on-begin-end-p)) nil
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1077 (let ((p (match-end 0)) b0 b1 env (nest 0) regexp re-s (op (point))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1078 (m0 (match-beginning 0)) ;whole matching
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1079 (m1 (match-beginning 1)) ;environment in \begin{}
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1080 (m2 (match-beginning 2)) ;environment in \end{}
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1081 (m3 (match-beginning 3))) ;environment in \[ \] \( \)
451
2011de73a671 Who owes the incompatibility of string-to-int?
HIROSE Yuuji <yuuji@gentei.org>
parents: 443
diff changeset
1082 ;(setq env (regexp-quote (buffer-substring p (match-beginning 0))))
73
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1083 (if (cond
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1084 (m1 ;if begin{xxx}
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1085 (setq env
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1086 (if allow-mismatch YaTeX-struct-name-regexp
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1087 (regexp-quote (buffer-substring m1 (match-end 1)))))
451
2011de73a671 Who owes the incompatibility of string-to-int?
HIROSE Yuuji <yuuji@gentei.org>
parents: 443
diff changeset
1088 ; (setq regexp (concat "\\(\\\\end{" env "}\\)\\|"
2011de73a671 Who owes the incompatibility of string-to-int?
HIROSE Yuuji <yuuji@gentei.org>
parents: 443
diff changeset
1089 ; "\\(\\\\begin{" env "}\\)"))
73
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1090 (setq regexp
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1091 (concat
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1092 "\\("
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1093 (YaTeX-replace-format-args
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1094 (regexp-quote YaTeX-struct-end) env "" "")
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1095 "\\)\\|\\("
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1096 (YaTeX-replace-format-args
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1097 (regexp-quote YaTeX-struct-begin) env "" "")
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1098 "\\)"))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1099 (setq re-s 're-search-forward))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1100 (m2 ;if end{xxx}
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1101 (setq env
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1102 (if allow-mismatch YaTeX-struct-name-regexp
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1103 (regexp-quote (buffer-substring m2 (match-end 2)))))
451
2011de73a671 Who owes the incompatibility of string-to-int?
HIROSE Yuuji <yuuji@gentei.org>
parents: 443
diff changeset
1104 ; (setq regexp (concat "\\(\\\\begin{" env "}\\)\\|"
2011de73a671 Who owes the incompatibility of string-to-int?
HIROSE Yuuji <yuuji@gentei.org>
parents: 443
diff changeset
1105 ; "\\(\\\\end{" env "}\\)"))
73
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1106 (setq regexp
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1107 (concat
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1108 "\\("
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1109 (YaTeX-replace-format-args
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1110 (regexp-quote YaTeX-struct-begin) env "" "")
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1111 "\\)\\|\\("
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1112 (YaTeX-replace-format-args
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1113 (regexp-quote YaTeX-struct-end) env "" "")
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1114 "\\)"))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1115 (setq re-s 're-search-backward))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1116 (m3 ;math environment
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1117 (setq env (char-after (1+ m3))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1118 regexp (format "\\(%s%s\\)\\|\\(%s%s\\)"
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1119 YaTeX-ec-regexp
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1120 (regexp-quote
561
e947b9ae31c2 Escape parens to dismiss warning
HIROSE Yuuji <yuuji@gentei.org>
parents: 529
diff changeset
1121 (cdr (assq env '((?\( . ")") (?\) . "(")
e947b9ae31c2 Escape parens to dismiss warning
HIROSE Yuuji <yuuji@gentei.org>
parents: 529
diff changeset
1122 (?\[ . "]") (?\] . "[")))))
73
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1123 YaTeX-ec-regexp
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1124 (regexp-quote (char-to-string env)))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1125 re-s (if (memq env '(?\( ?\[))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1126 're-search-forward
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1127 're-search-backward)))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1128 (t (if noerr nil (error "Corresponding environment not found."))))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1129 (progn
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1130 (while (and (>= nest 0) (funcall re-s regexp nil t))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1131 (setq b0 (match-beginning 0) b1 (match-beginning 1))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1132 (if (or (equal b0 m0)
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1133 (YaTeX-literal-p b0))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1134 nil
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1135 (setq nest (if (equal b0 b1)
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1136 (1- nest) (1+ nest)))))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1137 (if (< nest 0)
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1138 (goto-char (match-beginning 0)) ;found.
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1139 (goto-char op)
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1140 (funcall
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1141 (if noerr 'message 'error)
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1142 "Corresponding environment `%s' not found." env)
451
2011de73a671 Who owes the incompatibility of string-to-int?
HIROSE Yuuji <yuuji@gentei.org>
parents: 443
diff changeset
1143 (or bg (sit-for 1))
73
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1144 nil))))))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1145
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1146 (defun YaTeX-end-environment ()
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1147 "Close opening environment"
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1148 (interactive)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1149 (let ((env (YaTeX-inner-environment)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1150 (if (not env) (error "No premature environment")
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1151 (save-excursion
187
2f91947a43a1 YaTeX-end-environment
yuuji@gentei.org
parents: 182
diff changeset
1152 (if (and
2f91947a43a1 YaTeX-end-environment
yuuji@gentei.org
parents: 182
diff changeset
1153 (YaTeX-re-search-active-forward
2f91947a43a1 YaTeX-end-environment
yuuji@gentei.org
parents: 182
diff changeset
1154 (concat
2f91947a43a1 YaTeX-end-environment
yuuji@gentei.org
parents: 182
diff changeset
1155 "\\(" (YaTeX-replace-format-args
2f91947a43a1 YaTeX-end-environment
yuuji@gentei.org
parents: 182
diff changeset
1156 YaTeX-struct-end env "" "")
2f91947a43a1 YaTeX-end-environment
yuuji@gentei.org
parents: 182
diff changeset
1157 "\\)\\|\\(" (YaTeX-replace-format-args
2f91947a43a1 YaTeX-end-environment
yuuji@gentei.org
parents: 182
diff changeset
1158 YaTeX-struct-begin env "" "")
2f91947a43a1 YaTeX-end-environment
yuuji@gentei.org
parents: 182
diff changeset
1159 "\\)")
2f91947a43a1 YaTeX-end-environment
yuuji@gentei.org
parents: 182
diff changeset
1160 YaTeX-comment-prefix nil t)
2f91947a43a1 YaTeX-end-environment
yuuji@gentei.org
parents: 182
diff changeset
1161 (match-beginning 1)) ;is closing struc.
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1162 (if (y-or-n-p
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1163 (concat "Environment `" env
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1164 "' may be already closed. Force close?"))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1165 nil
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1166 (error "end environment aborted."))))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1167 (message "") ;Erase (y or n) message.
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1168 (YaTeX-insert-struc 'end env)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1169 (save-excursion
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1170 (goto-char (or (get 'YaTeX-inner-environment 'point) (match-end 0)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1171 (if (pos-visible-in-window-p)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1172 (sit-for (if YaTeX-dos 2 1))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1173 (message "Matches with %s at line %d"
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1174 (YaTeX-replace-format-args YaTeX-struct-begin env "" "")
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
1175 (count-lines (point-min) (point))))))))
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1176
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1177 (defun YaTeX-beginning-of-environment (&optional limit-search-bound end)
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1178 "Goto the beginning of the current environment.
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1179 Optional argument LIMIT-SEARCH-BOUND non-nil limits the search bound to
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1180 most recent sectioning command. Non-nil for optional third argument END
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1181 goes to end of environment."
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1182 (interactive)
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1183 (let ((op (point)))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1184 (if (YaTeX-inner-environment limit-search-bound)
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1185 (progn
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1186 (goto-char (get 'YaTeX-inner-environment 'point))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1187 (and end (YaTeX-goto-corresponding-environment))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1188 (if (interactive-p) (push-mark op))
80
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1189 (point)))))
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1190
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1191 (defun YaTeX-end-of-environment (&optional limit-search-bound)
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1192 "Goto the end of the current environment.
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1193 Optional argument LIMIT-SEARCH-BOUND non-nil limits the search bound
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1194 to most recent sectioning command."
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1195 (interactive)
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1196 (YaTeX-beginning-of-environment limit-search-bound t))
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1197
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1198 (defun YaTeX-mark-environment ()
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1199 "Mark current position and move point to end of environment."
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1200 (interactive)
130
8703f090c628 `[prefix] t e' for YaTeX-typeset-environment.
yuuji@gentei.org
parents: 88
diff changeset
1201 (require 'yatexmth)
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1202 (let ((curp (point)))
130
8703f090c628 `[prefix] t e' for YaTeX-typeset-environment.
yuuji@gentei.org
parents: 88
diff changeset
1203 (if (YaTeX-in-math-mode-p)
8703f090c628 `[prefix] t e' for YaTeX-typeset-environment.
yuuji@gentei.org
parents: 88
diff changeset
1204 (YaTeX-mark-mathenv)
8703f090c628 `[prefix] t e' for YaTeX-typeset-environment.
yuuji@gentei.org
parents: 88
diff changeset
1205 (if (and (YaTeX-on-begin-end-p) (match-beginning 1)) ;if on \\begin
8703f090c628 `[prefix] t e' for YaTeX-typeset-environment.
yuuji@gentei.org
parents: 88
diff changeset
1206 (progn (goto-char (match-end 0)))
8703f090c628 `[prefix] t e' for YaTeX-typeset-environment.
yuuji@gentei.org
parents: 88
diff changeset
1207 (if (= (char-after (point)) ?\\) nil ;if on \\end
8703f090c628 `[prefix] t e' for YaTeX-typeset-environment.
yuuji@gentei.org
parents: 88
diff changeset
1208 (skip-chars-backward "^\n\\\\")
8703f090c628 `[prefix] t e' for YaTeX-typeset-environment.
yuuji@gentei.org
parents: 88
diff changeset
1209 (or (bolp) (forward-char -1))))
8703f090c628 `[prefix] t e' for YaTeX-typeset-environment.
yuuji@gentei.org
parents: 88
diff changeset
1210 (if (not (YaTeX-end-of-environment)) ;arg1 turns to match-beginning 1
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1211 (progn
130
8703f090c628 `[prefix] t e' for YaTeX-typeset-environment.
yuuji@gentei.org
parents: 88
diff changeset
1212 (goto-char curp)
8703f090c628 `[prefix] t e' for YaTeX-typeset-environment.
yuuji@gentei.org
parents: 88
diff changeset
1213 (error "Cannot found the end of current environment."))
8703f090c628 `[prefix] t e' for YaTeX-typeset-environment.
yuuji@gentei.org
parents: 88
diff changeset
1214 (YaTeX-goto-corresponding-environment)
380
f061b37c7542 Equalize boundary of non-math environment with math environment.
HIROSE Yuuji <yuuji@gentei.org>
parents: 376
diff changeset
1215 ;;(beginning-of-line) ;for confirmation ;OUT 2015/1/4
130
8703f090c628 `[prefix] t e' for YaTeX-typeset-environment.
yuuji@gentei.org
parents: 88
diff changeset
1216 (if (< curp (point))
8703f090c628 `[prefix] t e' for YaTeX-typeset-environment.
yuuji@gentei.org
parents: 88
diff changeset
1217 (progn
8703f090c628 `[prefix] t e' for YaTeX-typeset-environment.
yuuji@gentei.org
parents: 88
diff changeset
1218 (message "Mark this environment?(y or n): ")
8703f090c628 `[prefix] t e' for YaTeX-typeset-environment.
yuuji@gentei.org
parents: 88
diff changeset
1219 (if (= (read-char) ?y) nil
8703f090c628 `[prefix] t e' for YaTeX-typeset-environment.
yuuji@gentei.org
parents: 88
diff changeset
1220 (goto-char curp)
8703f090c628 `[prefix] t e' for YaTeX-typeset-environment.
yuuji@gentei.org
parents: 88
diff changeset
1221 (error "Abort. Please call again at more proper position."))))
8703f090c628 `[prefix] t e' for YaTeX-typeset-environment.
yuuji@gentei.org
parents: 88
diff changeset
1222 (set-mark-command nil)
8703f090c628 `[prefix] t e' for YaTeX-typeset-environment.
yuuji@gentei.org
parents: 88
diff changeset
1223 (YaTeX-goto-corresponding-environment)
380
f061b37c7542 Equalize boundary of non-math environment with math environment.
HIROSE Yuuji <yuuji@gentei.org>
parents: 376
diff changeset
1224 (goto-char (match-end 0))
f061b37c7542 Equalize boundary of non-math environment with math environment.
HIROSE Yuuji <yuuji@gentei.org>
parents: 376
diff changeset
1225 ;;(end-of-line) ;OUT 2015/1/5
f061b37c7542 Equalize boundary of non-math environment with math environment.
HIROSE Yuuji <yuuji@gentei.org>
parents: 376
diff changeset
1226 ;;(if (eobp) nil (forward-char 1)) ;OUT 2015/1/5
f061b37c7542 Equalize boundary of non-math environment with math environment.
HIROSE Yuuji <yuuji@gentei.org>
parents: 376
diff changeset
1227 ))))
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1228
524
b1896ef49747 Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents: 515
diff changeset
1229 (defun YaTeX-in-BEGEND-p (&optional pt)
b1896ef49747 Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents: 515
diff changeset
1230 "Check if the point (or PT) is in a %#BEGIN...%#END region.
515
b6853d450b0a Add a function to examine the point is in %#BEGIN/%#END or not.
HIROSE Yuuji <yuuji@gentei.org>
parents: 503
diff changeset
1231 Return the list of beginning and ending point of the region and arg-string
b6853d450b0a Add a function to examine the point is in %#BEGIN/%#END or not.
HIROSE Yuuji <yuuji@gentei.org>
parents: 503
diff changeset
1232 if the point is in BEGEND. Otherwise nil."
b6853d450b0a Add a function to examine the point is in %#BEGIN/%#END or not.
HIROSE Yuuji <yuuji@gentei.org>
parents: 503
diff changeset
1233 (let ((b "%#BEGIN") bp args (e "%#END") (p (point)))
b6853d450b0a Add a function to examine the point is in %#BEGIN/%#END or not.
HIROSE Yuuji <yuuji@gentei.org>
parents: 503
diff changeset
1234 (save-excursion
b6853d450b0a Add a function to examine the point is in %#BEGIN/%#END or not.
HIROSE Yuuji <yuuji@gentei.org>
parents: 503
diff changeset
1235 (save-match-data ;emacs-19+ yatex1.80+
b6853d450b0a Add a function to examine the point is in %#BEGIN/%#END or not.
HIROSE Yuuji <yuuji@gentei.org>
parents: 503
diff changeset
1236 (and (re-search-backward b nil t)
b6853d450b0a Add a function to examine the point is in %#BEGIN/%#END or not.
HIROSE Yuuji <yuuji@gentei.org>
parents: 503
diff changeset
1237 (progn
b6853d450b0a Add a function to examine the point is in %#BEGIN/%#END or not.
HIROSE Yuuji <yuuji@gentei.org>
parents: 503
diff changeset
1238 (setq bp (match-beginning 0))
b6853d450b0a Add a function to examine the point is in %#BEGIN/%#END or not.
HIROSE Yuuji <yuuji@gentei.org>
parents: 503
diff changeset
1239 (goto-char (match-end 0)) ;Start to get args of %#BEGIN
b6853d450b0a Add a function to examine the point is in %#BEGIN/%#END or not.
HIROSE Yuuji <yuuji@gentei.org>
parents: 503
diff changeset
1240 (skip-chars-forward " \t")
b6853d450b0a Add a function to examine the point is in %#BEGIN/%#END or not.
HIROSE Yuuji <yuuji@gentei.org>
parents: 503
diff changeset
1241 (setq args (YaTeX-buffer-substring (point) (point-end-of-line))))
b6853d450b0a Add a function to examine the point is in %#BEGIN/%#END or not.
HIROSE Yuuji <yuuji@gentei.org>
parents: 503
diff changeset
1242 (re-search-forward e nil t)
b6853d450b0a Add a function to examine the point is in %#BEGIN/%#END or not.
HIROSE Yuuji <yuuji@gentei.org>
parents: 503
diff changeset
1243 (> (point) p)
b6853d450b0a Add a function to examine the point is in %#BEGIN/%#END or not.
HIROSE Yuuji <yuuji@gentei.org>
parents: 503
diff changeset
1244 (list bp (match-end 0) args))))))
b6853d450b0a Add a function to examine the point is in %#BEGIN/%#END or not.
HIROSE Yuuji <yuuji@gentei.org>
parents: 503
diff changeset
1245
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1246 (defun YaTeX-kill-buffer (buffer)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1247 "Make effort to show parent buffer after kill."
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1248 (interactive "bKill buffer: ")
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1249 (or (get-buffer buffer)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1250 (error "No such buffer %s" buffer))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1251 (let ((pf YaTeX-parent-file))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1252 (kill-buffer buffer)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1253 (and pf
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1254 (get-file-buffer pf)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1255 (switch-to-buffer (get-file-buffer pf)))))
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 69
diff changeset
1256
225
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1257 (defun YaTeX-getset-builtin (key &optional value)
142
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1258 "Read source built-in command of %# usage."
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1259 (catch 'builtin
225
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1260 (let*((bl (delq nil (list (current-buffer)
142
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1261 (and YaTeX-parent-file
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1262 (get-file-buffer YaTeX-parent-file)))))
225
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1263 (tuple (cdr (assq major-mode
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1264 '((yatex-mode "%#" . "\n")
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1265 (yahtml-mode "<!-- #" . "[ \t]*-->\\|\n")))))
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1266 (leader (or (car tuple) ""))
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1267 (closer (or (cdr tuple) ""))
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1268 (prompt (format "Built-in for %s: " key)))
142
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1269 (save-excursion
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1270 (while bl
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1271 (set-buffer (car bl))
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1272 (save-excursion
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1273 (goto-char (point-min))
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1274 (if (and (re-search-forward
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1275 (concat "^" (regexp-quote (concat leader key))) nil t)
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1276 (not (eolp)))
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1277 (throw 'builtin
225
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1278 (let (b e w)
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1279 (skip-chars-forward " \t" (point-end-of-line))
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1280 (setq b (point)
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1281 e (if (re-search-forward closer nil t)
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1282 (match-beginning 0)
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1283 (point-end-of-line))
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1284 w (YaTeX-buffer-substring b e))
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1285 (if (null value)
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1286 w
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1287 (delete-region b e)
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1288 (goto-char b)
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1289 (if (symbolp value)
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1290 (setq value (read-string prompt w)))
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1291 (insert value)
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1292 value)))))
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1293 (setq bl (cdr bl)))
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1294 ; not found
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1295 (if (null value)
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1296 nil ;not set mode, return simply nil
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1297 (if (symbolp value)
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1298 (setq value (read-string prompt)))
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1299 (save-excursion
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1300 (goto-char (point-min))
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1301 (insert leader key " " value "\n")
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1302 value)))))) ;on set mode, return set value
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1303
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1304 (defun YaTeX-get-builtin (key)
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1305 "Read source built-in command of %# usage."
bd9dc9d53a3a New func. YaTeX-getset-builtin introduced to update builtin line interactive.
yuuji@gentei.org
parents: 195
diff changeset
1306 (YaTeX-getset-builtin key))
142
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1307
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1308 ;;;VER2
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1309 (defun YaTeX-insert-struc (what env)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1310 (cond
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1311 ((eq what 'begin)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1312 (insert (YaTeX-replace-format-args
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1313 YaTeX-struct-begin env (YaTeX-addin env))))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1314 ((eq what 'end)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1315 (insert (YaTeX-replace-format-args YaTeX-struct-end env)))
69
807c1e7e68b7 yahtml-escape-chars-region
yuuji
parents: 68
diff changeset
1316 (t nil)))
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1317
80
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1318 (defun YaTeX-string-width (str)
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1319 "Return the display width of string."
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1320 (if (fboundp 'string-width)
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1321 (string-width str)
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1322 (length str)))
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1323 (defun YaTeX-truncate-string-width (str width)
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1324 (cond
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1325 ((fboundp 'truncate-string-to-width) (truncate-string-to-width str width))
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1326 ((fboundp 'truncate-string) (truncate-string str width))
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1327 (t (substring str 0 width))))
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1328
142
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1329 (defun YaTeX-hex (str)
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1330 "Return int expressed by hexadecimal string STR."
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1331 (if (string< "20" emacs-version)
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1332 (string-to-number str 16)
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1333 (let ((md (match-data)))
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1334 (unwind-protect
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1335 (if (string-match "[^0-9a-f]" str)
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1336 (error "Non hexadecimal character in %s" str)
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1337 (let ((i 0) d)
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1338 (setq str (downcase str))
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1339 (while (string< "" str)
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1340 (setq d (+ 0 (string-to-char str)) ; + 0 for XEmacs
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1341 i (+ (* 16 i) (- d (if (<= d ?9) ?0 (- ?a 10))))
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1342 str (substring str 1)))
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1343 i))
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1344 (store-match-data md)))))
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1345
b65b3dc543d1 The function YaTeX-hex added.
yuuji@gentei.org
parents: 138
diff changeset
1346
64
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1347 ;;; Function for menu support
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1348 (defun YaTeX-define-menu (keymap bindlist)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1349 "Define KEYMAP(symbol)'s menu-bindings according to BINDLIST.
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1350 KEYMAP should be a quoted symbol of newly allocated keymap.
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1351 BINDLIST consists of binding list. Each element is as follows.
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1352
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1353 '(menusymbol DOC_String . contents)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1354
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1355 CONTENTS is one of lambda-form, interactive function, or other keymap.
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1356 See yatex19.el for example."
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1357 (cond
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1358 ((featurep 'xemacs)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1359 (let (name)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1360 (if (keymapp (symbol-value keymap))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1361 (progn
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1362 (setq name (keymap-name (symbol-value keymap)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1363 (set keymap nil))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1364 (setq name (car (symbol-value keymap)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1365 (set keymap (cdr (symbol-value keymap))))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1366 (mapcar
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1367 (function
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1368 (lambda (bind)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1369 (setq bind (cdr bind))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1370 (if (eq (car-safe (cdr bind)) 'lambda)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1371 (setcar (cdr bind) 'progn))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1372 (if (stringp (car-safe (cdr bind)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1373 (set keymap
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1374 (cons (cdr bind) (symbol-value keymap)))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1375 (set keymap
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1376 (cons (vector (car bind) (cdr bind) t)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1377 (symbol-value keymap))))))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1378 bindlist)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1379 (set keymap (cons name (symbol-value keymap)))))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1380 (t
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1381 (mapcar
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1382 (function
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1383 (lambda (bind)
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1384 (define-key (symbol-value keymap) (vector (car bind)) (cdr bind))))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1385 bindlist))))
36a48185b95a Changes are listed in yatex.new.
yuuji
parents: 59
diff changeset
1386
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1387 ;;;
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1388 ;; Emacs 21 compensational wrapper
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1389 ;;;
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1390 (defun YaTeX-minibuffer-begin ()
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1391 (if (fboundp 'field-beginning)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1392 (field-beginning (point-max))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1393 (point-min)))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1394
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1395 (defun YaTeX-minibuffer-end ()
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1396 (if (fboundp 'field-end)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1397 (field-end (point-max))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1398 (point-max)))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1399
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1400 (defun YaTeX-minibuffer-string ()
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1401 (buffer-substring (YaTeX-minibuffer-begin) (YaTeX-minibuffer-end)))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1402
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1403 (defun YaTeX-minibuffer-erase ()
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1404 (if (eq (selected-window) (minibuffer-window))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1405 (if (fboundp 'delete-field) (delete-field) (erase-buffer))))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1406
80
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1407 (fset 'YaTeX-buffer-substring
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1408 (if (fboundp 'buffer-substring-no-properties)
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1409 'buffer-substring-no-properties
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1410 'buffer-substring))
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1411
392
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1412 (defun YaTeX-region-active-p ()
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1413 (and (fboundp 'region-active-p) (region-active-p)))
c44910b36b95 Switch to region-mode if completion called with active region.
HIROSE Yuuji <yuuji@gentei.org>
parents: 380
diff changeset
1414
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1415 ;;;
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1416 ;; hilit19 vs. font-lock
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1417 ;;;
80
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1418 (defvar YaTeX-19-functions-font-lock-direct
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1419 '(YaTeX-19-re-search-in-env))
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1420
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1421 (defun YaTeX-convert-pattern-hilit2fontlock (h19pa)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1422 "Convert hilit19's H19PA patterns alist to font-lock's one.
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1423 This function is a makeshift for YaTeX and yahtml."
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1424 (let ((ignorecase (not (null (car h19pa))))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1425 (palist (cdr h19pa))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1426 flpa i newface
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1427 (mapping
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1428 '((bold . YaTeX-font-lock-bold-face)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1429 (italic . YaTeX-font-lock-italic-face)
73
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1430 (defun . font-lock-function-name-face)
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1431 (define . font-lock-variable-name-face)
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1432 (keyword . font-lock-keyword-face)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1433 (decl . YaTeX-font-lock-declaration-face)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1434 (label . YaTeX-font-lock-label-face)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1435 (crossref . YaTeX-font-lock-crossref-face)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1436 (include . YaTeX-font-lock-include-face)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1437 (formula . YaTeX-font-lock-formula-face)
80
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1438 (delimiter . YaTeX-font-lock-delimiter-face)
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1439 (string . ignore) (comment . ignore)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1440 )))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1441 (while (setq i (car palist))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1442 (setq newface (nth 2 i)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1443 newface (or (cdr (assq newface mapping)) newface))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1444 (cond
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1445 ((eq newface 'ignore) nil) ;no translation
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1446 ((stringp (car i)) ;hiliting by regexp
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1447 (setq flpa
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1448 (cons
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1449 (if (numberp (car (cdr i)))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1450 (list (car i) ;regexp
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1451 (car (cdr i)) ;matching group number
73
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1452 newface nil) ;'keep) ;keep is hilit19 taste
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1453 (list
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1454 (concat
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1455 (car i) ;original regexp and..
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1456 ;;"[^"
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1457 ;;(regexp-quote (substring (car (cdr i)) 0 1))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1458 ;;"]+" ;for shortest match
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1459 ".*"
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1460 (car (cdr i)))
73
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1461 0 (list 'quote newface) nil)) ;;'keep))
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1462 flpa)))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1463 ((and (symbolp (car i)) (fboundp (car i)))
80
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1464 (if (memq (car i) YaTeX-19-functions-font-lock-direct)
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1465 ;; Put direct function call for it.
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1466 ;; When calling this function, fontify entire matched string.
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1467 (setq flpa
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1468 (cons
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1469 (list
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1470 (list 'lambda (list 'dummy) ;dummy should be boundary
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1471 (list (car i) (list 'quote (car (cdr i)))))
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1472 (list 0 newface))
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1473 flpa))
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1474 (setq flpa
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1475 (cons
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1476 (list (car (cdr i)) ;regexp
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1477 (list
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1478 (list
80
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1479 'lambda (list 'dummy)
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1480 '(goto-char (match-beginning 0))
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1481 (if (eq (nth 3 i) 'overwrite)
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1482 nil
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1483 '(remove-text-properties
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1484 (point) (min (point-max) (1+ (point)))
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1485 '(face nil font-lock-multiline nil)))
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1486 (list
80
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1487 'let (list '(e (match-end 0))
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1488 (list 'm (list (car i) (car (cdr i)))))
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1489 (list
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1490 'if 'm
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1491 (list
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1492 'YaTeX-font-lock-fillin
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1493 (list 'car 'm)
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1494 (list 'cdr 'm)
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1495 (list 'quote 'face)
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1496 (list 'quote 'font-lock)
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1497 (list 'quote newface))
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1498 '(goto-char e)
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1499 ))
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1500 nil) ;retun nil to cheat font-lock
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1501 nil nil)) ;pre-match, post-match both nil
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1502 flpa)))))
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1503 (setq palist (cdr palist)));while
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1504 (if (featurep 'xemacsp)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1505 (nreverse flpa)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1506 flpa)))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1507
73
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1508 (if (and (boundp 'YaTeX-use-font-lock)
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1509 YaTeX-use-font-lock)
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1510 (require 'font-lock))
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1511
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1512 (cond
73
f41b01fef5d6 Stable version(hope to be)
yuuji
parents: 72
diff changeset
1513 ((and (featurep 'font-lock) (fboundp 'defface))
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1514 ;; In each defface, '(class static-color) is for Emacs-21 -nw
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1515 ;; '(class tty) is for XEmacs-21 -nw
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1516 (defface YaTeX-font-lock-label-face
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1517 '((((class static-color)) (:foreground "yellow" :underline t))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1518 (((type tty)) (:foreground "yellow" :underline t))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1519 (((class color) (background dark)) (:foreground "pink" :underline t))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1520 (((class color) (background light)) (:foreground "red" :underline t))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1521 (t (:bold t :underline t)))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1522 "Font Lock mode face used to highlight labels."
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1523 :group 'font-lock-faces)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1524 (defvar YaTeX-font-lock-label-face 'YaTeX-font-lock-label-face)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1525
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1526 (defface YaTeX-font-lock-declaration-face
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1527 '((((class color) (background dark)) (:foreground "cyan"))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1528 (((class color) (background light)) (:foreground "RoyalBlue"))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1529 (t (:bold t :underline t)))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1530 "Font Lock mode face used to highlight some declarations."
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1531 :group 'font-lock-faces)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1532 (defvar YaTeX-font-lock-declaration-face 'YaTeX-font-lock-declaration-face)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1533
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1534 (defface YaTeX-font-lock-include-face
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1535 '((((class color) (background dark)) (:foreground "Plum1"))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1536 (((class color) (background light)) (:foreground "purple"))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1537 (t (:bold t :underline t)))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1538 "Font Lock mode face used to highlight expression for including."
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1539 :group 'font-lock-faces)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1540 (defvar YaTeX-font-lock-include-face 'YaTeX-font-lock-include-face)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1541
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1542 (defface YaTeX-font-lock-formula-face
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1543 '((((class static-color)) (:bold t))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1544 (((type tty)) (:bold t))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1545 (((class color) (background dark)) (:foreground "khaki" :bold t))
376
1bbd0c2b340f When on-the-fly preview activated, overlay indicate its busy state.
HIROSE Yuuji <yuuji@gentei.org>
parents: 372
diff changeset
1546 (((class color) (background light)) (:foreground "DarkGoldenrod4"))
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1547 (t (:bold t :underline t)))
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1548 "Font Lock mode face used to highlight formula."
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1549 :group 'font-lock-faces)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1550 (defvar YaTeX-font-lock-formula-face 'YaTeX-font-lock-formula-face)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
1551
80
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1552 (defface YaTeX-font-lock-delimiter-face
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1553 '((((class static-color)) (:bold t))
9b4354af748c Too many changes from 1.72.
yuuji
parents: 79
diff changeset
1554 (((type tty))