X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/6b9bfa954b6f7a1085c87a3a20404180182c28d5..614b38a99518cb219f3b24016ca8aa638f0581be:/lisp/textmodes/texinfmt.el diff --git a/lisp/textmodes/texinfmt.el b/lisp/textmodes/texinfmt.el index 6f1da5db52..d46d2f81fd 100644 --- a/lisp/textmodes/texinfmt.el +++ b/lisp/textmodes/texinfmt.el @@ -1,8 +1,8 @@ ;;; texinfmt.el --- format Texinfo files into Info files -;; Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, -;; 1994, 1995, 1996, 1997, 1998, 2000, 2001 -;; Free Software Foundation, Inc. +;; Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, +;; 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, +;; 2004, 2005 Free Software Foundation, Inc. ;; Maintainer: Robert J. Chassell ;; Keywords: maint, tex, docs @@ -21,8 +21,8 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Commentary: @@ -37,15 +37,15 @@ (defmacro defcustom (var value doc &rest ignore) `(defvar ,var ,value ,doc))) -(defvar texinfmt-version "2.40 of 6 Dec 2002") +(defvar texinfmt-version "2.41 of 1 Mar 2005") (defun texinfmt-version (&optional here) "Show the version of texinfmt.el in the minibuffer. If optional argument HERE is non-nil, insert info at point." (interactive "P") - (let ((version-string + (let ((version-string (format "Version of \`texinfmt.el\': %s" texinfmt-version))) - (if here + (if here (insert version-string) (if (interactive-p) (message "%s" version-string) @@ -134,6 +134,15 @@ Info-split to do these manually." (defvar texinfo-region-buffer-name "*Info Region*" "*Name of the temporary buffer used by \\[texinfo-format-region].") +(defvar texinfo-pre-format-hook nil + "Hook called before the conversion of the Texinfo file to Info format. +The functions on this hook are called with argument BUFFER, the buffer +containing the Texinfo file.") + +;; These come from tex-mode.el. +(defvar tex-start-of-header) +(defvar tex-end-of-header) + ;;;###autoload (defun texinfo-format-region (region-beginning region-end) "Convert the current region of the Texinfo file to Info format. @@ -165,8 +174,8 @@ converted to Info is stored in a temporary buffer." (header-text "") (header-beginning 1) (header-end 1)) - -;;; Copy lines between beginning and end of header lines, + +;;; Copy lines between beginning and end of header lines, ;;; if any, or else copy the `@setfilename' line, if any. (save-excursion (save-restriction @@ -175,13 +184,13 @@ converted to Info is stored in a temporary buffer." (let ((search-end (save-excursion (forward-line 100) (point)))) (if (or ;; Either copy header text. - (and - (prog1 + (and + (prog1 (search-forward tex-start-of-header search-end t) (forward-line 1) ;; Mark beginning of header. (setq header-beginning (point))) - (prog1 + (prog1 (search-forward tex-end-of-header nil t) (beginning-of-line) ;; Mark end of header @@ -194,8 +203,8 @@ converted to Info is stored in a temporary buffer." (setq header-beginning (point)) (forward-line 1) (setq header-end (point)))) - - ;; Copy header + + ;; Copy header (setq header-text (buffer-substring-no-properties (min header-beginning region-beginning) @@ -211,10 +220,11 @@ converted to Info is stored in a temporary buffer." input-buffer (max region-beginning header-end) region-end) + (run-hook-with-args 'texinfo-pre-format-hook input-buffer) ;; Make sure region ends in a newline. (or (= (preceding-char) ?\n) (insert "\n")) - + (goto-char (point-min)) (texinfo-mode) (message "Converting region to Info format...") @@ -224,7 +234,7 @@ converted to Info is stored in a temporary buffer." ;; Insert @include files so `texinfo-raise-lower-sections' can ;; work on them without losing track of multiple - ;; @raise/@lowersections commands. + ;; @raise/@lowersections commands. (while (re-search-forward "^@include" nil t) (setq texinfo-command-end (point)) (let ((filename (concat input-directory @@ -240,12 +250,9 @@ converted to Info is stored in a temporary buffer." (goto-char (point-min)) ;; Remove `@setfilename' line from included file, if any, ;; so @setfilename command not duplicated. - (if (re-search-forward - "^@setfilename" (save-excursion (forward-line 100) (point)) t) - (progn - (beginning-of-line) - (delete-region - (point) (save-excursion (forward-line 1) (point))))))))) + (if (re-search-forward "^@setfilename" (line-end-position 100) t) + (delete-region (line-beginning-position 1) + (line-beginning-position 2))))))) ;; Raise or lower level of each section, if necessary. (goto-char (point-min)) @@ -267,11 +274,11 @@ converted to Info is stored in a temporary buffer." (goto-char (point-min)) (if (looking-at "\\\\input[ \t]+texinfo") - (delete-region (point) (save-excursion (forward-line 1) (point)))) + (delete-region (point) (line-beginning-position 2))) ;; Insert Info region title text. (goto-char (point-min)) - (if (search-forward + (if (search-forward "@setfilename" (save-excursion (forward-line 100) (point)) t) (progn (setq texinfo-command-end (point)) @@ -280,7 +287,7 @@ converted to Info is stored in a temporary buffer." (let ((arg (texinfo-parse-arg-discard))) (insert " " texinfo-region-buffer-name - " buffer for: `") + " buffer for: `") (insert (file-name-nondirectory (expand-file-name arg))) (insert "', -*-Text-*-\n"))) ;; Else no `@setfilename' line @@ -371,6 +378,7 @@ if large. You can use Info-split to do this manually." (find-file outfile) (texinfo-mode) (erase-buffer) + (buffer-disable-undo) (message "Formatting Info file: %s" outfile) (setq texinfo-format-filename @@ -380,18 +388,19 @@ if large. You can use Info-split to do this manually." (set-syntax-table texinfo-format-syntax-table) (insert-buffer-substring input-buffer) + (run-hook-with-args 'texinfo-pre-format-hook input-buffer) (message "Converting %s to Info format..." (buffer-name input-buffer)) - + ;; Insert @include files so `texinfo-raise-lower-sections' can ;; work on them without losing track of multiple - ;; @raise/@lowersections commands. + ;; @raise/@lowersections commands. (goto-char (point-min)) (while (re-search-forward "^@include" nil t) (setq texinfo-command-end (point)) (let ((filename (concat input-directory (texinfo-parse-line-arg)))) (re-search-backward "^@include") - (delete-region (point) (save-excursion (forward-line 1) (point))) + (delete-region (point) (line-beginning-position 2)) (message "Reading included file: %s" filename) (save-excursion (save-restriction @@ -401,13 +410,9 @@ if large. You can use Info-split to do this manually." (goto-char (point-min)) ;; Remove `@setfilename' line from included file, if any, ;; so @setfilename command not duplicated. - (if (re-search-forward - "^@setfilename" - (save-excursion (forward-line 100) (point)) t) - (progn - (beginning-of-line) - (delete-region - (point) (save-excursion (forward-line 1) (point))))))))) + (if (re-search-forward "^@setfilename" (line-end-position 100) t) + (delete-region (line-beginning-position 1) + (line-beginning-position 2))))))) ;; Raise or lower level of each section, if necessary. (goto-char (point-min)) (texinfo-raise-lower-sections) @@ -465,8 +470,7 @@ if large. You can use Info-split to do this manually." ;; Convert three hyphens in a row to two. (goto-char min) (while (re-search-forward "\\( \\|\\w\\)\\(---\\)\\( \\|\\w\\)" max t) - (delete-region (1+ (match-beginning 2)) (+ 2 (match-beginning - 2))))) + (delete-region (1+ (match-beginning 2)) (+ 2 (match-beginning 2))))) ;;; Handle paragraph filling @@ -478,11 +482,12 @@ if large. You can use Info-split to do this manually." "^@" "\\(" ;; add "itemize\\|" (from experiment of 2001 Nov 28) - ;; because of a problem with @end itemize@refill + ;; because of a problem with @end itemize@refill ;; I don't know if this causes other problems. ;; I suspect itemized lists don't get filled properly and a ;; more precise fix is required. Bob - "itemize\\|" + ;; commented out on 2005 Feb 28 by Bob + ;; "itemize\\|" "direntry\\|" "lisp\\|" "smalllisp\\|" @@ -580,51 +585,47 @@ if large. You can use Info-split to do this manually." (defun texinfo-append-refill () "Append @refill at end of each paragraph that should be filled. -Do not append @refill to paragraphs within @example and similar environments. +Do not append @refill to paragraphs within @example and similar environments. Do not append @refill to paragraphs containing @w{TEXT} or @*." ;; It is necessary to append @refill before other processing because ;; the other processing removes information that tells Texinfo ;; whether the text should or should not be filled. - + (while (< (point) (point-max)) (let ((refill-blank-lines "^[ \t\n]*$") (case-fold-search nil)) ; Don't confuse @TeX and @tex.... (beginning-of-line) ;; 1. Skip over blank lines; - ;; skip over lines beginning with @-commands, + ;; skip over lines beginning with @-commands, ;; but do not skip over lines ;; that are no-refill environments such as @example or ;; that begin with within-paragraph @-commands such as @code. (while (and (looking-at (concat "^@\\|^\\\\\\|" refill-blank-lines)) - (not (looking-at + (not (looking-at (concat - "\\(" + "\\(" texinfo-no-refill-regexp - "\\|" + "\\|" texinfo-part-of-para-regexp "\\)"))) (< (point) (point-max))) (forward-line 1)) ;; 2. Skip over @example and similar no-refill environments. (if (looking-at texinfo-no-refill-regexp) - (let ((environment - (buffer-substring-no-properties (match-beginning 1) (match-end 1)))) + (let ((environment (match-string-no-properties 1))) (progn (re-search-forward (concat "^@end " environment) nil t) (forward-line 1))) ;; Else ;; 3. Do not refill a paragraph containing @w or @*, or ending ;; with @ followed by a newline. - (if (or - (>= (point) (point-max)) - (re-search-forward - "@w{\\|@\\*\\|@\n\n" - (save-excursion - (forward-paragraph) - (forward-line 1) - (point)) t)) + (if (or (>= (point) (point-max)) + (re-search-forward + "@w{\\|@\\*\\|@\n\n" + (save-excursion (forward-paragraph) (forward-line 1) (point)) + t)) ;; Go to end of paragraph and do nothing. - (forward-paragraph) + (forward-paragraph) ;; 4. Else go to end of paragraph and insert @refill (forward-paragraph) (forward-line -1) @@ -636,7 +637,7 @@ Do not append @refill to paragraphs containing @w{TEXT} or @*." (forward-char 1) (unless (re-search-backward "@c[ \t\n]\\|@comment[ \t\n]" line-beg t) (forward-char -1)) - (unless (re-search-backward "@refill\\|@bye" line-beg t) + (unless (re-search-backward "@refill\\|^[ \t]*@" line-beg t) (insert "@refill"))) (forward-line 1)))))) @@ -644,8 +645,8 @@ Do not append @refill to paragraphs containing @w{TEXT} or @*." ;;; Handle `@raisesections' and `@lowersections' commands ;; These commands change the hierarchical level of chapter structuring -;; commands. -;; +;; commands. +;; ;; @raisesections changes @subsection to @section, ;; @section to @chapter, ;; etc. @@ -660,7 +661,7 @@ Do not append @refill to paragraphs containing @w{TEXT} or @*." ;; ;; Repeated @raisesections/@lowersections continue to raise or lower ;; the heading level. -;; +;; ;; An @lowersections command cancels an @raisesections command, and ;; vice versa. ;; @@ -671,7 +672,7 @@ Do not append @refill to paragraphs containing @w{TEXT} or @*." ;; @section produce chapter headings). (defun texinfo-raise-lower-sections () - "Raise or lower the hierarchical level of chapters, sections, etc. + "Raise or lower the hierarchical level of chapters, sections, etc. This function acts according to `@raisesections' and `@lowersections' commands in the Texinfo file. @@ -705,13 +706,13 @@ level a step at a time. An attempt to raise above `chapters' reproduces chapter commands; an attempt to lower below subsubsections reproduces subsubsection commands." - + ;; `texinfo-section-types-regexp' is defined in `texnfo-upd.el'; ;; it is a regexp matching chapter, section, other headings ;; (but not the top node). (let (type (level 0)) - (while + (while (re-search-forward (concat "\\(\\(^@\\(raise\\|lower\\)sections\\)\\|\\(" @@ -720,23 +721,23 @@ commands." nil t) (beginning-of-line) (save-excursion (setq type (read (current-buffer)))) - (cond - + (cond + ;; 1. Increment level ((eq type '@raisesections) (setq level (1+ level)) (delete-region (point) (save-excursion (forward-line 1) (point)))) - + ;; 2. Decrement level ((eq type '@lowersections) (setq level (1- level)) (delete-region (point) (save-excursion (forward-line 1) (point)))) - + ;; Now handle structuring commands ((cond - + ;; 3. Raise level when positive ((> level 0) (let ((count level) @@ -747,10 +748,10 @@ commands." (setq count (1- count))) (kill-word 1) (insert (symbol-name new-level)))) - + ;; 4. Do nothing except move point when level is zero ((= level 0) (forward-line 1)) - + ;; 5. Lower level when positive ((< level 0) (let ((count level) @@ -770,17 +771,17 @@ commands." (@majorheading . @majorheading) (@chapheading . @chapheading) (@appendix . @appendix) - + (@section . @chapter) (@unnumberedsec . @unnumbered) (@heading . @chapheading) (@appendixsec . @appendix) - + (@subsection . @section) (@unnumberedsubsec . @unnumberedsec) (@subheading . @heading) (@appendixsubsec . @appendixsec) - + (@subsubsection . @subsection) (@unnumberedsubsubsec . @unnumberedsubsec) (@subsubheading . @subheading) @@ -792,23 +793,23 @@ The keys specify types of section; the values correspond to the next higher types.") (defvar texinfo-lowersections-alist - '((@chapter . @section) + '((@chapter . @section) (@unnumbered . @unnumberedsec) (@centerchap . @unnumberedsec) (@majorheading . @heading) (@chapheading . @heading) (@appendix . @appendixsec) - + (@section . @subsection) (@unnumberedsec . @unnumberedsubsec) (@heading . @subheading) (@appendixsec . @appendixsubsec) - + (@subsection . @subsubsection) (@unnumberedsubsec . @unnumberedsubsubsec) (@subheading . @subsubheading) (@appendixsubsec . @appendixsubsubsec) - + (@subsubsection . @subsubsection) ; Cannot go lower. (@unnumberedsubsubsec . @unnumberedsubsubsec) (@subsubheading . @subsubheading) @@ -841,15 +842,15 @@ lower types.") ;; These are the single-character accent commands: @^ @` @' @" @= @~ ;; In Info, they are simply quoted and the @ deleted. ;; Other single-character commands: - ;; @* forces a line break, + ;; @* forces a line break, ;; @- is a discretionary hyphenation point; does nothing in Info. ;; @, @, @ each produce a single space, ;; unless followed by a newline. - ;; + ;; ;; Old version 2.34 expression: (looking-at "[@{}^'` *\"?!]") (if (looking-at "[@{}^'`\"=~ \t\n*?!-]") ;; @*, causes a line break. - (cond + (cond ;; @*, a line break ((= (following-char) ?*) ;; remove command @@ -857,7 +858,7 @@ lower types.") ;; insert return if not at end of line; ;; else line is already broken. (if (not (= (following-char) ?\n)) - (insert ?\n))) + (insert ?\n))) ;; @-, deleted ((= (following-char) ?-) (delete-region (1- (point)) (1+ (point)))) @@ -868,7 +869,7 @@ lower types.") ;; insert single space if not at end of line; ;; else line is already broken. (if (not (= (following-char) ?\n)) - (insert ? ))) + (insert ? ))) ((= (following-char) ?\t) (delete-region (1- (point)) (1+ (point))) ;; insert single space if not at end of line; @@ -917,7 +918,7 @@ lower types.") ;; Handle let aliasing (setq texinfo-command-name (let (trial - (cmdname + (cmdname (buffer-substring-no-properties (1+ texinfo-command-start) texinfo-command-end))) (while (setq trial (assoc cmdname texinfo-alias-list)) @@ -931,26 +932,27 @@ lower types.") (if enclosure-type (progn (insert - (car (car (cdr enclosure-type))) + (car (car (cdr enclosure-type))) (texinfo-parse-arg-discard) (car (cdr (car (cdr enclosure-type))))) (goto-char texinfo-command-start)) (let ((cmd (get texinfo-command-name 'texinfo-format))) (if cmd (funcall cmd) (texinfo-unsupported))))))) - + (cond (texinfo-stack (goto-char (nth 2 (car texinfo-stack))) (error "Unterminated @%s" (car (car texinfo-stack))))) ;; Remove excess whitespace - (whitespace-cleanup)) + (let ((whitespace-silent t)) + (whitespace-cleanup))) -(defvar texinfo-copying-text "" +(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; + "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)))) @@ -961,7 +963,7 @@ insert the text with the @insertcopying command." (delete-region beg end))) (defun texinfo-insertcopying () - "Insert the copyright notice and copying permissions from the Texinfo file, + "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))) @@ -983,7 +985,7 @@ which are indicated by the @copying ... @end copying command." (defun texinfo-parse-line-arg () "Return argument of @-command as string. -Argument is separated from command either by a space or by a brace. +Argument is separated from command either by a space or by a brace. If a space, return rest of line, with beginning and ending white space removed. If a brace, return string between braces. Leave point after argument." @@ -1087,13 +1089,13 @@ Leave point after argument." args) (search-forward "{") (save-excursion - (texinfo-format-expand-region + (texinfo-format-expand-region (point) (save-excursion (up-list 1) (1- (point))))) ;; The following does not handle cross references of the form: ;; `@xref{bullet, , @code{@@bullet}@{@}}.' because the ;; re-search-forward finds the first right brace after the second - ;; comma. + ;; comma. (while (/= (preceding-char) ?\}) (skip-chars-forward " \t\n") (setq beg (point)) @@ -1160,7 +1162,7 @@ Leave point after argument." ;; Only `texinfo-format-buffer' handles @setfilename with this ;; definition; `texinfo-format-region' handles @setfilename, if any, -;; specially. +;; specially. (put 'setfilename 'texinfo-format 'texinfo-format-setfilename) (defun texinfo-format-setfilename () (texinfo-parse-arg-discard)) @@ -1196,14 +1198,14 @@ Leave point after argument." (put 'anchor 'texinfo-format 'texinfo-anchor) (defun texinfo-anchor () - (let (anchor-string + (let (anchor-string (here (- (point) 7)) ; save location of beginning of `@anchor' (arg (texinfo-parse-arg-discard))) (if (looking-at " ") ; since a space may be left after -discard (delete-char 1)) - (forward-paragraph) + (forward-paragraph) (let ((end (point))) - (if (save-excursion + (if (save-excursion (backward-word 1) (search-forward "@refill" end t)) (setq anchor-string "@anchor-yes-refill") @@ -1221,12 +1223,12 @@ Leave point after argument." ;; The @detailmenu should be removed eventually. ;; According to Karl Berry, 31 August 1996: -;; +;; ;; You don't like, I don't like it. I agree, it would be better just to ;; fix the bug [in `makeinfo']. .. At this point, since inserting those ;; two commands in the Elisp fn is trivial, I don't especially want to ;; expend more effort... -;; +;; ;; I added a couple sentences of documentation to the manual (putting the ;; blame on makeinfo where it belongs :-(). @@ -1292,18 +1294,18 @@ Leave point after argument." ;;; URL Reference: @uref -;; @uref produces a reference to a uniform resource locator (URL). -;; It takes one mandatory argument, the URL, and one optional argument, -;; the text to display (the default is the URL itself). +;; @uref produces a reference to a uniform resource locator (URL). +;; It takes one mandatory argument, the URL, and one optional argument, +;; the text to display (the default is the URL itself). (put 'uref 'texinfo-format 'texinfo-format-uref) (defun texinfo-format-uref () "Format URL and optional URL-TITLE. -Insert ` ... ' around URL if no URL-TITLE argument; +Insert ` ... ' around URL if no URL-TITLE argument; otherwise, insert URL-TITLE followed by URL in parentheses." (let ((args (texinfo-format-parse-args))) (texinfo-discard-command) - ;; if url-title + ;; if url-title (if (nth 1 args) (insert (nth 1 args) " (" (nth 0 args) ")") (insert "`" (nth 0 args) "'")) @@ -1390,6 +1392,39 @@ otherwise, insert URL-TITLE followed by URL in parentheses." (defun texinfo-format-soft-hyphen () (texinfo-discard-command)) + +;;; @kbdinputstyle, @vskip, headings & footings +;; These commands for not for Info and should never +;; appear in an Info environment; but if they do, +;; this causes them to be discarded. + +;; @kbdinputstyle +(put 'kbdinputstyle 'texinfo-format 'texinfo-discard-line-with-args) + +;; @vskip +(put 'vskip 'texinfo-format 'texinfo-discard-line-with-args) + +;; headings & footings +(put 'evenfooting 'texinfo-format 'texinfo-discard-line-with-args) +(put 'evenheading 'texinfo-format 'texinfo-discard-line-with-args) +(put 'oddfooting 'texinfo-format 'texinfo-discard-line-with-args) +(put 'oddheading 'texinfo-format 'texinfo-discard-line-with-args) +(put 'everyfooting 'texinfo-format 'texinfo-discard-line-with-args) +(put 'everyheading 'texinfo-format 'texinfo-discard-line-with-args) + + +;;; @documentdescription ... @end documentdescription +;; This command is for HTML output and should never +;; appear in an Info environment; but if it does, +;; this causes it to be discarded. + +(put 'documentdescription 'texinfo-format 'texinfo-format-documentdescription) +(defun texinfo-format-documentdescription () + (delete-region texinfo-command-start + (progn (re-search-forward "^@end documentdescription[ \t]*\n") + (point)))) + + ;;; @center, @sp, and @br @@ -1428,16 +1463,16 @@ If used within a line, follow `@br' with braces." ;; This command is followed immediately by a left brace, then by the text of ;; the footnote, and then by a terminating right brace. The ;; template for a footnote is: -;; +;; ;; @footnote{TEXT} ;; ;; Info has two footnote styles: -;; +;; ;; * In the End of node style, all the footnotes for a single node ;; are placed at the end of that node. The footnotes are ;; separated from the rest of the node by a line of dashes with ;; the word `Footnotes' within it. -;; +;; ;; * In the Separate node style, all the footnotes for a single node ;; are placed in an automatically constructed node of their own. @@ -1445,10 +1480,10 @@ If used within a line, follow `@br' with braces." ;; @footnotestyle separate ;; or ;; @footnotestyle end -;; +;; ;; The default is separate -(defvar texinfo-footnote-style "separate" +(defvar texinfo-footnote-style "separate" "Footnote style, either separate or end.") (put 'footnotestyle 'texinfo-format 'texinfo-footnotestyle) @@ -1501,7 +1536,7 @@ The node is constructed automatically." (forward-line -1)) ;; two cases: for the first footnote, we must insert a node header; - ;; for the second and subsequent footnotes, we need only insert + ;; for the second and subsequent footnotes, we need only insert ;; the text of the footnote. (if (save-excursion @@ -1598,7 +1633,7 @@ Used by @refill indenting command to avoid indenting within lists, etc.") (put 'enumerate 'texinfo-format 'texinfo-enumerate) (defun texinfo-enumerate () (texinfo-push-stack - 'enumerate + 'enumerate (progn (skip-chars-forward " \t") (if (eolp) 1 @@ -1698,7 +1733,7 @@ Used by @refill indenting command to avoid indenting within lists, etc.") (setcar (cdr (car texinfo-stack)) (make-symbol (char-to-string - (1+ + (1+ (string-to-char enumerating-symbol)))))) (t (error @@ -1732,8 +1767,8 @@ Used by @refill indenting command to avoid indenting within lists, etc.") (put 'table 'texinfo-format 'texinfo-table) (defun texinfo-table () - (texinfo-push-stack - 'table + (texinfo-push-stack + 'table (progn (skip-chars-forward " \t") (if (eolp) "@asis" @@ -1847,14 +1882,14 @@ Used by @refill indenting command to avoid indenting within lists, etc.") ;; ;; Long lines of text are filled within columns. ;; -;; Using the Emacs Lisp formatter, texinfmt.el, +;; Using the Emacs Lisp formatter, texinfmt.el, ;; the whitespace between columns can be increased by setting ;; `texinfo-extra-inter-column-width' to a value greater than 0. By default, ;; there is at least one blank space between columns. ;; ;; The Emacs Lisp formatter, texinfmt.el, ignores the following four ;; commands that are defined in texinfo.tex for printed output. -;; +;; ;; @multitableparskip, ;; @multitableparindent, ;; @multitablecolmargin, @@ -1862,40 +1897,40 @@ Used by @refill indenting command to avoid indenting within lists, etc.") ;; How @multitable works. ;; ===================== -;; +;; ;; `texinfo-multitable' reads the @multitable line and determines from it -;; how wide each column should be. -;; +;; how wide each column should be. +;; ;; Also, it pushes this information, along with an identifying symbol, ;; onto the `texinfo-stack'. At the @end multitable command, the stack ;; is checked for its matching @multitable command, and then popped, or ;; else an error is signaled. Also, this command pushes the location of ;; the start of the table onto the stack. -;; +;; ;; `texinfo-end-multitable' checks the `texinfo-stack' that the @end ;; multitable truly is ending a corresponding beginning, and if it is, ;; pops the stack. -;; -;; `texinfo-multitable-widths' is called by `texinfo-multitable'. +;; +;; `texinfo-multitable-widths' is called by `texinfo-multitable'. ;; The function returns a list of the widths of each column in a ;; multi-column table, based on the information supplied by the arguments ;; to the @multitable command (by arguments, I mean the text on the rest ;; of the @multitable line, not the remainder of the multi-column table ;; environment). -;; +;; ;; `texinfo-multitable-item' formats a row within a multicolumn table. ;; This command is executed when texinfmt sees @item inside @multitable. ;; Cells in row are separated by `@tab's. Widths of cells are specified ;; by the arguments in the @multitable line. Cells are filled. All cells ;; are made to be the same height by padding their bottoms, as needed, ;; with blanks. -;; -;; `texinfo-multitable-extract-row' is called by `texinfo-multitable-item'. +;; +;; `texinfo-multitable-extract-row' is called by `texinfo-multitable-item'. ;; This function returns the text in a multitable row, as a string. ;; The start of a row is marked by an @item and the end of row is the ;; beginning of next @item or beginning of the @end multitable line. ;; Cells within a row are separated by @tab. -;; +;; ;; Note that @tab, the cell separators, are not treated as independent ;; Texinfo commands. @@ -1939,7 +1974,7 @@ of the current width of the text (i.e., of the fill-column). Long lines of text are filled within columns. -Using the Emacs Lisp formatter, texinfmt.el, +Using the Emacs Lisp formatter, texinfmt.el, the whitespace between columns can be increased by setting `texinfo-extra-inter-column-width' to a value greater than 0. By default, there is at least one blank space between columns. @@ -1981,7 +2016,7 @@ commands that are defined in texinfo.tex for printed output. ;; @multitable {Column 1 template} {Column 2} {Column 3 example} ;; Place point before first argument (skip-chars-forward " \t") - (cond + (cond ;; Check for common misspelling ((looking-at "@columnfraction ") (error "In @multitable, @columnfractions misspelled")) @@ -2166,6 +2201,27 @@ This command is executed when texinfmt sees @item inside @multitable." (kill-buffer texinfo-multitable-buffer-name) (setq fill-column existing-fill-column))) + +;;; @image +;; Use only the FILENAME argument to the command. +;; In Info, ignore the other arguments. + +(put 'image 'texinfo-format 'texinfo-format-image) +(defun texinfo-format-image () + "Insert an image from an an file ending in .txt. +Use only the FILENAME arg; for Info, ignore the other arguments to @image." + (let ((args (texinfo-format-parse-args)) + filename) + (when (null (nth 0 args)) + (error "Invalid image command")) + (texinfo-discard-command) + ;; makeinfo uses FILENAME.txt + (setq filename (format "%s.txt" (nth 0 args))) + (message "Reading included file: %s" filename) + ;; verbatim for Info output + (goto-char (+ (point) (cadr (insert-file-contents filename)))) + (message "Reading included file: %s...done" filename))) + ;;; @ifinfo, @iftex, @tex, @ifhtml, @html, @ifplaintext, @ifxml, @xml ;; @ifnottex, @ifnotinfo, @ifnothtml, @ifnotplaintext, @ifnotxml @@ -2176,20 +2232,17 @@ This command is executed when texinfmt sees @item inside @multitable." (put 'iftex 'texinfo-format 'texinfo-format-iftex) (defun texinfo-format-iftex () (delete-region texinfo-command-start - (progn (re-search-forward "@end iftex[ \t]*\n") - (point)))) + (re-search-forward "@end iftex[ \t]*\n"))) (put 'ifhtml 'texinfo-format 'texinfo-format-ifhtml) (defun texinfo-format-ifhtml () (delete-region texinfo-command-start - (progn (re-search-forward "@end ifhtml[ \t]*\n") - (point)))) + (re-search-forward "@end ifhtml[ \t]*\n"))) (put 'ifplaintext 'texinfo-format 'texinfo-format-ifplaintext) (defun texinfo-format-ifplaintext () (delete-region texinfo-command-start - (progn (re-search-forward "@end ifplaintext[ \t]*\n") - (point)))) + (re-search-forward "@end ifplaintext[ \t]*\n"))) (put 'ifxml 'texinfo-format 'texinfo-format-ifxml) (defun texinfo-format-ifxml () @@ -2200,14 +2253,12 @@ This command is executed when texinfmt sees @item inside @multitable." (put 'tex 'texinfo-format 'texinfo-format-tex) (defun texinfo-format-tex () (delete-region texinfo-command-start - (progn (re-search-forward "@end tex[ \t]*\n") - (point)))) + (re-search-forward "@end tex[ \t]*\n"))) (put 'html 'texinfo-format 'texinfo-format-html) (defun texinfo-format-html () (delete-region texinfo-command-start - (progn (re-search-forward "@end html[ \t]*\n") - (point)))) + (re-search-forward "@end html[ \t]*\n"))) (put 'xml 'texinfo-format 'texinfo-format-xml) (defun texinfo-format-xml () @@ -2218,8 +2269,7 @@ This command is executed when texinfmt sees @item inside @multitable." (put 'ifnotinfo 'texinfo-format 'texinfo-format-ifnotinfo) (defun texinfo-format-ifnotinfo () (delete-region texinfo-command-start - (progn (re-search-forward "@end ifnotinfo[ \t]*\n") - (point)))) + (re-search-forward "@end ifnotinfo[ \t]*\n"))) (put 'ifnotplaintext 'texinfo-format 'texinfo-discard-line) (put 'ifnotplaintext 'texinfo-end 'texinfo-discard-command) @@ -2239,8 +2289,7 @@ This command is executed when texinfmt sees @item inside @multitable." (put 'titlepage 'texinfo-format 'texinfo-format-titlepage) (defun texinfo-format-titlepage () (delete-region texinfo-command-start - (progn (re-search-forward "@end titlepage[ \t]*\n") - (point)))) + (re-search-forward "@end titlepage[ \t]*\n"))) (put 'endtitlepage 'texinfo-format 'texinfo-discard-line) @@ -2249,8 +2298,7 @@ This command is executed when texinfmt sees @item inside @multitable." (put 'titlespec 'texinfo-format 'texinfo-format-titlespec) (defun texinfo-format-titlespec () (delete-region texinfo-command-start - (progn (re-search-forward "@end titlespec[ \t]*\n") - (point)))) + (re-search-forward "@end titlespec[ \t]*\n"))) (put 'endtitlespec 'texinfo-format 'texinfo-discard-line) @@ -2267,7 +2315,7 @@ This command is executed when texinfmt sees @item inside @multitable." ;;; @timestamp{} -;; Produce `Day Month Year Hour:Min' style of output. +;; Produce `Day Month Year Hour:Min' style of output. ;; eg `1 Jan 1900 13:52' (put 'timestamp 'texinfo-format 'texinfo-format-timestamp) @@ -2285,8 +2333,7 @@ This command is executed when texinfmt sees @item inside @multitable." (put 'ignore 'texinfo-format 'texinfo-format-ignore) (defun texinfo-format-ignore () (delete-region texinfo-command-start - (progn (re-search-forward "@end ignore[ \t]*\n") - (point)))) + (re-search-forward "@end ignore[ \t]*\n"))) (put 'endignore 'texinfo-format 'texinfo-discard-line) @@ -2297,11 +2344,11 @@ This command is executed when texinfmt sees @item inside @multitable." ;; command for Info, but not for TeX. A command defined using ;; `@definfoenclose' marks text by enclosing it in strings that precede ;; and follow the text. -;; +;; ;; Presumably, if you define a command with `@definfoenclose` for Info, ;; you will also define the same command in the TeX definitions file, ;; `texinfo.tex' in a manner appropriate for typesetting. -;; +;; ;; Write a `@definfoenclose' command on a line and follow it with three ;; arguments separated by commas (commas are used as separators in an ;; `@node' line in the same way). The first argument to @@ -2318,7 +2365,7 @@ This command is executed when texinfmt sees @item inside @multitable." ;; If you do a @definfoenclose{} on the name of a pre-defined macro (such ;; as @emph{}, @strong{}, @tt{}, or @i{}) the enclosure definition will ;; override the built-in definition. -;; +;; ;; An enclosure command defined this way takes one argument in braces. ;; ;; For example, you can write: @@ -2332,7 +2379,7 @@ This command is executed when texinfmt sees @item inside @multitable." ;; before and `\\' after the argument to `@phoo'. You can then write ;; `@phoo{bar}' wherever you want `//bar\\' highlighted in Info. ;; -;; Also, for TeX formatting, you could write +;; Also, for TeX formatting, you could write ;; ;; @iftex ;; @global@let@phoo=@i @@ -2381,8 +2428,8 @@ This command is executed when texinfmt sees @item inside @multitable." (setq texinfo-alias-list (cons (cons - (buffer-substring-no-properties (match-beginning 1) (match-end 1)) - (buffer-substring-no-properties (match-beginning 2) (match-end 2))) + (match-string-no-properties 1) + (match-string-no-properties 2)) texinfo-alias-list)) (texinfo-discard-command)) ) @@ -2459,6 +2506,35 @@ surrounded by in angle brackets." (insert (texinfo-parse-arg-discard)) (goto-char texinfo-command-start)) +;; @verb{TEXT} (in `makeinfo' 4.1 and later) +(put 'verb 'texinfo-format 'texinfo-format-verb) +(defun texinfo-format-verb () + "Format text between non-quoted unique delimiter characters verbatim. +Enclose the verbatim text, including the delimiters, in braces. Print +text exactly as written (but not the delimiters) in a fixed-width. + +For example, @verb\{|@|\} results in @ and +@verb\{+@'e?`!`+} results in @'e?`!`." + + (let ((delimiter (buffer-substring-no-properties + (1+ texinfo-command-end) (+ 2 texinfo-command-end)))) + (unless (looking-at "{") + (error "Not found: @verb start brace")) + (delete-region texinfo-command-start (+ 2 texinfo-command-end)) + (search-forward delimiter)) + (delete-backward-char 1) + (unless (looking-at "}") + (error "Not found: @verb end brace")) + (delete-char 1)) + +;; as of 2002 Dec 10 +;; see (texinfo)Block Enclosing Commands +;; need: @verbatim + +;; as of 2002 Dec 10 +;; see (texinfo)verbatiminclude +;; need: @verbatiminclude FILENAME + (put 'bullet 'texinfo-format 'texinfo-format-bullet) (defun texinfo-format-bullet () "Insert an asterisk. @@ -2469,7 +2545,7 @@ If used within a line, follow `@bullet' with braces." ;;; @kbd -;; Inside of @example ... @end example and similar environments, +;; Inside of @example ... @end example and similar environments, ;; @kbd does nothing; but outside of such environments, it places ;; single quotation marks around its argument. @@ -2504,7 +2580,7 @@ If used within a line, follow `@bullet' with braces." "Place single quote marks around arg, except in @example and similar." ;; Search forward for @end example closer than an @example. ;; Can stop search at nearest @node or texinfo-section-types-regexp - (let* ((stop + (let* ((stop (save-excursion (re-search-forward (concat "^@node\\|\\(" texinfo-section-types-regexp "\\)") @@ -2596,7 +2672,7 @@ If used within a line, follow `@bullet' with braces." (point))) (insert "INFO-DIR-SECTION " str "\n"))) -;;; @cartouche +;;; @cartouche ;; The @cartouche command is a noop in Info; in a printed manual, ;; it makes a box with rounded corners. @@ -2657,10 +2733,10 @@ If used within a line, follow `@bullet' with braces." (make-string (- fill-column (save-excursion - (end-of-line) + (end-of-line) (skip-chars-backward " \t") (delete-region (point) (progn (end-of-line) (point))) - (current-column))) + (current-column))) ? ))))) @@ -2707,7 +2783,7 @@ If used within a line, follow `@minus' with braces." ;;; Refilling and indenting: @refill, @paragraphindent, @noindent ;;; Indent only those paragraphs that are refilled as a result of an -;;; @refill command. +;;; @refill command. ;; * If the value is `asis', do not change the existing indentation at ;; the starts of paragraphs. @@ -2731,7 +2807,7 @@ Default is to leave the number of spaces as is." (let ((arg (texinfo-parse-arg-discard))) (if (string= "asis" arg) (setq texinfo-paragraph-indent "asis") - (setq texinfo-paragraph-indent (string-to-int arg))))) + (setq texinfo-paragraph-indent (string-to-number arg))))) (put 'refill 'texinfo-format 'texinfo-format-refill) (defun texinfo-format-refill () @@ -2739,26 +2815,26 @@ Default is to leave the number of spaces as is." Default is to leave paragraph indentation as is." (texinfo-discard-command) (let ((position (point-marker))) - (forward-paragraph -1) + (forward-paragraph -1) (if (looking-at "[ \t\n]*$") (forward-line 1)) ;; Do not indent if an entry in a list, table, or deffn, ;; or if paragraph is preceded by @noindent. ;; Otherwise, indent - (cond + (cond ;; delete a @noindent line and do not indent paragraph ((save-excursion (forward-line -1) - (looking-at "^@noindent")) + (looking-at "^@noindent")) (forward-line -1) (delete-region (point) (progn (forward-line 1) (point)))) ;; do nothing if "asis" ((equal texinfo-paragraph-indent "asis")) ;; do no indenting in list, etc. - ((> texinfo-stack-depth 0)) + ((> texinfo-stack-depth 0)) ;; otherwise delete existing whitespace and indent - (t + (t (delete-region (point) (progn (skip-chars-forward " \t") (point))) (insert (make-string texinfo-paragraph-indent ? )))) - (forward-paragraph 1) + (forward-paragraph 1) (forward-line -1) (end-of-line) ;; Do not fill a section title line with asterisks, hyphens, etc. that @@ -2768,7 +2844,7 @@ Default is to leave paragraph indentation as is." (paragraph-separate (concat paragraph-separate "\\|[-=.]+\\|\\*\\*+")) (previous-paragraph-start paragraph-start) - (paragraph-start + (paragraph-start (concat paragraph-start "\\|[-=.]+\\|\\*\\*+"))) (unwind-protect (fill-paragraph nil) @@ -2777,8 +2853,8 @@ Default is to leave paragraph indentation as is." (goto-char position))) (put 'noindent 'texinfo-format 'texinfo-noindent) -(defun texinfo-noindent () - (save-excursion +(defun texinfo-noindent () + (save-excursion (forward-paragraph 1) (if (search-backward "@refill" (save-excursion (forward-line -1) (point)) t) @@ -2825,7 +2901,7 @@ Default is to leave paragraph indentation as is." 1)) (symbol-value indexvar))))) -(defconst texinfo-indexvar-alist +(defvar texinfo-indexvar-alist '(("cp" . texinfo-cindex) ("fn" . texinfo-findex) ("vr" . texinfo-vindex) @@ -2862,7 +2938,7 @@ Default is to leave paragraph indentation as is." (fset index-formatting-command (list 'lambda 'nil - (list 'texinfo-index + (list 'texinfo-index (list 'quote index-alist-name)))))) @@ -2920,13 +2996,12 @@ Default is to leave paragraph indentation as is." ;; Subroutine for sorting an index. ;; At start of a line, return a string to sort the line under. (defun texinfo-sort-startkeyfun () - (let ((line - (buffer-substring-no-properties (point) (save-excursion (end-of-line) (point))))) + (let ((line (buffer-substring-no-properties (point) (line-end-position)))) ;; Canonicalize whitespace and eliminate funny chars. (while (string-match "[ \t][ \t]+\\|[^a-z0-9 ]+" line) (setq line (concat (substring line 0 (match-beginning 0)) " " - (substring line (match-end 0) (length line))))) + (substring line (match-end 0))))) line)) @@ -2959,7 +3034,7 @@ Default is to leave paragraph indentation as is." (indent-to 54) (insert (if (nth 2 (car indexelts)) - (format " %d." (nth 2 (car indexelts))) + (format " (line %3d)" (1+ (nth 2 (car indexelts)))) "") "\n")) ;; index entries from @include'd file @@ -3016,7 +3091,7 @@ Default is to leave paragraph indentation as is." ;; See the `texinfo-accent-commands' variable ;; in the section for `texinfo-append-refill'. -;; Also, see the defun for `texinfo-format-scan' +;; Also, see the defun for `texinfo-format-scan' ;; for single-character accent commands. ;; Command Info output Name @@ -3061,7 +3136,7 @@ Default is to leave paragraph indentation as is." ;; Note: The defun texinfo-format-scan ;; looks at "[@{}^'`\",=~ *?!-]" -;; In the case of @*, a line break is inserted; +;; In the case of @*, a line break is inserted; ;; in the other cases, the characters are simply quoted and the @ is deleted. ;; Thus, `texinfo-format-scan' handles the following ;; single-character accent commands: @^ @` @' @" @, @- @= @~ @@ -3071,19 +3146,19 @@ Default is to leave paragraph indentation as is." ;; (defun texinfo-format-circumflex-accent () ;; (texinfo-discard-command) ;; (insert "^")) -;; +;; ;; @` ==> ` grave accent ;; (put '\` 'texinfo-format 'texinfo-format-grave-accent) ;; (defun texinfo-format-grave-accent () ;; (texinfo-discard-command) ;; (insert "\`")) -;; +;; ;; @' ==> ' acute accent ;; (put '\' 'texinfo-format 'texinfo-format-acute-accent) ;; (defun texinfo-format-acute-accent () ;; (texinfo-discard-command) ;; (insert "'")) -;; +;; ;; @" ==> " umlaut accent ;; (put '\" 'texinfo-format 'texinfo-format-umlaut-accent) ;; (defun texinfo-format-umlaut-accent () @@ -3095,7 +3170,7 @@ Default is to leave paragraph indentation as is." ;; (defun texinfo-format-overbar-accent () ;; (texinfo-discard-command) ;; (insert "=")) -;; +;; ;; @~ ==> ~ tilde accent ;; (put '~ 'texinfo-format 'texinfo-format-tilde-accent) ;; (defun texinfo-format-tilde-accent () @@ -3255,7 +3330,7 @@ Default is to leave paragraph indentation as is." ;; In Info, `Category: name ARGS' ;; In index: name: node. line#. ;; -;; @defvr category name +;; @defvr category name ;; In Info, `Category: name' ;; In index: name: node. line#. ;; @@ -3276,30 +3351,30 @@ Default is to leave paragraph indentation as is." ;; 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 +;; @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#. +;; In index: name: node. line#. ;; -;; @deftypevar data-type name +;; @deftypevar data-type name ;; In Info, `Variable: data-type name' ;; In index: name: node. line#. but include args after name!? ;; -;; Generalized object oriented entity: +;; 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 +;; @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... +;; @defmethod class name args... ;; In Info, `Method on class: name ARGS' ;; In index: name on class: node. line#. ;; @@ -3418,7 +3493,7 @@ Default is to leave paragraph indentation as is." ;; 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 + ;; @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)) @@ -3441,7 +3516,7 @@ Default is to leave paragraph indentation as is." ;; 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 + ;; @deftypevar data-type name ;; In Info, `Variable: data-type name' ;; Note: args in lower case, unless modified in command line. ;; Use cdr of texinfo-defun-type to determine category: @@ -3458,7 +3533,7 @@ Default is to leave paragraph indentation as is." (put 'defop 'texinfo-deffn-formatting-property 'texinfo-format-defop) (put 'defopx 'texinfo-deffn-formatting-property 'texinfo-format-defop) (defun texinfo-format-defop (parsed-args) - ;; Generalized object oriented entity: + ;; Generalized object oriented entity: ;; @defop category class name args... ;; In Info, `Category on class: name ARG' ;; Note: args in upper case; use of `on' @@ -3475,8 +3550,8 @@ Default is to leave paragraph indentation as is." (put 'defcv 'texinfo-deffn-formatting-property 'texinfo-format-defcv) (put 'defcvx 'texinfo-deffn-formatting-property 'texinfo-format-defcv) (defun texinfo-format-defcv (parsed-args) - ;; Generalized object oriented entity: - ;; @defcv category class name + ;; 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)) @@ -3493,7 +3568,7 @@ Default is to leave paragraph indentation as is." (put 'defmethodx 'texinfo-deffn-formatting-property 'texinfo-format-defmethod) (defun texinfo-format-defmethod (parsed-args) ;; Specialized object oriented entity: - ;; @defmethod class name args... + ;; @defmethod class name args... ;; In Info, `Method on class: name ARGS' ;; Note: args in upper case; use of `on' ;; Use cdr of texinfo-defun-type to determine category: @@ -3531,27 +3606,27 @@ Default is to leave paragraph indentation as is." ;; 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 +;; @defun, +;; @defmac, +;; @defspec, +;; @defvar, +;; @defopt all use their 1st argument as the entry-proper ;; -;; @deffn, -;; @defvr, -;; @deftp +;; @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 +;; @deftypefn, +;; @deftypevr both use their 3rd argument as the entry-proper ;; -;; @defmethod uses its 2nd and 1st arguments as an 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 +;; @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 ;; @@ -3573,7 +3648,7 @@ Default is to leave paragraph indentation as is." ;; `index-list' will be texinfo-findex or the like (let ((index-list (get texinfo-command-name 'texinfo-defun-index))) (set index-list - (cons + (cons ;; Three elements: entry-proper, node-name, line-number (list (car parsed-args) @@ -3594,12 +3669,12 @@ Default is to leave paragraph indentation as is." (put 'deftypefunx 'texinfo-defun-indexing-property 'texinfo-index-deffn) (put 'deftypevar 'texinfo-defun-indexing-property 'texinfo-index-deffn) (put 'deftypevarx 'texinfo-defun-indexing-property 'texinfo-index-deffn) -(defun texinfo-index-deffn (parsed-args) +(defun texinfo-index-deffn (parsed-args) ;; use 2nd parsed-arg as entry-proper ;; `index-list' will be texinfo-findex or the like (let ((index-list (get texinfo-command-name 'texinfo-defun-index))) (set index-list - (cons + (cons ;; Three elements: entry-proper, node-name, line-number (list (car (cdr parsed-args)) @@ -3619,7 +3694,7 @@ Default is to leave paragraph indentation as is." ;; `index-list' will be texinfo-findex or the like (let ((index-list (get texinfo-command-name 'texinfo-defun-index))) (set index-list - (cons + (cons ;; Three elements: entry-proper, node-name, line-number (list (car (cdr (cdr parsed-args))) @@ -3637,10 +3712,10 @@ Default is to leave paragraph indentation as is." ;; `index-list' will be texinfo-findex or the like (let ((index-list (get texinfo-command-name 'texinfo-defun-index))) (set index-list - (cons + (cons ;; Three elements: entry-proper, node-name, line-number (list - (format "%s on %s" + (format "%s on %s" (car (cdr parsed-args)) (car parsed-args)) texinfo-last-node @@ -3657,10 +3732,10 @@ Default is to leave paragraph indentation as is." ;; `index-list' will be texinfo-findex or the like (let ((index-list (get texinfo-command-name 'texinfo-defun-index))) (set index-list - (cons + (cons ;; Three elements: entry-proper, node-name, line-number (list - (format "%s on %s" + (format "%s on %s" (car (cdr (cdr parsed-args))) (car (cdr parsed-args))) texinfo-last-node @@ -3677,10 +3752,10 @@ Default is to leave paragraph indentation as is." ;; `index-list' will be texinfo-findex or the like (let ((index-list (get texinfo-command-name 'texinfo-defun-index))) (set index-list - (cons + (cons ;; Three elements: entry-proper, node-name, line-number (list - (format "%s of %s" + (format "%s of %s" (car (cdr parsed-args)) (car parsed-args)) texinfo-last-node @@ -3697,10 +3772,10 @@ Default is to leave paragraph indentation as is." ;; `index-list' will be texinfo-findex or the like (let ((index-list (get texinfo-command-name 'texinfo-defun-index))) (set index-list - (cons + (cons ;; Three elements: entry-proper, node-name, line-number (list - (format "%s of %s" + (format "%s of %s" (car (cdr (cdr parsed-args))) (car (cdr parsed-args))) texinfo-last-node @@ -3888,10 +3963,10 @@ Default is to leave paragraph indentation as is." ;; @set FLAG, then the text is not formatted; it is ignored. @ifclear ;; is the opposite of @ifset. -;; If a flag is set to a string with @set FLAG, +;; If a flag is set to a string with @set FLAG, ;; replace @value{FLAG} with the string. -;; If a flag with a value is cleared, -;; @value{FLAG} is invalid, +;; If a flag with a value is cleared, +;; @value{FLAG} is invalid, ;; as if there had never been any @set FLAG previously. (put 'clear 'texinfo-format 'texinfo-clear) @@ -3929,7 +4004,7 @@ The command `@value{foo}' expands to the value." 'flag-set) (get (car (read-from-string arg)) 'texinfo-set-value)) (insert (get (car (read-from-string arg)) 'texinfo-set-value))) - ((eq (get (car (read-from-string arg)) 'texinfo-whether-setp) + ((eq (get (car (read-from-string arg)) 'texinfo-whether-setp) 'flag-cleared) (insert (format "{No value for \"%s\"}" arg))) ((eq (get (car (read-from-string arg)) 'texinfo-whether-setp) nil) @@ -3949,11 +4024,10 @@ The command `@value{foo}' expands to the value." 'flag-cleared) ;; Clear region (i.e., cause the text to be ignored). (delete-region texinfo-command-start - (progn (re-search-forward "@end ifset[ \t]*\n") - (point)))) + (re-search-forward "@end ifset[ \t]*\n"))) ((eq (get (car (read-from-string arg)) 'texinfo-whether-setp) nil) - ;; In this case flag is neither set nor cleared. + ;; In this case flag is neither set nor cleared. ;; Act as if set, i.e. do nothing. ())))) @@ -3967,15 +4041,14 @@ The command `@value{foo}' expands to the value." 'flag-set) ;; Clear region (i.e., cause the text to be ignored). (delete-region texinfo-command-start - (progn (re-search-forward "@end ifclear[ \t]*\n") - (point)))) + (re-search-forward "@end ifclear[ \t]*\n"))) ((eq (get (car (read-from-string arg)) 'texinfo-whether-setp) 'flag-cleared) ;; Format the text (i.e., do not remove it); do nothing here. ()) ((eq (get (car (read-from-string arg)) 'texinfo-whether-setp) nil) - ;; In this case flag is neither set nor cleared. + ;; In this case flag is neither set nor cleared. ;; Act as if clear, i.e. do nothing. ())))) @@ -4254,8 +4327,8 @@ For example, invoke (message ">> Error: %s" (prin1-to-string err)) (message ">> point at") (let ((s (buffer-substring-no-properties (point) - (min (+ (point) 100) - (point-max)))) + (min (+ (point) 100) + (point-max)))) (tem 0)) (while (setq tem (string-match "\n+" s tem)) (setq s (concat (substring s 0 (match-beginning 0)) @@ -4270,4 +4343,5 @@ For example, invoke ;;; Place `provide' at end of file. (provide 'texinfmt) +;;; arch-tag: 1e8d9a2d-bca0-40a0-ac6c-dab01bc6f725 ;;; texinfmt.el ends here