diff lisp/auctex/tex-info.el @ 100:4be1180a9e89 r20-1b2

Import from CVS: tag r20-1b2
author cvs
date Mon, 13 Aug 2007 09:15:11 +0200
parents 4103f0995bd7
children 441bb1e64a06
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/auctex/tex-info.el	Mon Aug 13 09:15:11 2007 +0200
@@ -0,0 +1,394 @@
+;;; tex-info.el - Support for editing TeXinfo source.
+;;
+;; Maintainer: Per Abrahamsen <auc-tex@sunsite.auc.dk>
+;; Version: 9.7i
+
+;; Copyright (C) 1993, 1994, 1997 Per Abrahamsen 
+;; 
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+;; 
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;; 
+;; You should have received a copy of the GNU General Public License
+;; along with this program; if not, write to the Free Software
+;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+;;; Code:
+
+(require 'tex)
+(condition-case nil			;Lucid is not providing.
+    (require 'texinfo)
+  (error))
+
+;;; Environments:
+
+(defvar TeXinfo-environment-list
+  '(("cartouche")
+    ("defcv")
+    ("deffn") ("defivar") ("defmac")
+    ("defmethod") ("defop") ("defopt") ("defspec") ("deftp")
+    ("deftypefn") ("deftypefun") ("deftypevar") ("deftypevr")
+    ("defun") ("defvar") ("defvr") ("description") ("display")
+    ("enumerate") ("example") ("ifset") ("ifclear") ("flushleft")
+    ("flushright") ("format") ("ftable") ("iftex") ("itemize")
+    ("lisp") ("quotation") ("smallexample") ("smalllisp") ("table")
+    ("tex") ("titlepage") ("vtable")) 
+  "Alist of TeXinfo environments.")
+
+(defconst texinfo-environment-regexp
+  ;; Overwrite version from `texinfo.el'.
+  (concat "^@\\("
+	  (mapconcat 'car TeXinfo-environment-list "\\|")
+	  "\\|end\\)")
+  "Regexp for environment-like TeXinfo list commands.
+Subexpression 1 is what goes into the corresponding `@end' statement.")
+
+(defun TeXinfo-insert-environment (env)
+  "Insert TeXinfo environment ENV.
+When called interactively, prompt for an environment."
+  (interactive (list (completing-read "Environment: "
+				      TeXinfo-environment-list)))
+  (insert "@" env "\n\n@end " env "\n")
+  (if (null (cdr-safe (assoc "defcv" TeXinfo-environment-list)))
+      (forward-line -2)
+    ;; apply arguments
+    ))
+
+;;; Keymap:
+
+(defvar TeXinfo-mode-map nil
+  "Keymap for TeXinfo mode.")
+
+(if TeXinfo-mode-map
+    ()
+  (setq TeXinfo-mode-map (make-sparse-keymap))
+
+  ;; From texinfo.el
+
+  ;; bindings for updating nodes and menus
+  (define-key TeXinfo-mode-map "\C-c\C-um"      'texinfo-master-menu)
+  (define-key TeXinfo-mode-map "\C-c\C-u\C-m"   'texinfo-make-menu)
+  (define-key TeXinfo-mode-map "\C-c\C-u\C-n"   'texinfo-update-node)
+  (define-key TeXinfo-mode-map "\C-c\C-u\C-e"   'texinfo-every-node-update)
+  (define-key TeXinfo-mode-map "\C-c\C-u\C-a"   'texinfo-all-menus-update)
+
+  ;; From TeX-mode
+
+  ;; Standard
+  (define-key TeXinfo-mode-map "\177"     'backward-delete-char-untabify)
+  (define-key TeXinfo-mode-map "\C-c}"    'up-list)
+  (define-key TeXinfo-mode-map "\C-c#"    'TeX-normal-mode)
+  (define-key TeXinfo-mode-map "\C-c\C-n" 'TeX-normal-mode)
+  (define-key TeXinfo-mode-map "\C-c?"    'describe-mode)
+  
+  ;; From tex.el
+  (define-key TeXinfo-mode-map "\C-c{"    'TeX-insert-braces)
+  (define-key TeXinfo-mode-map "\C-c\C-f" 'TeX-font)
+  (define-key TeXinfo-mode-map "\C-c\C-m" 'TeX-insert-macro)
+  (define-key TeXinfo-mode-map "\e\t"     'TeX-complete-symbol) 
+
+  (define-key TeXinfo-mode-map "\C-c;"    'TeX-comment-region)
+  (define-key TeXinfo-mode-map "\C-c%"    'TeX-comment-paragraph)
+  (define-key TeXinfo-mode-map "\C-c'"    'TeX-comment-paragraph) ;*** Old way
+  (define-key TeXinfo-mode-map "\C-c:"    'TeX-un-comment-region) ;*** Old way
+  (define-key TeXinfo-mode-map "\C-c\""   'TeX-un-comment) ;*** Old way
+
+  ;; From tex-buf.el
+  (define-key TeXinfo-mode-map "\C-c\C-c" 'TeX-command-master)
+  (define-key TeXinfo-mode-map "\C-c\C-k" 'TeX-kill-job)
+  (define-key TeXinfo-mode-map "\C-c\C-l" 'TeX-recenter-output-buffer)
+  (define-key TeXinfo-mode-map "\C-c^" 'TeX-home-buffer)
+  (define-key TeXinfo-mode-map "\C-c`"    'TeX-next-error)
+  (define-key TeXinfo-mode-map "\C-c\C-w" 'TeX-toggle-debug-boxes)
+
+  ;; From tex.cpl.el
+
+  ;; Simulating LaTeX-mode
+
+  (define-key TeXinfo-mode-map "\C-c\C-e" 'TeXinfo-insert-environment)
+  (define-key TeXinfo-mode-map "\C-c\n"   'texinfo-insert-@item)
+  (define-key TeXinfo-mode-map "\C-c\C-s" 'texinfo-insert-@node)
+  (define-key TeXinfo-mode-map "\C-c]" 'texinfo-insert-@end))
+
+(easy-menu-define TeXinfo-mode-menu
+    TeXinfo-mode-map
+    "Menu used in TeXinfo mode."
+  (list "TeXinfo"
+	["Environment..." TeXinfo-insert-environment t]
+	["Node..." texinfo-insert-@node t]
+	["Macro..." TeX-insert-macro t]
+	["Complete" TeX-complete-symbol t]
+	["Item" texinfo-insert-@item t]
+	(list "Insert Font"
+	      ["Emphasize"  (TeX-font nil ?\C-e) :keys "C-c C-f C-e"]
+	      ["Bold"       (TeX-font nil ?\C-b) :keys "C-c C-f C-b"]
+	      ["Typewriter" (TeX-font nil ?\C-t) :keys "C-c C-f C-t"]
+	      ["Small Caps" (TeX-font nil ?\C-c) :keys "C-c C-f C-c"]
+	      ["Italic"     (TeX-font nil ?\C-i) :keys "C-c C-f C-i"]
+	      ["Sample"    (TeX-font nil ?\C-s) :keys "C-c C-f C-s"]
+	      ["Roman"      (TeX-font nil ?\C-r) :keys "C-c C-f C-r"])
+	(list "Change Font"
+	      ["Emphasize"  (TeX-font t ?\C-e) :keys "C-u C-c C-f C-e"]
+	      ["Bold"       (TeX-font t ?\C-b) :keys "C-u C-c C-f C-b"]
+	      ["Typewriter" (TeX-font t ?\C-t) :keys "C-u C-c C-f C-t"]
+	      ["Small Caps" (TeX-font t ?\C-c) :keys "C-u C-c C-f C-c"]
+	      ["Italic"     (TeX-font t ?\C-i) :keys "C-u C-c C-f C-i"]
+	      ["Sample"    (TeX-font t ?\C-s) :keys "C-u C-c C-f C-s"]
+	      ["Roman"      (TeX-font t ?\C-r) :keys "C-u C-c C-f C-r"])
+	"-"
+	["Save Document" TeX-save-document t]
+	["Next Error" TeX-next-error t]
+	(list "TeX Output"
+	      ["Kill Job" TeX-kill-job t]
+	      ["Debug Bad Boxes" TeX-toggle-debug-boxes
+	        :style toggle :selected TeX-debug-bad-boxes ]
+	      ["Switch to original file" TeX-home-buffer t]
+	      ["Recenter Output Buffer" TeX-recenter-output-buffer t])
+	"--"
+	["Create Master Menu" texinfo-master-menu t]
+	["Create Menu" texinfo-make-menu t]
+	["Update Node" texinfo-update-node t]
+	["Update Every Node" texinfo-every-node-update t]
+	["Update All Menus" texinfo-all-menus-update t]
+	["Uncomment Region" TeX-un-comment-region t]
+	["Comment Region" TeX-comment-region t]
+	["Switch to Master file" TeX-home-buffer t]
+	["Submit bug report" TeX-submit-bug-report t]
+	["Reset Buffer" TeX-normal-mode t]
+	["Reset AUC TeX" (TeX-normal-mode t) :keys "C-u C-c C-n"]))
+
+(easy-menu-define TeXinfo-command-menu
+    TeXinfo-mode-map
+    "Menu used in TeXinfo mode for external commands."
+  (append '("Command")
+	  (mapcar 'TeX-command-menu-entry TeX-command-list)))
+
+(defvar TeXinfo-font-list
+  '((?\C-b "@b{" "}")
+    (?\C-c "@sc{" "}")
+    (?\C-e "@emph{" "}")
+    (?\C-i "@i{" "}")
+    (?\C-r "@r{" "}")
+    (?\C-s "@samp{" "}")
+    (?\C-t "@t{" "}")
+    (?s    "@strong{" "}")
+    (?\C-f "@file{" "}")
+    (?\C-d "@dfn{" "}")
+    (?\C-v "@var{" "}")
+    (?k    "@key{" "}")
+    (?\C-k "@kbd{" "}")
+    (?c    "@code{" "}")
+    (?C    "@cite{" "}"))
+  "Font commands used in TeXinfo mode.  See `TeX-font-list'.")
+  
+;;; Mode:
+
+;;; Do not ;;;###autoload because of conflict with standard tex-mode.el.
+(defun texinfo-mode ()
+  "Major mode for editing files of input for TeXinfo.
+
+Special commands:
+\\{TeXinfo-mode-map}
+
+Entering TeXinfo mode calls the value of text-mode-hook,
+then the value of TeX-mode-hook, and then the value of
+TeXinfo-mode-hook."
+  (interactive)
+  ;; Mostly stolen from texinfo.el
+  (setq mode-name "TeXinfo")
+  (setq major-mode 'texinfo-mode)
+  (use-local-map TeXinfo-mode-map)
+  (set-syntax-table texinfo-mode-syntax-table)
+  (make-local-variable 'page-delimiter)
+  (setq page-delimiter 
+	(concat 
+	 "^@node [ \t]*[Tt]op\\|^@\\(" 
+	 texinfo-chapter-level-regexp 
+	 "\\)"))
+  (make-local-variable 'require-final-newline)
+  (setq require-final-newline t)
+  (make-local-variable 'indent-tabs-mode)
+  (setq indent-tabs-mode nil)
+  (make-local-variable 'paragraph-separate)
+  (setq paragraph-separate
+	(concat "\b\\|^@[a-zA-Z]*[ \n]\\|" paragraph-separate))
+  (make-local-variable 'paragraph-start)
+  (setq paragraph-start
+	(concat "\b\\|^@[a-zA-Z]*[ \n]\\|" paragraph-start))
+  (make-local-variable 'fill-column)
+  (setq fill-column 72)
+  (make-local-variable 'comment-start)
+  (setq comment-start "@c ")
+  (make-local-variable 'comment-start-skip)
+  (setq comment-start-skip "@c +\\|@comment +")
+  (make-local-variable 'words-include-escapes)
+  (setq words-include-escapes t)
+  (if (not (boundp 'texinfo-imenu-generic-expression))
+      ;; This was introduced in 19.30.
+      ()
+    (make-local-variable 'imenu-generic-expression)
+    (setq imenu-generic-expression texinfo-imenu-generic-expression))
+  (make-local-variable 'font-lock-defaults)
+  (setq font-lock-defaults '(texinfo-font-lock-keywords t))
+  (if (not (boundp 'texinfo-section-list))
+      ;; This was included in 19.31.
+      ()
+    (make-local-variable 'outline-regexp)
+    (setq outline-regexp 
+	  (concat "@\\("
+		  (mapconcat 'car texinfo-section-list "\\>\\|")
+		  "\\>\\)"))
+    (make-local-variable 'outline-level)
+    (setq outline-level 'texinfo-outline-level))
+  
+  ;; Mostly AUC TeX stuff
+  (easy-menu-add TeXinfo-command-menu TeXinfo-mode-map)
+  (easy-menu-add TeXinfo-mode-menu TeXinfo-mode-map)
+  (make-local-variable 'TeX-command-current)
+  (setq TeX-command-current 'TeX-command-master)
+
+  (setq TeX-default-extension "texi")
+  (make-local-variable 'TeX-esc)
+  (setq TeX-esc "@")
+
+  (make-local-variable 'TeX-auto-regexp-list)
+  (setq TeX-auto-regexp-list 'TeX-auto-empty-regexp-list)
+  (make-local-variable 'TeX-auto-update)
+  (setq TeX-auto-update t)
+
+  (setq TeX-command-default "TeX")
+  (setq TeX-header-end "%**end")
+  (setq TeX-trailer-start (regexp-quote (concat TeX-esc "bye")))
+  
+  (make-local-variable 'TeX-complete-list)
+  (setq TeX-complete-list
+	(list (list "@\\([a-zA-Z]*\\)" 1 'TeX-symbol-list nil)
+	      (list "" TeX-complete-word)))
+
+  (make-local-variable 'TeX-font-list)
+  (setq TeX-font-list TeXinfo-font-list)
+  
+  (TeX-add-symbols
+   '("appendix" "Title")
+   '("appendixsec" "Title")
+   '("appendixsection" "Title")
+   '("appendixsubsec" "Title")
+   '("appendixsubsubsec" "Title")
+   '("asis")
+   '("author" "Author")
+   '("b" "Text")
+   '("bullet")
+   '("bye")
+   '("c" "Comment")
+   '("center" "Line-of-text")
+   '("chapheading" "Title")
+   '("chapter" "Title")
+   '("cindex" "Entry")
+   '("cite" "Reference")
+   '("clear" "Flag")
+   '("code" "Sample-code")
+   '("comment" "Comment")
+   '("contents")
+   '("copyright")
+   '("defcodeindex" "Index-name")
+   '("defindex" "Index-name")
+   '("dfn" "Term")
+   '("dmn" "Dimension")
+   '("dots")
+   '("emph" "Text")
+   '("equiv")
+   '("error")
+   '("evenfooting" TeXinfo-lrc-argument-hook)
+   '("evenheading" TeXinfo-lrc-argument-hook)
+   '("everyfooting" TeXinfo-lrc-argument-hook)
+   '("everyheading" TeXinfo-lrc-argument-hook)
+   '("exdent" "Line-of-text")
+   '("expansion")
+   '("file" "Filename")
+   '("finalout")
+   '("findex" "Entry")
+   '("footnote" "Text-of-footnote")
+   '("footnotestyle" "Style")
+   '("group")
+   '("heading" "Title")
+   '("headings" "On-off-single-double")
+   '("i" "Text")
+   '("ignore")
+   '("include" "Filename")
+   '("inforef" "Node-name" "Info-file-name")
+   '("item")
+   '("itemx")
+   '("kbd" "Keyboard-characters")
+   '("key" "Key-name")
+   '("kindex" "Entry")
+   '("majorheading"  "Title")
+   '("menu")
+   '("minus")
+   '("need" "N")
+   '("node" "Name" "Next" "Previous" "Up")
+   '("noindent")
+   '("oddfooting" TeXinfo-lrc-argument-hook)
+   '("oddheading" TeXinfo-lrc-argument-hook)
+   '("page")
+   '("paragraphindent" "Indent")
+   '("pindex" "Entry")
+   '("point")
+   '("print")
+   '("printindex" "Index-name")
+   '("pxref" "Node-name")
+   '("r" "Text")
+   '("ref" "Node-name")
+   '("refill")
+   '("result")
+   '("samp" "Text")
+   '("sc" "Text")
+   '("section" "Title")
+   '("set" "Flag")
+   '("setchapternewpage" "On-off-odd")
+   '("setfilename" "Info-file-name")
+   '("settitle" "Title")
+   '("shortcontents")
+   '("smallbook")
+   '("sp" "N")
+   '("strong" "Text")
+   '("subheading" "Title")
+   '("subsection" "Title")
+   '("subsubheading" "Title")
+   '("subsubsection" "Title")
+   '("subtitle" "Title")
+   '("summarycontents")
+   '("syncodeindex" "From-index" "Into-index")
+   '("synindex" "From-index" "Into-index")
+   '("t" "Text")
+   '("TeX")
+   '("thischapter")
+   '("thischaptername")
+   '("thisfile")
+   '("thispage")
+   '("tindex" "Entry")
+   '("title" "Title")
+   '("titlefont" "Text")
+   '("titlepage")
+   '("today")
+   '("top" "Title")
+   '("unnumbered" "Title")
+   '("unnumberedsec" "Title")
+   '("unnumberedsubsec" "Title")
+   '("unnumberedsubsubsec" "Title")
+   '("value" "Flag")
+   '("var" "Metasyntactic-variable")
+   '("vindex" "Entry")
+   '("vskip" "Amount")
+   '("w" "Text"))
+  
+  (run-hooks 'text-mode-hook 'TeXinfo-mode-hook))
+  
+(provide 'tex-info)
+  
+;;; tex-info.el ends here