Function: makeinfo-region
makeinfo-region is an autoloaded, interactive and byte-compiled
function defined in makeinfo.el.gz.
Signature
(makeinfo-region REGION-BEGINNING REGION-END)
Documentation
Make Info file from region of current Texinfo file, and switch to it.
This command does not offer the next-error feature since it would
apply to a temporary file, not the original; use the makeinfo-buffer
command to gain use of next-error.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/textmodes/makeinfo.el.gz
;;; The `makeinfo' function definitions
;;;###autoload
(defun makeinfo-region (region-beginning region-end)
"Make Info file from region of current Texinfo file, and switch to it.
This command does not offer the `next-error' feature since it would
apply to a temporary file, not the original; use the `makeinfo-buffer'
command to gain use of `next-error'."
(interactive "r")
(let (;; filename-or-header
filename-or-header-beginning
filename-or-header-end)
;; Cannot use `let' for makeinfo-temp-file or
;; makeinfo-output-file-name since `makeinfo-compilation-sentinel'
;; needs them.
(setq makeinfo-temp-file
(concat
(make-temp-file
(substring (buffer-file-name)
0
(or (string-match "\\.tex" (buffer-file-name))
(length (buffer-file-name)))))
".texinfo"))
(save-excursion
(save-restriction
(widen)
(goto-char (point-min))
(let ((search-end (save-excursion (forward-line 100) (point))))
;; Find and record the Info filename,
;; or else explain that a filename is needed.
(if (re-search-forward
"^@setfilename[ \t]+\\([^ \t\n]+\\)[ \t]*"
search-end t)
(setq makeinfo-output-file-name
(buffer-substring (match-beginning 1) (match-end 1)))
(error
"The texinfo file needs a line saying: @setfilename <name>"))
;; Find header and specify its beginning and end.
(goto-char (point-min))
(if (and
(prog1
(search-forward tex-start-of-header search-end t)
(beginning-of-line)
;; Mark beginning of header.
(setq filename-or-header-beginning (point)))
(prog1
(search-forward tex-end-of-header nil t)
(beginning-of-line)
;; Mark end of header
(setq filename-or-header-end (point))))
;; Insert the header into the temporary file.
(write-region
(min filename-or-header-beginning region-beginning)
filename-or-header-end
makeinfo-temp-file nil nil)
;; Else no header; insert @filename line into temporary file.
(goto-char (point-min))
(search-forward "@setfilename" search-end t)
(beginning-of-line)
(setq filename-or-header-beginning (point))
(forward-line 1)
(setq filename-or-header-end (point))
(write-region
(min filename-or-header-beginning region-beginning)
filename-or-header-end
makeinfo-temp-file nil nil))
;; Insert the region into the file.
(write-region
(max region-beginning filename-or-header-end)
region-end
makeinfo-temp-file t nil)
;; Run the `makeinfo-compile' command in the *compilation* buffer
(save-excursion
(makeinfo-compile
(concat makeinfo-run-command
" "
makeinfo-options
" "
makeinfo-temp-file)
t
'makeinfo-compilation-sentinel-region)))))))