comparison yatexprc.el @ 11:390df0e505da

Label completion works.
author yuuji
date Mon, 20 Sep 1993 08:56:09 +0000
parents 9a56acb6c287
children a7f397790cdc
comparison
equal deleted inserted replaced
10:796a929a7b13 11:390df0e505da
1 ;;; -*- Emacs-Lisp -*- 1 ;;; -*- Emacs-Lisp -*-
2 ;;; YaTeX process handler. 2 ;;; YaTeX process handler.
3 ;;; yatexprc.el rev.1.42 3 ;;; yatexprc.el rev.1.43
4 ;;; (c)1993 by HIROSE Yuuji.[yuuji@ae.keio.ac.jp] 4 ;;; (c)1993 by HIROSE Yuuji.[yuuji@ae.keio.ac.jp]
5 ;;; Last modified Tue May 4 21:49:59 1993 on figaro 5 ;;; Last modified Sat Sep 18 04:12:18 1993 on 98fa
6 ;;; $Id$ 6 ;;; $Id$
7 7
8 (require 'yatex) 8 (require 'yatex)
9 9
10 (defvar YaTeX-typeset-process nil 10 (defvar YaTeX-typeset-process nil
11 "Process identifier for jlatex" 11 "Process identifier for jlatex"
12 ) 12 )
13 (defvar YaTeX-typeset-buffer "*YaTeX-typesetting*" 13 (defvar YaTeX-typeset-buffer "*YaTeX-typesetting*"
14 "Process buffer for jlatex") 14 "Process buffer for jlatex")
15
16 (defvar YaTeX-typeset-buffer-syntax nil
17 "*Syntax table for typesetting buffer")
18
19 (if YaTeX-typeset-buffer-syntax nil
20 (setq YaTeX-typeset-buffer-syntax
21 (make-syntax-table (standard-syntax-table)))
22 (modify-syntax-entry ?\{ "w" YaTeX-typeset-buffer-syntax)
23 (modify-syntax-entry ?\} "w" YaTeX-typeset-buffer-syntax)
24 (modify-syntax-entry ?\[ "w" YaTeX-typeset-buffer-syntax)
25 (modify-syntax-entry ?\] "w" YaTeX-typeset-buffer-syntax)
26 )
15 27
16 (defun YaTeX-typeset (command buffer) 28 (defun YaTeX-typeset (command buffer)
17 "Execute jlatex (or other) to LaTeX typeset." 29 "Execute jlatex (or other) to LaTeX typeset."
18 (interactive) 30 (interactive)
19 (if (and YaTeX-typeset-process 31 (if (and YaTeX-typeset-process
32 (setq YaTeX-typeset-process ;if UNIX 44 (setq YaTeX-typeset-process ;if UNIX
33 (start-process "LaTeX" buffer shell-file-name "-c" 45 (start-process "LaTeX" buffer shell-file-name "-c"
34 command)) 46 command))
35 (set-process-sentinel YaTeX-typeset-process 'YaTeX-typeset-sentinel))) 47 (set-process-sentinel YaTeX-typeset-process 'YaTeX-typeset-sentinel)))
36 (setq current-TeX-buffer (buffer-name)) 48 (setq current-TeX-buffer (buffer-name))
37 (other-window 1) 49 (let ((window (selected-window)))
38 (use-local-map YaTeX-typesetting-mode-map) 50 (select-window (get-buffer-window buffer))
39 (setq mode-name "typeset") 51 ;;(other-window 1)
40 (if YaTeX-typeset-process ; if process is running (maybe on UNIX) 52 (use-local-map YaTeX-typesetting-mode-map)
41 (cond ((boundp 'MULE) 53 (set-syntax-table YaTeX-typeset-buffer-syntax)
42 (set-current-process-coding-system 54 (setq mode-name "typeset")
43 YaTeX-latex-message-code YaTeX-coding-system)) 55 (if YaTeX-typeset-process ; if process is running (maybe on UNIX)
44 ((boundp 'NEMACS) 56 (cond ((boundp 'MULE)
45 (set-kanji-process-code YaTeX-latex-message-code)))) 57 (set-current-process-coding-system
46 (message "Type SPC to continue.") 58 YaTeX-latex-message-code YaTeX-coding-system))
47 (goto-char (point-max)) 59 ((boundp 'NEMACS)
48 (if (eq system-type 'ms-dos) (message "Done.") 60 (set-kanji-process-code YaTeX-latex-message-code))))
49 (while (bobp) (message "Invoking process. wait...") (sleep-for 1)) 61 (message "Type SPC to continue.")
50 (insert (message " "))) 62 (goto-char (point-max))
51 (if (bolp) (forward-line -1)) 63 (if (eq system-type 'ms-dos) (message "Done.")
52 (recenter -1) 64 (while (bobp) (message "Invoking process. wait...") (sleep-for 1))
53 (other-window -1) 65 (insert (message " ")))
66 (if (bolp) (forward-line -1))
67 (recenter -1)
68 (select-window window)
69 ;;(other-window -1)
70 )
54 ) 71 )
55 72
56 (defun YaTeX-typeset-sentinel (proc mes) 73 (defun YaTeX-typeset-sentinel (proc mes)
57 (cond ((null (buffer-name (process-buffer proc))) 74 (cond ((null (buffer-name (process-buffer proc)))
58 ;; buffer killed 75 ;; buffer killed
59 (set-process-buffer proc nil)) 76 (set-process-buffer proc nil))
60 ((memq (process-status proc) '(signal exit)) 77 ((memq (process-status proc) '(signal exit))
61 (let* ((obuf (current-buffer))) 78 (let* ((obuf (current-buffer)) (pbuf (process-buffer proc))
79 (owin (selected-window)) win)
62 ;; save-excursion isn't the right thing if 80 ;; save-excursion isn't the right thing if
63 ;; process-buffer is current-buffer 81 ;; process-buffer is current-buffer
64 (unwind-protect 82 (unwind-protect
65 (progn 83 (progn
66 ;; Write something in *typesetting* and hack its mode line 84 ;; Write something in *typesetting* and hack its mode line
67 (if (equal (current-buffer) (process-buffer proc)) 85 (YaTeX-pop-to-buffer pbuf)
68 nil
69 (other-window 1)
70 (switch-to-buffer (process-buffer proc))
71 (goto-char (point-max))
72 (recenter -3)
73 (other-window -1))
74 (set-buffer (process-buffer proc)) 86 (set-buffer (process-buffer proc))
75 (goto-char (point-max)) 87 (goto-char (point-max))
88 (recenter -3)
76 (insert ?\n "latex typesetting " mes) 89 (insert ?\n "latex typesetting " mes)
77 (forward-char -1) 90 (forward-char -1)
78 (insert " at " (substring (current-time-string) 0 -5) "\n") 91 (insert " at " (substring (current-time-string) 0 -5) "\n")
79 (forward-char 1) 92 (forward-char 1)
80 (setq mode-line-process 93 (setq mode-line-process
88 ) 101 )
89 (setq YaTeX-typesetting-process nil) 102 (setq YaTeX-typesetting-process nil)
90 ;; Force mode line redisplay soon 103 ;; Force mode line redisplay soon
91 (set-buffer-modified-p (buffer-modified-p)) 104 (set-buffer-modified-p (buffer-modified-p))
92 ) 105 )
106 (select-window owin)
93 (set-buffer obuf)))) 107 (set-buffer obuf))))
94 ) 108 )
95 109
96 (defvar YaTeX-texput-file "texput.tex" 110 (defvar YaTeX-texput-file "texput.tex"
97 "*File name for temporary file of typeset-region." 111 "*File name for temporary file of typeset-region."
206 )) 220 ))
207 (YaTeX-typeset cmd YaTeX-typeset-buffer) 221 (YaTeX-typeset cmd YaTeX-typeset-buffer)
208 (put 'dvi2-command 'region nil)) 222 (put 'dvi2-command 'region nil))
209 ) 223 )
210 224
211 (defun YaTeX-bibtex-buffer () 225 (defun YaTeX-call-command-on-file (base-cmd buffer)
212 "Pass the bibliography data of editing file to bibtex."
213 (interactive)
214 (YaTeX-save-buffers) 226 (YaTeX-save-buffers)
215 (YaTeX-typeset 227 (YaTeX-typeset
216 (read-string "BibTeX command: " 228 (read-string "Call command: "
217 (concat bibtex-command " " (YaTeX-get-preview-file-name))) 229 (concat base-cmd " " (YaTeX-get-preview-file-name)))
218 "*YaTeX-bibtex*" ) 230 buffer)
231 )
232
233 (defun YaTeX-bibtex-buffer (cmd)
234 "Pass the bibliography data of editing file to bibtex."
235 (interactive)
236 (YaTeX-save-buffers)
237 (YaTeX-call-command-on-file cmd "*YaTeX-bibtex*" )
219 ) 238 )
220 239
221 (defun YaTeX-kill-typeset-process (proc) 240 (defun YaTeX-kill-typeset-process (proc)
222 "Kill process PROC after sending signal to PROC. 241 "Kill process PROC after sending signal to PROC.
223 PROC should be process identifier." 242 PROC should be process identifier."
267 286
268 (defun YaTeX-prev-error () 287 (defun YaTeX-prev-error ()
269 "Visit previous error. The reason why not NEXT-error is to 288 "Visit previous error. The reason why not NEXT-error is to
270 avoid make confliction of line numbers by editing." 289 avoid make confliction of line numbers by editing."
271 (interactive) 290 (interactive)
272 (let ((cur-buf (buffer-name)) 291 (let ((cur-buf (buffer-name)) (cur-win (selected-window))
273 YaTeX-error-line error-buffer) 292 YaTeX-error-line typeset-win error-buffer error-win)
274 (if (null (get-buffer YaTeX-typeset-buffer)) 293 (if (null (get-buffer YaTeX-typeset-buffer))
275 (message "There is no output buffer of typesetting.") 294 (message "There is no output buffer of typesetting.")
276 (pop-to-buffer YaTeX-typeset-buffer) 295 (YaTeX-pop-to-buffer YaTeX-typeset-buffer)
296 (setq typeset-win (selected-window))
277 (if (eq system-type 'ms-dos) 297 (if (eq system-type 'ms-dos)
278 (if (search-backward latex-dos-emergency-message nil t) 298 (if (search-backward latex-dos-emergency-message nil t)
279 (progn (goto-char (point-max)) 299 (progn (goto-char (point-max))
280 (setq error-regexp latex-error-regexp)) 300 (setq error-regexp latex-error-regexp))
281 (beginning-of-line) 301 (beginning-of-line)
287 (goto-char (point-max)) 307 (goto-char (point-max))
288 (setq error-regexp latex-error-regexp)) 308 (setq error-regexp latex-error-regexp))
289 (beginning-of-line) 309 (beginning-of-line)
290 (setq error-regexp latex-warning-regexp)))) 310 (setq error-regexp latex-warning-regexp))))
291 (if (re-search-backward error-regexp nil t) 311 (if (re-search-backward error-regexp nil t)
292 (save-restriction 312 (setq YaTeX-error-line
293 (set-mark-command nil) 313 (string-to-int
294 (end-of-line) 314 (buffer-substring
295 (narrow-to-region (point) (mark)) 315 (progn (goto-char (match-beginning 0))
296 (goto-char (point-min)) 316 (skip-chars-forward "^0-9")
297 (re-search-forward "[0-9]") 317 (point))
298 (forward-char -1) 318 (progn (skip-chars-forward "0-9") (point)))))
299 (set-mark (point))
300 (skip-chars-forward "0-9")
301 (narrow-to-region (point) (mark))
302 (goto-char (point-min))
303 (setq YaTeX-error-line (read (current-buffer))))
304 (message "No more error on %s" cur-buf) 319 (message "No more error on %s" cur-buf)
305 (ding) 320 (ding))
306 ) 321 (setq error-buffer (YaTeX-get-error-file cur-buf)); arg. is default buf.
307 (setq error-buffer (YaTeX-get-error-file cur-buf)) 322 (setq error-win (get-buffer-window error-buffer))
308 (other-window -1) 323 (select-window cur-win)
309 (switch-to-buffer cur-buf) 324 (if (or (null YaTeX-error-line) (equal 0 YaTeX-error-line))
310 (if (null YaTeX-error-line)
311 nil 325 nil
312 ;; if warning or error found 326 ;; if warning or error found
313 (YaTeX-switch-to-buffer error-buffer) 327 (if error-win (select-window error-win)
328 (YaTeX-switch-to-buffer error-buffer)
329 (setq error-win (selected-window)))
314 (goto-line YaTeX-error-line) 330 (goto-line YaTeX-error-line)
315 (message "latex error or warning in '%s' at line: %d" 331 (message "latex error or warning in '%s' at line: %d"
316 error-buffer YaTeX-error-line) 332 error-buffer YaTeX-error-line)
317 (other-window 1) 333 (select-window typeset-win)
318 (skip-chars-backward "[0-9]") 334 (skip-chars-backward "[0-9]")
319 (recenter (/ (window-height) 2)) 335 (recenter (/ (window-height) 2))
320 (sit-for 3) 336 (sit-for 3)
321 (forward-char -1) 337 (forward-char -1)
322 (other-window -1) 338 (select-window error-win)
323 ))) 339 )))
324 ) 340 )
325 341
326 (defun YaTeX-jump-error-line () 342 (defun YaTeX-jump-error-line ()
327 "Jump corresponding line on latex command's error message." 343 "Jump corresponding line on latex command's error message."
370 386
371 (defun YaTeX-view-error () 387 (defun YaTeX-view-error ()
372 (interactive) 388 (interactive)
373 (if (null (get-buffer YaTeX-typeset-buffer)) 389 (if (null (get-buffer YaTeX-typeset-buffer))
374 (message "No typeset buffer found.") 390 (message "No typeset buffer found.")
375 (pop-to-buffer YaTeX-typeset-buffer) 391 (let ((win (selected-window)))
376 (goto-char (point-max)) 392 (YaTeX-pop-to-buffer YaTeX-typeset-buffer)
377 (recenter -1) 393 (goto-char (point-max))
378 (other-window -1)) 394 (recenter -1)
395 (select-window win)))
379 ) 396 )
380 397
381 (defun YaTeX-get-error-file (default) 398 (defun YaTeX-get-error-file (default)
382 "Get current processing file from typesetting log." 399 "Get current processing file from typesetting log."
383 (save-excursion 400 (save-excursion
589 (y-or-n-p (format "Save %s" (buffer-name buf)))) 606 (y-or-n-p (format "Save %s" (buffer-name buf))))
590 (save-buffer buf))) 607 (save-buffer buf)))
591 (buffer-list))) 608 (buffer-list)))
592 ) 609 )
593 610
611 (defun YaTeX-pop-to-buffer (buffer &optional win)
612 (if (setq win (get-buffer-window buffer))
613 (select-window win)
614 (pop-to-buffer buffer))
615 )
616
594 (provide 'yatexprc) 617 (provide 'yatexprc)

yatex.org