|
Packit |
f2bd10 |
;;; latexinfo.el - Support for LaTeXinfo files.
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
;; Copyright (C) 1993 Free Software Foundation, Inc.
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
;; Author: Marc Gemis <makke@wins.uia.ac.be>
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
;; This program is free software; you can redistribute it and/or modify
|
|
Packit |
f2bd10 |
;; it under the terms of the GNU General Public License as published by
|
|
Packit |
f2bd10 |
;; the Free Software Foundation; either version 3, or (at your option)
|
|
Packit |
f2bd10 |
;; any later version.
|
|
Packit |
f2bd10 |
;;
|
|
Packit |
f2bd10 |
;; This program is distributed in the hope that it will be useful,
|
|
Packit |
f2bd10 |
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
f2bd10 |
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit |
f2bd10 |
;; GNU General Public License for more details.
|
|
Packit |
f2bd10 |
;;
|
|
Packit |
f2bd10 |
;; You should have received a copy of the GNU General Public License
|
|
Packit |
f2bd10 |
;; along with this program; if not, write to the Free Software
|
|
Packit |
f2bd10 |
;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
;;; Code:
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
;;; LaTeXinfo mode
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
(defvar TeX-latexinfo-node-regexp
|
|
Packit |
f2bd10 |
'("\\\\node[ \t]+\\([^,\n\r%]+\\)" 1 TeX-auto-label)
|
|
Packit |
f2bd10 |
"Matches LaTeXinfo \\node commands, only current node will be found.
|
|
Packit |
f2bd10 |
We ignore next, previous and up fields.")
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
(defvar LaTeXinfo-mode nil
|
|
Packit |
f2bd10 |
"Non-nil means LaTeXinfo minor mode is active.")
|
|
Packit |
f2bd10 |
(make-variable-buffer-local 'LaTeXinfo-mode)
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
(defvar LaTeXinfo-mode-map nil
|
|
Packit |
f2bd10 |
"Keymap containing LaTeXinfo commands.")
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
(if LaTeXinfo-mode-map
|
|
Packit |
f2bd10 |
()
|
|
Packit |
f2bd10 |
(setq LaTeXinfo-mode-map (make-sparse-keymap))
|
|
Packit |
f2bd10 |
(define-key LaTeXinfo-mode-map "\C-c\C-u\C-b" 'latexinfo-format-buffer)
|
|
Packit |
f2bd10 |
(define-key LaTeXinfo-mode-map "\C-c\C-u\C-r" 'latexinfo-format-region)
|
|
Packit |
f2bd10 |
(define-key LaTeXinfo-mode-map "\C-c\C-u\C-s" 'latexinfo-show-structure)
|
|
Packit |
f2bd10 |
(define-key LaTeXinfo-mode-map "\C-c\C-ud" 'makke:latexinfo-delete-structure)
|
|
Packit |
f2bd10 |
(define-key LaTeXinfo-mode-map "\C-c\C-ug" 'latexinfo-goto-node)
|
|
Packit |
f2bd10 |
(define-key LaTeXinfo-mode-map "\C-c\C-ui" 'makke:latexinfo-structure))
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
(or (assq 'LaTeXinfo-mode minor-mode-map-alist)
|
|
Packit |
f2bd10 |
(setq minor-mode-map-alist
|
|
Packit |
f2bd10 |
(cons (cons 'LaTeXinfo-mode LaTeXinfo-mode-map)
|
|
Packit |
f2bd10 |
minor-mode-map-alist)))
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
(defun TeX-arg-latexinfo-index (optional &optional prompt)
|
|
Packit |
f2bd10 |
"Prompt for a LaTeXinfo index type with completion."
|
|
Packit |
f2bd10 |
(TeX-argument-insert
|
|
Packit |
f2bd10 |
(completing-read (TeX-argument-prompt optional prompt "Index")
|
|
Packit |
f2bd10 |
'(("cp") ("vr") ("fn") ("tp") ("pg") ("ky"))
|
|
Packit |
f2bd10 |
nil t)
|
|
Packit |
f2bd10 |
optional))
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
(defun LaTeX-item-latexinfo-menu ()
|
|
Packit |
f2bd10 |
"Insert a new menu item"
|
|
Packit |
f2bd10 |
(insert "* ::")
|
|
Packit |
f2bd10 |
(backward-char 2))
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
(defun latexinfo-goto-node () ; temporarily here, later in latexinfo-upd.el ??
|
|
Packit |
f2bd10 |
"Place pointer on the node given by the user, read node with completion
|
|
Packit |
f2bd10 |
This fails when the user types in the label of something else"
|
|
Packit |
f2bd10 |
(interactive)
|
|
Packit |
f2bd10 |
(let ((node-name (completing-read "Goto Node: " (LaTeX-label-list))))
|
|
Packit |
f2bd10 |
(goto-char (point-min))
|
|
Packit |
f2bd10 |
(if (re-search-forward
|
|
Packit |
f2bd10 |
(concat
|
|
Packit |
f2bd10 |
TeX-esc "node[ \\t]+" node-name ","
|
|
Packit |
f2bd10 |
"\\|"
|
|
Packit |
f2bd10 |
TeX-esc "label{" LaTeX-section-label node-name
|
|
Packit |
f2bd10 |
"\\|"
|
|
Packit |
f2bd10 |
TeX-esc "label{" node-name
|
|
Packit |
f2bd10 |
)
|
|
Packit |
f2bd10 |
(point-max) t)
|
|
Packit |
f2bd10 |
(beginning-of-line 1)
|
|
Packit |
f2bd10 |
(error "No such node"))))
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
;;; Hook
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
(TeX-add-style-hook "latexinfo"
|
|
Packit |
f2bd10 |
(function
|
|
Packit |
f2bd10 |
(lambda ()
|
|
Packit |
f2bd10 |
(require 'latexinfo)
|
|
Packit |
f2bd10 |
(require 'latexinfo-structure)
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
(require 'min-map)
|
|
Packit |
f2bd10 |
(setq LaTeXinfo-mode t)
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
(TeX-auto-add-regexp TeX-latexinfo-node-regexp)
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
(TeX-add-symbols
|
|
Packit |
f2bd10 |
'("node"
|
|
Packit |
f2bd10 |
(TeX-arg-literal " ")
|
|
Packit |
f2bd10 |
(TeX-arg-free TeX-arg-define-label "Node name")
|
|
Packit |
f2bd10 |
(TeX-arg-literal ", ")
|
|
Packit |
f2bd10 |
(TeX-arg-free TeX-arg-ref "Next node")
|
|
Packit |
f2bd10 |
(TeX-arg-literal ", ")
|
|
Packit |
f2bd10 |
(TeX-arg-free TeX-arg-ref "Previous node")
|
|
Packit |
f2bd10 |
(TeX-arg-literal ", ")
|
|
Packit |
f2bd10 |
(TeX-arg-free TeX-arg-ref "Up node"))
|
|
Packit |
f2bd10 |
'("setfilename" TeX-arg-file)
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
'("var" t)
|
|
Packit |
f2bd10 |
'("dfn" t)
|
|
Packit |
f2bd10 |
'("emph" t)
|
|
Packit |
f2bd10 |
'("kbd" t)
|
|
Packit |
f2bd10 |
'("code" t)
|
|
Packit |
f2bd10 |
'("samp" t)
|
|
Packit |
f2bd10 |
'("key" t)
|
|
Packit |
f2bd10 |
'("ctrl" t)
|
|
Packit |
f2bd10 |
'("file" t)
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
'("comment"
|
|
Packit |
f2bd10 |
(TeX-arg-literal " ")
|
|
Packit |
f2bd10 |
(TeX-arg-free "Comment"))
|
|
Packit |
f2bd10 |
'("c"
|
|
Packit |
f2bd10 |
(TeX-arg-literal " ")
|
|
Packit |
f2bd10 |
(TeX-arg-free "Comment"))
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
'("cindex" t)
|
|
Packit |
f2bd10 |
'("cpsubindex" 2)
|
|
Packit |
f2bd10 |
'("cpindexbold" t)
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
'("newindex" TeX-arg-latexinfo-index)
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
'("br" nil)
|
|
Packit |
f2bd10 |
'("w" "Text")
|
|
Packit |
f2bd10 |
'("dots" nil)
|
|
Packit |
f2bd10 |
'("refill" nil)
|
|
Packit |
f2bd10 |
'("bullet" nil)
|
|
Packit |
f2bd10 |
'("copyright" nil)
|
|
Packit |
f2bd10 |
'("sp" nil)
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
'("xref" TeX-arg-ref)
|
|
Packit |
f2bd10 |
'("pxref" TeX-arg-ref)
|
|
Packit |
f2bd10 |
'("inforef"
|
|
Packit |
f2bd10 |
(TeX-arg-literal "{")
|
|
Packit |
f2bd10 |
(TeX-arg-free "Name of node")
|
|
Packit |
f2bd10 |
(TeX-arg-literal ", ")
|
|
Packit |
f2bd10 |
(TeX-arg-free "Name for note")
|
|
Packit |
f2bd10 |
(TeX-arg-literal ", ")
|
|
Packit |
f2bd10 |
(TeX-arg-free TeX-arg-file "Info file")
|
|
Packit |
f2bd10 |
(TeX-arg-literal "}")))
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
(LaTeX-add-environments "menu" "tex" "ignore" "ifinfo" "iftex"
|
|
Packit |
f2bd10 |
"example" "same" "display" "format")
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
; Menu's have a special kind of items
|
|
Packit |
f2bd10 |
(make-local-variable 'LaTeX-item-list)
|
|
Packit |
f2bd10 |
(setq LaTeX-item-list (cons '("menu" . LaTeX-item-latexinfo-menu)
|
|
Packit |
f2bd10 |
LaTeX-item-list))
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
(make-local-variable 'TeX-font-list)
|
|
Packit |
f2bd10 |
(setq TeX-font-list
|
|
Packit |
f2bd10 |
(list (list ?\C-b (concat TeX-esc "b{") "}")
|
|
Packit |
f2bd10 |
(list ?\C-c (concat TeX-esc "sc{") "}")
|
|
Packit |
f2bd10 |
(list ?\C-e (concat TeX-esc "emph{") "}")
|
|
Packit |
f2bd10 |
(list ?\C-i (concat TeX-esc "i{") "}")
|
|
Packit |
f2bd10 |
(list ?\C-r (concat TeX-esc "r{") "}")
|
|
Packit |
f2bd10 |
(list ?\C-s (concat TeX-esc "samp{") "}")
|
|
Packit |
f2bd10 |
(list ?\C-t (concat TeX-esc "t{") "}")
|
|
Packit |
f2bd10 |
(list ?s (concat TeX-esc "strong{") "}")
|
|
Packit |
f2bd10 |
(list ?\C-f (concat TeX-esc "file{") "}")
|
|
Packit |
f2bd10 |
(list ?\C-d (concat TeX-esc "dfn{") "}")
|
|
Packit |
f2bd10 |
(list ?\C-v (concat TeX-esc "var{") "}")
|
|
Packit |
f2bd10 |
(list ?k (concat TeX-esc "key{") "}")
|
|
Packit |
f2bd10 |
(list ?\C-k (concat TeX-esc "kbd{") "}")
|
|
Packit |
f2bd10 |
(list ?c (concat TeX-esc "code{") "}")
|
|
Packit |
f2bd10 |
(list ?C (concat TeX-esc "cite{") "}")))
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
;; need the following stuff to let xref and pxref work
|
|
Packit |
f2bd10 |
(make-local-variable 'LaTeX-section-label)
|
|
Packit |
f2bd10 |
(setq LaTeX-section-label "")))
|
|
Packit |
f2bd10 |
LaTeX-dialect)
|
|
Packit |
f2bd10 |
|
|
Packit |
f2bd10 |
;;; latexinfo.el ends here
|