yatex

annotate yatex.el @ 1:912f6e258cba

Support %#! usage to specify latex command. Change default fill-prefix to "".
author yuuji
date Wed, 22 Jul 1992 19:43:36 +0000
parents 9c72144baf95
children 191610912c8b
rev   line source
yuuji@0 1 ;;; -*- Emacs-Lisp -*-
yuuji@0 2 ;;; Yet Another tex-mode for emacs.
yuuji@1 3 ;;; yatex.el rev.1.28
yuuji@0 4 ;;; (c)1991 by Hirose Yuuji.[yuuji@ae.keio.ac.jp]
yuuji@1 5 ;;; Last modified Mon Jul 20 21:46:13 1992 on figaro
yuuji@0 6
yuuji@0 7 (provide 'yatex-mode)
yuuji@1 8 (defconst YaTeX-revision-number "1.28"
yuuji@0 9 "Revision number of running yatex.el"
yuuji@0 10 )
yuuji@0 11
yuuji@0 12 ;---------- Local variables ----------
yuuji@0 13 ;;;
yuuji@0 14 ;; Initialize local variable for yatex-mode.
yuuji@0 15 ;; Preserving user preferred definitions.
yuuji@0 16 ;; ** Check all of these defvar-ed values **
yuuji@0 17 ;; ** and setq other values more suitable **
yuuji@0 18 ;; ** for your site, if nedded. **
yuuji@0 19 ;;;
yuuji@0 20 (defvar YaTeX-prefix "\^C"
yuuji@0 21 "Prefix key to trigger YaTeX functions.
yuuji@0 22 You can select favorite prefix key by setq in your ~/.emacs."
yuuji@0 23 )
yuuji@0 24 (defvar YaTeX-open-lines 1
yuuji@0 25 "Blank lines between text and \??{??}"
yuuji@0 26 )
yuuji@1 27 (defvar YaTeX-fill-prefix ""
yuuji@0 28 "fill-prefix used for auto-fill-mode.
yuuji@0 29 The defalut value is single TAB."
yuuji@0 30 )
yuuji@0 31 (defvar YaTeX-user-completion-table "~/.yatexrc"
yuuji@0 32 "Default filename in which user completion table is saved."
yuuji@0 33 )
yuuji@0 34 (defvar tex-command "jlatex"
yuuji@0 35 "Default command for compiling LaTeX text."
yuuji@0 36 )
yuuji@0 37 (defvar dvi2-command ;previewer command for your site
yuuji@0 38 (concat
yuuji@0 39 "xdvi -geo +0+0 -s 4 -display "
yuuji@0 40 (getenv "DISPLAY"))
yuuji@0 41 "Default previewer command including its option.
yuuji@0 42 This default value is for X window system. If you want to use this
yuuji@0 43 default, you have to make sure the environment variable DISPLAY is
yuuji@0 44 correctly set."
yuuji@0 45 )
yuuji@0 46 (defvar latex-warning-regexp "line.* [0-9]*"
yuuji@0 47 "Regular expression of line number of warning message by latex command."
yuuji@0 48 )
yuuji@0 49 (defvar latex-error-regexp "l\\.[1-9][0-9]*"
yuuji@0 50 "Regular expression of line number of latex error. Perhaps your latex
yuuji@0 51 command stops at this error message with line number of LaTeX source text."
yuuji@0 52 )
yuuji@1 53 (defvar latex-dos-emergency-message
yuuji@1 54 ;;"Emergency stop" ;<- for Micro tex, ASCII-pTeX 1.6
yuuji@1 55 "No pages of output." ;<- for ASCII-pTeX 1.7
yuuji@0 56 "Because Demacs (GNU Emacs on DOS) cannot have pararell process, the
yuuji@0 57 latex command which is stopping on a LaTeX error, is terminated by Demacs.
yuuji@0 58 Many latex command on DOS display some message when it is terminated by
yuuji@0 59 other process, user or OS. Define this variable a message string of your
yuuji@0 60 latex command on DOS shows at abnormal termination.
yuuji@0 61 Remember Demacs's call-process function is not oriented for interactive
yuuji@0 62 process."
yuuji@0 63 )
yuuji@0 64
yuuji@0 65 ;------------ Completion table ------------
yuuji@0 66 ; Set tex-section-like command possible completion
yuuji@0 67 (setq section-table
yuuji@0 68 '(("part") ("section") ("subsection") ("subsubsection")
yuuji@0 69 ("author") ("documentstyle") ("pagestyle")
yuuji@0 70 ("documentstyle[10pt]") ("documentstyle[11pt]")
yuuji@0 71 ("documentstyle[12pt]")
yuuji@0 72 ("item[]") ("title") ("chapter") ("part") ("paragraph")
yuuji@0 73 ("subparagraph") ("underline") ("label") ("footnote")
yuuji@0 74 ("hspace*") ("vspace*") ("bibliography") ("bibitem[]") ("cite[]")
yuuji@0 75 ("nocite") ("input") ("include") ("includeonly") ("mbox") ("hbox")
yuuji@0 76 ("caption") ("newcommand") ("setlength") ("addtolength")
yuuji@0 77 ("newenvironment") ("newtheorem")
yuuji@0 78 ))
yuuji@0 79 (defvar user-section-table nil)
yuuji@0 80
yuuji@0 81 ; Set style possible completion
yuuji@0 82 (setq article-table
yuuji@0 83 '(("article") ("jarticle") ("report") ("jreport") ("jbook")
yuuji@0 84 ("4em") ("2ex")
yuuji@0 85 ("empty") ("headings") ("\\textwidth")
yuuji@0 86 ("\\oddsidemargin") ("\\evensidemargin")
yuuji@0 87 ("\\textheight") ("\\topmargin")
yuuji@0 88 ("\\bottommargin") ("\\footskip") ("\\footheight")
yuuji@0 89 ))
yuuji@0 90 (defvar user-article-table nil)
yuuji@0 91
yuuji@0 92 ; Set tex-environment possible completion
yuuji@0 93 (setq env-table
yuuji@0 94 '(("quote") ("quotation") ("center") ("verse") ("document")
yuuji@0 95 ("verbatim") ("itemize") ("enumerate") ("description")
yuuji@0 96 ("list{}") ("tabular") ("table") ("titlepage")
yuuji@0 97 ("sloppypar") ("ref") ("quotation") ("quote") ("picture")
yuuji@0 98 ("eqnarray") ("figure") ("equation") ("abstract") ("array")
yuuji@0 99 ("thebibliography") ("theindex")
yuuji@0 100 ))
yuuji@0 101 (defvar user-env-table nil)
yuuji@0 102
yuuji@0 103 ; Set {\Large }-like comletion
yuuji@0 104 (setq fontsize-table
yuuji@0 105 '(("rm") ("em") ("bf") ("boldmath") ("it") ("sl") ("sf") ("sc") ("tt")
yuuji@0 106 ("dg") ("dm")
yuuji@0 107 ("tiny") ("scriptsize") ("footnotesize") ("small")("normalsize")
yuuji@0 108 ("large") ("Large") ("LARGE") ("huge") ("Huge")
yuuji@0 109 ))
yuuji@0 110 (defvar user-fontsize-table nil)
yuuji@0 111
yuuji@0 112 (setq singlecmd-table
yuuji@0 113 '(("maketitle") ("sloppy")
yuuji@0 114 ("alpha") ("beta") ("gamma") ("delta") ("epsilon") ("varepsilon")
yuuji@0 115 ("zeta") ("eta") ("theta")("vartheta") ("iota") ("kappa")
yuuji@0 116 ("lambda") ("mu") ("nu") ("xi") ("pi") ("varpi") ("rho") ("varrho")
yuuji@0 117 ("sigma") ("varsigma") ("tau") ("upsilon") ("phi") ("varphi")
yuuji@0 118 ("chi") ("psi") ("omega") ("Gamma") ("Delta") ("Theta") ("Lambda")
yuuji@0 119 ("Xi") ("Pi") ("Sigma") ("Upsilon") ("Phi") ("Psi") ("Omega")
yuuji@0 120 ("LaTeX") ("TeX")
yuuji@0 121 ))
yuuji@0 122 (defvar user-singlecmd-table nil)
yuuji@0 123
yuuji@0 124 ;---------- Key mode map ----------
yuuji@0 125 ;;;
yuuji@0 126 ;; Create new key map: YaTeX-mode-map
yuuji@0 127 ;; Do not change this section.
yuuji@0 128 ;;;
yuuji@0 129 (defvar YaTeX-mode-map nil
yuuji@0 130 "Keymap used in YaTeX mode."
yuuji@0 131 )
yuuji@0 132 (defvar YaTeX-compilation-mode-map nil
yuuji@0 133 "Keymap userd in YaTeX compilation buffer."
yuuji@0 134 )
yuuji@0 135
yuuji@0 136 ;---------- Define deafult key bindings on YaTeX mode map ----------
yuuji@0 137 ;;;
yuuji@0 138 ;; Define key table
yuuji@0 139 ;;;
yuuji@0 140 (if YaTeX-mode-map
yuuji@0 141 nil
yuuji@0 142 (global-unset-key (concat YaTeX-prefix "b"))
yuuji@0 143 (setq YaTeX-mode-map (make-sparse-keymap))
yuuji@0 144 (define-key YaTeX-mode-map (concat YaTeX-prefix "tj")
yuuji@0 145 'YaTeX-compile)
yuuji@0 146 (define-key YaTeX-mode-map (concat YaTeX-prefix "tx")
yuuji@0 147 'YaTeX-preview)
yuuji@0 148 (define-key YaTeX-mode-map (concat YaTeX-prefix "tv")
yuuji@0 149 'YaTeX-view-error)
yuuji@0 150 (define-key YaTeX-mode-map (concat YaTeX-prefix "tb")
yuuji@0 151 '(lambda () (interactive) (YaTeX-insert-string "\\")))
yuuji@0 152 (define-key YaTeX-mode-map (concat YaTeX-prefix "'")
yuuji@0 153 'YaTeX-prev-error)
yuuji@0 154 (define-key YaTeX-mode-map (concat YaTeX-prefix " ")
yuuji@0 155 'YaTeX-do-completion)
yuuji@0 156 (define-key YaTeX-mode-map (concat YaTeX-prefix "v")
yuuji@0 157 'YaTeX-version)
yuuji@0 158
yuuji@0 159 (define-key YaTeX-mode-map "\"" 'YaTeX-insert-quote)
yuuji@0 160 (define-key YaTeX-mode-map (concat YaTeX-prefix "{")
yuuji@0 161 'YaTeX-insert-braces)
yuuji@0 162 (define-key YaTeX-mode-map (concat YaTeX-prefix "}")
yuuji@0 163 'YaTeX-insert-braces-region)
yuuji@0 164 (define-key YaTeX-mode-map (concat YaTeX-prefix "d")
yuuji@0 165 'YaTeX-insert-dollar)
yuuji@0 166 (define-key YaTeX-mode-map (concat YaTeX-prefix "\\")
yuuji@0 167 '(lambda () (interactive) (YaTeX-insert-string "$\\backslash$")))
yuuji@0 168 (define-key YaTeX-mode-map (concat YaTeX-prefix "bd")
yuuji@0 169 '(lambda (arg) (interactive "P")
yuuji@0 170 (YaTeX-insert-begin-end "document" arg)))
yuuji@0 171 (define-key YaTeX-mode-map (concat YaTeX-prefix "Bd")
yuuji@0 172 '(lambda () (interactive)
yuuji@0 173 (YaTeX-insert-begin-end "document" t)))
yuuji@0 174 (define-key YaTeX-mode-map (concat YaTeX-prefix "bD")
yuuji@0 175 '(lambda (arg) (interactive "P")
yuuji@0 176 (YaTeX-insert-begin-end "description" arg)))
yuuji@0 177 (define-key YaTeX-mode-map (concat YaTeX-prefix "BD")
yuuji@0 178 '(lambda () (interactive)
yuuji@0 179 (YaTeX-insert-begin-end "description" t)))
yuuji@0 180 (define-key YaTeX-mode-map (concat YaTeX-prefix "be")
yuuji@0 181 '(lambda (arg) (interactive "P")
yuuji@0 182 (YaTeX-insert-begin-end "enumerate" arg)))
yuuji@0 183 (define-key YaTeX-mode-map (concat YaTeX-prefix "Be")
yuuji@0 184 '(lambda () (interactive)
yuuji@0 185 (YaTeX-insert-begin-end "enumerate" t)))
yuuji@0 186 (define-key YaTeX-mode-map (concat YaTeX-prefix "bi")
yuuji@0 187 '(lambda (arg) (interactive "P")
yuuji@0 188 (YaTeX-insert-begin-end "itemize" arg)))
yuuji@0 189 (define-key YaTeX-mode-map (concat YaTeX-prefix "Bi")
yuuji@0 190 '(lambda () (interactive)
yuuji@0 191 (YaTeX-insert-begin-end "itemize" t)))
yuuji@0 192 (define-key YaTeX-mode-map (concat YaTeX-prefix "bt")
yuuji@0 193 '(lambda (arg) (interactive "P")
yuuji@0 194 (YaTeX-insert-begin-end "tabbing" arg)))
yuuji@0 195 (define-key YaTeX-mode-map (concat YaTeX-prefix "Bt")
yuuji@0 196 '(lambda () (interactive)
yuuji@0 197 (YaTeX-insert-begin-end "tabbing" t)))
yuuji@0 198 (define-key YaTeX-mode-map (concat YaTeX-prefix "bT")
yuuji@0 199 '(lambda (arg) (interactive "P")
yuuji@0 200 (YaTeX-insert-begin-end "tabular" arg)))
yuuji@0 201 (define-key YaTeX-mode-map (concat YaTeX-prefix "BT")
yuuji@0 202 '(lambda () (interactive)
yuuji@0 203 (YaTeX-insert-begin-end "tabular" t)))
yuuji@0 204 (define-key YaTeX-mode-map (concat YaTeX-prefix "bq")
yuuji@0 205 '(lambda (arg) (interactive "P")
yuuji@0 206 (YaTeX-insert-begin-end "quote" arg)))
yuuji@0 207 (define-key YaTeX-mode-map (concat YaTeX-prefix "Bq")
yuuji@0 208 '(lambda () (interactive)
yuuji@0 209 (YaTeX-insert-begin-end "quote" t)))
yuuji@0 210 (define-key YaTeX-mode-map (concat YaTeX-prefix "bQ")
yuuji@0 211 '(lambda (arg) (interactive "P")
yuuji@0 212 (YaTeX-insert-begin-end "quotation" arg)))
yuuji@0 213 (define-key YaTeX-mode-map (concat YaTeX-prefix "BQ")
yuuji@0 214 '(lambda () (interactive)
yuuji@0 215 (YaTeX-insert-begin-end "quotation" t)))
yuuji@0 216 (define-key YaTeX-mode-map (concat YaTeX-prefix "b ")
yuuji@0 217 'YaTeX-make-begin-end)
yuuji@0 218 (define-key YaTeX-mode-map (concat YaTeX-prefix "B ")
yuuji@0 219 'YaTeX-make-begin-end-region)
yuuji@0 220 (define-key YaTeX-mode-map (concat YaTeX-prefix "s")
yuuji@0 221 'YaTeX-make-section)
yuuji@0 222 (define-key YaTeX-mode-map (concat YaTeX-prefix "l")
yuuji@0 223 'YaTeX-make-fontsize)
yuuji@0 224 (define-key YaTeX-mode-map (concat YaTeX-prefix "L")
yuuji@0 225 'YaTeX-make-fontsize-region)
yuuji@0 226 (define-key YaTeX-mode-map (concat YaTeX-prefix "m")
yuuji@0 227 'YaTeX-make-singlecmd)
yuuji@0 228 (define-key YaTeX-mode-map (concat YaTeX-prefix "\C-m")
yuuji@0 229 '(lambda () (interactive) (YaTeX-insert-string "\\\\")))
yuuji@0 230 (if (eq system-type 'ms-dos)
yuuji@0 231 (define-key YaTeX-mode-map (concat YaTeX-prefix "\^L")
yuuji@0 232 '(lambda () (interactive)
yuuji@0 233 (set-screen-height 24) (recenter))))
yuuji@0 234 )
yuuji@0 235
yuuji@0 236 (if YaTeX-compilation-mode-map nil
yuuji@0 237 (setq YaTeX-compilation-mode-map (make-keymap))
yuuji@0 238 (suppress-keymap YaTeX-compilation-mode-map t)
yuuji@0 239 (define-key YaTeX-compilation-mode-map " "
yuuji@0 240 'YaTeX-jump-error-line)
yuuji@0 241 )
yuuji@0 242
yuuji@0 243 ;---------- Customize as you like above ----------
yuuji@0 244
yuuji@0 245 ;---------- Define other variable ----------
yuuji@0 246 (defvar env-name "document") ;Initial tex-environment completion
yuuji@0 247 (defvar section-name "documentstyle[12pt]") ;Initial tex-section completion
yuuji@0 248 (defvar fontsize-name "large") ;Initial fontsize completion
yuuji@0 249 (defvar single-command "maketitle") ;Initial LaTeX single command
yuuji@0 250 (defvar YaTeX-user-table-has-read nil
yuuji@0 251 "Flag that means whether user completion table has read or not."
yuuji@0 252 )
yuuji@0 253 (defvar yatex-mode-hook nil
yuuji@0 254 "List of functions to be called after .tex file is read
yuuji@0 255 and yatex-mode starts.")
yuuji@0 256
yuuji@0 257 ;---------- Produce YaTeX-mode ----------
yuuji@0 258 ;;;
yuuji@0 259 ;; Major mode definition
yuuji@0 260 ;;;
yuuji@0 261 (defun yatex-mode ()
yuuji@0 262 (interactive)
yuuji@0 263 (kill-all-local-variables)
yuuji@0 264 (setq major-mode 'YaTeX-mode)
yuuji@1 265 (setq mode-name "‚â‚Ä‚Ó‚à[‚Ç")
yuuji@0 266 (turn-on-auto-fill)
yuuji@1 267 (make-local-variable 'kanji-display-code)
yuuji@1 268 (make-local-variable 'kanji-fileio-code)
yuuji@1 269 (if (eq system-type 'ms-dos)
yuuji@1 270 (setq YaTeX-kanji-code 1)
yuuji@1 271 (defvar YaTeX-kanji-code 2))
yuuji@1 272 (setq kanji-display-code YaTeX-kanji-code
yuuji@1 273 kanji-fileio-code YaTeX-kanji-code)
yuuji@0 274 (make-local-variable 'fill-column)
yuuji@0 275 (make-local-variable 'fill-prefix)
yuuji@0 276 (setq fill-column 72
yuuji@0 277 fill-prefix YaTeX-fill-prefix)
yuuji@0 278 (use-local-map YaTeX-mode-map)
yuuji@0 279 (if (eq system-type 'ms-dos)
yuuji@0 280 (set-screen-height 24))
yuuji@0 281 (if YaTeX-user-table-has-read nil
yuuji@0 282 (YaTeX-read-user-completion-table)
yuuji@0 283 (setq YaTeX-user-table-has-read t))
yuuji@0 284 (run-hooks 'yatex-mode-hook)
yuuji@0 285 )
yuuji@0 286
yuuji@0 287 ;---------- Define YaTeX-mode functions ----------
yuuji@0 288 ;;;
yuuji@0 289 ;; YaTeX-mode functions
yuuji@0 290 ;;;
yuuji@0 291 (defun YaTeX-insert-begin-end (env arg)
yuuji@0 292 "Insert \begin{mode-name} and \end{mode-name}."
yuuji@0 293 (if arg
yuuji@0 294 (save-excursion
yuuji@0 295 (if (> (point) (mark)) (exchange-point-and-mark))
yuuji@0 296 (insert "\\begin{" env "}\n")
yuuji@0 297 (exchange-point-and-mark)
yuuji@0 298 (insert "\\end{" env "}\n"))
yuuji@0 299 (delete-blank-lines)
yuuji@0 300 (insert "\\begin{" env "}\n")
yuuji@0 301 (newline (1+ (* 2 YaTeX-open-lines)))
yuuji@0 302 (insert "\\end{" env "}\n")
yuuji@0 303 (previous-line (+ 2 YaTeX-open-lines)))
yuuji@0 304 )
yuuji@0 305
yuuji@0 306 (defun YaTeX-exist-completion-table (elm table)
yuuji@0 307 "Return nil, if single list element:elm was
yuuji@0 308 not found in possible completion table."
yuuji@0 309 (while (not (or (null table) (equal elm (car table))))
yuuji@0 310 (setq table (cdr table)))
yuuji@0 311 table
yuuji@0 312 )
yuuji@0 313
yuuji@0 314 (defun YaTeX-make-begin-end (arg)
yuuji@0 315 "Make LaTeX environment command of \\begin{env.} ... \\end{env.}
yuuji@0 316 by completing read.
yuuji@0 317 If you invoke this command with universal argument,
yuuji@0 318 \(C-u or ESC-1 is typical prefix to invoke commands with ARG.\)
yuuji@0 319 you can put REGION into that environment between \\begin and \\end."
yuuji@0 320 (interactive "P")
yuuji@0 321 (let*
yuuji@0 322 ((mode (if arg " region" ""))
yuuji@0 323 (env
yuuji@0 324 (completing-read
yuuji@0 325 (format "Begin environment%s(default %s): " mode env-name)
yuuji@0 326 (append user-env-table env-table) nil nil)))
yuuji@0 327 (if (string= env "")
yuuji@0 328 (setq env env-name))
yuuji@0 329 (setq env-name env)
yuuji@0 330 (if (not (YaTeX-exist-completion-table
yuuji@0 331 (list env-name) (append user-env-table env-table)))
yuuji@0 332 (setq user-env-table (cons (list env-name) user-env-table)))
yuuji@0 333 (YaTeX-insert-begin-end env-name arg))
yuuji@0 334 )
yuuji@0 335
yuuji@0 336 (defun YaTeX-make-begin-end-region ()
yuuji@0 337 "Call YaTeX-make-begin-end with ARG to specify region mode."
yuuji@0 338 (interactive)
yuuji@0 339 (YaTeX-make-begin-end t)
yuuji@0 340 )
yuuji@0 341
yuuji@0 342 (defun YaTeX-make-section (arg)
yuuji@0 343 "Make LaTeX \\section{} type command with completing read.
yuuji@0 344 With ARG of numeric, you can specify the number of argument of
yuuji@0 345 LaTeX command.
yuuji@0 346 For example, if you want to produce LaTeX command
yuuji@0 347
yuuji@0 348 \\addtolength{\\topmargin}{8mm}
yuuji@0 349
yuuji@0 350 which has two argument. You can produce that sequence by typing...
yuuji@0 351 ESC 2 C-c s add SPC RET \\topm SPC RET 8mm RET
yuuji@0 352 \(by default\)
yuuji@0 353 You can complete symbol at LaTeX command and 1st argument."
yuuji@0 354 (interactive "p")
yuuji@0 355 (let*
yuuji@0 356 ((section
yuuji@0 357 (completing-read
yuuji@0 358 (format "\\???{} (default %s): " section-name)
yuuji@0 359 (append user-section-table section-table)
yuuji@0 360 nil nil))
yuuji@0 361 (section (if (string= section "") section-name section))
yuuji@0 362 (title
yuuji@0 363 (completing-read (concat "\\" section "{???}: ")
yuuji@0 364 (append user-article-table article-table)
yuuji@0 365 nil nil)))
yuuji@0 366 (setq section-name section)
yuuji@0 367 (if (not (YaTeX-exist-completion-table
yuuji@0 368 (list section-name) (append user-section-table section-table)))
yuuji@0 369 (setq user-section-table
yuuji@0 370 (cons (list section-name) user-section-table)))
yuuji@0 371 (insert "\\" section-name "{" title "}")
yuuji@0 372 (let ((j 2))
yuuji@0 373 (while (<= j arg)
yuuji@0 374 (insert (concat "{" (read-string (format "Argument %d: " j))))
yuuji@0 375 (insert "}")
yuuji@0 376 (setq j (1+ j)))
yuuji@0 377 )
yuuji@0 378 (if (string= title "") (forward-char -1)
yuuji@0 379 nil))
yuuji@0 380 )
yuuji@0 381
yuuji@0 382 ;(defun YaTeX-make-section-region ()
yuuji@0 383 ; "Call YaTeX-make-section with ARG to specify region mode."
yuuji@0 384 ; (interactive)
yuuji@0 385 ; (YaTeX-make-section t)
yuuji@0 386 ;)
yuuji@0 387
yuuji@0 388 (defun YaTeX-make-fontsize (arg)
yuuji@0 389 "Make completion like {\\large ...} or {\\slant ...} in minibuffer.
yuuji@0 390 If you invoke this command with universal argument, you can put region
yuuji@0 391 into {\\xxx } braces.
yuuji@0 392 \(C-u or ESC-1 are default key bindings of universal-argument.\)"
yuuji@0 393 (interactive "P")
yuuji@0 394 (let* ((mode (if arg "region" ""))
yuuji@0 395 (fontsize
yuuji@0 396 (completing-read
yuuji@0 397 (format "{\\??? %s} (default %s): " mode fontsize-name)
yuuji@0 398 (append user-fontsize-table fontsize-table)
yuuji@0 399 nil nil )))
yuuji@0 400 (if (string= fontsize "")
yuuji@0 401 (setq fontsize fontsize-name))
yuuji@0 402 (setq fontsize-name fontsize)
yuuji@0 403 (if (not (YaTeX-exist-completion-table
yuuji@0 404 (list fontsize-name)
yuuji@0 405 (append user-fontsize-table fontsize-table)))
yuuji@0 406 (setq user-fontsize-table
yuuji@0 407 (cons (list fontsize-name) user-fontsize-table)))
yuuji@0 408 (if arg
yuuji@0 409 (save-excursion
yuuji@0 410 (if (> (point) (mark)) (exchange-point-and-mark))
yuuji@0 411 (insert "{\\" fontsize-name " ")
yuuji@0 412 (exchange-point-and-mark)
yuuji@0 413 (insert "}"))
yuuji@0 414 (insert "{\\" fontsize-name " }")
yuuji@0 415 (forward-char -1)))
yuuji@0 416 )
yuuji@0 417
yuuji@0 418 (defun YaTeX-make-fontsize-region ()
yuuji@0 419 "Call functino:YaTeX-make-fontsize with ARG to specify region mode."
yuuji@0 420 (interactive)
yuuji@0 421 (YaTeX-make-fontsize t)
yuuji@0 422 )
yuuji@0 423
yuuji@0 424 (defun YaTeX-make-singlecmd (single)
yuuji@0 425 (interactive
yuuji@0 426 (list (completing-read
yuuji@0 427 (format "\\??? (default %s): " single-command)
yuuji@0 428 (append user-singlecmd-table singlecmd-table)
yuuji@0 429 nil nil )))
yuuji@0 430 (if (string= single "")
yuuji@0 431 (setq single single-command))
yuuji@0 432 (setq single-command single)
yuuji@0 433 (if (not (YaTeX-exist-completion-table
yuuji@0 434 (list single-command)
yuuji@0 435 (append user-singlecmd-table singlecmd-table)))
yuuji@0 436 (setq user-singlecmd-table
yuuji@0 437 (cons (list single-command) user-singlecmd-table)))
yuuji@0 438 (insert "\\" single-command " ")
yuuji@0 439 )
yuuji@0 440
yuuji@0 441 (defvar YaTeX-completion-begin-regexp "[{\\]"
yuuji@0 442 "Regular expression of limit where LaTeX command's
yuuji@0 443 completion begins.")
yuuji@0 444
yuuji@0 445 (defun YaTeX-do-completion ()
yuuji@0 446 "Try completion on LaTeX command preceding point."
yuuji@0 447 (interactive)
yuuji@0 448 (if
yuuji@0 449 (or (eq (preceding-char) ? )
yuuji@0 450 (eq (preceding-char) ?\t)
yuuji@0 451 (eq (preceding-char) ?\n)
yuuji@0 452 (bobp))
yuuji@0 453 (message "Nothing to complete.") ;Do not complete
yuuji@0 454 (let* ((end (point))
yuuji@0 455 (limit (save-excursion (beginning-of-line) (point)))
yuuji@0 456 (completion-begin
yuuji@0 457 (progn (re-search-backward "[ \t\n]" limit 1)
yuuji@0 458 (point)))
yuuji@0 459 (begin (progn
yuuji@0 460 (goto-char end)
yuuji@0 461 (if (re-search-backward YaTeX-completion-begin-regexp
yuuji@0 462 completion-begin t)
yuuji@0 463 (1+ (point))
yuuji@0 464 nil))))
yuuji@0 465 (goto-char end)
yuuji@0 466 (cond
yuuji@0 467 ((null begin)
yuuji@0 468 (message "I think it is not LaTeX sequence."))
yuuji@0 469 (t
yuuji@0 470 (let* ((pattern (buffer-substring begin end))
yuuji@0 471 (all-table (append section-table user-section-table
yuuji@0 472 article-table user-article-table
yuuji@0 473 env-table user-env-table
yuuji@0 474 singlecmd-table user-singlecmd-table))
yuuji@0 475 ;; First,
yuuji@0 476 ;; search completion without backslash.
yuuji@0 477 (completion (try-completion pattern all-table nil)))
yuuji@0 478 (if
yuuji@0 479 (eq completion nil)
yuuji@0 480 ;; Next,
yuuji@0 481 ;; search completion with backslash
yuuji@0 482 (setq completion
yuuji@0 483 (try-completion (buffer-substring (1- begin) end)
yuuji@0 484 all-table nil)
yuuji@0 485 begin (1- begin)))
yuuji@0 486 (cond
yuuji@0 487 ((null completion)
yuuji@0 488 (message (concat "Can't find completion for '" pattern "'"))
yuuji@0 489 (ding))
yuuji@0 490 ((eq completion t) (message "Sole completion."))
yuuji@0 491 ((not (string= completion pattern))
yuuji@0 492 (kill-region begin end)
yuuji@0 493 (insert completion)
yuuji@0 494 )
yuuji@0 495 (t
yuuji@0 496 (message "Making completion list...")
yuuji@0 497 (with-output-to-temp-buffer "*Help*"
yuuji@0 498 (display-completion-list
yuuji@0 499 (all-completions pattern all-table))) )
yuuji@0 500 ))))))
yuuji@0 501 )
yuuji@0 502
yuuji@0 503 (defun YaTeX-insert-quote ()
yuuji@0 504 (interactive)
yuuji@0 505 (insert
yuuji@0 506 (cond
yuuji@0 507 ((= (preceding-char) ?\\ ) ?\")
yuuji@0 508 ((= (preceding-char) ?\( ) ?\")
yuuji@0 509 ((= (preceding-char) 32) "``")
yuuji@0 510 ((= (preceding-char) 9) "``")
yuuji@0 511 ((= (preceding-char) ?\n) "``")
yuuji@0 512 ((bobp) "``")
yuuji@0 513 (t "''")
yuuji@0 514 )))
yuuji@0 515
yuuji@0 516
yuuji@0 517 (defun YaTeX-insert-braces-region (beg end)
yuuji@0 518 (interactive "r")
yuuji@0 519 (save-excursion
yuuji@0 520 (goto-char end)
yuuji@0 521 (insert "}")
yuuji@0 522 (goto-char beg)
yuuji@0 523 (insert "{"))
yuuji@0 524 )
yuuji@0 525
yuuji@0 526 (defun YaTeX-insert-braces ()
yuuji@0 527 (interactive)
yuuji@0 528 (insert "{}")
yuuji@0 529 (forward-char -1)
yuuji@0 530 )
yuuji@0 531
yuuji@0 532 (defun YaTeX-insert-dollar ()
yuuji@0 533 (interactive)
yuuji@0 534 (insert "$$")
yuuji@0 535 (forward-char -1)
yuuji@0 536 )
yuuji@0 537
yuuji@0 538 (defun YaTeX-insert-string (s)
yuuji@0 539 (insert s)
yuuji@0 540 )
yuuji@0 541
yuuji@0 542 (defun YaTeX-version ()
yuuji@0 543 "Return string of the version of running YaTeX."
yuuji@0 544 (interactive)
yuuji@0 545 (message
yuuji@1 546 (concat "Yet Another TeX mode u–ì’¹v Revision "
yuuji@0 547 YaTeX-revision-number))
yuuji@0 548 )
yuuji@0 549
yuuji@0 550 (defun YaTeX-compile-sentinel (proc mes)
yuuji@0 551 (cond ((null (buffer-name (process-buffer proc)))
yuuji@0 552 ;; buffer killed
yuuji@0 553 (set-process-buffer proc nil))
yuuji@0 554 ((memq (process-status proc) '(signal exit))
yuuji@0 555 (let* ((obuf (current-buffer)))
yuuji@0 556 ;; save-excursion isn't the right thing if
yuuji@0 557 ;; process-buffer is current-buffer
yuuji@0 558 (unwind-protect
yuuji@0 559 (progn
yuuji@0 560 ;; Write something in *compilation* and hack its mode line
yuuji@0 561 (set-buffer (process-buffer proc))
yuuji@0 562 (goto-char (point-max))
yuuji@0 563 (insert ?\n "jlatex compilation " mes)
yuuji@0 564 (forward-char -1)
yuuji@0 565 (insert " at "
yuuji@0 566 (substring (current-time-string) 0 -5))
yuuji@0 567 (insert "\n * Hit any key to return * ")
yuuji@0 568 (forward-char 1)
yuuji@0 569 (setq mode-line-process
yuuji@0 570 (concat ": "
yuuji@0 571 (symbol-name (process-status proc))))
yuuji@0 572 ;; If buffer and mode line will show that the process
yuuji@0 573 ;; is dead, we can delete it now. Otherwise it
yuuji@0 574 ;; will stay around until M-x list-processes.
yuuji@0 575 (delete-process proc)
yuuji@0 576 )
yuuji@0 577 (setq YaTeX-compilation-process nil)
yuuji@0 578 ;; Force mode line redisplay soon
yuuji@0 579 (set-buffer-modified-p (buffer-modified-p))
yuuji@0 580 )
yuuji@0 581 (set-buffer obuf)
yuuji@0 582 )))
yuuji@0 583 )
yuuji@0 584
yuuji@0 585 (defvar YaTeX-compilation-process nil
yuuji@0 586 "Process identifier for jlatex"
yuuji@0 587 )
yuuji@0 588
yuuji@0 589 (defun YaTeX-compile ()
yuuji@0 590 "Execute jlatex (or other) to LaTeX compile."
yuuji@0 591 (interactive)
yuuji@0 592 (if YaTeX-compilation-process
yuuji@0 593 (if (eq (process-status YaTeX-compilation-process) 'run)
yuuji@0 594 (progn (interrupt-process YaTeX-compilation-process)
yuuji@0 595 (sit-for 1)
yuuji@0 596 (delete-process YaTeX-compilation-process))
yuuji@0 597 nil) nil)
yuuji@0 598 ; (compile1 (concat tex-command " " (buffer-name))
yuuji@0 599 ; "TeX error" "*TeX compilation*")
yuuji@0 600 (setq YaTeX-compilation-process nil)
yuuji@0 601 (if (eq system-type 'ms-dos) ;if MS-DOS
yuuji@0 602 (with-output-to-temp-buffer "*YaTeX-compilation*"
yuuji@0 603 (message (concat "Compiling " (buffer-name) "..."))
yuuji@1 604 (YaTeX-put-nonstopmode)
yuuji@1 605 (basic-save-buffer)
yuuji@1 606 (call-process shell-file-name
yuuji@1 607 nil
yuuji@1 608 "*YaTeX-compilation*" nil
yuuji@1 609 "/c" (YaTeX-get-latex-command))
yuuji@1 610 ;;;"/c " tex-command (buffer-name) )
yuuji@1 611 (YaTeX-remove-nonstopmode))
yuuji@0 612 (setq YaTeX-compilation-process ;if UNIX
yuuji@0 613 (with-output-to-temp-buffer "*YaTeX-compilation*"
yuuji@1 614 (basic-save-buffer)
yuuji@0 615 (start-process "LaTeX" "*YaTeX-compilation*" shell-file-name "-c"
yuuji@1 616 (YaTeX-get-latex-command))
yuuji@1 617 ;;;tex-command (buffer-name) "")
yuuji@0 618 ))
yuuji@0 619 (set-process-sentinel YaTeX-compilation-process 'YaTeX-compile-sentinel))
yuuji@0 620 (setq current-TeX-buffer (buffer-name))
yuuji@0 621 (other-window 1)
yuuji@0 622 (use-local-map YaTeX-compilation-mode-map)
yuuji@0 623 (set-kanji-process-code YaTeX-kanji-code)
yuuji@0 624 (message "Type SPC to continue.")
yuuji@0 625 (goto-char (point-max))
yuuji@0 626 (sit-for 30)
yuuji@0 627 (read-char) ;hit any key
yuuji@0 628 (other-window -1)
yuuji@0 629 )
yuuji@0 630
yuuji@0 631 (defun YaTeX-preview (preview-command preview-file)
yuuji@0 632 "Execute xdvi (or other) to tex-preview."
yuuji@0 633 (interactive
yuuji@0 634 (list (read-string "Preview command: " dvi2-command)
yuuji@0 635 (read-string "Prefiew file[.dvi]: "
yuuji@0 636 (substring (buffer-name) 0 -4)
yuuji@0 637 )))
yuuji@0 638 (setq dvi2-command preview-command)
yuuji@0 639 (with-output-to-temp-buffer "*dvi-preview*"
yuuji@0 640 (if (eq system-type 'ms-dos)
yuuji@0 641 (progn (send-string-to-terminal "\e[2J") ;if MS-DOS
yuuji@0 642 (call-process shell-file-name "con" "*dvi-preview*" nil
yuuji@0 643 "/c " dvi2-command preview-file)
yuuji@0 644 (redraw-display))
yuuji@0 645 (start-process "xdvi" "*dvi-preview*" shell-file-name "-c"
yuuji@0 646 (concat dvi2-command " " preview-file)) ;if UNIX
yuuji@0 647 (message (concat "Starting " dvi2-command " to preview " preview-file)))
yuuji@0 648 )
yuuji@0 649 )
yuuji@0 650
yuuji@0 651 (defun YaTeX-prev-error ()
yuuji@0 652 "Visit previous error. The reason why not NEXT-error is to
yuuji@0 653 avoid make confliction of line numbers by editing."
yuuji@0 654 (interactive)
yuuji@0 655 (setq cur-buf (buffer-name)
yuuji@0 656 YaTeX-error-line nil)
yuuji@0 657 (if (null (get-buffer "*YaTeX-compilation*"))
yuuji@0 658 (message "There is no output buffer of compilation.")
yuuji@0 659 (pop-to-buffer "*YaTeX-compilation*")
yuuji@0 660 (if (eq system-type 'ms-dos)
yuuji@0 661 (if (search-backward latex-dos-emergency-message nil t)
yuuji@0 662 (progn (goto-char (point-max))
yuuji@0 663 (setq error-regexp latex-error-regexp))
yuuji@0 664 (beginning-of-line)
yuuji@0 665 (forward-char -1)
yuuji@0 666 (setq error-regexp latex-warning-regexp))
yuuji@0 667 (if YaTeX-compilation-process ; if jlatex on UNIX
yuuji@0 668 (if (eq (process-status YaTeX-compilation-process) 'run)
yuuji@0 669 (progn
yuuji@0 670 (goto-char (point-max))
yuuji@0 671 (setq error-regexp latex-error-regexp)))
yuuji@0 672 (beginning-of-line)
yuuji@0 673 (setq error-regexp latex-warning-regexp)))
yuuji@0 674 (if (re-search-backward error-regexp nil t)
yuuji@0 675 (save-restriction
yuuji@0 676 (set-mark-command nil)
yuuji@0 677 (end-of-line)
yuuji@0 678 (narrow-to-region (point) (mark))
yuuji@0 679 (goto-char (point-min))
yuuji@0 680 (re-search-forward "[0-9]")
yuuji@0 681 (forward-char -1)
yuuji@0 682 (set-mark (point))
yuuji@1 683 (skip-chars-forward "0-9")
yuuji@0 684 (narrow-to-region (point) (mark))
yuuji@0 685 (goto-char (point-min))
yuuji@0 686 (setq YaTeX-error-line (read (current-buffer))))
yuuji@0 687 (message "No more error on %s" cur-buf)
yuuji@0 688 (ding)
yuuji@0 689 )
yuuji@0 690 (other-window -1)
yuuji@0 691 (switch-to-buffer cur-buf)
yuuji@0 692 (if (null YaTeX-error-line)
yuuji@0 693 nil
yuuji@0 694 (goto-line YaTeX-error-line)
yuuji@0 695 (message "latex error or warning at line: %d" YaTeX-error-line)
yuuji@0 696 (other-window 1)
yuuji@0 697 (skip-chars-backward "[0-9]")
yuuji@0 698 (recenter (/ (window-height) 2))
yuuji@0 699 (sit-for 3)
yuuji@0 700 (forward-line -1)
yuuji@0 701 (other-window -1)
yuuji@0 702 ))
yuuji@0 703 )
yuuji@0 704
yuuji@0 705 (defun YaTeX-jump-error-line ()
yuuji@0 706 "Jump corresponding line on latex command's error message."
yuuji@0 707 (interactive)
yuuji@0 708 (let ((end (progn (end-of-line) (point)))
yuuji@0 709 (begin (progn (beginning-of-line)(point))))
yuuji@0 710 (if (null (re-search-forward "l[ ines]*\\.*[1-9][0-9]*" end t))
yuuji@0 711 (message "No line number expression")
yuuji@0 712 (goto-char (match-beginning 0))
yuuji@0 713 (re-search-forward "[1-9][0-9]*" end t)
yuuji@0 714 (save-restriction
yuuji@0 715 (narrow-to-region (match-beginning 0) (match-end 0))
yuuji@0 716 (goto-char (point-min))
yuuji@0 717 (let ((error-line (read (current-buffer))))
yuuji@0 718 (other-window -1)
yuuji@0 719 (switch-to-buffer current-TeX-buffer)
yuuji@0 720 (goto-line error-line)))))
yuuji@0 721 )
yuuji@0 722
yuuji@0 723 (defun YaTeX-view-error ()
yuuji@0 724 (interactive)
yuuji@0 725 (other-window 1)
yuuji@0 726 (goto-char (point-max))
yuuji@0 727 (other-window -1)
yuuji@0 728 )
yuuji@0 729
yuuji@1 730 (defun YaTeX-put-nonstopmode ()
yuuji@1 731 (if (boundp 'YaTeX-need-nonstop)
yuuji@1 732 (if (re-search-backward "\\nonstopmode{}" (point-min) t)
yuuji@1 733 nil ;if already written in text then do nothing
yuuji@1 734 (save-excursion
yuuji@1 735 (goto-char (point-min))
yuuji@1 736 (insert "\\nonstopmode{}%_YaTeX_%\n")))
yuuji@1 737 )
yuuji@1 738 )
yuuji@1 739
yuuji@1 740 (defun YaTeX-remove-nonstopmode ()
yuuji@1 741 (if (boundp 'YaTeX-need-nonstop) ;for speed
yuuji@1 742 (save-excursion
yuuji@1 743 (goto-char (point-min))
yuuji@1 744 (forward-line 1)
yuuji@1 745 (narrow-to-region (point-min) (point))
yuuji@1 746 (goto-char (point-min))
yuuji@1 747 (delete-matching-lines "^\\\\nonstopmode\\{\\}%_YaTeX_%$")
yuuji@1 748 (widen)))
yuuji@1 749 )
yuuji@1 750
yuuji@1 751 (defun YaTeX-get-latex-command ()
yuuji@1 752 "Specify the latex-command name and its argument.
yuuji@1 753 If there is a line which begins by string: \"%#!\", the following
yuuji@1 754 strings are assumed to be the latex-command and arguments. The
yuuji@1 755 default value of latex-command is:
yuuji@1 756 tex-command (buffer-name)
yuuji@1 757 and if you write \"%#!jlatex\" in the beginning of certain line.
yuuji@1 758 \"jlatex \" (buffer-name)
yuuji@1 759 will be the latex-command,
yuuji@1 760 and you write \"%#!jlatex main.tex\"
yuuji@1 761 \"jlatex main.tex\"
yuuji@1 762 will be given to the shell."
yuuji@1 763 (let*
yuuji@1 764 ((default-command
yuuji@1 765 (concat tex-command " " (buffer-name)))) ;default value
yuuji@1 766 (save-excursion
yuuji@1 767 (goto-char (point-min))
yuuji@1 768 (if (null (re-search-forward "^%#!" (point-max) t))
yuuji@1 769 default-command
yuuji@1 770 (skip-chars-forward "%#! ")
yuuji@1 771 (if (eolp)
yuuji@1 772 default-command
yuuji@1 773 (let ((s (point)))
yuuji@1 774 (skip-chars-forward "A-z") ;Skip command name
yuuji@1 775 ;(setq YaTeX-latex-command (buffer-substring s (point)))
yuuji@1 776 (if (eolp) ;Only change command name
yuuji@1 777 (concat (buffer-substring s (point)) " " (buffer-name))
yuuji@1 778 (end-of-line) ;Change entire command name
yuuji@1 779 (buffer-substring s (point)) ;including arguments.
yuuji@1 780 ))
yuuji@1 781 ))))
yuuji@1 782 )
yuuji@1 783
yuuji@0 784 (defun YaTeX-read-user-completion-table ()
yuuji@0 785 "Append user completion table of LaTeX word"
yuuji@0 786 (message "Loading personal completion table")
yuuji@0 787 (let ((user-table (expand-file-name YaTeX-user-completion-table)))
yuuji@0 788 (if (file-exists-p user-table)
yuuji@0 789 (load-file user-table)
yuuji@0 790 (message "Personal completion table not found."))
yuuji@0 791 ))
yuuji@0 792
yuuji@0 793 (defun YaTeX-save-table ()
yuuji@0 794 "Save personal completion table as dictionary."
yuuji@0 795 (interactive)
yuuji@0 796 (message "Saving user table in %s" YaTeX-user-completion-table)
yuuji@0 797 (find-file (expand-file-name YaTeX-user-completion-table))
yuuji@0 798 (erase-buffer)
yuuji@0 799 ; (prin1-to-string user-section-table)
yuuji@0 800 (insert "(setq user-section-table '(\n")
yuuji@0 801 (mapcar '(lambda (s)
yuuji@0 802 (insert (prin1-to-string s))
yuuji@0 803 (insert "\n"))
yuuji@0 804 user-section-table)
yuuji@0 805 (insert "))\n\n")
yuuji@0 806
yuuji@0 807 (insert "(setq user-article-table '(\n")
yuuji@0 808 (mapcar '(lambda (s)
yuuji@0 809 (insert (prin1-to-string s))
yuuji@0 810 (insert "\n"))
yuuji@0 811 user-article-table)
yuuji@0 812 (insert "))\n\n")
yuuji@0 813
yuuji@0 814 (insert "(setq user-env-table '(\n")
yuuji@0 815 (mapcar '(lambda (s)
yuuji@0 816 (insert (prin1-to-string s))
yuuji@0 817 (insert "\n"))
yuuji@0 818 user-env-table)
yuuji@0 819 (insert "))\n\n")
yuuji@0 820
yuuji@0 821 (insert "(setq user-fontsize-table '(\n")
yuuji@0 822 (mapcar '(lambda (s)
yuuji@0 823 (insert (prin1-to-string s))
yuuji@0 824 (insert "\n"))
yuuji@0 825 user-fontsize-table)
yuuji@0 826 (insert "))\n\n")
yuuji@0 827
yuuji@0 828 (insert "(setq user-singlecmd-table '(\n")
yuuji@0 829 (mapcar '(lambda (s)
yuuji@0 830 (insert (prin1-to-string s))
yuuji@0 831 (insert "\n"))
yuuji@0 832 user-singlecmd-table)
yuuji@0 833 (insert "))\n")
yuuji@0 834
yuuji@0 835 (basic-save-buffer)
yuuji@0 836 (kill-buffer (current-buffer))
yuuji@0 837 (message "")
yuuji@0 838 )
yuuji@0 839
yuuji@0 840 (defun append-to-hook (hook hook-list)
yuuji@0 841 "Add hook-list to certain emacs's hook correctly.
yuuji@0 842 Argument hook-list is the list of function int the form to be called
yuuji@0 843 Call this function with argument as next example,
yuuji@0 844 (append-to-hook '((ding))) ;If one function to add.
yuuji@0 845 (append-to-hook '((func1)(func2 arg)))."
yuuji@0 846 (if (null (eval hook)) ;Not defined
yuuji@0 847 (set hook
yuuji@0 848 (append '(lambda ()) hook-list))
yuuji@0 849 (if (listp (eval hook))
yuuji@0 850 (if (eq (car (eval hook)) 'lambda) ;'(lambda () ....)
yuuji@0 851 (set hook
yuuji@0 852 (append (eval hook) hook-list))
yuuji@0 853 (if (eq hook 'kill-emacs-hook) ;'(hook1 hook2 ...)
yuuji@0 854 (progn ; this format is not
yuuji@0 855 (ding) ; for kill-emacs-hook
yuuji@0 856 (message
yuuji@0 857 "Caution!! you have wrong format of kill-emacs-hook"))
yuuji@0 858 (while (not (null hook-list))
yuuji@0 859 (set hook
yuuji@0 860 (append (eval hook) (car hook-list)))
yuuji@0 861 (setq hook-list (cdr hook-list))))
yuuji@0 862 )
yuuji@0 863 (set hook ;'hook
yuuji@0 864 (append '(lambda ())
yuuji@0 865 (cons (list (eval hook)) hook-list)))))
yuuji@0 866 )
yuuji@0 867 (append-to-hook 'kill-emacs-hook '((YaTeX-save-table)))
yuuji@0 868
yuuji@0 869 ;--------------------------------- History ---------------------------------
yuuji@0 870 ; Rev. | Date | Contents
yuuji@0 871 ;------+----------+---------------------------------------------------------
yuuji@0 872 ; 1.00 | 91/ 6/13 | Initial version.
yuuji@0 873 ; | | Auto compilation & preview.
yuuji@0 874 ; | | \section{}-type and \begin{}\end{}-type completion.
yuuji@0 875 ; 1.01 | 91/ 6/14 | Add {\large ..} type completion (prefix+l).
yuuji@0 876 ; 1.10 | 6/21 | Add learning feature of completion.
yuuji@0 877 ; 1.11 | 6/27 | Simplify function begin-document etc. using lambda.
yuuji@0 878 ; 1.12 | 7/ 6 | Modify YaTeX-make-section, show section-name.
yuuji@0 879 ; 1.13 | 12/ 4 | Delete blank lines in make begin/end environment.
yuuji@0 880 ; 1.20 | 12/ 5 | Saving learned completion into user file.
yuuji@0 881 ; 1.21 | 12/ 6 | Add \maketitle type completion (prefix+m).
yuuji@0 882 ; 1.22 | 12/30 | Port yatex.el to DOS(Demacs).
yuuji@0 883 ; 1.23 | 92/ 1/ 8 | Enable latex and preview command on DOS.
yuuji@0 884 ; 1.24 | 1/ 9 | Add YaTeX-save-table to kill-emacs-hook automatically.
yuuji@0 885 ; 1.25 | 1/16 | YaTeX-do-completion (prefix+SPC) and argument
yuuji@0 886 ; | | acceptable YaTeX-make-section work. Put region into
yuuji@0 887 ; | | \begin...\end by calling YaTeX-make-begin-end with ARG.
yuuji@0 888 ; | | append-kill-emacs-hook was revised to append-to-hook.
yuuji@0 889 ; 1.26 | 1/18 | Region mode is added to {\large }. Default fontsize.
yuuji@0 890 ; 1.27 | 1/21 | Default name on completing-read,
yuuji@1 891 ; 1.28 | 7/ 2 | Add \nonstopmode{} automatically on DOS.
yuuji@1 892 ; | 7/20 | %#! usage to specify latex command and its arguments.
yuuji@0 893 ;------+----------+---------------------------------------------------------
yuuji@0 894 ;
yuuji@0 895 ;----------------------------- End of yatex.el -----------------------------