annotate yatexflt.el @ 521:cef987df070f dev

Move main stuffs of SpecialFilter to yatexflt.el
author HIROSE Yuuji <yuuji@gentei.org>
date Tue, 09 Jan 2018 13:35:08 +0900
parents dfb71acdec98
children b1896ef49747
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
518
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1 ;;; yatexflt.el --- YaTeX filter command utilizer -*- coding: sjis -*-
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2 ;;;
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
3 ;;; (c)1993-2018 by HIROSE Yuuji.[yuuji@yatex.org]
521
cef987df070f Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents: 518
diff changeset
4 ;;; Last modified Tue Jan 9 13:28:56 2018 on firestorm
518
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
5 ;;; $Id$
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
6
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
7 ;;; Commentary:
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
8 ;;;
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
9 ;;; This lisp enables passing inline text to some external filter
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
10 ;;; command to generate files such as graphic files.
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
11 ;;;
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
12 ;;; Typical situation is using blockdiag/dot(graphviz) command to
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
13 ;;; generate png/pdf file.
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
14 ;;;
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
15 ;;; Example:
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
16 ;;;
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
17 ;;; [[LaTeX Source]]
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
18 ;;; %#BEGIN FILTER{foo.pdf}{dot -T %t -o o}
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
19 ;;; \if0
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
20 ;;; ===
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
21 ;;; digraph {
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
22 ;;; A -> B;
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
23 ;;; B -> C;
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
24 ;;; }
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
25 ;;; ===
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
26 ;;; \fi
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
27 ;;; %#END
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
28 ;;; \includegraphics{foo.pdf}
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
29 ;;;
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
30 ;;; In this case above, when you type `[prefix] t e' between two
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
31 ;;; `===' lines, the content in a region are fed to dot command as
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
32 ;;; follows:
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
33 ;;;
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
34 ;;; echo TEXT | dot -T pdf -o foo.pdf
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
35 ;;;
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
36 ;;; Then foo.pdf file will be generated and the image (as PNG) will
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
37 ;;; be displayed in the next window.
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
38
521
cef987df070f Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents: 518
diff changeset
39
518
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
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\"]
cef987df070f Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents: 518
diff changeset
83 }
cef987df070f Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents: 518
diff changeset
84 bigraph {
cef987df070f Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents: 518
diff changeset
85 graph [charset=\"utf-8\"]}"
cef987df070f Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents: 518
diff changeset
86 )))
cef987df070f Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents: 518
diff changeset
87
cef987df070f Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents: 518
diff changeset
88 (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
89 (defvar YaTeX-filter-special-env-alist
cef987df070f Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents: 518
diff changeset
90 (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
91 YaTeX-filter-special-env-alist-default))
cef987df070f Move main stuffs of SpecialFilter to yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents: 518
diff changeset
92
518
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
93 (defun YaTeX-filter-filter-set-conversion-flag ()
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
94 (let ((ovl (get 'YaTeX-filter-filter-sentinel 'overlay)))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
95 (if ovl ;; When successful conversion met,
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
96 (progn ;; (1)Set conversion complete flag
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
97 (add-hook ;; (2)Add hook of seim-automatic
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
98 'write-file-hooks ;; update of convert to write-
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
99 'YaTeX-filter-update-all) ;; file hook.
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
100 (overlay-put ovl 'converted t)))))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
101
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
102 (defun YaTeX-filter-filter-unset-conversion-flag
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
103 (ovl after beg end &optional length)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
104 (if after (overlay-put ovl 'converted nil)))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
105
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
106
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
107 (defun YaTeX-filter-pngify-sentinel (proc msg)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
108 (save-excursion
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
109 (let ((b (process-buffer proc)) (selw (selected-window))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
110 img)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
111 (set-buffer b)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
112 (cond
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
113 ((eq (process-status proc) 'run)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
114 (put-text-property (point-min) (point-max) 'invisible t))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
115 ((eq (process-status proc) 'exit)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
116 (set-buffer b)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
117 (YaTeX-popup-image
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
118 (YaTeX-buffer-substring
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
119 (get 'YaTeX-filter-pngify-sentinel 'start) (point-max))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
120 b)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
121 (YaTeX-filter-filter-set-conversion-flag))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
122 (t
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
123 (set-buffer b)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
124 (remove-text-properties (point-min) (point-max) '(invisible t))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
125 (insert "\nProcess aborted %s\n" msg))))))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
126
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
127 (defvar YaTeX-filter-pdf2png-stdout
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
128 (cond
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
129 ((YaTeX-executable-find "convert") "convert -trim %s PNG:-")
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
130 (t
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
131 "gs -dNOPAUSE -sDEVICE=png256 -sOutputFile=- -dBATCH -q -r75 %s"))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
132 "Command line syntax to convert PDF file to PNG stream")
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
133
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
134 (defun YaTeX-filter-modified-BEGEND-regions ()
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
135 "Return the list of overlays which contains un-converted text."
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
136 (save-excursion
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
137 (save-restriction
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
138 (widen)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
139 (let (r pl (list (overlays-in (point-min) (point-max))))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
140 (while list
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
141 (if (and (overlay-get (car list) 'filter-input)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
142 (setq pl (plist-member (overlay-properties (car list))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
143 'converted))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
144 (not (plist-get pl 'converted)))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
145 (setq r (cons (car list) r)))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
146 (setq list (cdr list)))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
147 (nconc r)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
148 r))))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
149
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
150 (defun YaTeX-filter-update-all ()
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
151 "Update all destination files from built-in source text."
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
152 (interactive)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
153 (let ((timeout 4)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
154 ans ovl (update-list (YaTeX-filter-modified-BEGEND-regions)))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
155 (if update-list
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
156 (save-excursion
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
157 (save-window-excursion
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
158 (catch 'abort
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
159 (while update-list
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
160 (goto-char (overlay-start (setq ovl (car update-list))))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
161 (or (pos-visible-in-window-p)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
162 (set-window-start nil (point)))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
163 (unwind-protect
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
164 (progn
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
165 (overlay-put ovl 'face 'YaTeX-on-the-fly-activated-face)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
166 (message "Non-update source found: Update here: %s "
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
167 "Y)es N)o A)bort")
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
168 (setq ans (read-char))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
169 (cond
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
170 ((memq ans '(?Y ?y))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
171 (YaTeX-filter-BEGEND)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
172 (while (and (> (setq timeout (1- timeout)))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
173 (eq (process-status "Filter") 'run))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
174 (message "Waiting for conversion process to finish")
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
175 (sit-for 1)))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
176 ((memq ans '(?A ?a)) (throw 'abort t))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
177 (t nil)))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
178 (overlay-put ovl 'face nil))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
179 (setq update-list (cdr update-list)))))))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
180 ;; Write file hook should return nil
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
181 nil))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
182
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
183 (defun YaTeX-filter-filter-sentinel (proc msg)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
184 (put 'YaTeX-filter-pngify-sentinel 'start nil)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
185 (let ((b (process-buffer proc))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
186 (imagefile (get 'YaTeX-filter-filter-sentinel 'outfile))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
187 ovl
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
188 (selw (selected-window)))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
189 (save-excursion
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
190 (cond
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
191 ((eq (process-status proc) 'run))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
192 ((eq (process-status proc) 'exit)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
193 (set-buffer b)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
194 (remove-images (point-min) (point-max))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
195 (if (and (file-regular-p imagefile)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
196 (file-readable-p imagefile))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
197 (save-excursion
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
198 (setq buffer-read-only nil)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
199 (cond
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
200 ((string-match "\\.\\(jpg\\|png\\)" imagefile)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
201 (erase-buffer)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
202 (YaTeX-popup-image imagefile b)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
203 (YaTeX-filter-filter-set-conversion-flag))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
204 (t ;Convert again to PNG file
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
205 (goto-char (point-max))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
206 (insert "\nConvert Again to PNG file...\n")
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
207 (put 'YaTeX-filter-pngify-sentinel 'start (point))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
208 (set-process-sentinel
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
209 (start-process
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
210 "Filter" b ;Safe to reuse
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
211 shell-file-name YaTeX-shell-command-option
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
212 (format YaTeX-filter-pdf2png-stdout imagefile))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
213 'YaTeX-filter-pngify-sentinel)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
214 (set-buffer-multibyte nil)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
215 ))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
216 (select-window selw)))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
217 (YaTeX-preview-image-mode)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
218 )
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
219 (t ;Other status might be an error
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
220 (set-buffer b)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
221 (goto-char (point-max))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
222 (insert (format "%s\n" (process-status proc))))))))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
223
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
224 (defun YaTeX-filter-pass-to-filter (begend-info)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
225 "Pass current BEGIN FILTER environment to external command."
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
226 (put 'YaTeX-filter-filter-sentinel 'outfile nil)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
227 ;; begend-info is from YaTeX-in-BEGEND-p: (BEG END ARGS)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
228 (let ((b (car begend-info)) (e (nth 1 begend-info))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
229 (args (nth 2 begend-info))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
230 (p (point)) openb closeb outfile cmdline point-if0 point-fi)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
231 (save-excursion
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
232 (if (and begend-info
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
233 (string-match "FILTER" args) ;easy test
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
234 (goto-char (car begend-info))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
235 (re-search-forward
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
236 "FILTER\\s *{\\([^}]+\\)}" e t)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
237 (setq outfile (YaTeX-match-string 1))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
238 (goto-char (match-end 0))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
239 (prog2 ;Step into the second brace
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
240 (skip-chars-forward "\t ")
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
241 (looking-at "{") ;Check if 2nd brace surely exists
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
242 (skip-chars-forward "{")
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
243 (skip-chars-forward "\t"))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
244 (setq openb (point))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
245 (condition-case nil
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
246 (progn (up-list 1) t)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
247 (error nil))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
248 (setq closeb (1- (point))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
249 cmdline (YaTeX-buffer-substring openb closeb))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
250 (re-search-forward "^\\\\if0\\>" p t)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
251 (setq point-if0 (point))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
252 (re-search-forward "^\\\\fi\\>" e t)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
253 (setq point-fi (match-beginning 0)))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
254 (let*((case-fold-search t)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
255 (type (cond
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
256 ((string-match "\\.png$" outfile) "png")
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
257 ((string-match "\\.svg$" outfile) "svg")
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
258 (t "pdf")))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
259 (newcmdline (YaTeX-replace-formats
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
260 cmdline
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
261 (list (cons "t" type)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
262 (cons "o" outfile))))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
263 (delim (progn (goto-char point-if0)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
264 (forward-line 1)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
265 (and (looking-at "\\(.\\)\\1\\1") ;Triple chars
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
266 (prog1
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
267 (YaTeX-match-string 0)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
268 (forward-line 1)))))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
269 (text-start (point))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
270 (text-end (if (and delim
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
271 (re-search-forward
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
272 (concat "^" (regexp-quote delim))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
273 point-fi t))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
274 (match-beginning 0)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
275 point-fi))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
276 (text (YaTeX-buffer-substring text-start text-end))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
277 ;;
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
278 ;; Now it's time to start filter process
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
279 ;;
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
280 (procbuf (YaTeX-system newcmdline "Filter" 'force))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
281 (proc (get-buffer-process procbuf))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
282 ;(procbuf (get-buffer-create " *Filter*"))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
283 (ovl (progn
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
284 (remove-overlays text-start text-end)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
285 (make-overlay text-start text-end)))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
286 (ovlmodhook ;hook function to reset conv-success flag
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
287 'YaTeX-filter-filter-unset-conversion-flag))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
288 (if proc
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
289 (progn
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
290 (overlay-put ovl 'filter-input outfile)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
291 (overlay-put ovl 'converted nil)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
292 (overlay-put ovl 'modification-hooks (list ovlmodhook))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
293 (set-process-coding-system proc 'undecided 'utf-8)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
294 (set-process-sentinel proc 'YaTeX-filter-filter-sentinel)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
295 (YaTeX-showup-buffer procbuf)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
296 (set-buffer procbuf)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
297 (setq buffer-read-only nil)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
298 (erase-buffer)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
299 (insert (format "Starting process `%s'...\n" newcmdline))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
300 (set-marker (process-mark proc) (point-max))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
301 (process-send-string proc text)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
302 (process-send-string proc "\n")
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
303 (process-send-eof proc) ;Notify stream chunk end
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
304 (process-send-eof proc) ;Notify real EOF
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
305 (put 'YaTeX-filter-filter-sentinel 'outfile outfile)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
306 (put 'YaTeX-filter-filter-sentinel 'overlay ovl))))))))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
307
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
308 (defun YaTeX-insert-filter-special (filter list &optional region-p)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
309 (let ((f (YaTeX-read-string-or-skip "Output file: ")))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
310 (if region-p
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
311 (if (< (point) (mark)) (exchange-point-and-mark)))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
312 (save-excursion (insert "===\n\\fi\n%#END\n"))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
313 (and region-p (exchange-point-and-mark))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
314 (insert (format "%%#BEGIN FILTER{%s}{%s}\n\\if0\n===\n"
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
315 f (or (car list) "")))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
316 (save-excursion (insert (or (car (cdr list)) "\n") "\n"))))
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
317
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
318 (provide 'yatexflt)
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
319
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
320 ; Local variables:
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
321 ; fill-prefix: ";;; "
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
322 ; paragraph-start: "^$\\| \\|;;;$"
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
323 ; paragraph-separate: "^$\\| \\|;;;$"
dfb71acdec98 add yatexflt.el
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
324 ; End:

yatex.org