--- gforth/ds2texi.fs 1997/07/31 16:17:08 1.16 +++ gforth/ds2texi.fs 2002/09/14 08:20:18 1.25 @@ -1,6 +1,6 @@ \ documentation source to texi format converter -\ Copyright (C) 1995 Free Software Foundation, Inc. +\ Copyright (C) 1995,1996,1997,1998,1999 Free Software Foundation, Inc. \ This file is part of Gforth. @@ -16,7 +16,7 @@ \ 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., 675 Mass Ave, Cambridge, MA 02139, USA. +\ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. \ documentation source can contain lines in the form `doc-word' and \ `short-word'. These are converted to appropriate full or short @@ -27,8 +27,8 @@ script? [IF] warnings off - require extend.fs require search.fs + require extend.fs require glocals.fs require float.fs require struct.fs @@ -60,6 +60,12 @@ create description-buffer 4096 chars all repeat then description-buffer tuck - ; +: skip-prefix ( c-addr1 u1 -- c-addr2 u2 ) + 2dup s" --" string-prefix? + IF + [char] - skip [char] - scan 1 /string + THEN ; + : replace-_ ( c-addr u -- ) \ replaces _ with - chars bounds @@ -88,14 +94,14 @@ create description-buffer 4096 chars all : make-doc ( -- ) get-current documentation set-current create - last @ name>string 2, \ name + last @ name>string skip-prefix 2, \ name [char] ) parse save-mem 2, \ stack-effect - bl parse-word condition-wordset 2, \ wordset - bl parse-word dup \ pronounciation + bl sword condition-wordset 2, \ wordset + bl sword dup \ pronounciation if condition-pronounciation else - 2drop last @ name>string + 2drop last @ name>string skip-prefix endif 2, get-description save-mem 2, @@ -127,6 +133,13 @@ create description-buffer 4096 chars all ." @cindex " ." @code{" r@ doc-name 2@ typetexi ." }" cr + r@ doc-name 2@ drop c@ [char] : <> if + \ cut out words starting with :, info-lookup cannot handle them + \ !! deal with : by replacing it here and in info-lookup? + ." @kindex " + r@ doc-name 2@ typetexi + cr + endif ." @format" cr ." @code{" r@ doc-name 2@ typetexi ." } " ." @i{" r@ doc-stack-effect 2@ type ." } " @@ -152,7 +165,7 @@ create description-buffer 4096 chars all \ with the prefix addr2 u2 and continuing with a word in the \ wordlist `documentation'. f is true if xt is executed. >r dup >r - 3 pick over compare 0= + 3 pick over str= if \ addr2 u2 is a prefix of addr1 u1 r> /string documentation search-wordlist if \ the rest of addr1 u1 is in documentation