home *** CD-ROM | disk | FTP | other *** search
- ;;; Definition formatting: \deffn, \defun, etc
-
- ;; What definition formatting produces:
- ;;
- ;; \deffn category name args...
- ;; In Info, `Category: name ARGS'
- ;; In index: name: node. line#.
- ;;
- ;; \defvr category name
- ;; In Info, `Category: name'
- ;; In index: name: node. line#.
- ;;
- ;; \deftp category name attributes...
- ;; `category name attributes...' Note: \deftp args in lower case.
- ;; In index: name: node. line#.
- ;;
- ;; Specialized function-like or variable-like entity:
- ;;
- ;; \defun, \defmac, \defspec, \defvar, \defopt
- ;;
- ;; \defun name args In Info, `Function: name ARGS'
- ;; \defmac name args In Info, `Macro: name ARGS'
- ;; \defvar name In Info, `Variable: name'
- ;; etc.
- ;; In index: name: node. line#.
- ;;
- ;; Generalized typed-function-like or typed-variable-like entity:
- ;; \deftypefn category data-type name args...
- ;; In Info, `Category: data-type name args...'
- ;; \deftypevr category data-type name
- ;; In Info, `Category: data-type name'
- ;; In index: name: node. line#.
- ;;
- ;; Specialized typed-function-like or typed-variable-like entity:
- ;; \deftypefun data-type name args...
- ;; In Info, `Function: data-type name ARGS'
- ;; In index: name: node. line#.
- ;;
- ;; \deftypevar data-type name
- ;; In Info, `Variable: data-type name'
- ;; In index: name: node. line#. but include args after name!?
- ;;
- ;; Generalized object oriented entity:
- ;; \defop category class name args...
- ;; In Info, `Category on class: name ARG'
- ;; In index: name on class: node. line#.
- ;;
- ;; \defcv category class name
- ;; In Info, `Category of class: name'
- ;; In index: name of class: node. line#.
- ;;
- ;; Specialized object oriented entity:
- ;; \defmethod class name args...
- ;; In Info, `Method on class: name ARGS'
- ;; In index: name on class: node. line#.
- ;;
- ;; \defivar class name
- ;; In Info, `Instance variable of class: name'
- ;; In index: name of class: node. line#.
-
-
- ;;; The definition formatting functions
-
- (defun latexinfo-format-defun ()
- (latexinfo-push-stack 'defun nil)
- (setq fill-column (- fill-column 5))
- (latexinfo-format-defun-1 t))
-
- (defun latexinfo-end-defun ()
- (setq fill-column (+ fill-column 5))
- (latexinfo-discard-command)
- (let ((start (nth 1 (latexinfo-pop-stack 'defun))))
- (latexinfo-do-itemize start)
- ;; Delete extra newline inserted after header.
- (save-excursion
- (goto-char start)
- (delete-char -1))))
-
- (defun latexinfo-format-defunx ()
- (latexinfo-format-defun-1 nil))
-
- (defun latexinfo-format-defun-1 (first-p)
- (let ((parse-args (latexinfo-format-parse-defun-args))
- (command-type (get latexinfo-command-name 'latexinfo-defun-type)))
- (latexinfo-discard-command)
- ;; Delete extra newline inserted after previous header line.
- (if (not first-p)
- (delete-char -2))
- (funcall
- (get latexinfo-command-name 'latexinfo-deffn-formatting-property) parse-args)
- ;; Insert extra newline so that paragraph filling does not mess
- ;; with header line.
- (insert "\n\n")
- (rplaca (cdr (cdr (car latexinfo-stack))) (point))
- (funcall
- (get latexinfo-command-name 'latexinfo-defun-indexing-property) parse-args)))
-
-
- ;;; Formatting the first line of a definition
-
- (defun latexinfo-format-parse-defun-args ()
- (goto-char latexinfo-command-end)
- (let ((start (point))
- (nargs
- (get latexinfo-command-name 'latexinfo-numargs)))
- (if (not (integerp nargs))
- (error "Unknown number of arguments to %s: %s"
- latexinfo-command-name nargs))
- (forward-list 1) ; required arg
- (if (looking-at "[\\[]") ; optional arg
- (delete-region (point)
- (save-excursion
- (forward-sexp 1) (point))))
- (setq nargs (1- nargs))
- (while (> nargs 0)
- (skip-chars-forward " \t\n")
- (if (looking-at "{") ; required arg
- (forward-list 1)
- (error "Argument %s missing from function" nargs))
- (setq nargs (1- nargs)))
- (setq latexinfo-command-end (point))
- (let ((marker (move-marker (make-marker) latexinfo-command-end)))
- (latexinfo-format-expand-region start (point))
- (setq latexinfo-command-end (marker-position marker))
- (move-marker marker nil))
- (goto-char start)
- (let ((args '())
- beg end)
- (skip-chars-forward " \t\n")
- (while (< (point) latexinfo-command-end)
- (cond ((looking-at "[{[]")
- (setq beg (1+ (point)))
- (forward-list 1)
- (setq end (1- (point))))
- (t
- (setq beg (point))
- (re-search-forward "[\n ]")
- (forward-char -1)
- (setq end (point))))
- (if (> end (1+ beg))
- (setq args
- (cons (buffer-substring beg end) args)))
- (skip-chars-forward " \t\n"))
- (nreverse args))))
-
-
- ;; \deffn, \defvr, \deftp
- (put 'deffn 'latexinfo-deffn-formatting-property 'latexinfo-format-deffn)
- (put 'defvr 'latexinfo-deffn-formatting-property 'latexinfo-format-deffn)
- (put 'deftp 'latexinfo-deffn-formatting-property 'latexinfo-format-deffn)
- (defun latexinfo-format-deffn (parsed-args)
- ;; Generalized function-like, variable-like, or generic data-type entity:
- ;; \deffn category name args...
- ;; In Info, `Category: name ARGS'
- ;; \deftp category name attributes...
- ;; `category name attributes...' Note: \deftp args in lower case.
- (let ((category (car parsed-args))
- (name (car (cdr parsed-args)))
- (args (cdr (cdr parsed-args))))
- (if (not (looking-at "\n")) (insert "\n"))
- (insert " -- " category ": " name)
- (while args
- (insert " "
- (if (or (= ?& (aref (car args) 0))
- (eq (eval (car command-type)) 'deftp-type))
- (car args)
- (upcase (car args))))
- (setq args (cdr args)))))
-
- ;; \defun, \defmac, \defspec, \defvar, \defopt: Specialized, simple
- (put 'defun 'latexinfo-deffn-formatting-property
- 'latexinfo-format-specialized-defun)
- (put 'defmac 'latexinfo-deffn-formatting-property
- 'latexinfo-format-specialized-defun)
- (put 'defspec 'latexinfo-deffn-formatting-property
- 'latexinfo-format-specialized-defun)
- (put 'defvar 'latexinfo-deffn-formatting-property
- 'latexinfo-format-specialized-defun)
- (put 'defopt 'latexinfo-deffn-formatting-property
- 'latexinfo-format-specialized-defun)
- (defun latexinfo-format-specialized-defun (parsed-args)
- ;; Specialized function-like or variable-like entity:
- ;; \defun{name}{args} In Info, `Function: Name ARGS'
- ;; \defmac{name}{args} In Info, `Macro: Name ARGS'
- ;; \defvar{name} In Info, `Variable: Name'
- ;; Use cdr of command-type to determine category:
- (let ((category (car (cdr command-type)))
- (name (car parsed-args))
- (args (cdr parsed-args)))
- (if (not (looking-at "\n")) (insert "\n"))
- (insert " -- " category ": " name)
- (while args
- (insert " "
- (if (= ?& (aref (car args) 0))
- (car args)
- (upcase (car args)))
- "\n")
- (setq args (cdr args)))))
-
- ;; \deftypefn, \deftypevr: Generalized typed
- (put 'deftypefn 'latexinfo-deffn-formatting-property 'latexinfo-format-deftypefn)
- (put 'deftypevr 'latexinfo-deffn-formatting-property 'latexinfo-format-deftypefn)
- (defun latexinfo-format-deftypefn (parsed-args)
- ;; Generalized typed-function-like or typed-variable-like entity:
- ;; \deftypefn category data-type name args...
- ;; In Info, `Category: data-type name args...'
- ;; \deftypevr category data-type name
- ;; In Info, `Category: data-type name'
- ;; Note: args in lower case, unless modified in command line.
- (let ((category (car parsed-args))
- (data-type (car (cdr parsed-args)))
- (name (car (cdr (cdr parsed-args))))
- (args (cdr (cdr (cdr parsed-args)))))
- (if (not (looking-at "\n")) (insert "\n"))
- (if (null (and category data-type name))
- (error "Null arg: %s %s %s" category data-type name)
- (insert " -- " category ": " data-type " " name))
- (while args
- (insert " " (car args))
- (setq args (cdr args)))))
-
- ;; \deftypefun, \deftypevar: Specialized typed
- (put 'deftypefun 'latexinfo-deffn-formatting-property 'latexinfo-format-deftypefun)
- (put 'deftypevar 'latexinfo-deffn-formatting-property 'latexinfo-format-deftypefun)
- (defun latexinfo-format-deftypefun (parsed-args)
- ;; Specialized typed-function-like or typed-variable-like entity:
- ;; \deftypefun data-type name args...
- ;; In Info, `Function: data-type name ARGS'
- ;; \deftypevar data-type name
- ;; In Info, `Variable: data-type name'
- ;; Note: args in lower case, unless modified in command line.
- ;; Use cdr of command-type to determine category:
- (let ((category (car (cdr command-type)))
- (data-type (car parsed-args))
- (name (car (cdr parsed-args)))
- (args (cdr (cdr parsed-args))))
- (if (not (looking-at "\n")) (insert "\n"))
- (if (null (and category data-type name))
- (error "Null arg: %s %s %s" category data-type name)
- (insert " -- " category ": " data-type " " name))
- (while args
- (insert " " (car args))
- (setq args (cdr args)))))
-
- ;; \defop: Generalized object-oriented
- (put 'defop 'latexinfo-deffn-formatting-property 'latexinfo-format-defop)
- (defun latexinfo-format-defop (parsed-args)
- ;; Generalized object oriented entity:
- ;; \defop category class name args...
- ;; In Info, `Category on class: name ARG'
- ;; Note: args in upper case; use of `on'
- (let ((category (car parsed-args))
- (class (car (cdr parsed-args)))
- (name (car (cdr (cdr parsed-args))))
- (args (cdr (cdr (cdr parsed-args)))))
- (if (not (looking-at "\n")) (insert "\n"))
- (if (null (and category data-type name))
- (error "Null arg: %s %s %s" category class name)
- (insert " -- " category " on " class ": " name))
- (while args
- (insert " " (upcase (car args)))
- (setq args (cdr args)))))
-
- ;; \defcv: Generalized object-oriented
- (put 'defcv 'latexinfo-deffn-formatting-property 'latexinfo-format-defcv)
- (defun latexinfo-format-defcv (parsed-args)
- ;; Generalized object oriented entity:
- ;; \defcv category class name
- ;; In Info, `Category of class: name'
- ;; Note: args in upper case; use of `of'
- (let ((category (car parsed-args))
- (class (car (cdr parsed-args)))
- (name (car (cdr (cdr parsed-args))))
- (args (cdr (cdr (cdr parsed-args)))))
- (if (not (looking-at "\n")) (insert "\n"))
- (if (null (and category data-type name))
- (error "Null arg: %s %s %s" category class name)
- (insert " -- " category " of " class ": " name))
- (while args
- (insert " " (upcase (car args)))
- (setq args (cdr args)))))
-
- ;; \defmethod: Specialized object-oriented
- (put 'defmethod 'latexinfo-deffn-formatting-property 'latexinfo-format-defmethod)
- (defun latexinfo-format-defmethod (parsed-args)
- ;; Specialized object oriented entity:
- ;; \defmethod class name args...
- ;; In Info, `Method on class: name ARGS'
- ;; Note: args in upper case; use of `on'
- ;; Use cdr of command-type to determine category:
- (let ((category (car (cdr command-type)))
- (class (car parsed-args))
- (name (car (cdr parsed-args)))
- (args (cdr (cdr parsed-args))))
- (if (not (looking-at "\n")) (insert "\n"))
- (if (null (and category data-type name))
- (error "Null arg: %s %s %s" category class name)
- (insert " -- " category " on " class ": " name))
- (while args
- (insert " " (upcase (car args)))
- (setq args (cdr args)))))
-
- ;; \defivar: Specialized object-oriented
- (put 'defivar 'latexinfo-deffn-formatting-property 'latexinfo-format-defivar)
- (defun latexinfo-format-defivar (parsed-args)
- ;; Specialized object oriented entity:
- ;; \defivar class name
- ;; In Info, `Instance variable of class: name'
- ;; Note: args in upper case; use of `of'
- ;; Use cdr of command-type to determine category:
- (let ((category (car (cdr command-type)))
- (class (car parsed-args))
- (name (car (cdr parsed-args)))
- (args (cdr (cdr parsed-args))))
- (if (not (looking-at "\n")) (insert "\n"))
- (if (null (and category data-type name))
- (error "Null arg: %s %s %s" category class name)
- (insert " -- " category " of " class ": " name))
- (while args
- (insert " " (upcase (car args)))
- (setq args (cdr args)))))
-
-
- ;;; Indexing for definitions
-
- ;; An index entry has three parts: the `entry proper', the node name, and the
- ;; line number. Depending on the which command is used, the entry is
- ;; formatted differently:
- ;;
- ;; \defun,
- ;; \defmac,
- ;; \defspec,
- ;; \defvar,
- ;; \defopt all use their 1st argument as the entry-proper
- ;;
- ;; \deffn,
- ;; \defvr,
- ;; \deftp
- ;; \deftypefun
- ;; \deftypevar all use their 2nd argument as the entry-proper
- ;;
- ;; \deftypefn,
- ;; \deftypevr both use their 3rd argument as the entry-proper
- ;;
- ;; \defmethod uses its 2nd and 1st arguments as an entry-proper
- ;; formatted: NAME on CLASS
-
- ;; \defop uses its 3rd and 2nd arguments as an entry-proper
- ;; formatted: NAME on CLASS
- ;;
- ;; \defivar uses its 2nd and 1st arguments as an entry-proper
- ;; formatted: NAME of CLASS
- ;;
- ;; \defcv uses its 3rd and 2nd argument as an entry-proper
- ;; formatted: NAME of CLASS
-
- (put 'defun 'latexinfo-defun-indexing-property 'latexinfo-index-defun)
- (put 'defun 'latexinfo-defun-indexing-property 'latexinfo-index-defun)
- (put 'defmac 'latexinfo-defun-indexing-property 'latexinfo-index-defun)
- (put 'defspec 'latexinfo-defun-indexing-property 'latexinfo-index-defun)
- (put 'defvar 'latexinfo-defun-indexing-property 'latexinfo-index-defun)
- (put 'defopt 'latexinfo-defun-indexing-property 'latexinfo-index-defun)
-
- (defun latexinfo-index-defun (parsed-args)
- ;; use 1st parsed-arg as entry-proper
- ;; `index-list' will be latexinfo-findex or the like
- (let ((index-list (get latexinfo-command-name 'latexinfo-defun-index)))
- (set index-list
- (cons
- ;; Three elements: entry-proper, node-name, line-number
- (list
- (car parsed-args)
- latexinfo-last-node
- ;; Region formatting may not provide last node position.
- (if latexinfo-last-node-pos
- (1+ (count-lines latexinfo-last-node-pos (point)))
- 1))
- (symbol-value index-list)))))
-
- (put 'deffn 'latexinfo-defun-indexing-property 'latexinfo-index-deffn)
- (put 'defvr 'latexinfo-defun-indexing-property 'latexinfo-index-deffn)
- (put 'deftp 'latexinfo-defun-indexing-property 'latexinfo-index-deffn)
- (put 'deftypefun 'latexinfo-defun-indexing-property 'latexinfo-index-deffn)
- (put 'deftypevar 'latexinfo-defun-indexing-property 'latexinfo-index-deffn)
- (defun latexinfo-index-deffn (parsed-args)
- ;; use 2nd parsed-arg as entry-proper
- ;; `index-list' will be latexinfo-findex or the like
- (let ((index-list (get latexinfo-command-name 'latexinfo-defun-index)))
- (set index-list
- (cons
- ;; Three elements: entry-proper, node-name, line-number
- (list
- (car (cdr parsed-args))
- latexinfo-last-node
- ;; Region formatting may not provide last node position.
- (if latexinfo-last-node-pos
- (1+ (count-lines latexinfo-last-node-pos (point)))
- 1))
- (symbol-value index-list)))))
-
- (put 'deftypefn 'latexinfo-defun-indexing-property 'latexinfo-index-deftypefn)
- (put 'deftypevr 'latexinfo-defun-indexing-property 'latexinfo-index-deftypefn)
- (defun latexinfo-index-deftypefn (parsed-args)
- ;; use 3rd parsed-arg as entry-proper
- ;; `index-list' will be latexinfo-findex or the like
- (let ((index-list (get latexinfo-command-name 'latexinfo-defun-index)))
- (set index-list
- (cons
- ;; Three elements: entry-proper, node-name, line-number
- (list
- (car (cdr (cdr parsed-args)))
- latexinfo-last-node
- ;; Region formatting may not provide last node position.
- (if latexinfo-last-node-pos
- (1+ (count-lines latexinfo-last-node-pos (point)))
- 1))
- (symbol-value index-list)))))
-
- (put 'defmethod 'latexinfo-defun-indexing-property 'latexinfo-index-defmethod)
- (defun latexinfo-index-defmethod (parsed-args)
- ;; use 2nd on 1st parsed-arg as entry-proper
- ;; `index-list' will be latexinfo-findex or the like
- (let ((index-list (get latexinfo-command-name 'latexinfo-defun-index)))
- (set index-list
- (cons
- ;; Three elements: entry-proper, node-name, line-number
- (list
- (format "%s on %s"
- (car (cdr parsed-args))
- (car parsed-args))
- latexinfo-last-node
- ;; Region formatting may not provide last node position.
- (if latexinfo-last-node-pos
- (1+ (count-lines latexinfo-last-node-pos (point)))
- 1))
- (symbol-value index-list)))))
-
- (put 'defop 'latexinfo-defun-indexing-property 'latexinfo-index-defop)
- (defun latexinfo-index-defop (parsed-args)
- ;; use 3rd on 2nd parsed-arg as entry-proper
- ;; `index-list' will be latexinfo-findex or the like
- (let ((index-list (get latexinfo-command-name 'latexinfo-defun-index)))
- (set index-list
- (cons
- ;; Three elements: entry-proper, node-name, line-number
- (list
- (format "%s on %s"
- (car (cdr (cdr parsed-args)))
- (car (cdr parsed-args)))
- latexinfo-last-node
- ;; Region formatting may not provide last node position.
- (if latexinfo-last-node-pos
- (1+ (count-lines latexinfo-last-node-pos (point)))
- 1))
- (symbol-value index-list)))))
-
- (put 'defivar 'latexinfo-defun-indexing-property 'latexinfo-index-defivar)
- (defun latexinfo-index-defivar (parsed-args)
- ;; use 2nd of 1st parsed-arg as entry-proper
- ;; `index-list' will be latexinfo-findex or the like
- (let ((index-list (get latexinfo-command-name 'latexinfo-defun-index)))
- (set index-list
- (cons
- ;; Three elements: entry-proper, node-name, line-number
- (list
- (format "%s of %s"
- (car (cdr parsed-args))
- (car parsed-args))
- latexinfo-last-node
- ;; Region formatting may not provide last node position.
- (if latexinfo-last-node-pos
- (1+ (count-lines latexinfo-last-node-pos (point)))
- 1))
- (symbol-value index-list)))))
-
- (put 'defcv 'latexinfo-defun-indexing-property 'latexinfo-index-defcv)
- (defun latexinfo-index-defcv (parsed-args)
- ;; use 3rd of 2nd parsed-arg as entry-proper
- ;; `index-list' will be latexinfo-findex or the like
- (let ((index-list (get latexinfo-command-name 'latexinfo-defun-index)))
- (set index-list
- (cons
- ;; Three elements: entry-proper, node-name, line-number
- (list
- (format "%s of %s"
- (car (cdr (cdr parsed-args)))
- (car (cdr parsed-args)))
- latexinfo-last-node
- ;; Region formatting may not provide last node position.
- (if latexinfo-last-node-pos
- (1+ (count-lines latexinfo-last-node-pos (point)))
- 1))
- (symbol-value index-list)))))
-
-
- ;;; Properties for definitions
-
- ;; Each primary definition command has six properties:
- ;;
- ;; 1. latexinfo-deffn-formatting-property to format definition line
- ;; 2. latexinfo-defun-indexing-property to create index entry
- ;; 3. latexinfo-format formatting command
- ;; 4. latexinfo-end end formatting command
- ;; 5. latexinfo-defun-type type of deffn to format
- ;; 6. latexinfo-defun-index type of index to use
- ;;
- ;; In addition, the `x' forms of each definition command have three
- ;; properties.
-
- ;; The latexinfo-deffn-formatting-property and latexinfo-defun-indexing-property
- ;; are listed just before the appropriate formatting and indexing commands.
-
- (put 'deffn 'latexinfo-format 'latexinfo-format-defun)
- (put 'deffnx 'latexinfo-format 'latexinfo-format-defunx)
- (put 'deffn 'latexinfo-end 'latexinfo-end-defun)
- (put 'enddeffn 'latexinfo-format 'latexinfo-end-defun)
- (put 'deffn 'latexinfo-defun-type '('deffn-type nil))
- (put 'deffnx 'latexinfo-defun-type '('deffn-type nil))
- (put 'deffn 'latexinfo-defun-index 'latexinfo-findex)
- (put 'deffnx 'latexinfo-defun-index 'latexinfo-findex)
-
- (put 'defun 'latexinfo-format 'latexinfo-format-defun)
- (put 'defunx 'latexinfo-format 'latexinfo-format-defunx)
- (put 'enddefun 'latexinfo-format 'latexinfo-end-defun)
- (put 'defun 'latexinfo-end 'latexinfo-end-defun)
- (put 'defun 'latexinfo-defun-type '('defun-type "Function"))
- (put 'defunx 'latexinfo-defun-type '('defun-type "Function"))
- (put 'defun 'latexinfo-defun-index 'latexinfo-findex)
- (put 'defunx 'latexinfo-defun-index 'latexinfo-findex)
-
- (put 'defmac 'latexinfo-format 'latexinfo-format-defun)
- (put 'defmacx 'latexinfo-format 'latexinfo-format-defunx)
- (put 'defmac 'latexinfo-end 'latexinfo-end-defun)
- (put 'enddefmac 'latexinfo-format 'latexinfo-end-defun)
- (put 'defmac 'latexinfo-defun-type '('defun-type "Macro"))
- (put 'defmacx 'latexinfo-defun-type '('defun-type "Macro"))
- (put 'defmac 'latexinfo-defun-index 'latexinfo-findex)
- (put 'defmacx 'latexinfo-defun-index 'latexinfo-findex)
-
- (put 'defspec 'latexinfo-format 'latexinfo-format-defun)
- (put 'defspecx 'latexinfo-format 'latexinfo-format-defunx)
- (put 'defspec 'latexinfo-end 'latexinfo-end-defun)
- (put 'enddefspec 'latexinfo-format 'latexinfo-end-defun)
- (put 'defspec 'latexinfo-defun-type '('defun-type "Special form"))
- (put 'defspecx 'latexinfo-defun-type '('defun-type "Special form"))
- (put 'defspec 'latexinfo-defun-index 'latexinfo-findex)
- (put 'defspecx 'latexinfo-defun-index 'latexinfo-findex)
-
- (put 'defvr 'latexinfo-format 'latexinfo-format-defun)
- (put 'defvrx 'latexinfo-format 'latexinfo-format-defunx)
- (put 'defvr 'latexinfo-end 'latexinfo-end-defun)
- (put 'enddefvr 'latexinfo-format 'latexinfo-end-defun)
- (put 'defvr 'latexinfo-defun-type '('deffn-type nil))
- (put 'defvrx 'latexinfo-defun-type '('deffn-type nil))
- (put 'defvr 'latexinfo-defun-index 'latexinfo-vindex)
- (put 'defvrx 'latexinfo-defun-index 'latexinfo-vindex)
-
- (put 'defvar 'latexinfo-format 'latexinfo-format-defun)
- (put 'defvarx 'latexinfo-format 'latexinfo-format-defunx)
- (put 'defvar 'latexinfo-end 'latexinfo-end-defun)
- (put 'enddefvar 'latexinfo-format 'latexinfo-end-defun)
- (put 'defvar 'latexinfo-defun-type '('defun-type "Variable"))
- (put 'defvarx 'latexinfo-defun-type '('defun-type "Variable"))
- (put 'defvar 'latexinfo-defun-index 'latexinfo-vindex)
- (put 'defvarx 'latexinfo-defun-index 'latexinfo-vindex)
-
- (put 'defopt 'latexinfo-format 'latexinfo-format-defun)
- (put 'defoptx 'latexinfo-format 'latexinfo-format-defunx)
- (put 'defopt 'latexinfo-end 'latexinfo-end-defun)
- (put 'enddefopt 'latexinfo-format 'latexinfo-end-defun)
- (put 'defopt 'latexinfo-defun-type '('defun-type "User Option"))
- (put 'defoptx 'latexinfo-defun-type '('defun-type "User Option"))
- (put 'defopt 'latexinfo-defun-index 'latexinfo-vindex)
- (put 'defoptx 'latexinfo-defun-index 'latexinfo-vindex)
-
- (put 'deftp 'latexinfo-format 'latexinfo-format-defun)
- (put 'deftpx 'latexinfo-format 'latexinfo-format-defunx)
- (put 'deftp 'latexinfo-end 'latexinfo-end-defun)
- (put 'enddeftp 'latexinfo-format 'latexinfo-end-defun)
- (put 'deftp 'latexinfo-defun-type '('deftp-type nil))
- (put 'deftpx 'latexinfo-defun-type '('deftp-type nil))
- (put 'deftp 'latexinfo-defun-index 'latexinfo-tindex)
- (put 'deftpx 'latexinfo-defun-index 'latexinfo-tindex)
-
- ;;; Object-oriented stuff is a little hairier.
-
- (put 'defop 'latexinfo-format 'latexinfo-format-defun)
- (put 'defopx 'latexinfo-format 'latexinfo-format-defunx)
- (put 'defop 'latexinfo-end 'latexinfo-end-defun)
- (put 'enddefop 'latexinfo-format 'latexinfo-end-defun)
- (put 'defop 'latexinfo-defun-type '('defop-type nil))
- (put 'defopx 'latexinfo-defun-type '('defop-type nil))
- (put 'defop 'latexinfo-defun-index 'latexinfo-findex)
- (put 'defopx 'latexinfo-defun-index 'latexinfo-findex)
-
- (put 'defmethod 'latexinfo-format 'latexinfo-format-defun)
- (put 'defmethodx 'latexinfo-format 'latexinfo-format-defunx)
- (put 'defmethod 'latexinfo-end 'latexinfo-end-defun)
- (put 'enddefmethod 'latexinfo-format 'latexinfo-end-defun)
- (put 'defmethod 'latexinfo-defun-type '('defmethod-type "Method"))
- (put 'defmethodx 'latexinfo-defun-type '('defmethod-type "Method"))
- (put 'defmethod 'latexinfo-defun-index 'latexinfo-findex)
- (put 'defmethodx 'latexinfo-defun-index 'latexinfo-findex)
-
- (put 'defcv 'latexinfo-format 'latexinfo-format-defun)
- (put 'defcvx 'latexinfo-format 'latexinfo-format-defunx)
- (put 'defcv 'latexinfo-end 'latexinfo-end-defun)
- (put 'enddefcv 'latexinfo-format 'latexinfo-end-defun)
- (put 'defcv 'latexinfo-defun-type '('defop-type nil))
- (put 'defcvx 'latexinfo-defun-type '('defop-type nil))
- (put 'defcv 'latexinfo-defun-index 'latexinfo-vindex)
- (put 'defcvx 'latexinfo-defun-index 'latexinfo-vindex)
-
- (put 'defivar 'latexinfo-format 'latexinfo-format-defun)
- (put 'defivarx 'latexinfo-format 'latexinfo-format-defunx)
- (put 'defivar 'latexinfo-end 'latexinfo-end-defun)
- (put 'enddefivar 'latexinfo-format 'latexinfo-end-defun)
- (put 'defivar 'latexinfo-defun-type '('defmethod-type "Instance variable"))
- (put 'defivarx 'latexinfo-defun-type '('defmethod-type "Instance variable"))
- (put 'defivar 'latexinfo-defun-index 'latexinfo-vindex)
- (put 'defivarx 'latexinfo-defun-index 'latexinfo-vindex)
-
- ;;; Typed functions and variables
-
- (put 'deftypefn 'latexinfo-format 'latexinfo-format-defun)
- (put 'deftypefnx 'latexinfo-format 'latexinfo-format-defunx)
- (put 'deftypefn 'latexinfo-end 'latexinfo-end-defun)
- (put 'enddeftypefn 'latexinfo-format 'latexinfo-end-defun)
- (put 'deftypefn 'latexinfo-defun-type '('deftypefn-type nil))
- (put 'deftypefnx 'latexinfo-defun-type '('deftypefn-type nil))
- (put 'deftypefn 'latexinfo-defun-index 'latexinfo-findex)
- (put 'deftypefnx 'latexinfo-defun-index 'latexinfo-findex)
-
- (put 'deftypefun 'latexinfo-format 'latexinfo-format-defun)
- (put 'deftypefunx 'latexinfo-format 'latexinfo-format-defunx)
- (put 'deftypefun 'latexinfo-end 'latexinfo-end-defun)
- (put 'enddeftypefun 'latexinfo-format 'latexinfo-end-defun)
- (put 'deftypefun 'latexinfo-defun-type '('deftypefun-type "Function"))
- (put 'deftypefunx 'latexinfo-defun-type '('deftypefun-type "Function"))
- (put 'deftypefun 'latexinfo-defun-index 'latexinfo-findex)
- (put 'deftypefunx 'latexinfo-defun-index 'latexinfo-findex)
-
- (put 'deftypevr 'latexinfo-format 'latexinfo-format-defun)
- (put 'deftypevrx 'latexinfo-format 'latexinfo-format-defunx)
- (put 'deftypevr 'latexinfo-end 'latexinfo-end-defun)
- (put 'enddeftypevr 'latexinfo-format 'latexinfo-end-defun)
- (put 'deftypevr 'latexinfo-defun-type '('deftypefn-type nil))
- (put 'deftypevrx 'latexinfo-defun-type '('deftypefn-type nil))
- (put 'deftypevr 'latexinfo-defun-index 'latexinfo-vindex)
- (put 'deftypevrx 'latexinfo-defun-index 'latexinfo-vindex)
-
- (put 'deftypevar 'latexinfo-format 'latexinfo-format-defun)
- (put 'deftypevarx 'latexinfo-format 'latexinfo-format-defunx)
- (put 'deftypevar 'latexinfo-end 'latexinfo-end-defun)
- (put 'enddeftypevar 'latexinfo-format 'latexinfo-end-defun)
- (put 'deftypevar 'latexinfo-defun-type '('deftypevar-type "Variable"))
- (put 'deftypevarx 'latexinfo-defun-type '('deftypevar-type "Variable"))
- (put 'deftypevar 'latexinfo-defun-index 'latexinfo-vindex)
- (put 'deftypevarx 'latexinfo-defun-index 'latexinfo-vindex)
-
- (put 'defunx 'latexinfo-deffn-formatting-property
- 'latexinfo-format-specialized-defun)
- (put 'defmacx 'latexinfo-deffn-formatting-property
- 'latexinfo-format-specialized-defun)
- (put 'defspecx 'latexinfo-deffn-formatting-property
- 'latexinfo-format-specialized-defun)
- (put 'defvarx 'latexinfo-deffn-formatting-property
- 'latexinfo-format-specialized-defun)
- (put 'defoptx 'latexinfo-deffn-formatting-property
- 'latexinfo-format-specialized-defun)
-
- (put 'defunx 'latexinfo-defun-indexing-property 'latexinfo-index-defun)
- (put 'defmacx 'latexinfo-defun-indexing-property 'latexinfo-index-defun)
- (put 'defspecx 'latexinfo-defun-indexing-property 'latexinfo-index-defun)
- (put 'defvarx 'latexinfo-defun-indexing-property 'latexinfo-index-defun)
- (put 'defoptx 'latexinfo-defun-indexing-property 'latexinfo-index-defun)
-
- ;; Number of arguments
- (put 'deffn 'latexinfo-numargs 3)
- (put 'deffnx 'latexinfo-numargs 3)
- (put 'defun 'latexinfo-numargs 2)
- (put 'defunx 'latexinfo-numargs 2)
- (put 'defmac 'latexinfo-numargs 2)
- (put 'defmacx 'latexinfo-numargs 2)
- (put 'defspec 'latexinfo-numargs 2)
- (put 'defspecx 'latexinfo-numargs 2)
- (put 'defvr 'latexinfo-numargs 2)
- (put 'defvrx 'latexinfo-numargs 2)
- (put 'defvar 'latexinfo-numargs 1)
- (put 'defvarx 'latexinfo-numargs 1)
- (put 'defopt 'latexinfo-numargs 1)
- (put 'defoptx 'latexinfo-numargs 1)
- (put 'deftp 'latexinfo-numargs 3)
- (put 'deftpx 'latexinfo-numargs 3)
- (put 'defop 'latexinfo-numargs 4)
- (put 'defopx 'latexinfo-numargs 4)
- (put 'defmethod 'latexinfo-numargs 3)
- (put 'defmethodx 'latexinfo-numargs 3)
- (put 'defcv 'latexinfo-numargs 3)
- (put 'defcvx 'latexinfo-numargs 3)
- (put 'defivar 'latexinfo-numargs 2)
- (put 'defivarx 'latexinfo-numargs 2)
- (put 'deftypefn 'latexinfo-numargs 4)
- (put 'deftypefnx 'latexinfo-numargs 4)
- (put 'deftypefun 'latexinfo-numargs 3)
- (put 'deftypefunx 'latexinfo-numargs 3)
- (put 'deftypevr 'latexinfo-numargs 3)
- (put 'deftypevrx 'latexinfo-numargs 3)
- (put 'deftypevar 'latexinfo-numargs 2)
- (put 'deftypevarx 'latexinfo-numargs 2)
-
- (provide 'elisp-fmt)
-