# HG changeset patch # User Stefan Monnier # Date 1096833203 0 # Node ID 8d5af2441eda9ab51c28cccbdacbdaf66c8eada7 # Parent b2a68db48f923e446c603866ab854f91c20ac2cd (tex-dvi-view-command): Use `yap' on w32. (tex-font-lock-keywords-1): Add url and nolinkurl for args with `_'. (latex-block-args-alist): Add minipage and picture. (latex-block-body-alist): Use reftex-label if enabled. (latex-insert-block): Don't insert a \n if not necessary. (tex-compile-commands): Make sure dvips doesn't send to printer. (tex-compile-default): Handle the case where no executable is found. (latex-noindent-environments): New var. (latex-find-indent): Use it. Take an empty line as an arg-breaker. If tex-indent-allhanging is non-nil, make sure we only align for macros at beginning of line. diff -r b2a68db48f92 -r 8d5af2441eda lisp/ChangeLog --- a/lisp/ChangeLog Sun Oct 03 17:40:07 2004 +0000 +++ b/lisp/ChangeLog Sun Oct 03 19:53:23 2004 +0000 @@ -1,7 +1,21 @@ +2004-10-03 Stefan + + * textmodes/tex-mode.el (tex-dvi-view-command): Use `yap' on w32. + (tex-font-lock-keywords-1): Add url and nolinkurl for args with `_'. + (latex-block-args-alist): Add minipage and picture. + (latex-block-body-alist): Use reftex-label if enabled. + (latex-insert-block): Don't insert a \n if not necessary. + (tex-compile-commands): Make sure dvips doesn't send to printer. + (tex-compile-default): Handle the case where no executable is found. + (latex-noindent-environments): New var. + (latex-find-indent): Use it. Take an empty line as an arg-breaker. + If tex-indent-allhanging is non-nil, make sure we only align for macros + at beginning of line. + 2004-10-03 Daniel Pfeiffer * newcomment.el (comment-beginning): Doc fix and don't choke on - unset `comment-end-skip' when at beginning of comment + unset `comment-end-skip' when at beginning of comment. 2004-10-02 Dan Nicolaescu @@ -11,8 +25,7 @@ the end of the line. Fix scroll down. Add comments. (term-handle-ansi-escape): Don't exceed terminal width when moving right. - (term-scroll-region): Move the cursor after setting the scroll - region. + (term-scroll-region): Move the cursor after setting the scroll region. 2004-10-01 Luc Teirlinck @@ -38,8 +51,8 @@ 2004-09-29 Luc Teirlinck - * textmodes/paragraphs.el (forward-paragraph): Avoid - args-out-of-range error when point winds up at the beginning of + * textmodes/paragraphs.el (forward-paragraph): + Avoid args-out-of-range error when point winds up at the beginning of the buffer and hard newlines are enabled. * newcomment.el (comment-multi-line): Doc fix. diff -r b2a68db48f92 -r 8d5af2441eda lisp/textmodes/tex-mode.el --- a/lisp/textmodes/tex-mode.el Sun Oct 03 17:40:07 2004 +0000 +++ b/lisp/textmodes/tex-mode.el Sun Oct 03 19:53:23 2004 +0000 @@ -1,7 +1,7 @@ ;;; tex-mode.el --- TeX, LaTeX, and SliTeX mode commands -*- coding: utf-8 -*- -;; Copyright (C) 1985,86,89,92,94,95,96,97,98,1999,2002,03,2004 -;; Free Software Foundation, Inc. +;; Copyright (C) 1985, 1986, 1989, 1992, 1994, 1995, 1996, 1997, 1998, 1999, +;; 2002, 2003, 2004 Free Software Foundation, Inc. ;; Maintainer: FSF ;; Keywords: tex @@ -196,7 +196,11 @@ :group 'tex-view) ;;;###autoload -(defcustom tex-dvi-view-command '(if (eq window-system 'x) "xdvi" "dvi2tty * | cat -s") +(defcustom tex-dvi-view-command + '(cond + ((eq window-system 'x) "xdvi") + ((eq window-system 'w32) "yap") + (t "dvi2tty * | cat -s")) "*Command used by \\[tex-view] to display a `.dvi' file. If it is a string, that specifies the command directly. If this string contains an asterisk (`*'), that is replaced by the file name; @@ -453,7 +457,8 @@ '("input" "include" "includeonly" "bibliography" "epsfig" "psfig" "epsf" "nofiles" "usepackage" "documentstyle" "documentclass" "verbatiminput" - "includegraphics" "includegraphics*") + "includegraphics" "includegraphics*" + "url" "nolinkurl") t)) ;; Miscellany. (slash "\\\\") @@ -771,8 +776,10 @@ "part" "chapter" "newcommand" "renewcommand") 'words) "\\|NeedsTeXFormat{LaTeX"))) - (if (looking-at - "document\\(style\\|class\\)\\(\\[.*\\]\\)?{slides}") + (if (and (looking-at + "document\\(style\\|class\\)\\(\\[.*\\]\\)?{slides}") + ;; SliTeX is almost never used any more nowadays. + (tex-executable-exists-p slitex-run-command)) 'slitex-mode 'latex-mode) 'plain-tex-mode)))) @@ -1219,8 +1226,13 @@ (defvar latex-block-default "enumerate") (defvar latex-block-args-alist - '(("array" nil ?\{ (skeleton-read "[options]: ") ?\}) - ("tabular" nil ?\{ (skeleton-read "[options]: ") ?\})) + '(("array" nil ?\{ (skeleton-read "Format: ") ?\}) + ("tabular" nil ?\{ (skeleton-read "Format: ") ?\}) + ("minipage" nil ?\{ (skeleton-read "Size: ") ?\}) + ("picture" nil ?\( (skeleton-read "SizeX,SizeY: ") ?\)) + ;; FIXME: This is right for Prosper, but not for seminar. + ;; ("slide" nil ?\{ (skeleton-read "Title: ") ?\}) + ) "Skeleton element to use for arguments to particular environments. Every element of the list has the form (NAME . SKEL-ELEM) where NAME is the name of the environment and SKEL-ELEM is an element to use in @@ -1229,8 +1241,11 @@ (defvar latex-block-body-alist '(("enumerate" nil '(latex-insert-item) > _) ("itemize" nil '(latex-insert-item) > _) - ("table" nil "\\caption{" > - "}" > \n _) - ("figure" nil > _ \n "\\caption{" > _ "}" >)) + ("table" nil "\\caption{" > (skeleton-read "Caption: ") "}" > \n + '(if (and (boundp 'reftex-mode) reftex-mode) (reftex-label "table")) + \n _) + ("figure" nil > _ \n "\\caption{" > (skeleton-read "Caption: ") "}" > \n + '(if (and (boundp 'reftex-mode) reftex-mode) (reftex-label "table")))) "Skeleton element to use for the body of particular environments. Every element of the list has the form (NAME . SKEL-ELEM) where NAME is the name of the environment and SKEL-ELEM is an element to use in @@ -1254,7 +1269,8 @@ choice) \n "\\begin{" str "}" (cdr (assoc str latex-block-args-alist)) - > \n (or (cdr (assoc str latex-block-body-alist)) '(nil > _)) \n + > \n (or (cdr (assoc str latex-block-body-alist)) '(nil > _)) + (unless (bolp) '\n) "\\end{" str "}" > \n) (define-skeleton latex-insert-item @@ -1598,7 +1614,7 @@ ("texindex %r.??") ("dvipdfm %r" "%r.dvi" "%r.pdf") ("dvipdf %r" "%r.dvi" "%r.pdf") - ("dvips %r" "%r.dvi" "%r.ps") + ("dvips -o %r.ps %r" "%r.dvi" "%r.ps") ("ps2pdf %r.ps" "%r.ps" "%r.pdf") ("gv %r.ps &" "%r.ps") ("gv %r.pdf &" "%r.pdf") @@ -1767,7 +1783,7 @@ (not (tex-uptodate-p (format-spec out fspec))))))) (defun tex-compile-default (fspec) - "Guess a default command given the format-spec FSPEC." + "Guess a default command given the `format-spec' FSPEC." ;; TODO: Learn to do latex+dvips! (let ((cmds nil) (unchanged-in nil)) @@ -1777,6 +1793,9 @@ (if (tex-command-active-p cmd fspec) (push cmd cmds) (push (nth 1 cmd) unchanged-in)))) + ;; If no command seems to be applicable, arbitrarily pick the first one. + (unless cmds + (setq cmds (list (car tex-compile-commands)))) ;; Remove those commands whose input was considered stable for ;; some other command (typically if (t . "%.pdf") is inactive ;; then we're using pdflatex and the fact that the dvi file @@ -2261,6 +2280,7 @@ (defvar tex-indent-basic 2) (defvar tex-indent-item tex-indent-basic) (defvar tex-indent-item-re "\\\\\\(bib\\)?item\\>") +(defvar latex-noindent-environments '("document")) (defvar tex-latex-indent-syntax-table (let ((st (make-syntax-table tex-mode-syntax-table))) @@ -2311,7 +2331,6 @@ (latex-find-indent 'virtual)))) ;; Default (maybe an argument) (let ((pos (point)) - (char (char-after)) ;; Outdent \item if necessary. (indent (if (looking-at tex-indent-item-re) (- tex-indent-item) 0)) up-list-pos) @@ -2329,6 +2348,17 @@ ;; Have to indent relative to the open-paren. (goto-char up-list-pos) (if (and (not tex-indent-allhanging) + (save-excursion + ;; Make sure we're an argument to a macro and + ;; that the macro is at the beginning of a line. + (condition-case nil + (progn + (while (eq (char-syntax (char-after)) ?\() + (forward-sexp -1)) + (and (eq (char-syntax (char-after)) ?/) + (progn (skip-chars-backward " \t&") + (bolp)))) + (scan-error nil))) (> pos (progn (latex-down-list) (forward-comment (point-max)) (point)))) @@ -2336,18 +2366,24 @@ (current-column) ;; We're the first element after a hanging brace. (goto-char up-list-pos) - (+ indent tex-indent-basic (latex-find-indent 'virtual)))) + (+ (if (and (looking-at "\\\\begin *{\\([^\n}]+\\)") + (member (match-string 1) + latex-noindent-environments)) + 0 tex-indent-basic) + indent (latex-find-indent 'virtual)))) ;; We're now at the "beginning" of a line. ((not (and (not virtual) (eq (char-after) ?\\))) ;; Nothing particular here: just keep the same indentation. (+ indent (current-column))) ;; We're now looking at a macro call. - ((looking-at tex-indent-item-re) - ;; Indenting relative to an item, have to re-add the outdenting. + ((looking-at tex-indent-item-re) + ;; Indenting relative to an item, have to re-add the outdenting. (+ indent (current-column) tex-indent-item)) (t (let ((col (current-column))) - (if (or (null char) (not (eq (char-syntax char) ?\())) + (if (or (not (eq (char-syntax (or (char-after pos) ?\ )) ?\()) + ;; Can't be an arg if there's an empty line inbetween. + (save-excursion (re-search-forward "^[ \t]*$" pos t))) ;; If the first char was not an open-paren, there's ;; a risk that this is really not an argument to the ;; macro at all. @@ -2422,5 +2458,5 @@ (provide 'tex-mode) -;;; arch-tag: c0a680b1-63aa-4547-84b9-4193c29c0080 +;; arch-tag: c0a680b1-63aa-4547-84b9-4193c29c0080 ;;; tex-mode.el ends here