Mercurial > hgrepos > hgweb.cgi > yatex
annotate yatexflt.el @ 591:e3b7e199a87d draft
Add-in for {column,row,cell}color
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Fri, 23 Sep 2022 18:42:59 +0900 |
parents | 826b0766f6ba |
children |
rev | line source |
---|---|
518 | 1 ;;; yatexflt.el --- YaTeX filter command utilizer -*- coding: sjis -*- |
2 ;;; | |
3 ;;; (c)1993-2018 by HIROSE Yuuji.[yuuji@yatex.org] | |
547
826b0766f6ba
Generalize block detection method slightly
HIROSE Yuuji <yuuji@gentei.org>
parents:
545
diff
changeset
|
4 ;;; Last modified Sat Jun 2 18:12:41 2018 on firestorm |
518 | 5 ;;; $Id$ |
6 | |
7 ;;; Commentary: | |
8 ;;; | |
9 ;;; This lisp enables passing inline text to some external filter | |
10 ;;; command to generate files such as graphic files. | |
11 ;;; | |
12 ;;; Typical situation is using blockdiag/dot(graphviz) command to | |
13 ;;; generate png/pdf file. | |
14 ;;; | |
15 ;;; Example: | |
16 ;;; | |
17 ;;; [[LaTeX Source]] | |
18 ;;; %#BEGIN FILTER{foo.pdf}{dot -T %t -o o} | |
19 ;;; \if0 | |
20 ;;; === | |
21 ;;; digraph { | |
22 ;;; A -> B; | |
23 ;;; B -> C; | |
24 ;;; } | |
25 ;;; === | |
26 ;;; \fi | |
27 ;;; %#END | |
28 ;;; \includegraphics{foo.pdf} | |
29 ;;; | |
30 ;;; In this case above, when you type `[prefix] t e' between two | |
31 ;;; `===' lines, the content in a region are fed to dot command as | |
32 ;;; follows: | |
33 ;;; | |
34 ;;; echo TEXT | dot -T pdf -o foo.pdf | |
35 ;;; | |
36 ;;; Then foo.pdf file will be generated and the image (as PNG) will | |
37 ;;; be displayed in the next window. | |
38 | |
521
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
39 |
518 | 40 ;;; Code: |
521
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
41 (require 'yatexlib) |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
42 (defvar YaTeX-filter-special-env-alist-default |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
43 '((".blockdiag" |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
44 "blockdiag -T %t -o %o -" |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
45 "blockdiag { |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
46 default_fontsize = 32; |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
47 A -> B; |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
48 }") |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
49 (".seqdiag" "seqdiag -T %t -o %o -" |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
50 "seqdiag { |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
51 client -> server [label = \"SYN\"]; |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
52 client <- server [label = \"SYN/ACK\"]; |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
53 client -> server [label = \"ACK\"];}") |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
54 (".actdiag" "actdiag -T %t -o %o -" |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
55 "actdiag { |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
56 sayHo -> ho -> hohoho |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
57 lane dj { |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
58 label = \"DJ\" |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
59 sayHo [label = \"Say Ho\"]; hohoho [label = \"Ho Ho Ho!\"]; } |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
60 lane mc { label = \"MC\"; ho [label = \"Hooooh!\"]}}") |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
61 (".nwdiag" "nwdiag -T %t -o %o -" |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
62 "nwdiag { |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
63 network ext { |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
64 address = \"10.1.2.0/24\" |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
65 router [address = \"10.1.2.1\"] |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
66 } |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
67 network int { |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
68 address = \"192.168.22.0/24\" |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
69 router [address = \"192.168.22.1\"] |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
70 websrv [address = \"192.168.22.80\"] |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
71 cli-1; cli-2 |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
72 } |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
73 }") |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
74 (".rackdiag" "rackdiag -T %t -o %o -" |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
75 "rackdiag { |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
76 16U; |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
77 1: UPS [4U]; 5: Storage [3U]; 8: PC [2U]; 8: PC [2U]; |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
78 }") |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
79 (".dot" |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
80 "dot -T %t -o %o" |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
81 "digraph { |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
82 graph [charset=\"utf-8\"] |
547
826b0766f6ba
Generalize block detection method slightly
HIROSE Yuuji <yuuji@gentei.org>
parents:
545
diff
changeset
|
83 A -> B |
826b0766f6ba
Generalize block detection method slightly
HIROSE Yuuji <yuuji@gentei.org>
parents:
545
diff
changeset
|
84 }" |
521
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
85 ))) |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
86 |
544
ab6c176c676a
Move all dot-filter definitions to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
524
diff
changeset
|
87 ;;;###autoload |
ab6c176c676a
Move all dot-filter definitions to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
524
diff
changeset
|
88 (defun YaTeX-filter-goto-source (file other-win) |
ab6c176c676a
Move all dot-filter definitions to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
524
diff
changeset
|
89 "Go to corresponding text source of the graphic file" |
ab6c176c676a
Move all dot-filter definitions to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
524
diff
changeset
|
90 (cond |
ab6c176c676a
Move all dot-filter definitions to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
524
diff
changeset
|
91 ((file-exists-p file) |
ab6c176c676a
Move all dot-filter definitions to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
524
diff
changeset
|
92 (let ((buf (find-file-noselect file))) |
ab6c176c676a
Move all dot-filter definitions to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
524
diff
changeset
|
93 (funcall (cond (other-win 'YaTeX-switch-to-buffer-other-window) |
ab6c176c676a
Move all dot-filter definitions to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
524
diff
changeset
|
94 ((get-buffer-window buf) 'goto-buffer-window) |
ab6c176c676a
Move all dot-filter definitions to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
524
diff
changeset
|
95 (t 'YaTeX-switch-to-buffer)) |
ab6c176c676a
Move all dot-filter definitions to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
524
diff
changeset
|
96 buf))))) |
ab6c176c676a
Move all dot-filter definitions to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
524
diff
changeset
|
97 |
521
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
98 (defvar YaTeX-filter-special-env-alist-private nil) |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
99 (defvar YaTeX-filter-special-env-alist |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
100 (append YaTeX-filter-special-env-alist-private |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
101 YaTeX-filter-special-env-alist-default)) |
cef987df070f
Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
518
diff
changeset
|
102 |
518 | 103 (defun YaTeX-filter-filter-set-conversion-flag () |
104 (let ((ovl (get 'YaTeX-filter-filter-sentinel 'overlay))) | |
105 (if ovl ;; When successful conversion met, | |
106 (progn ;; (1)Set conversion complete flag | |
107 (add-hook ;; (2)Add hook of seim-automatic | |
108 'write-file-hooks ;; update of convert to write- | |
109 'YaTeX-filter-update-all) ;; file hook. | |
110 (overlay-put ovl 'converted t))))) | |
111 | |
112 (defun YaTeX-filter-filter-unset-conversion-flag | |
113 (ovl after beg end &optional length) | |
114 (if after (overlay-put ovl 'converted nil))) | |
115 | |
116 | |
117 (defun YaTeX-filter-pngify-sentinel (proc msg) | |
118 (save-excursion | |
119 (let ((b (process-buffer proc)) (selw (selected-window)) | |
120 img) | |
121 (set-buffer b) | |
122 (cond | |
123 ((eq (process-status proc) 'run) | |
124 (put-text-property (point-min) (point-max) 'invisible t)) | |
125 ((eq (process-status proc) 'exit) | |
126 (set-buffer b) | |
127 (YaTeX-popup-image | |
128 (YaTeX-buffer-substring | |
129 (get 'YaTeX-filter-pngify-sentinel 'start) (point-max)) | |
130 b) | |
131 (YaTeX-filter-filter-set-conversion-flag)) | |
132 (t | |
133 (set-buffer b) | |
134 (remove-text-properties (point-min) (point-max) '(invisible t)) | |
135 (insert "\nProcess aborted %s\n" msg)))))) | |
136 | |
137 (defvar YaTeX-filter-pdf2png-stdout | |
138 (cond | |
139 ((YaTeX-executable-find "convert") "convert -trim %s PNG:-") | |
140 (t | |
141 "gs -dNOPAUSE -sDEVICE=png256 -sOutputFile=- -dBATCH -q -r75 %s")) | |
142 "Command line syntax to convert PDF file to PNG stream") | |
143 | |
144 (defun YaTeX-filter-modified-BEGEND-regions () | |
145 "Return the list of overlays which contains un-converted text." | |
146 (save-excursion | |
147 (save-restriction | |
148 (widen) | |
524
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
149 (let (r prop dest src pl (list (overlays-in (point-min) (point-max)))) |
518 | 150 (while list |
524
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
151 (setq prop (overlay-properties (car list))) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
152 (if (setq dest (plist-get prop 'filter-output)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
153 (if (if (setq src (plist-get prop 'filter-source)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
154 (file-newer-than-file-p src dest) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
155 (and (setq pl (plist-member prop 'converted)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
156 (not (plist-get pl 'converted)))) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
157 (setq r (cons (car list) r)))) |
518 | 158 (setq list (cdr list))) |
159 (nconc r) | |
160 r)))) | |
161 | |
162 (defun YaTeX-filter-update-all () | |
163 "Update all destination files from built-in source text." | |
164 (interactive) | |
165 (let ((timeout 4) | |
166 ans ovl (update-list (YaTeX-filter-modified-BEGEND-regions))) | |
167 (if update-list | |
168 (save-excursion | |
169 (save-window-excursion | |
170 (catch 'abort | |
171 (while update-list | |
172 (goto-char (overlay-start (setq ovl (car update-list)))) | |
173 (or (pos-visible-in-window-p) | |
174 (set-window-start nil (point))) | |
175 (unwind-protect | |
176 (progn | |
177 (overlay-put ovl 'face 'YaTeX-on-the-fly-activated-face) | |
178 (message "Non-update source found: Update here: %s " | |
524
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
179 "Y)es N)o S)top-watching-Here A)bort") |
518 | 180 (setq ans (read-char)) |
181 (cond | |
182 ((memq ans '(?Y ?y)) | |
183 (YaTeX-filter-BEGEND) | |
184 (while (and (> (setq timeout (1- timeout))) | |
185 (eq (process-status "Filter") 'run)) | |
186 (message "Waiting for conversion process to finish") | |
187 (sit-for 1))) | |
188 ((memq ans '(?A ?a)) (throw 'abort t)) | |
524
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
189 ((memq ans '(?S ?s)) (delete-overlay ovl)) |
518 | 190 (t nil))) |
191 (overlay-put ovl 'face nil)) | |
192 (setq update-list (cdr update-list))))))) | |
193 ;; Write file hook should return nil | |
194 nil)) | |
195 | |
196 (defun YaTeX-filter-filter-sentinel (proc msg) | |
197 (put 'YaTeX-filter-pngify-sentinel 'start nil) | |
198 (let ((b (process-buffer proc)) | |
199 (imagefile (get 'YaTeX-filter-filter-sentinel 'outfile)) | |
200 ovl | |
201 (selw (selected-window))) | |
202 (save-excursion | |
203 (cond | |
204 ((eq (process-status proc) 'run)) | |
205 ((eq (process-status proc) 'exit) | |
206 (set-buffer b) | |
207 (remove-images (point-min) (point-max)) | |
208 (if (and (file-regular-p imagefile) | |
209 (file-readable-p imagefile)) | |
210 (save-excursion | |
211 (setq buffer-read-only nil) | |
212 (cond | |
213 ((string-match "\\.\\(jpg\\|png\\)" imagefile) | |
214 (erase-buffer) | |
215 (YaTeX-popup-image imagefile b) | |
216 (YaTeX-filter-filter-set-conversion-flag)) | |
217 (t ;Convert again to PNG file | |
218 (goto-char (point-max)) | |
219 (insert "\nConvert Again to PNG file...\n") | |
220 (put 'YaTeX-filter-pngify-sentinel 'start (point)) | |
221 (set-process-sentinel | |
222 (start-process | |
223 "Filter" b ;Safe to reuse | |
224 shell-file-name YaTeX-shell-command-option | |
225 (format YaTeX-filter-pdf2png-stdout imagefile)) | |
226 'YaTeX-filter-pngify-sentinel) | |
227 (set-buffer-multibyte nil) | |
228 )) | |
229 (select-window selw))) | |
230 (YaTeX-preview-image-mode) | |
231 ) | |
232 (t ;Other status might be an error | |
233 (set-buffer b) | |
234 (goto-char (point-max)) | |
235 (insert (format "%s\n" (process-status proc)))))))) | |
236 | |
547
826b0766f6ba
Generalize block detection method slightly
HIROSE Yuuji <yuuji@gentei.org>
parents:
545
diff
changeset
|
237 (defvar YaTeX-filter-block-marker "===" |
826b0766f6ba
Generalize block detection method slightly
HIROSE Yuuji <yuuji@gentei.org>
parents:
545
diff
changeset
|
238 "Begining and Ending marker for contents for external filter program") |
826b0766f6ba
Generalize block detection method slightly
HIROSE Yuuji <yuuji@gentei.org>
parents:
545
diff
changeset
|
239 (defvar YaTeX-filter-src "#SRC" |
826b0766f6ba
Generalize block detection method slightly
HIROSE Yuuji <yuuji@gentei.org>
parents:
545
diff
changeset
|
240 "Keyword for input filename for external filter program") |
826b0766f6ba
Generalize block detection method slightly
HIROSE Yuuji <yuuji@gentei.org>
parents:
545
diff
changeset
|
241 |
524
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
242 (defun YaTeX-filter-parse-filter-region (begend-info) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
243 "Return the list of SpecialFilter region. If not on, return nil. |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
244 BEGEND-INFO is a value from the function YaTeX-in-BEGEND-p. |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
245 Return the alist of: |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
246 '((outfile $OutPutFileName) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
247 (source $InputFileName) ; or nil for embeded data source |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
248 (cmdline $CommandLine) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
249 (begin $TextRegionBeginning) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
250 (end TextRegionEnd))" |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
251 (if begend-info |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
252 (let ((b (car begend-info)) (e (nth 1 begend-info)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
253 delim (args (nth 2 begend-info)) |
547
826b0766f6ba
Generalize block detection method slightly
HIROSE Yuuji <yuuji@gentei.org>
parents:
545
diff
changeset
|
254 (p (point)) openb closeb outfile source cmdline point-beg point-end |
826b0766f6ba
Generalize block detection method slightly
HIROSE Yuuji <yuuji@gentei.org>
parents:
545
diff
changeset
|
255 (src-ptn (format "^\\s *%s%s" |
826b0766f6ba
Generalize block detection method slightly
HIROSE Yuuji <yuuji@gentei.org>
parents:
545
diff
changeset
|
256 (regexp-quote comment-start) |
826b0766f6ba
Generalize block detection method slightly
HIROSE Yuuji <yuuji@gentei.org>
parents:
545
diff
changeset
|
257 (regexp-quote YaTeX-filter-src)))) |
524
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
258 (save-excursion |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
259 (and |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
260 (string-match "FILTER" args) ;easy test |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
261 (goto-char (car begend-info)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
262 (re-search-forward |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
263 "FILTER\\s *{\\([^}]+\\)}" e t) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
264 (setq outfile (YaTeX-match-string 1)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
265 (goto-char (match-end 0)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
266 (prog2 ;Step into the second brace |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
267 (skip-chars-forward "\t ") |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
268 (looking-at "{") ;Check if 2nd brace surely exists |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
269 (skip-chars-forward "{") |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
270 (skip-chars-forward "\t")) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
271 (setq openb (point)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
272 (condition-case nil |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
273 (progn (up-list 1) t) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
274 (error nil)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
275 (setq closeb (1- (point)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
276 cmdline (YaTeX-buffer-substring openb closeb)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
277 (cond |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
278 ((re-search-forward "^\\\\if0\\>" p t) ;; Embedded source |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
279 (forward-line 1) |
547
826b0766f6ba
Generalize block detection method slightly
HIROSE Yuuji <yuuji@gentei.org>
parents:
545
diff
changeset
|
280 (setq point-beg (if (looking-at YaTeX-filter-block-marker) |
524
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
281 (progn (setq delim (YaTeX-match-string 0)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
282 (forward-line 1) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
283 (point)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
284 (point))) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
285 (re-search-forward "^\\\\fi\\>" e t) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
286 (goto-char (match-beginning 0)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
287 (setq point-end (if delim |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
288 (progn |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
289 (re-search-backward |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
290 (concat "^" (regexp-quote delim)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
291 (1+ point-beg) t) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
292 (match-beginning 0)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
293 (point)))) |
547
826b0766f6ba
Generalize block detection method slightly
HIROSE Yuuji <yuuji@gentei.org>
parents:
545
diff
changeset
|
294 ((re-search-forward |
826b0766f6ba
Generalize block detection method slightly
HIROSE Yuuji <yuuji@gentei.org>
parents:
545
diff
changeset
|
295 (format "%s{\\(.*\\)}" src-ptn) e t) ; external file |
524
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
296 (setq source (YaTeX-match-string 1) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
297 point-beg (match-beginning 0) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
298 point-end (match-end 0))) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
299 (t ;; If source notation not found, |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
300 (let ((ovl (overlays-in b e))) ;; clear all remaining overlays |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
301 (while ovl |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
302 (delete-overlay (car ovl)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
303 (setq ovl (cdr ovl)))))) ;; Return nil |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
304 |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
305 ;; Then return all values |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
306 (list (cons 'outfile outfile) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
307 (cons 'source source) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
308 (cons 'cmdline cmdline) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
309 (cons 'begin point-beg) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
310 (cons 'end point-end))))))) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
311 |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
312 ;;debug;; (YaTeX-filter-parse-filter-region (YaTeX-in-BEGEND-p)) |
518 | 313 (defun YaTeX-filter-pass-to-filter (begend-info) |
314 "Pass current BEGIN FILTER environment to external command." | |
315 (put 'YaTeX-filter-filter-sentinel 'outfile nil) | |
316 ;; begend-info is from YaTeX-in-BEGEND-p: (BEG END ARGS) | |
317 (let ((b (car begend-info)) (e (nth 1 begend-info)) | |
545
ea6956f10ce7
When %#SRC specified, should send content of that file.
HIROSE Yuuji <yuuji@gentei.org>
parents:
544
diff
changeset
|
318 (r (YaTeX-filter-parse-filter-region begend-info)) |
ea6956f10ce7
When %#SRC specified, should send content of that file.
HIROSE Yuuji <yuuji@gentei.org>
parents:
544
diff
changeset
|
319 insmark) |
518 | 320 (save-excursion |
524
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
321 (if r (let*((case-fold-search t) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
322 (outfile (cdr (assq 'outfile r))) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
323 (source (cdr (assq 'source r))) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
324 (type (cond |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
325 ((string-match "\\.png$" outfile) "png") |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
326 ((string-match "\\.svg$" outfile) "svg") |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
327 ((string-match "\\.tex$" outfile) "tex") |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
328 (t "pdf"))) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
329 (newcmdline (YaTeX-replace-formats |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
330 (cdr (assq 'cmdline r)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
331 (list (cons "t" type) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
332 (cons "o" outfile) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
333 (cons "i" source)))) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
334 (text-start (cdr (assq 'begin r))) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
335 (text-end (cdr (assq 'end r))) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
336 (text (and (numberp text-start) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
337 (numberp text-end) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
338 (YaTeX-buffer-substring text-start text-end))) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
339 ;; |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
340 ;; Now it's time to start filter process |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
341 ;; |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
342 (procbuf (YaTeX-system newcmdline "Filter" 'force)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
343 (proc (get-buffer-process procbuf)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
344 ;;(procbuf (get-buffer-create " *Filter*")) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
345 (ovl (progn |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
346 (remove-overlays text-start text-end) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
347 (make-overlay text-start text-end))) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
348 (ovlmodhook ;hook function to reset conv-success flag |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
349 'YaTeX-filter-filter-unset-conversion-flag)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
350 (if proc |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
351 (progn |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
352 (overlay-put ovl 'filter-output outfile) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
353 (overlay-put ovl 'filter-source source) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
354 (overlay-put ovl 'converted nil) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
355 (overlay-put ovl 'modification-hooks (list ovlmodhook)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
356 (set-process-coding-system proc 'undecided 'utf-8) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
357 (set-process-sentinel proc 'YaTeX-filter-filter-sentinel) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
358 (YaTeX-showup-buffer procbuf) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
359 (set-buffer procbuf) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
360 (setq buffer-read-only nil) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
361 (erase-buffer) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
362 (insert (format "Starting process `%s'...\n" newcmdline)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
363 (set-marker (process-mark proc) (point-max)) |
545
ea6956f10ce7
When %#SRC specified, should send content of that file.
HIROSE Yuuji <yuuji@gentei.org>
parents:
544
diff
changeset
|
364 (setq insmark (point-max)) |
524
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
365 (cond |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
366 (text |
545
ea6956f10ce7
When %#SRC specified, should send content of that file.
HIROSE Yuuji <yuuji@gentei.org>
parents:
544
diff
changeset
|
367 (process-send-string |
ea6956f10ce7
When %#SRC specified, should send content of that file.
HIROSE Yuuji <yuuji@gentei.org>
parents:
544
diff
changeset
|
368 proc |
ea6956f10ce7
When %#SRC specified, should send content of that file.
HIROSE Yuuji <yuuji@gentei.org>
parents:
544
diff
changeset
|
369 (if source |
ea6956f10ce7
When %#SRC specified, should send content of that file.
HIROSE Yuuji <yuuji@gentei.org>
parents:
544
diff
changeset
|
370 (progn |
ea6956f10ce7
When %#SRC specified, should send content of that file.
HIROSE Yuuji <yuuji@gentei.org>
parents:
544
diff
changeset
|
371 (insert-file-contents-literally source) |
ea6956f10ce7
When %#SRC specified, should send content of that file.
HIROSE Yuuji <yuuji@gentei.org>
parents:
544
diff
changeset
|
372 (YaTeX-buffer-substring insmark (point-max))) |
ea6956f10ce7
When %#SRC specified, should send content of that file.
HIROSE Yuuji <yuuji@gentei.org>
parents:
544
diff
changeset
|
373 text)) |
524
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
374 (process-send-string proc "\n") |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
375 (process-send-eof proc) ;Notify stream chunk end |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
376 (process-send-eof proc))) ;Notify real EOF |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
377 (put 'YaTeX-filter-filter-sentinel 'outfile outfile) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
378 (put 'YaTeX-filter-filter-sentinel 'overlay ovl)))))))) |
518 | 379 |
380 (defun YaTeX-insert-filter-special (filter list &optional region-p) | |
524
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
381 (let*((f (YaTeX-read-string-or-skip |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
382 "Output file(Maybe *.(pdf|png|jpg|tex)): ")) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
383 (insert-default-directory) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
384 (cmdargs (car list)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
385 (template-text (car (cdr list))) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
386 (ifile (read-file-name "Data source(Default: in this buffer): " nil)) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
387 (in-line (string= "" ifile))) |
518 | 388 (if region-p |
389 (if (< (point) (mark)) (exchange-point-and-mark))) | |
524
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
390 (save-excursion |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
391 (insert (if in-line "===\n\\fi\n" "") |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
392 "%#END\n" |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
393 (cond |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
394 ((string-match "\\.tex$" f) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
395 (format "\\input{%s}\n" (substring f 0 (match-beginning 0)))) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
396 ((string-match "\\.\\(pdf\\|png\\|jpe?g\\|tiff?\\)$" f) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
397 (format "%%# \\includegraphics{%s}\n" f))))) |
518 | 398 (and region-p (exchange-point-and-mark)) |
547
826b0766f6ba
Generalize block detection method slightly
HIROSE Yuuji <yuuji@gentei.org>
parents:
545
diff
changeset
|
399 (insert (format "%%#BEGIN FILTER{%s}{%s}\n%s%s" |
524
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
400 f (or cmdargs "") |
547
826b0766f6ba
Generalize block detection method slightly
HIROSE Yuuji <yuuji@gentei.org>
parents:
545
diff
changeset
|
401 (format "%%#%% If you call program in yatex, type `%se'\n" |
826b0766f6ba
Generalize block detection method slightly
HIROSE Yuuji <yuuji@gentei.org>
parents:
545
diff
changeset
|
402 (key-description |
826b0766f6ba
Generalize block detection method slightly
HIROSE Yuuji <yuuji@gentei.org>
parents:
545
diff
changeset
|
403 (car (where-is-internal 'YaTeX-typeset-menu)))) |
524
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
404 (if in-line "\\if0\n===\n" ""))) |
b1896ef49747
Detection of region passed to filter modified.
HIROSE Yuuji <yuuji@gentei.org>
parents:
521
diff
changeset
|
405 (save-excursion |
545
ea6956f10ce7
When %#SRC specified, should send content of that file.
HIROSE Yuuji <yuuji@gentei.org>
parents:
544
diff
changeset
|
406 (insert |
ea6956f10ce7
When %#SRC specified, should send content of that file.
HIROSE Yuuji <yuuji@gentei.org>
parents:
544
diff
changeset
|
407 (if in-line |
ea6956f10ce7
When %#SRC specified, should send content of that file.
HIROSE Yuuji <yuuji@gentei.org>
parents:
544
diff
changeset
|
408 (cond (template-text |
ea6956f10ce7
When %#SRC specified, should send content of that file.
HIROSE Yuuji <yuuji@gentei.org>
parents:
544
diff
changeset
|
409 (concat template-text |
ea6956f10ce7
When %#SRC specified, should send content of that file.
HIROSE Yuuji <yuuji@gentei.org>
parents:
544
diff
changeset
|
410 (or (string-match "\n$" template-text) "\n"))) |
ea6956f10ce7
When %#SRC specified, should send content of that file.
HIROSE Yuuji <yuuji@gentei.org>
parents:
544
diff
changeset
|
411 (t "\n")) |
ea6956f10ce7
When %#SRC specified, should send content of that file.
HIROSE Yuuji <yuuji@gentei.org>
parents:
544
diff
changeset
|
412 (format "%%#SRC{%s}\n" ifile)))))) |
518 | 413 |
414 (provide 'yatexflt) | |
415 | |
416 ; Local variables: | |
417 ; fill-prefix: ";;; " | |
418 ; paragraph-start: "^$\\|\\|;;;$" | |
419 ; paragraph-separate: "^$\\|\\|;;;$" | |
420 ; End: |