;;; infohack.el --- a hack to format info file.
-;; Copyright (C) 2001 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc.
;; Author: Shenghuo Zhu <zsh@cs.rochester.edu>
;; Keywords: info
(setq load-path (mapcar 'expand-file-name load-path)))
(load-file (expand-file-name "ptexinfmt.el" "./"))
+(if (fboundp 'texinfo-copying)
+ nil
+ ;; Support @copying and @insertcopying for Emacs 21.3 and lesser and
+ ;; XEmacs.
+ (defvar texinfo-copying-text ""
+ "Text of the copyright notice and copying permissions.")
+
+ (defun texinfo-copying ()
+ "Copy the copyright notice and copying permissions from the Texinfo file,
+as indicated by the @copying ... @end copying command;
+insert the text with the @insertcopying command."
+ (let ((beg (progn (beginning-of-line) (point)))
+ (end (progn (re-search-forward "^@end copying[ \t]*\n") (point))))
+ (setq texinfo-copying-text
+ (buffer-substring-no-properties
+ (save-excursion (goto-char beg) (forward-line 1) (point))
+ (save-excursion (goto-char end) (forward-line -1) (point))))
+ (delete-region beg end)))
+
+ (defun texinfo-insertcopying ()
+ "Insert the copyright notice and copying permissions from the Texinfo file,
+which are indicated by the @copying ... @end copying command."
+ (insert (concat "\n" texinfo-copying-text)))
+
+ (defadvice texinfo-format-scan (before expand-@copying-section activate)
+ "Extract @copying and replace @insertcopying with it."
+ (goto-char (point-min))
+ (when (search-forward "@copying" nil t)
+ (texinfo-copying))
+ (while (search-forward "@insertcopying" nil t)
+ (delete-region (match-beginning 0) (match-end 0))
+ (texinfo-insertcopying))))
+
(defun infohack-remove-unsupported ()
(goto-char (point-min))
(while (re-search-forward "@\\(end \\)?ifnottex" nil t)
(let ((dest-directory default-directory)
(max-lisp-eval-depth (max max-lisp-eval-depth 600))
coding-system)
+ ;; Emacs 21.3 doesn't support @documentencoding
+ (unless (get 'documentencoding 'texinfo-format)
+ (put 'documentencoding 'texinfo-format
+ 'texinfo-discard-line-with-args))
(find-file file)
(setq buffer-read-only nil)
- (setq coding-system (if (boundp 'buffer-file-coding-system)
- buffer-file-coding-system
- file-coding-system))
+ (setq coding-system buffer-file-coding-system)
(infohack-remove-unsupported)
(texinfo-every-node-update)
(texinfo-format-buffer t) ;; Don't save any file.
(setq buffer-file-name
(expand-file-name (file-name-nondirectory buffer-file-name)
default-directory))
- (setq buffer-file-coding-system coding-system
- file-coding-system coding-system)
+ (setq buffer-file-coding-system coding-system)
(if (> (buffer-size) 100000)
(Info-split))
(save-buffer)))
(let ((auto-save-default nil)
(find-file-run-dired nil)
coding-system-for-write
- output-coding-system
(error 0))
(condition-case err
(progn
(find-file file)
(setq buffer-read-only nil)
(buffer-disable-undo (current-buffer))
- (if (boundp 'MULE)
- (setq output-coding-system file-coding-system)
- (setq coding-system-for-write buffer-file-coding-system))
+ (setq coding-system-for-write buffer-file-coding-system)
;; process @include before updating node
;; This might produce some problem if we use @lowersection or
;; such.
(let ((si:message (symbol-function 'message)))
(fset 'message
(byte-compile
- (if (boundp 'MULE)
- `(lambda (fmt &rest args)
- (funcall ,si:message "%s"
- (code-convert-string
- (apply 'format fmt args)
- '*internal* '*junet*)))
- `(lambda (fmt &rest args)
- (funcall ,si:message "%s"
- (encode-coding-string
- (apply 'format fmt args)
- 'iso-2022-7bit))))))
+ `(lambda (fmt &rest args)
+ (funcall ,si:message "%s"
+ (encode-coding-string
+ (apply 'format fmt args)
+ 'iso-2022-7bit)))))
(unwind-protect
(texinfo-format-buffer nil)
(fset 'message si:message)))