diff options
Diffstat (limited to 'contrib/texinfo/emacs/detexinfo.el')
-rw-r--r-- | contrib/texinfo/emacs/detexinfo.el | 250 |
1 files changed, 0 insertions, 250 deletions
diff --git a/contrib/texinfo/emacs/detexinfo.el b/contrib/texinfo/emacs/detexinfo.el deleted file mode 100644 index fda99091c49a1..0000000000000 --- a/contrib/texinfo/emacs/detexinfo.el +++ /dev/null @@ -1,250 +0,0 @@ -;;; Here is a handy keybinding: - -(global-set-key "\C-x\\" 'detexinfo) - -;;;;;;;;;;;;;;;; detexinfo.el ;;;;;;;;;;;;;;;; -;;; -;;; Remove Texinfo commands from a Texinfo source file. -;;; -;;; Copyright (C) 1991, 1992 Free Software Foundation -;;; Robert J. Chassell -;;; bugs to bug-texinfo@prep.ai.mit.edu -;;; -;;; ==> test version <== -;;; Fails if Texinfo source file contains formatting errors. -;;; -;;; Version 0.05 - 3 Jun 1992 -;;; Add to list of removed commands. Improve messages. -;;; -;;; Version 0.04 - 27 Jan 1992 -;;; Rewrite to insert detexinfo'd text into a temporary buffer. -;;; -;;; Version 0.03 - 27 Dec 1991 -;;; Improved messages. -;;; -;;; Version 0.02 - 13 Nov 1991 -;;; detexinfo-remove-inline-cmd, detexinfo-syntax-table: Handle -;;; nested commands. -;;; detexinfo: Handle nested @'s, eg @samp{@}} and @samp{@@}; -;;; replace @TeX{} with TeX. -;;; -;;; Version 0.01 - 13 Nov 1991 -;;; -;;; Based on detex.el, by Bengt Martensson, 4 Oct 1987 -;;; -;;;;;;;;;;;;;;;; - -(defvar detexinfo-buffer-name "*detexinfo*" - "*Name of the temporary buffer used by \\[detexinfo].") - -(defvar detexinfo-syntax-table nil) - -(if detexinfo-syntax-table - nil - (setq detexinfo-syntax-table (make-syntax-table)) - (modify-syntax-entry ?\[ "." detexinfo-syntax-table) - (modify-syntax-entry ?\] "." detexinfo-syntax-table) - (modify-syntax-entry ?\" "." detexinfo-syntax-table) - (modify-syntax-entry ?\\ "." detexinfo-syntax-table) - (modify-syntax-entry ?\( "." detexinfo-syntax-table) - (modify-syntax-entry ?\) "." detexinfo-syntax-table) - (modify-syntax-entry ?{ "(}" detexinfo-syntax-table) - (modify-syntax-entry ?} "){" detexinfo-syntax-table)) - -(defun detexinfo () - "Remove Texinfo commands from current buffer, copying result to new buffer. -BUG: Fails if Texinfo source file contains formatting errors." - (interactive) - (let ((input-buffer (current-buffer))) - ;; Find a buffer to use. - (switch-to-buffer (get-buffer-create detexinfo-buffer-name)) - (setq major-mode 'detexinfo-mode) - (set-syntax-table detexinfo-syntax-table) - (erase-buffer) - (insert-buffer-substring input-buffer) - - ;; Replace @{ and @} with %#* and *#% temporarily, so @samp{@{} works. - ;; What is a better way of doing this?? - (goto-char (point-min)) - (while (search-forward "@{" nil t) ; e.g., @samp{@{} - (replace-match "%#*")) - (goto-char (point-min)) - (while (search-forward "@}" nil t) - (forward-char -3) ; e.g., @samp{@@} - (if (looking-at "@") ; Two @@ in a row - (progn - (delete-char 2) - (insert "%&%#")) - (forward-char 1) - (delete-char 2) - (insert "*#%"))) - - (goto-char (point-min)) - ;; Remove @refill, the only inline command without braces. - (while (search-forward "@refill" nil t) - (replace-match "")) - ;; Replace @TeX{} with TeX - (goto-char (point-min)) - (while (search-forward "@TeX{}" nil t) (replace-match "TeX" t t)) - - (detexinfo-remove-line-cmds-without-arg) - (detexinfo-remove-inline-cmds-without-arg) - (detexinfo-remove-inline-cmds-keep-arg) - (detexinfo-remove-line-cmds-deletable-arg) - (detexinfo-remove-line-cmds-maybe-delete-arg) - (detexinfo-remove-line-cmds-keep-arg) - - ;; Now replace %#*, *#%, and %&%# with {, }, and @@. - (goto-char (point-min)) - (while (search-forward "%#*" nil t) - (replace-match "{")) - (goto-char (point-min)) - (while (search-forward "*#%" nil t) - (replace-match "}")) - (goto-char (point-min)) - (while (search-forward "%&%#" nil t) - (replace-match "@@")) - - ;; Scan for remaining two character @-commands - (goto-char (point-min)) - (while (search-forward "@" nil t) - (cond ((looking-at "[*:]") - (delete-region (1- (point)) (1+ (point)))) - ((looking-at "[{}^@.'`]\"?!") - (delete-region (1- (point)) (point))))) - - (goto-char (point-min)) - (message "Done...removed Texinfo commands from buffer. You may save it."))) - -(defun detexinfo-remove-whole-line (cmd) - "Delete Texinfo line command CMD at beginning of line and rest of line." - (goto-char (point-min)) - (while - (re-search-forward - (concat "^@" cmd "[ \n]+") (point-max) t) - (goto-char (match-beginning 0)) - (delete-region - (point) (save-excursion (end-of-line) (1+ (point)))))) - -(defun detexinfo-remove-inline-cmd (cmd) - "Delete Texinfo inline command CMD, eg. @point, @code." - (goto-char (point-min)) - (while - (re-search-forward (concat "@" cmd "{") (point-max) t) - (save-excursion - (forward-char -1) - (forward-sexp 1) - (delete-char -1)) ; delete right brace - (delete-region (point) (match-beginning 0)))) - -;;;;;;;;;;;;;;;; - -;;; 1. @setfilename and other line commands with args to delete - -(defvar detexinfo-line-cmds-deletable-arg - '("enumerate" "ftable" "vtable" "itemize" "table" - "setfilename" "settitle" "setchapternewpage" - "footnotestyle" "paragraphindent" - "include" "need" "sp" - "clear" "ifclear" "ifset" "set" - "defcodeindex" "defindex" "syncodeindex" "synindex") - "List of Texinfo commands whose arguments should be deleted.") - -(defun detexinfo-remove-line-cmds-deletable-arg () - "Delete Texinfo line commands together with their args, eg @setfilename." - (message "Removing commands such as @enumerate...with their arguments...") - (mapcar 'detexinfo-remove-whole-line - detexinfo-line-cmds-deletable-arg)) - -;;; 2. @cindex and other cmds with args that may be deleted -;;; This list is here just to make it easier to revise the -;;; categories. In particular, you might want to keep the index entries. - -(defvar detexinfo-line-cmds-maybe-delete-arg - '("cindex" "findex" "kindex" "pindex" "tindex" "vindex" "node" - "c" "comment" "end" "headings" "printindex" "vskip" - "evenfooting" "evenheading" "everyfooting" "everyheading" - "oddfooting" "oddheading") - "List of Texinfo commands whose arguments may possibly be deleted.") - -(defun detexinfo-remove-line-cmds-maybe-delete-arg () - "Delete Texinfo line commands together with their arguments, eg, @cindex." - (message "Removing commands such as @cindex...with their arguments...") - (mapcar 'detexinfo-remove-whole-line - detexinfo-line-cmds-maybe-delete-arg)) - -;;; 3. @chapter and other line cmds with args to keep. - -(defvar detexinfo-line-cmds-keep-arg - '("top" "chapter" "section" "subsection" "subsubsection" - "unnumbered" "unnumberedsec" "unnumberedsubsec" "unnumberedsubsubsec" - "majorheading" "chapheading" "heading" "subheading" "subsubheading" - "appendix" "appendixsec" "appendixsubsec" "appendixsubsubsec" - "item" "itemx" - "title" "subtitle" "center" "author" "exdent" - "defcv" "deffn" "defivar" "defmac" "defmethod" "defop" "defopt" - "defspec" "deftp" "deftypefn" "deftypefun" "deftypvr" - "deftypevar" "defun" "defvar" "defvr") - "List of Texinfo line commands whose arguments should be kept.") - -(defun detexinfo-remove-line-cmds-keep-arg () - "Delete Texinfo line commands but keep their arguments, eg @chapter." - (message "Removing commands such as @chapter...but not their arguments...") - (mapcar 'detexinfo-remove-line-cmd-keep-arg - detexinfo-line-cmds-keep-arg)) - -(defun detexinfo-remove-line-cmd-keep-arg (cmd) - "Delete Texinfo line command CMD but keep its argument, eg @chapter." - (goto-char (point-min)) - (while - (re-search-forward - (concat "^@" cmd "[ \n]+") (point-max) t) - (delete-region (match-beginning 0) (match-end 0)))) - -;;; 4. @bye and other line commands without args. - -(defvar detexinfo-line-cmds-without-arg - '("bye" "contents" "display" "example" "finalout" - "flushleft" "flushright" "format" "group" "ifhtml" "ifinfo" "iftex" - "ignore" "lisp" "menu" "noindent" "page" "quotation" - "shortcontents" "smallbook" "smallexample" "smalllisp" - "summarycontents" "tex" "thischapter" "thischaptername" - "thisfile" "thispage" "thissection" "thistitle" "titlepage") - "List of Texinfo commands without arguments that should be deleted.") - -(defun detexinfo-remove-line-cmds-without-arg () - "Delete line Texinfo commands that lack args, eg. @example." - (message "Removing commands such as @example...that lack arguments...") - (mapcar 'detexinfo-remove-whole-line - detexinfo-line-cmds-without-arg)) - -;;; 5. @equiv and other inline cmds without args. - -(defvar detexinfo-inline-cmds-without-arg - '("equiv" "error" "expansion" "point" "print" "result" - "asis" "br" "bullet" "dots" "minus" "today") - "List of Texinfo inline commands without arguments that should be deleted.") - -(defun detexinfo-remove-inline-cmds-without-arg () - "Delete Texinfo inline commands in that lack arguments." - (message "Removing within line commands such as @result...") - (mapcar 'detexinfo-remove-inline-cmd - detexinfo-inline-cmds-without-arg)) - -;;; 6. @code and other inline cmds with args to keep - -(defvar detexinfo-inline-cmds-keep-arg - '("b" "cartouche" "cite" "code" "copyright" "ctrl" "dfn" "dmn" - "emph" "file" "footnote" "i" "inforef" - "kbd" "key" "pxref" "r" "ref" "samp" "sc" "titlefont" - "strong" "t" "var" "w" "xref") - "List of Texinfo inline commands with arguments that should be kept.") - -(defun detexinfo-remove-inline-cmds-keep-arg () - "Delete Texinfo inline commands but keep its arg, eg. @code." - (message - "Removing within line commands such as @code...but not their arguments...") - (mapcar 'detexinfo-remove-inline-cmd - detexinfo-inline-cmds-keep-arg)) - -;;;;;;;;;;;;;;;; end detexinfo.el ;;;;;;;;;;;;;;;; |