annotate yatexgen.el @ 436:e78a87bc2c9e dev

current file treated as absolute path(YaTeX-preview-jump-line)
author HIROSE Yuuji <yuuji@gentei.org>
date Fri, 08 Jan 2016 08:18:54 +0859
parents 8ee8514e06ed
children 2011de73a671
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
1 ;;; yatexgen.el --- YaTeX add-in function generator(rev.5)
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
2
79
0734be649cb8 Do not care file-coding-system when YaTeX-kanji-code is nil.
yuuji
parents: 72
diff changeset
3 ;;; (c)1991-1995,1999,2000 by HIROSE Yuuji.[yuuji@yatex.org]
353
2a72779d9c50 Rewrite lambda notations to suppress annoying warnings from emacs24
HIROSE Yuuji <yuuji@gentei.org>
parents: 287
diff changeset
4 ;;; Last modified Sun Dec 21 14:04:49 2014 on firestorm
368
8ee8514e06ed Start for 1.79
HIROSE Yuuji <yuuji@gentei.org>
parents: 364
diff changeset
5 ;;; $Id$
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
6
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
7 ;;; Code:
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
8 (require 'yatex)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
10 (defmacro YaTeX-setq (var japanese english)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
11 (list 'setq var
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
12 (if YaTeX-japan japanese english)))
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
13
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
14 (put 'YaTeX-setq 'lisp-indent-hook 1)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
15
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
16 (YaTeX-setq YaTeX-generate-initial-message
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
17 " 自動生成モードへようこそ!!
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
18
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
19 初めてやる人はこのバッファの例にしたがって指示通りにやって練習してね。
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
20 本番の時もこのバッファに出るメッセージを *よく読んで* 操作しないとう
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
21 まく関数が作れないよ!!
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
22
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
23 ではリターンキーを押して下さい。"
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
24 " Welcome to auto-generation mode!!
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
25
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
26 If this is your first trial, exercise this according to example and
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
27 following my messages. Then, at making actual function, operate
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
28 reading my messages *carefully*, or you'll fail to generate appropriate
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
29 function.
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
30
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
31 Hit return key!")
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
32
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
33 (YaTeX-setq YaTeX-generate-start-message
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
34 "さぁはじめるよ.\n1.登録したい補完をやってみて.
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
35 たとえば section 型補完の \\documentstyle だったら \\documentstyle{}
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
36 だけをいれてみてね. ちゃんと『〜型補完』を使わないとダメよ!。
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
37 で、おわったらりたーん!!"
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
38 "Let's begin completion for which you want to make add-in function.
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
39 If you want to make add-in function for \\documentstyle input only
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
40 `\\documentstyle{}' *with* completion of yatex-mode.
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
41 If you finish this, please press RET.")
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
42
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
43 (YaTeX-setq YaTeX-generate-abort-message
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
44 "やめた、やめた〜いめんどくせ〜"
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
45 "Aborted.")
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
46
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
47 (YaTeX-setq YaTeX-generate-same-message
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
48 "それじゃ、なにも変わってねぇだろーが! やめた。"
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
49 "I found no difference between them. So I'm quitting.")
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
50
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
51 (YaTeX-setq YaTeX-generate-invalid-message
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
52 "それは、ちと無理というものじゃ."
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
53 "It's impossible.")
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
54
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
55 (YaTeX-setq YaTeX-generate-idontknow-message
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
56 "う〜ん、難しくてよくわからないなぁ。ばかでごめんねェ〜"
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
57 "Sorry I can't tell your adding method.")
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
58
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
59 (YaTeX-setq YaTeX-generate-confirm-message
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
60 "ということは、付け足したい部分はこれでいいのね"
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
61 "Is it additional string of add-in function?")
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
62
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
63 (YaTeX-setq YaTeX-generate-output-message
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
64 "2.じゃ、それにくっつけたいものを *カーソルの位置に* 足してみて.
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
65 さっきの \\documentstyle{} の例だと \\documentstyle[12pt]{} とかにするの。
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
66 しつこいようだけど、今の位置からカーソル動かしちゃダメよ!!
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
67 で、またおわったらりたーん!!"
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
68 "2.Then input additional string *at CURSOR POSITION*
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
69 According to last example \\documentstyle{},
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
70 modify it \\documentstyle[12pt]{}. RET to finish.")
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
71
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
72 (YaTeX-setq YaTeX-generate-put-arg-message
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
73 "3.このうち、キーボードから読み込んで欲しい文字列を順に入れて。
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
74 さっきの \\documentstyle[12pt]{} だったら、付加する文字は[12pt]だけど
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
75 手で入れたいのは 12pt の部分だけですね。
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
76 で、全部入れ終ったら、りたーんだけうってね!!"
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
77 "3.In this string, extract string which you want to input from key
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
78 board with quiry afterwards. For example, though additional string is
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
79 \\documentstyle[12pt]{}, but you want enter only `12pt' by hand.
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
80 RET to finish!")
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
81
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
82 (YaTeX-setq YaTeX-generate-read-prompt-message
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
83 "4.では、あとでこれらの文字列を読み込む時に、どういうプロンプトを
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
84 出したいですか? 順に入れて下さい。面倒なら単にリターンを打ってね。
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
85 さっきの 12pt の部分だったら、『サイズは』とかがおすすめ。"
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
86 "4.When you use this add-in function afterwards, what message
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
87 do you like to be prompted with to enter these values. In last
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
88 example `12pt', typical prompt string may be `Size?: '.")
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
89
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
90 (YaTeX-setq YaTeX-generate-done-message
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
91 "よし! これが、君の作りたかった関数だ。~/.emacs にでも入れてせいぜい
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
92 楽してくれ。このバッファ(*ご案内*)を yatex-mode にしておくから
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
93 できた関数が本当にお望みの動作をするか確かめてみるといいかもね。
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
94 ところで、この関数こんなに簡単だろう? そろそろ自分で書いたらどう?
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
95 "
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
96 "OK! This is the definition of function you want to make! Add
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
97 this description to your ~/.emacs or so. Use this buffer(*Guide*)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
98 for testing of this function please.
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
99 But you can see this function quite easy, can't you? You had better
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
100 write your most favorite add-in function yourself!
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
101 ")
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
102
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
103 (YaTeX-setq YaTeX-generate-nomatch-message
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
104 "こらこら、そんな文字列どこにもねーぞ!!"
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
105 "No such string in additional string.")
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
106
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
107 (YaTeX-setq YaTeX-generate-buffer
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
108 "*付加関数生成バッファ*"
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
109 "*Generate-add-in-function*")
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
110
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
111 (YaTeX-setq YaTeX-generate-message-buffer
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
112 "*ご案内*"
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
113 "*Guide*")
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
114
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
115 (YaTeX-setq YaTeX-generate-bug-message
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
116 "ごめ〜ん!! ちょっと、このアドイン関数つくるの失敗しちゃったみたい!!
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
117 作者まで連絡してくださ〜〜〜い!"
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
118 "Sorry I failed to make add-in function for you...
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
119 Send bug report to me.")
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
120
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
121 (YaTeX-setq YaTeX-generate-narrow-message
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
122 "画面がせますぎるような気がします。"
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
123 "Too narrow screen height.")
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
124
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
125 (defvar YaTeX-generate-message-height
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
126 10 "Window height of YaTeX-generate-message-buffer")
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
127
52
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
128 ;; Do you need learning for generated function?
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 59
diff changeset
129 ;; If you need, please tell me (yuuji@yatex.org)
52
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
130 ;;(defvar YaTeX-generate-variables-for-learning nil)
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
131 ;;(defvar YaTeX-generate-current-completion-table nil)
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
132
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
133 ;;;
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
134 ;Generate mode.
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
135 ;;;
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
136 (defun YaTeX-generate ()
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
137 "Genarate YaTeX add-in function with enquiry."
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
138 (interactive)
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 59
diff changeset
139 (if (< (YaTeX-screen-height) (+ YaTeX-generate-message-height 10))
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
140 (error YaTeX-generate-narrow-message))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
141 (put 'YaTeX-generate 'disabled t)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
142 (save-window-excursion
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
143 (unwind-protect
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
144 (let (input output (i 0) (beg 0) end add-in map map1 si str slist
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
145 (from (make-marker)) (to (make-marker)))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
146 (delete-other-windows)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
147 (switch-to-buffer YaTeX-generate-message-buffer)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
148 (yatex-mode)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
149 (erase-buffer)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
150 (insert YaTeX-generate-initial-message)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
151 (read-string
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
152 (if YaTeX-japan "リターンキーを押して下さい." "Press RETURN."))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
153 (erase-buffer)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
154 (insert YaTeX-generate-start-message)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
155 (pop-to-buffer (get-buffer-create YaTeX-generate-buffer))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
156 (enlarge-window (- (window-height) YaTeX-generate-message-height 1))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
157 (erase-buffer)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
158 (yatex-mode)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
159 (use-local-map (setq map (copy-keymap YaTeX-mode-map)))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
160 (define-key (current-local-map) "\n" 'exit-recursive-edit)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
161 (define-key (current-local-map) "\r" 'exit-recursive-edit)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
162 (define-key (current-local-map) "\C-g" 'abort-recursive-edit)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
163 (setq map1 (copy-keymap map))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
164 (YaTeX-suppress-sparse-keymap map)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
165 ;;First get input form.
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
166 (recursive-edit)
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
167 (setq input (YaTeX-minibuffer-string)
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
168 end (1- (length input)))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
169 (if (string= "" input) (error YaTeX-generate-abort-message))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
170 (YaTeX-generate-move-to-add-in-position)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
171 (set-marker from (1- (point))) ;;Can't write before `from'
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
172 (set-marker to (1+ (point))) ;;Can't write after `to'
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
173 ;;Second get output form.
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
174 (setq beg (1- (point)));;Cheat begin point!
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
175 (YaTeX-generate-display-message YaTeX-generate-output-message)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
176 (use-local-map map1)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
177 (fset 'si (symbol-function 'self-insert-command))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
178 (defun self-insert-command (arg)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
179 (interactive "p")
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
180 (if (or (not (equal (buffer-name) YaTeX-generate-buffer))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
181 (and (> (point) (marker-position from))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
182 (< (point) (marker-position to))))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
183 (insert (this-command-keys)) (ding)))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
184 (unwind-protect
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
185 (recursive-edit)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
186 (fset 'self-insert-command (symbol-function 'si)))
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
187 (setq output (YaTeX-minibuffer-string))
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
188 (cond ((string= "" output) (error YaTeX-generate-abort-message))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
189 ((string= input output) (error YaTeX-generate-same-message))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
190 ((< (length output) (length input))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
191 (error YaTeX-generate-invalid-message)))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
192 ;;(while (and (< beg end) (= (aref input beg) (aref output i)))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
193 ;; (setq beg (1+ beg) i (1+ i))) ;;for universal use.
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
194 (setq i (1- (length output)))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
195 (while (and (>= end beg) (= (aref output i) (aref input end)))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
196 (setq end (1- end) i (1- i)))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
197 (setq add-in (substring output beg
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
198 (if (= i (1- (length output))) nil (1+ i))))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
199 (erase-buffer)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
200 (insert add-in)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
201 (if (not (y-or-n-p YaTeX-generate-confirm-message))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
202 (error YaTeX-generate-idontknow-message))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
203 ;;Extract arguments.
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
204 (YaTeX-generate-display-message YaTeX-generate-put-arg-message)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
205 (setq i 1)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
206 (while (not (string=
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
207 "" (setq str (read-string (format "Arg %d: " i)))))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
208 (if (not (string-match (regexp-quote str) add-in))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
209 (progn
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
210 (ding)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
211 (YaTeX-generate-display-message
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
212 YaTeX-generate-nomatch-message -1))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
213 (setq slist (append slist (list (list str))) i (1+ i)))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
214 );input all of arguments.
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
215 ;;Compare with output string.
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
216 (set-buffer YaTeX-generate-buffer) ;;for safety
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
217 (emacs-lisp-mode)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
218 (if (> i 1)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
219 (YaTeX-generate-parse-add-in slist add-in)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
220 (erase-buffer)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
221 (insert "(defun " (YaTeX-generate-function-name) " ()\n")
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
222 (insert "\"" (YaTeX-generate-lisp-quote add-in) "\")\n")
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
223 (indent-region (point-min) (point-max) nil)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
224 (message (if YaTeX-japan
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
225 "このくらいの関数手で書け!!"
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
226 "You don't need me to make such easy function.")))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
227 );let
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
228 (put 'YaTeX-generate 'disabled nil)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
229 (put 'YaTeX-addin 'disabled nil)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
230 ))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
231 (YaTeX-generate-display-message YaTeX-generate-done-message)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
232 (switch-to-buffer YaTeX-generate-buffer)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
233 (condition-case error
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
234 (eval-current-buffer)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
235 (error (insert YaTeX-generate-bug-message)))
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
236 (pop-to-buffer YaTeX-generate-message-buffer))
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
237
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
238 (defun YaTeX-generate-parse-add-in (args add-in)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
239 "Parse add-in string and extract argument for it.
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
240 Variable add-in is referred in parent function."
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
241 (let ((i 1) j (case-fold-search nil) ;i holds argument number
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
242 (prompt (make-vector (length args) ""))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
243 (used (make-vector (length add-in) nil))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
244 func-name (string ""))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
245 ;;Phase 1. extract argument from add-in string.
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
246 (mapcar
353
2a72779d9c50 Rewrite lambda notations to suppress annoying warnings from emacs24
HIROSE Yuuji <yuuji@gentei.org>
parents: 287
diff changeset
247 (function
2a72779d9c50 Rewrite lambda notations to suppress annoying warnings from emacs24
HIROSE Yuuji <yuuji@gentei.org>
parents: 287
diff changeset
248 (lambda (arg)
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
249 (let ((index 0) (match 0) beg end (carg (car arg)))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
250 (YaTeX-generate-display-message
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
251 YaTeX-generate-read-prompt-message)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
252 (aset prompt (1- i)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
253 (read-string
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
254 (format
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
255 (if YaTeX-japan "%d番目(%s)を読む時?: "
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
256 "When reading argument #%d(%s)?: ") i (car arg))))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
257 (while (string-match (regexp-quote carg) (substring add-in index))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
258 (setq beg (+ index (match-beginning 0))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
259 end (+ index (match-end 0)))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
260 (if (aref used beg) nil
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
261 (setq match (1+ match))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
262 (cond
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
263 ((= match 1)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
264 ;;(setq arg (append arg (list (list beg end))))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
265 (YaTeX-generate-register-match))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
266 ((YaTeX-generate-ask-match-position)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
267 (YaTeX-generate-register-match))))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
268 (setq index end))
353
2a72779d9c50 Rewrite lambda notations to suppress annoying warnings from emacs24
HIROSE Yuuji <yuuji@gentei.org>
parents: 287
diff changeset
269 (setq i (1+ i)))))
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
270 args)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
271 ;;Phase 2. Generate function!!
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
272 (setq i 0)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
273 (setq func-name (YaTeX-generate-function-name))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
274 (while (< i (length add-in))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
275 (setq beg i j (aref used i))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
276 (while (and (< i (length add-in)) (equal j (aref used i)))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
277 (setq i (1+ i)))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
278 (if j ;If it is argument.
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
279 (setq string (concat string (format " arg%d" j)))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
280 (setq string
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
281 (concat string " \""
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
282 (YaTeX-generate-quote-quote (substring add-in beg i))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
283 "\""))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
284 ))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
285 (erase-buffer)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
286 (setq i 1)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
287 (insert
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
288 "(defun " func-name " ()\n"
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
289 " (let (")
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
290 (mapcar
353
2a72779d9c50 Rewrite lambda notations to suppress annoying warnings from emacs24
HIROSE Yuuji <yuuji@gentei.org>
parents: 287
diff changeset
291 (function
2a72779d9c50 Rewrite lambda notations to suppress annoying warnings from emacs24
HIROSE Yuuji <yuuji@gentei.org>
parents: 287
diff changeset
292 (lambda (arg)
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
293 (insert (format "(arg%d (read-string \"%s: \"))\n"
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
294 i (aref prompt (1- i))))
353
2a72779d9c50 Rewrite lambda notations to suppress annoying warnings from emacs24
HIROSE Yuuji <yuuji@gentei.org>
parents: 287
diff changeset
295 (setq i (1+ i))))
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
296 args)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
297 (delete-region (point) (progn (forward-line -1) (end-of-line) (point)))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
298 (insert ")\n(concat " (YaTeX-generate-lisp-quote string)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
299 ")))\n")
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
300 (indent-region (point-min) (point) nil)
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
301 used))
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
302
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
303 (defun YaTeX-generate-ask-match-position ()
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
304 "Ask user whether match-position is in his expectation,
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
305 Referencing variables in parent function YaTeX-generate-parse-add-in."
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
306 (pop-to-buffer YaTeX-generate-message-buffer)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
307 (goto-char (point-max))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
308 (insert "\n\n"
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
309 (format (if YaTeX-japan "%d 番目の引数 %s って"
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
310 "Is argument #%d's value `%s' also corresponding to")
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
311 i carg) "\n" add-in "\n")
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
312 (indent-to-column beg)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
313 (let ((c beg))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
314 (while (< c end) (insert "^") (setq c (1+ c))))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
315 (insert "\n" (if YaTeX-japan "ここにも対応してるの?"
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
316 "this underlined part too?"))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
317 (other-window -1)
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
318 (y-or-n-p (if YaTeX-japan "下線部はあってますか" "Is underline right")))
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
319
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
320 (defun YaTeX-generate-register-match ()
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
321 (nconc arg (list (list beg end)))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
322 (let ((x beg))
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
323 (while (< x end) (aset used x i)(setq x (1+ x)))))
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
324
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
325 (defun YaTeX-generate-display-message (mes &optional bottom)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
326 "Display message to generation buffer."
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
327 (pop-to-buffer YaTeX-generate-message-buffer)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
328 (goto-char (point-max))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
329 (insert "\n\n")
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
330 (if bottom (recenter (1- bottom)) (recenter 0))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
331 (insert mes)
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
332 (other-window -1))
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
333
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
334 (defun YaTeX-generate-move-to-add-in-position ()
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
335 "Move cursor where add-in function should insert string."
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
336 (cond
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
337 ((eq YaTeX-current-completion-type 'begin)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
338 (goto-char (point-min))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
339 (skip-chars-forward "^{")
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
340 (setq YaTeX-env-name
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
341 (buffer-substring (1+ (point))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
342 (progn (skip-chars-forward "^}") (point))))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
343 (forward-char 1))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
344 ((eq YaTeX-current-completion-type 'section)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
345 (goto-char (point-min))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
346 (skip-chars-forward "^{"))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
347 ((eq YaTeX-current-completion-type 'maketitle)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
348 (goto-char (point-max))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
349 (if (= (preceding-char) ? )
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
350 (forward-char -1)))))
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
351
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
352 (defun YaTeX-generate-function-name ()
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
353 (concat
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
354 "YaTeX:"
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
355 (cond
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
356 ((eq YaTeX-current-completion-type 'begin) YaTeX-env-name)
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
357 ((eq YaTeX-current-completion-type 'section) YaTeX-section-name)
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
358 ((eq YaTeX-current-completion-type 'maketitle) YaTeX-single-command))))
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
359
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
360 (defun YaTeX-generate-lisp-quote (str)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
361 (let ((len (length str))(i 0) (quote ""))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
362 (while (< i len)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
363 (if (= (aref str i) ?\\)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
364 (setq quote (concat quote "\\")))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
365 (if (= (aref str i) 127)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
366 (setq quote (concat quote "\""))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
367 (setq quote (concat quote (substring str i (1+ i)))))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
368 (setq i (1+ i)))
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
369 quote))
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
370
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
371 (defun YaTeX-generate-quote-quote (str)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
372 (let ((len (length str))(i 0) (quote ""))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
373 (while (< i len)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
374 (if (= (aref str i) ?\")
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
375 (setq quote (concat quote (char-to-string 127))))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
376 (setq quote (concat quote (substring str i (1+ i))))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
377 (setq i (1+ i)))
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
378 quote))
9
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
379
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
380 (defun YaTeX-suppress-sparse-keymap (map)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
381 (let ((i ? ))
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
382 (while (< i 127)
7becca042f80 Initial revision.
yuuji
parents:
diff changeset
383 (define-key map (char-to-string i) 'undefined)
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
384 (setq i (1+ i)))))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
385
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
386 ;;;
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
387 ;; Auto-generate Function for Lispers.
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
388 ;;;
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
389 (defun YaTeX-generate-read-completion-type (nth)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
390 (message
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
391 "Read type(%d): (S)tring (C)omplete (F)ile ([)option (P)osition co(O)rd. (q)uit" nth)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
392 (let ((c (read-char)))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
393 (cond
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
394 ((= c ?s) 'string)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
395 ((= c ?c) 'completion)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
396 ((= c ?f) 'file)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
397 ((= c ?\[) 'option)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
398 ((= c ?p) 'oneof)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
399 ((= c ?o) 'coord)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
400 ;;((= c ?m) 'macro)
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
401 (t 'quit))))
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
402
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
403 (defun YaTeX-generate-read-completion-table ()
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
404 (let ((i 1) cand (cands "(") (cb (current-buffer))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
405 (buf (get-buffer-create " *Candidates*")))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
406 (save-window-excursion
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
407 (save-excursion
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
408 (YaTeX-showup-buffer buf nil)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
409 (set-buffer buf)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
410 (erase-buffer)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
411 (while (string<
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
412 ""
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
413 (setq cand (read-string (format "Item[%d](RET to exit): " i))))
46
cd1b63102eed Support Mule2
yuuji
parents: 23
diff changeset
414 (setq cands (concat cands (format "(\"%s\")\n" cand))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
415 i (1+ i))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
416 (insert cand "\n"))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
417 (kill-buffer buf)))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
418 ;;(set-buffer cb)
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
419 (setq YaTeX-generate-current-completion-table (concat cands ")"))))
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
420
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
421 (defun YaTeX-generate-corresponding-paren (left)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
422 (cond
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
423 ((equal left "{") "}")
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
424 ((equal left "[") "]")
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
425 ((equal left "(") ")")
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
426 ((equal left "<") ">")
59
48ac97a6b6ce Call drawing tools
yuuji
parents: 52
diff changeset
427 ((equal left "\\begin{") "}")
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
428 (t left)))
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
429
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
430 (defun YaTeX-generate-create-read-string (&optional nth)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
431 (concat
46
cd1b63102eed Support Mule2
yuuji
parents: 23
diff changeset
432 "(read-string \""
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
433 (read-string (if nth (format "Prompt for argument#%d: " nth) "Prompt: "))
46
cd1b63102eed Support Mule2
yuuji
parents: 23
diff changeset
434 ": \"\n"
cd1b63102eed Support Mule2
yuuji
parents: 23
diff changeset
435 "\"" (read-string "Default: ") "\""
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
436 ")\n"))
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
437
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
438 (defun YaTeX-generate-create-completing-read (&optional nth)
52
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
439 (prog1
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
440 (concat
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
441 "(completing-read \""
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
442 (read-string
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
443 (if nth (format "Prompt for argument#%d: " nth) "Prompt: "))
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
444 ": \"\n"
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
445 (format "'%s\n" (YaTeX-generate-read-completion-table))
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
446 "nil "
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
447 (format "%s)" (y-or-n-p "Require match? ")))
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
448 (if nil ;;;(y-or-n-p "Do you need learning for this completion?")
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
449 (setq YaTeX-generate-variables-for-learning
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
450 (cons
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
451 (cons (format "YaTeX-%s-%d" command (or nth 0))
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
452 YaTeX-generate-current-completion-table)
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
453 YaTeX-generate-variables-for-learning)))))
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
454
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
455 (defun YaTeX-generate-create-read-file-name (&optional nth)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
456 (concat
46
cd1b63102eed Support Mule2
yuuji
parents: 23
diff changeset
457 "(read-file-name \""
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
458 (read-string (if nth (format "Prompt for argument#%d: " nth) "Prompt: "))
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
459 ": \" "" \"\" t \"\")\n"))
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
460
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
461 (defun YaTeX-generate-create-read-oneof (&optional nth readpos)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
462 (concat
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
463 (if readpos
46
cd1b63102eed Support Mule2
yuuji
parents: 23
diff changeset
464 "(YaTeX:read-position \""
cd1b63102eed Support Mule2
yuuji
parents: 23
diff changeset
465 "(YaTeX:read-oneof \"")
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
466 (read-string "Acceptable characters: " "lcr") "\")\n"))
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
467
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
468 (defun YaTeX-generate-option-type (command)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
469 (let ((func (format "YaTeX:%s" command)) leftp
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
470 (buf (get-buffer-create YaTeX-generate-buffer)) type (n 1))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
471 (set-buffer buf)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
472 (erase-buffer)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
473 (insert "(defun " func " ()\n (concat\n")
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
474 (catch 'done
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
475 (while t
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
476 (setq type (YaTeX-generate-read-completion-type n))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
477 (insert
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
478 (cond
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
479 ;;Read string
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
480 ((eq type 'string)
52
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
481 (concat "\"" (setq leftp (read-string "Left parenthesis: " "("))
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
482 "\"\n"
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
483 (YaTeX-generate-create-read-string)
52
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
484 "\"" (YaTeX-generate-corresponding-paren leftp) "\"")
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
485 )
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
486 ;;Completing-read
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
487 ((eq type 'completion)
52
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
488 (concat "\"" (setq leftp (read-string "Left parenthesis: " "{"))
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
489 "\"\n"
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
490 (YaTeX-generate-create-completing-read)
52
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
491 "\"" (YaTeX-generate-corresponding-paren leftp) "\"")
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
492 )
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
493 ((eq type 'file)
52
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
494 (concat "\"" (setq leftp (read-string "Left parenthesis: " "("))
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
495 "\"\n"
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
496 (YaTeX-generate-create-read-file-name)
52
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
497 "\"" (YaTeX-generate-corresponding-paren leftp) "\"")
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
498 )
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
499 ((eq type 'oneof)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
500 (YaTeX-generate-create-read-oneof nil t)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
501 )
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
502 ((eq type 'option)
46
cd1b63102eed Support Mule2
yuuji
parents: 23
diff changeset
503 (concat "(let ((op (read-string \""
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
504 (read-string "Prompt: ")
46
cd1b63102eed Support Mule2
yuuji
parents: 23
diff changeset
505 ": \")))\n"
cd1b63102eed Support Mule2
yuuji
parents: 23
diff changeset
506 "(if (string< \"\" op)\n"
cd1b63102eed Support Mule2
yuuji
parents: 23
diff changeset
507 " (concat \"[\" op \"]\")\n"
cd1b63102eed Support Mule2
yuuji
parents: 23
diff changeset
508 " \"\"))\n")
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
509 )
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
510 ((eq type 'coord)
46
cd1b63102eed Support Mule2
yuuji
parents: 23
diff changeset
511 (concat "(YaTeX:read-coordinates \""
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
512 (read-string "Prompt for coordinates: ")
46
cd1b63102eed Support Mule2
yuuji
parents: 23
diff changeset
513 ": \")\n")
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
514 )
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
515 ((eq type 'macro)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
516 (error "not yet supported")
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
517 )
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
518 (t (throw 'done t))))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
519 (setq n (1+ n))))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
520 (insert "))\n") ;close defun
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
521 (goto-char (point-min))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
522 (while (not (eobp)) (lisp-indent-line) (forward-line 1))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
523 (eval-current-buffer)
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
524 buf))
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
525
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
526 (defun YaTeX-generate-argument-type (command argc)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
527 "Create an argument-type add-in function."
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
528 (interactive)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
529 (let ((func (format "YaTeX::%s" command)) (argp 1)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
530 (cb (current-buffer))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
531 (buf (get-buffer-create YaTeX-generate-buffer)))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
532 (set-buffer buf)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
533 (erase-buffer)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
534 (insert "(defun " func " (&optional argp)\n(cond\n")
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
535 (while (<= argp argc)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
536 (insert (format "((equal argp %d)\n" argp))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
537 (setq type (YaTeX-generate-read-completion-type argp))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
538 (insert
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
539 (cond
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
540 ((eq type 'string)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
541 (concat (YaTeX-generate-create-read-string argp)))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
542 ((eq type 'completion)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
543 (concat (YaTeX-generate-create-completing-read argp)))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
544 ((eq type 'oneof)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
545 (YaTeX-generate-create-read-oneof))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
546 ((eq type 'file)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
547 (concat (YaTeX-generate-create-read-file-name argp)))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
548 (t ""))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
549 ")\n")
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
550 (setq argp (1+ argp)))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
551 (insert "))\n")
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
552 (goto-char (point-min))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
553 (while (not (eobp)) (lisp-indent-line) (forward-line 1))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
554 (eval-current-buffer)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
555 (set-buffer cb)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
556 (YaTeX-update-table
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
557 (if (> argc 1) (list command argc) (list command))
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
558 'section-table 'user-section-table 'tmp-section-table)
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
559 buf))
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
560
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
561 (defun YaTeX-generate-simple (&optional command)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
562 "Simple but requiring some elisp knowledge add-in generator."
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
563 (interactive)
52
5d94deabb9f9 Set YaTeX-indent-line to 'indent-line-function.
yuuji
parents: 51
diff changeset
564 (setq YaTeX-generate-variables-for-learning nil)
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
565 (or command
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
566 (setq command
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
567 (completing-read
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
568 (format
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
569 "Making add-in function for (default %s): " YaTeX-section-name)
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
570 (append
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
571 section-table user-section-table tmp-section-table
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
572 env-table user-env-table tmp-env-table
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
573 singlecmd-table user-singlecmd-table tmp-singlecmd-table)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
574 nil nil)
72
0aaebd07dad0 Support font-lock on XEmacs-21, Emacs-20, Emacs-21.
yuuji
parents: 70
diff changeset
575 command (if (string= "" command) YaTeX-section-name command)))
49
eb0512bfcb7f Abolish user-article table.
yuuji
parents: 46
diff changeset
576 (message
eb0512bfcb7f Abolish user-article table.
yuuji
parents: 46
diff changeset
577 (cond
eb0512bfcb7f Abolish user-article table.
yuuji
parents: 46
diff changeset
578 (YaTeX-japan "(o)追加型? (a)引数型? (yatexadd.docを参照のこと) :")
eb0512bfcb7f Abolish user-article table.
yuuji
parents: 46
diff changeset
579 (t "(O)ption? (A)rgument?")))
23
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
580 (YaTeX-showup-buffer
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
581 (if (= (read-char) ?o)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
582 (YaTeX-generate-option-type command)
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
583 (YaTeX-generate-argument-type
b00c74813e56 Change the YaTeX-math-mode's prefix from `,' to `;'.
yuuji
parents: 14
diff changeset
584 command
287
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
585 (string-to-int (read-string "How many arguments?: ")))) nil))
5921f28ef77c Change the first lines.
HIROSE Yuuji <yuuji@gentei.org>
parents: 79
diff changeset
586
70
44e3a5e1e883 Fix makefile for Windows
yuuji
parents: 59
diff changeset
587 (provide 'yatexgen)

yatex.org