* ChangeLog.1, ChangeLog.CVS, Makefile.am, NEWS, README: * README-hacking, directory, doc/Makefile.am, doc/dumpdir.texi: * doc/gendocs_template, doc/intern.texi, doc/mastermenu.el: * doc/snapshot.texi, doc/sparse.texi, doc/tar-snapshot-edit.texi: * doc/value.texi, lib/Makefile.am, scripts/backup-specs: * scripts/dump-remind.in, scripts/tar-snapshot-edit, scripts/tarcat: * scripts/xsparse.c, src/arith.h, src/buffer.c, src/compare.c: * src/create.c, src/delete.c, src/exit.c, src/suffix.c, src/tar.c: * src/tar.h, src/update.c, src/warning.c, src/xheader.c: * tests/append01.at, tests/append02.at, tests/atlocal.in: * tests/delete03.at, tests/exclude.at, tests/exclude06.at: * tests/extrac04.at, tests/extrac05.at, tests/extrac06.at: * tests/extrac07.at, tests/filerem01.at, tests/filerem02.at: * tests/incr01.at, tests/incr02.at, tests/incr03.at, tests/incr06.at: * tests/label02.at, tests/label03.at, tests/label04.at: * tests/label05.at, tests/link02.at, tests/link03.at: * tests/listed01.at, tests/listed02.at, tests/long01.at: * tests/longv7.at, tests/multiv01.at, tests/multiv02.at: * tests/multiv03.at, tests/multiv05.at, tests/multiv06.at: * tests/multiv07.at, tests/multiv08.at, tests/options.at: * tests/options02.at, tests/remfiles03.at, tests/rename01.at: * tests/rename02.at, tests/rename03.at, tests/rename04.at: * tests/rename05.at, tests/same-order01.at, tests/same-order02.at: * tests/shortfile.at, tests/shortupd.at, tests/sparse01.at: * tests/sparse02.at, tests/sparsemv.at, tests/sparsemvp.at: * tests/star/README, tests/star/gtarfail2.at: * tests/star/multi-fail.at: * tests/star/pax-big-10g.at, tests/star/quicktest.sh: * tests/star/ustar-big-2g.at, tests/star/ustar-big-8g.at: * tests/update01.at, tests/update02.at, tests/volsize.at: * tests/volume.at: Remove trailing spaces and tabs from lines, and remove trailing empty lines from files. This makes it a bit easier to share code among coreutils and other projects that do this.
92 lines
2.9 KiB
EmacsLisp
92 lines
2.9 KiB
EmacsLisp
;;; mastermenu.el --- Redefinition of texinfo-master-menu-list
|
|
|
|
;; Copyright (C) 2006, 2007 Free Software Foundation, Inc.
|
|
|
|
;; Author: Sergey Poznyakoff
|
|
;; Maintainer: bug-tar@gnu.org
|
|
;; Keywords: maint, tex, docs
|
|
|
|
;; This file is part of GNU tar documentation suite
|
|
|
|
;; 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
;;; Commentary:
|
|
|
|
;; This file redefines texinfo-master-menu-list so that it takes into
|
|
;; account included files.
|
|
|
|
;; Known bugs: @menu without previous sectioning command will inherit
|
|
;; documentation string from the previous menu. However, since such a
|
|
;; menu is illegal in a texinfo file, we can live with it.
|
|
|
|
(require 'texinfo)
|
|
(require 'texnfo-upd)
|
|
|
|
(defun texinfo-master-menu-list-recursive (title)
|
|
"Auxiliary function used by `texinfo-master-menu-list'."
|
|
(save-excursion
|
|
(let (master-menu-list)
|
|
(while (re-search-forward "\\(^@menu\\|^@include\\)" nil t)
|
|
(cond
|
|
((string= (match-string 0) "@include")
|
|
(skip-chars-forward " \t")
|
|
(let ((included-name (let ((start (point)))
|
|
(end-of-line)
|
|
(skip-chars-backward " \t")
|
|
(buffer-substring start (point)))))
|
|
(end-of-line)
|
|
(let ((prev-title (texinfo-copy-menu-title)))
|
|
(save-excursion
|
|
(set-buffer (find-file-noselect included-name))
|
|
(setq master-menu-list
|
|
(append (texinfo-master-menu-list-recursive prev-title)
|
|
master-menu-list))))))
|
|
(t
|
|
(setq master-menu-list
|
|
(cons (list
|
|
(texinfo-copy-menu)
|
|
(let ((menu-title (texinfo-copy-menu-title)))
|
|
(if (string= menu-title "")
|
|
title
|
|
menu-title)))
|
|
master-menu-list)))))
|
|
master-menu-list)))
|
|
|
|
(defun texinfo-master-menu-list ()
|
|
"Return a list of menu entries and header lines for the master menu,
|
|
recursing into included files.
|
|
|
|
Start with the menu for chapters and indices and then find each
|
|
following menu and the title of the node preceding that menu.
|
|
|
|
The master menu list has this form:
|
|
|
|
\(\(\(... \"entry-1-2\" \"entry-1\"\) \"title-1\"\)
|
|
\(\(... \"entry-2-2\" \"entry-2-1\"\) \"title-2\"\)
|
|
...\)
|
|
|
|
However, there does not need to be a title field."
|
|
|
|
(reverse (texinfo-master-menu-list-recursive "")))
|
|
|
|
(defun make-master-menu ()
|
|
"Create master menu in the first Emacs argument."
|
|
(find-file (car command-line-args-left))
|
|
(texinfo-master-menu nil)
|
|
(save-buffer))
|
|
|
|
|
|
;;; mastermenu.el ends here
|