home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / languages / elisp / packages / LaTeXinfo.shar.2 / head-fmt.el < prev    next >
Encoding:
Text File  |  1990-07-22  |  3.6 KB  |  127 lines

  1. (require 'latexinfo)
  2.  
  3. (defvar *index* nil)
  4. (defvar *latexinfo-index-file* nil)
  5.  
  6. (defun head-fmt-hook ()
  7.   (save-excursion
  8.     (setq *index* nil)
  9.     (setq *latexinfo-index-file* nil)
  10.     (goto-char (point-min))
  11.     (search-forward "\\latexinfoindexname")
  12.     (skip-chars-forward "     {")
  13.     (setq *latexinfo-index-file*
  14.       (expand-file-name
  15.        (buffer-substring 
  16.         (point)
  17.         (progn
  18.           (skip-chars-forward "^     }\n")
  19.           (point))))))
  20.   )
  21.  
  22. (load-library "informat")
  23. ;; We replace Info-split because we can't split and keep the index entries
  24. ;; the same.
  25. (defun Info-split ()
  26.   (interactive)
  27.   (let ((lastmessage "Making tags table for Info file..."))
  28.     (message lastmessage)
  29.     (Info-tagify)
  30.     (message
  31.      (setq lastmessage "Making index for Info file..."))
  32.     (make-head-index)
  33.     (goto-char (point-min))
  34.     (replace-string "\b" " ")
  35.     (message (concat lastmessage
  36.              (if (interactive-p)
  37.              "done.  Now save it." "done."))))
  38.   )
  39.  
  40. (defun make-head-index ()
  41.   (let ((entries  (mapcar 'find-entry *index*)))
  42.     (save-excursion
  43.       (set-buffer (head-find-buffer *latexinfo-index-file*))
  44.       (erase-buffer)
  45.       (mapcar 'add-entry  entries)
  46.       (insert "\n")
  47.       (goto-char (point-min))
  48.       (mapcar 'add-byte *index*)
  49.       (sort-lines nil (point-min) (point-max))
  50.       (goto-char (point-min))
  51.       (delete-char 1)
  52.       (setq buffer-file-name (expand-file-name *latexinfo-index-file*))
  53.       (save-buffer)
  54.       (bury-buffer (buffer-name))))
  55.   (goto-char (point-min)))
  56.  
  57. (defun find-entry (byte)
  58.   (goto-char byte)
  59.   (buffer-substring byte
  60.             (progn
  61.               (skip-chars-forward "^\n\b(")
  62.               (point))))
  63.  
  64. (defun add-entry (entry)
  65.   (insert
  66.    ?\" entry ?\"
  67.    "\n"))
  68.  
  69. (defun add-byte (byte)
  70.   (end-of-line)
  71.   (insert (concat " " byte))
  72.   (forward-char 1))
  73.  
  74. (defun head-find-buffer (filename)
  75.   (let ((blist (buffer-list))
  76.     found)
  77.     (while blist
  78.       (save-excursion
  79.         (set-buffer (car blist))
  80.     (if (and (equal (buffer-name) (file-name-nondirectory filename))
  81.          (eq major-mode 'fundamental-mode))
  82.         (setq found (car blist)
  83.           blist nil)
  84.       (setq blist (cdr blist)))))
  85.     (or found
  86.     (create-file-buffer filename))))
  87.  
  88. (put 'setindexname 'latexinfo-format 'latexinfo-discard-line-with-args)
  89. (defun latexinfo-format-chapter-1 (belowchar)
  90.   (let ((arg (latexinfo-parse-arg-discard)))
  91.     (setq *index* (cons (1+ latexinfo-command-start) *index*))
  92.     (insert ?\n arg ?\n "\\SectionPAD " belowchar?\n)
  93.     (forward-line -2)))
  94.  
  95. (put 'head  'latexinfo-format 'latexinfo-format-head)
  96. (defun latexinfo-format-head ()
  97.   (let ((type))
  98.     (save-excursion
  99.       (forward-sexp 2)
  100.       (setq type (buffer-substring
  101.            (1+ (point)) (1- (save-excursion (end-of-line 1) (point))))))
  102.       (kill-line)
  103.       (delete-char 1)
  104.     (setq *index* (cons latexinfo-command-start *index*))
  105.     (insert (latexinfo-parse-arg-discard))
  106.     ;; use back-space as a marker to show the end of the command for indexing
  107.     (insert "\b")
  108.     (insert-char ?\  (- (+ 7 fill-column) (current-column) (length type)))
  109.     (insert type))
  110.   (goto-char latexinfo-command-start))
  111.  
  112. ;; a dead head - an incomplete line that is neither indexed but nor LaTeX'ed
  113. (put 'dhead  'latexinfo-format 'latexinfo-dhead)
  114. (defun latexinfo-dhead ()
  115.   (goto-char latexinfo-command-start)
  116.   (delete-region (point) (progn (forward-line 2) (point))))
  117.  
  118.  
  119. (defun latexinfo-format-chapter-1 (belowchar)
  120.   (let ((arg (latexinfo-parse-arg-discard)))
  121.     (setq *index* (cons (1+ latexinfo-command-start) *index*))
  122. ;;    (insert ?\n arg ?\b ?\n "\\SectionPAD " belowchar?\n)
  123.     (insert ?\n arg ?\n "\\SectionPAD " belowchar?\n)
  124.     (forward-line -2)))
  125.  
  126.  
  127.