Blame style/latexinfo.el

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