diff --git a/harbour/doc/en/browse.txt b/harbour/doc/en/browse.txt
index 108403c8e6..8c76d8fae2 100644
--- a/harbour/doc/en/browse.txt
+++ b/harbour/doc/en/browse.txt
@@ -325,7 +325,7 @@
* $FUNCNAME$
* dbSkipper()
* $CATEGORY$
- * Data base
+ * Database
* $ONELINER$
* Helper function to skip a database
* $SYNTAX$
diff --git a/harbour/doc/en/compiler.txt b/harbour/doc/en/compiler.txt
index 3d8e32bdc1..be6905fd53 100644
--- a/harbour/doc/en/compiler.txt
+++ b/harbour/doc/en/compiler.txt
@@ -11,7 +11,7 @@
* Compiler Options
* $DESCRIPTION$
*
- * Invoking the Harbour compiler:
+ * Invoking the Harbour compiler:
* ==============================
*
* harbour [options]
@@ -20,185 +20,208 @@
* or
* harbour [options] [options]
*
- *
* The command line options have to be separated by at least one space.
- * The option can start with either '/' character or '-' character.
+ * The option can start with either '/' character or '-' character.
*
- * The Harbour command line options:
+ * The Harbour command line options:
* =================================
*
* /a automatic memvar declaration
- * -----------------
+ * =================
+
* This causes all variables declared by PARAMETER, PRIVATE or PUBLIC
- * statements to be automatically declared as MEMVAR variables.
+ * statements to be automatically declared as MEMVAR variables.
*
* /b debug info
- * -----------------
- * The compiler generates all information required for debugging
+ * =================
+
+ * The compiler generates all information required for debugging
*
* /d[=] #define
- * -----------------
+ * =================
*
* /es[] set exit severity
- * -----------------
+ * =================
*
- * /es or /es0 - all warnings are ignored and exit code returned by
+ * /es or /es0 = all warnings are ignored and exit code returned by
* the compiler (accessed by DOS ERRORLEVEL command)
* is equal to 0 if there are no errors in compiled
- * source file.
- * /es1 - any warnings generate a non-zero exit code, but
- * output is still created.
- * /es2 - all warnings are treated as errors and no output
- * file is created. The exit code is set to a non-zero
- * value.
+ * source file.
+ *
+ * /es1 = any warnings generate a non=zero exit code, but
+ * output is still created.
+ *
+ * /es2 = all warnings are treated as errors and no output
+ * file is created. The exit code is set to a non=zero
+ * value.
*
* /g output type generated is
- * -----------------
+ * =================
*
- * /gc output type: C source (.c) (default)
- * /gf output type: Windows/DOS OBJ32 (.obj)
- * /gh output type: Harbour Portable Object (.hrb)
- * /gj output type: Java source (.java)
- * /gp output type: Pascal source (.pas)
- * /gr output type: Windows resource (.rc)
+ * /gc output type: C source (.c) (default)
+ *
+ * /gf output type: Windows/DOS OBJ32 (.obj)
+ *
+ * /gh output type: Harbour Portable Object (.hrb)
+ *
+ * /gj output type: Java source (.java)
+ *
+ * /gp output type: Pascal source (.pas)
+ *
+ * /gr output type: Windows resource (.rc)
*
* /i add #include file search path
- * -----------------
+ * =================
*
* /l suppress line number information
- * -----------------
+ * =================
+ *
* The compiler does not generate the source code line numbers in
* the output file. The PROCLINE() function will return 0 for
- * modules compiled using this option.
+ * modules compiled using this option.
*
* /m compile current module only
- * -----------------
+ * =================
*
* /n no implicit starting procedure
- * -----------------
+ * =================
+ *
* The compiler does not create a procedure with the same name as
* the compiled file. This means that any declarations placed
- * before the first PROCEDURE or FUNCTION statement have file-
+ * before the first PROCEDURE or FUNCTION statement have file=
* wide scope and can be accessed/used in all functions/procedures
* defined in the compiled source file. All executable statements
* placed at the beginning of the file and before the first
- * PROCEDURE/FUNCTION statement are ignored.
+ * PROCEDURE/FUNCTION statement are ignored.
*
* /o output file drive and/or path
- * -----------------
+ * =================
+ *
+ * /p generate pre=processed output (.ppo) file
+ * =================
*
- * /p generate pre-processed output (.ppo) file
- * -----------------
* The compiler only creates the file that contains the result of
- * pre-processing the source file.
+ * pre=processing the source file.
*
* /q quiet
- * -----------------
- * The compiler does not print any messages during compiling
- * (except the copyright info).
+ * =================
*
- * /q0 be really quiet and don't display even the copyright info
+ * The compiler does not print any messages during compiling
+ * (except the copyright info).
+ *
+ * /q0 be really quiet and don't display even the copyright info
*
* /r[] request linker to search (or none)
- * -----------------
- * Currently not supported in Harbour.
+ * =================
+ *
+ * Currently not supported in Harbour.
*
* /s syntax check only
- * -----------------
- * The compiler checks the syntax only. No output file is generated.
+ * =================
+ *
+ * The compiler checks the syntax only. No output file is generated.
*
* /t path for temp file creation
- * -----------------
+ * =================
+ *
* Currently not used in Harbour (the Harbour compiler does not
- * create any temporary files).
+ * create any temporary files).
*
* /u[] use command definition set in (or none)
- * -----------------
+ * =================
+ *
+ * /v variables are assumed M=>
+ * =================
*
- * /v variables are assumed M->
- * -----------------
* All undeclared or unaliased variables are assumed MEMVAR
* variables (private or public variables). If this switch is not
- * used then the scope of such variables is checked at runtime.
+ * used then the scope of such variables is checked at runtime.
*
* /w[] set warning level number (0..4, default 1)
- * -----------------
+ * =================
*
- * /w0 - no warnings
- * /w or /w1 - Clipper compatible warnings
- * /w2 - some useful warnings missed in Clipper
- * /w3 - warnings generated for Harbour language extensions
+ * /w0 = no warnings
+ *
+ * /w or /w1 = Clipper compatible warnings
+ *
+ * /w2 = some useful warnings missed in Clipper
+ *
+ * /w3 = warnings generated for Harbour language extensions
* and also enables strong type checking but only
* warns against declared types, or types which may be
- * calculated at compile time
- * /w4 - Enables warning about suspicious operations, which
+ * calculated at compile time
+ *
+ * /w4 = Enables warning about suspicious operations, which
* means if you mix undeclared types, or types which
* can not be calculated at compile time,together with
- * declared types, a warning will be generated.
+ * declared types, a warning will be generated.
*
* /x[] set symbol init function name prefix (for .c only)
- * -----------------
+ * =================
+ *
* Sets the prefix added to the generated symbol init function name
* (in C output currently). This function is generated
* automatically for every PRG module compiled. This additional
* prefix can be used to suppress problems with duplicated symbols
- * during linking an application with some third party libraries.
+ * during linking an application with some third party libraries.
*
* /y trace lex & yacc activity
- * -----------------
+ * =================
+ *
* The Harbour compiler uses the FLEX and YACC utilities to parse
* the source code and to generate the required output file. This
- * option traces the activity of these utilities.
+ * option traces the activity of these utilities.
*
* /z suppress logical shortcutting (.and. & .or.)
- * -----------------
+ * =================
*
* /10 restrict symbol length to 10 characters
- * -----------------
- * All variable and function names are cut to maximum 10 characters.
+ * =================
*
+ * All variable and function names are cut to maximum 10 characters.
*
* Compilation in batch mode.
* ==========================
*
* @ compile list of modules in
- * -----------------
- * Not supported yet.
+ * =================
*
+ * Not supported yet.
*
- *
- * Known incompatibilities between harbour and clipper compilers
+ * Known incompatibilities between harbour and clipper compilers
* =============================================================
*
* NOTE:
- * If you want a 100% compatible compile and runtime libraries then
+ *
+ * If you want a 100% compatible compile and runtime libraries then
* you have to define HARBOUR_STRICT_CLIPPER_COMPATIBILITY. This
* option should be defined in the file include/hbsetup.h (in fact this
- * option is placed in a comment by default - you need to remove the
+ * option is placed in a comment by default = you need to remove the
* /* */ characters only). This change has to be done before invoking
- * the make utility.
+ * the make utility.
*
*
- * Handling of undeclared variables
- * --------------------------------
- * When a value is assigned to an undeclared variable and the '-v'
+ * Handling of undeclared variables
+ * ================================
+ *
+ * When a value is assigned to an undeclared variable and the '=v'
* command line option is not used, then the Clipper compiler assumes
* that the variable is a PRIVATE or a PUBLIC variable and generates
- * POPM (pop memvar) opcode.
+ * POPM (pop memvar) opcode.
*
- * When the value of an undeclared variable is accessed and the '-v'
+ * When the value of an undeclared variable is accessed and the '=v'
* command line option is not used, the Clipper compiler generates PUSHV
* (push variable) opcode that determines the type of variable at runtime.
* If a field with the requested name exists in the current workarea then
* its value is used. If there is no field then a PRIVATE or a PUBLIC
- * variable is used (if exists).
+ * variable is used (if exists).
*
- * The Harbour compiler generates an opcode to determine the type of
+ * The Harbour compiler generates an opcode to determine the type of
* variable at runtime (POPVARIABLE or PUSHVARIABLE) in both cases
- * (assignment and access).
+ * (assignment and access).
+ *
+ * The difference can be checked by the following code:
*
- * The difference can be checked by the following code:
-
*
* PROCEDURE MAIN()
* PRIVATE myname
@@ -208,71 +231,73 @@
* SELECT test
* APPEND BLANK
*
- * FIELD->myname := "FIELD"
- * MEMVAR->myname := "MEMVAR"
+ * FIELD=>myname := "FIELD"
+ * MEMVAR=>myname := "MEMVAR"
*
* myname := myname + " assigned"
*
* // In Clipper: "FIELD", In Harbour: "FIELD assigned"
- * ? FIELD->myname
+ * ? FIELD=>myname
*
* // In Clipper: "MEMVAR assigned", In Harbour: "MEMVAR"
- * ? MEMVAR->myname
+ * ? MEMVAR=>myname
*
* USE
*
* RETURN
*
*
- * Passing an undeclared variable by the reference
- * -----------------------------------------------
- * The Clipper compiler uses the special opcode PUSHP to pass a
+ * Passing an undeclared variable by the reference
+ * ===============================================
+ *
+ * The Clipper compiler uses the special opcode PUSHP to pass a
* reference to an undeclared variable ( '@' operator ). The type of
* passed variable is checked at runtime (field or memvar). However,
* field variables cannot be passed by reference. This means that
* Clipper checks the memvar variable only and doesn't look for a field.
* This is the reason why the Harbour compiler uses the usual
* PUSHMEMVARREF opcode in such cases. Notice that the runtime behavior
- * is the same in Clipper and in Harbour - only the generated opcodes
- * are different.
+ * is the same in Clipper and in Harbour = only the generated opcodes
+ * are different.
*
*
* Handling of object messages
- * ---------------------------
+ * ===========================
+ *
* The HARBOUR_STRICT_CLIPPER_COMPATIBILITY setting determines
- * the way chained send messages are handled.
+ * the way chained send messages are handled.
*
- * For example, the following code:
+ * For example, the following code:
*
- * a:b( COUNT() ):c += 1
+ * a:b( COUNT() ):c += 1
*
- * will be handled as:
+ * will be handled as:
*
- * a:b( COUNT() ):c := a:b( COUNT() ):c + 1
+ * a:b( COUNT() ):c := a:b( COUNT() ):c + 1
*
- * in strict Clipper compatibility mode and
+ * in strict Clipper compatibility mode and
*
- * temp := a:b( COUNT() ), temp:c += 1
+ * temp := a:b( COUNT() ), temp:c += 1
*
- * in non-strict mode.
+ * in non=strict mode.
*
- * In practice, Clipper will call the COUNT() function two times:
+ * In practice, Clipper will call the COUNT() function two times:
* the first time before addition and the second one after addition.
- * In Harbour, COUNT() will be called only once, before addition.
+ * In Harbour, COUNT() will be called only once, before addition.
*
- * The Harbour (non-strict) method is:
+ * The Harbour (non=strict) method is:
* 1) faster
* 2) it guarantees that the same instance variable of the same object
- * will be changed
+ * will be changed
*
- * (See also: source/compiler/expropt.c)
+ * (See also: source/compiler/expropt.c)
*
- * Initialization of static variables
- * ----------------------------------
+ * Initialization of static variables
+ * ==================================
*
* There is a difference in the initialization of static
* variables that are initialized with a codeblock that refers to
- * a local variable. For example:
+ * a local variable. For example:
*
* PROCEDURE TEST()
@@ -287,10 +312,10 @@
* The above code compiles fine in Clipper, but it generates a
* runtime error Error/BASE 1132 Bound error: array access
- * Called form (b)STATICS$(0)
+ * Called form (b)STATICS$(0)
*
* In Harbour this code generates a compile time error:
- * Error E0009 Illegal variable (b) initializer: 'MyLocalVar'
+ * Error E0009 Illegal variable (b) initializer: 'MyLocalVar'
*
* Both Clipper and Harbour are handling all local variables used in a
* codeblock in a special way: they are detached from the local stack
@@ -300,7 +325,7 @@
* ('STATICS$' in Clipper and '(_INITSTATICS)' in Harbour) before the
* main procedure and before all INIT procedures. The local variables
* don't exist on the eval stack when static variables are initialized,
- * so they cannot be detached.
+ * so they cannot be detached.
*
* $END$
*/
diff --git a/harbour/doc/en/diskspac.txt b/harbour/doc/en/diskspac.txt
index 1ee0b84acc..b06f566f74 100644
--- a/harbour/doc/en/diskspac.txt
+++ b/harbour/doc/en/diskspac.txt
@@ -17,7 +17,7 @@
* $FUNCNAME$
* DISKSPACE()
* $CATEGORY$
- * Low level
+ * Low Level
* $ONELINER$
* Get the amount of space available on a disk
* $SYNTAX$
@@ -55,7 +55,7 @@
* $FUNCNAME$
* HB_DISKSPACE()
* $CATEGORY$
- * Low level
+ * Low Level
* $ONELINER$
* Get the amount of space available on a disk
* $SYNTAX$
diff --git a/harbour/doc/en/file.txt b/harbour/doc/en/file.txt
index 96fa5b244e..8cf69b80f3 100644
--- a/harbour/doc/en/file.txt
+++ b/harbour/doc/en/file.txt
@@ -775,7 +775,7 @@
* $FUNCNAME$
* TYPE
* $CATEGORY$
- * Data input and output
+ * Command
* $ONELINER$
* Show the content of a file on the console, printer or file
* $SYNTAX$
diff --git a/harbour/doc/en/harbext.txt b/harbour/doc/en/harbext.txt
index f7596aa115..c5865567e4 100644
--- a/harbour/doc/en/harbext.txt
+++ b/harbour/doc/en/harbext.txt
@@ -12,63 +12,73 @@
*Language extensions:
*--------------------
*
- ** Class generation and management.
+ ** Class generation and management.
*
* Clipper only allowed creation of objects from a few standard
- * classes.
+ * classes.
+ *
* In Harbour, you can create your own classes--complete with
* Methods, Instance Variables, Class Variables and Inheritance.
* Entire applications can be designed and coded in Object Oriented
- * style.
+ * style.
*
** @()
- * Returns the pointer (address) to a function.
+ *
+ * Returns the pointer (address) to a function.
*
* The returned value is not useful to application-level programming, but
* is used at a low level to implement object oriented coding.
* (Internally, a class method is a static function and there is no
- * symbol for it, so it is accessed via its address).
+ * symbol for it, so it is accessed via its address).
*
- ** Class TGetList
- * Object oriented support for GetLists management.
+ ** Class TGetList
*
- ** ProcName() support for class Method names.
- * Class Methods can be retrieved from the call stack.
+ * Object oriented support for GetLists management.
*
- ** Memory() has new return values.
- * See hbmemory.ch
+ ** ProcName() support for class Method names.
*
- ** Transform() --> new function in format string
- * @0 Make a zero padded string out of the number.
+ * Class Methods can be retrieved from the call stack.
*
- ** SToD() --> dDate
- * New function that converts a yyyymmdd string to a Date value.
+ ** Memory() has new return values.
+ *
+ * See hbmemory.ch
+ *
+ ** Transform() --> new function in format string
+ *
+ * @0 Make a zero padded string out of the number.
+ *
+ ** SToD() --> dDate
+ *
+ * New function that converts a yyyymmdd string to a Date value.
*
** Optional Compile Time STRONG TYPE declaration (and compile time TYPE
- * MISMATCH warnings)
+ * MISMATCH warnings)
*
- * Example: LOCAL/STATIC Var AS ...
+ * Example: LOCAL/STATIC Var AS ...
*
- ** The Harbour debugger provides new interesting classes:
- * - Class TDbWindow could be the foundation for a generic multiplatform
- * - Class TForm
- * - Class TDbMenu implement both pulldown and popup menus.
+ ** The Harbour debugger provides new interesting classes:
*
+ * - Class TDbWindow could be the foundation for a generic multiplatform
*
+ * - Class TForm
+ *
+ * - Class TDbMenu implement both pulldown and popup menus.
*
*RTL enhanced functionality:
- *---------------------------
+ *---------------------------
+ *
+ *- Directory( , , )
*
- *- Directory( , , )
* The 3rd parameter is a Harbour (optional) parameter and indicates that on
* those platforms that support long filenames, that you wish to receive what
* would be considered the dos equivalant 8.3 name.
* Could affect Adir() and Dir if they were modified to take advantage
- * of it - currently, they will return long names if the os supports it.
+ * of it - currently, they will return long names if the os supports it.
+ *
+ *- HB_DiskSpace( , )
*
- *- HB_DiskSpace( , )
* The second parameter is a Harbour (optional) parameter and indicates the
- * type of diskinfo being requested. See en/diskspac.txt for info.
+ * type of diskinfo being requested. See en/diskspac.txt for info.
*
* $END$
*/
diff --git a/harbour/doc/en/hvm.txt b/harbour/doc/en/hvm.txt
index 8e6bba9fe6..da3eab7fb0 100644
--- a/harbour/doc/en/hvm.txt
+++ b/harbour/doc/en/hvm.txt
@@ -385,7 +385,7 @@
* $FUNCNAME$
* __VMVARLGET()
* $CATEGORY$
- * Variable management
+ * Variable Management
* $ONELINER$
* Retrive a local variable from a procedure level
* $SYNTAX$
diff --git a/harbour/doc/en/math.txt b/harbour/doc/en/math.txt
index 02570cb2a5..de8f0b0b43 100644
--- a/harbour/doc/en/math.txt
+++ b/harbour/doc/en/math.txt
@@ -161,7 +161,7 @@
* $FUNCNAME$
* MAX()
* $CATEGORY$
- * MATH
+ * Math
* $ONELINER$
* Returns the maximum of two numbers or dates.
* $SYNTAX$
@@ -200,7 +200,7 @@
* $FUNCNAME$
* MIN()
* $CATEGORY$
- * MATH
+ * Math
* $ONELINER$
* Determines the minumum of two numbers or dates.
* $SYNTAX$
diff --git a/harbour/doc/en/subcodes.txt b/harbour/doc/en/subcodes.txt
index 5948d2a067..a23aff89b9 100644
--- a/harbour/doc/en/subcodes.txt
+++ b/harbour/doc/en/subcodes.txt
@@ -998,7 +998,7 @@ start from 3000
* $SUBCODE$
* BASE/2012
* $CATEGORY$
- * files
+ * Run Time Errors
* $ONELINER$
* File error
* $DESCRIPTION$
@@ -1347,7 +1347,7 @@ start from 3000
* $SUBCODE$
* TERM/2013
* $CATEGORY$
- * files
+ * Run Time Errors
* $ONELINER$
* Create error
* $DESCRIPTION$
diff --git a/harbour/utils/hbdoc/genchm.prg b/harbour/utils/hbdoc/genchm.prg
index 5c84bad1ff..ef8ff979e5 100644
--- a/harbour/utils/hbdoc/genchm.prg
+++ b/harbour/utils/hbdoc/genchm.prg
@@ -1060,10 +1060,12 @@ FUNCTION ProcChmDesc( cBuffer, oChm, cStyle )
ENDIF
IF !EMPTY( cBuffer )
// cBuffer:=SUBSTR(cBuffer,2)
+ cBuffer := STRTRAN( cBuffer, "", "bold" )
+ cBuffer := STRTRAN( cBuffer, "", "negrito" )
cBuffer := STRTRAN( cBuffer, "<", "<" )
cBuffer := STRTRAN( cBuffer, ">", ">" )
- cBuffer := STRTRAN( cBuffer, "<b>", "" )
- cBuffer := STRTRAN( cBuffer, "</b>", "" )
+ cBuffer := STRTRAN( cBuffer, "bold", "" )
+ cBuffer := STRTRAN( cBuffer, "negrito", "" )
cBuffeR := ALLTRIM( cBuffer )
oChm:WritePar( cBuffer )
@@ -1276,7 +1278,7 @@ FUNCTION GenChmTable( oChm )
oChm:Writetext( "" )
- oChm:WriteText( "
" )
+
afiTable := {}
asitable := {}
atitable := {}
diff --git a/harbour/utils/hbdoc/genhtm.prg b/harbour/utils/hbdoc/genhtm.prg
index 027f21bd4e..b82d4d815d 100644
--- a/harbour/utils/hbdoc/genhtm.prg
+++ b/harbour/utils/hbdoc/genhtm.prg
@@ -1089,8 +1089,12 @@ FUNCTION ProchtmDesc( cBuffer, oHtm, cStyle )
ENDIF
IF !EMPTY( cBuffer )
// cBuffer:=SUBSTR(cBuffer,2)
+ cBuffer := STRTRAN( cBuffer, "", "bold" )
+ cBuffer := STRTRAN( cBuffer, "", "negrito" )
cBuffer := STRTRAN( cBuffer, "<", "<" )
cBuffer := STRTRAN( cBuffer, ">", ">" )
+ cBuffer := STRTRAN( cBuffer, "bold", "" )
+ cBuffer := STRTRAN( cBuffer, "negrito", "" )
cBuffeR := ALLTRIM( cBuffer )
oHtm:WritePar( cBuffer )
@@ -1306,7 +1310,7 @@ FUNCTION GenhtmTable( oHtm )
oHtm:Writetext( "" )
- oHtm:WriteText( "
" )
+// oHtm:WriteText( "
" )
afiTable := {}
asitable := {}
atitable := {}
diff --git a/harbour/utils/hbdoc/genrtf.prg b/harbour/utils/hbdoc/genrtf.prg
index d7f309d282..6b83bbdf73 100644
--- a/harbour/utils/hbdoc/genrtf.prg
+++ b/harbour/utils/hbdoc/genrtf.prg
@@ -357,7 +357,7 @@ FUNCTION ProcessRtf()
ELSEIF lMethod
oRtf:WriteJumpTitle( LEFT( cFilename, AT( '.', cFilename ) - 1 ) + cFuncName, "Method " + cFuncName )
ELSE
- oRtf:WriteTitle( cFuncName, cFuncName, cOneLine )
+ oRtf:WriteTitle( cFuncName, cFuncName, cOneLine,cCategory)
// oRtf:WriteParBold( cOneLine )
// oRtf:WriteParBox( cBar )
ENDIF
diff --git a/harbour/utils/hbdoc/hbdoc.prg b/harbour/utils/hbdoc/hbdoc.prg
index 293e2c1c6e..d57dd4b67f 100644
--- a/harbour/utils/hbdoc/hbdoc.prg
+++ b/harbour/utils/hbdoc/hbdoc.prg
@@ -124,6 +124,7 @@ MEMVAR lChm
MEMVAR lNorton
MEMVAR aWWW
MEMVAR lTroff
+MEMVAR aResult
STATIC cTitle:=''
/*
@@ -142,6 +143,7 @@ FUNCTION MAIN( cFlags, cLinkName, cAtFile )
LOCAL aExtensions := { "*.ch", "*.prg", "*.c", "*.asm", "*.txt" }
LOCAL i
+ Local cLast
LOCAL nItem
LOCAL nHpj
LOCAL cItem:=''
@@ -152,6 +154,8 @@ FUNCTION MAIN( cFlags, cLinkName, cAtFile )
LOCAL nPos
LOCAL ppp
LOCAL aMetaContents:={}
+ Local aTemp:={}
+ LOCAL lAdded:=.f.
PUBLIC theHandle
PUBLIC aDirList
PUBLIC aDocInfo := {}
@@ -167,6 +171,7 @@ FUNCTION MAIN( cFlags, cLinkName, cAtFile )
PUBLIC lChm := .F.
PUBLIC lNorton := .F.
PUBLIC aWWW := {}
+ PUBLIC aResult:={}
PUBLIC lTroff := .f.
// The following variables are used to allow one to change the delimiter
@@ -430,7 +435,7 @@ FUNCTION MAIN( cFlags, cLinkName, cAtFile )
NEXT
ELSEIF lRtf
- nHpj := FCREATE( 'HARBOUR.HPJ' )
+ nHpj := FCREATE( 'harbour.hpj' )
FWRITE( nHpj, '[OPTIONS]' + CRLF )
FWRITE( nHpj, 'HCW=1' + CRLF )
FWRITE( nHpj, 'COMPRESS=60 Hall Zeck' + CRLF )
@@ -441,12 +446,71 @@ FUNCTION MAIN( cFlags, cLinkName, cAtFile )
FWRITE( nHpj, 'COPYRIGHT=Harbour (C) http://www.harbour-project.org' + CRLF )
FWRITE( nHpj, 'HLP=.\'+ lower(substr(cLinkName,1,AT(".",cLinkName)-1)) +".hlp"+ CRLF )
FWRITE( nHpj, 'ROOT=\' + CURDIR() + "\RTF" + CRLF )
- FWRITE( nHpj, 'CNT=.\Harbour.cnt' + CRLF )
+ FWRITE( nHpj, 'CNT=.\'+ lower(substr(cLinkName,1,AT(".",cLinkName)-1)) +".cnt"+ CRLF )
FWRITE( nHpj, '[FILES]' + CRLF )
FWRITE( nHpj, "harbour.rtf" + CRLF )
FWRITE( nHpj, '[CONFIG]' + CRLF + 'contents()' + CRLF + 'prev()' + CRLF + 'next()' + CRLF + 'BrowseButtons()' + CRLF )
- FWRITE( nHpj, '[WINDOWS]' + CRLF + 'Commands="Harbour Commands",(653,102,360,600),20736,(r14876671),(r12632256),f2' + CRLF + 'Error="Harbour Run Time Errors",(653,102,360,600),20736,(r14876671),(r12632256),f2' + CRLF + 'Tools="Harbour Tools",(653,102,360,600),20736,(r14876671),(r12632256),f2' + CRLF + 'Class="Harbour OOP Commands",(653,102,360,600),20736,(r14876671),(r12632256),f2' + CRLF + 'Funca="Harbour Run Time Functions A-M",(653,102,360,600),20736,(r14876671),(r12632256),f2' + CRLF + 'Funcn="Harbour Run Time Functions N-_",(653,102,360,600),20736,(r14876671),(r12632256),f2' + CRLF + 'Main="HARBOUR",(117,100,894,873),60672,(r14876671),(r12632256),f2' + CRLF )
+ FWRITE( nHpj, '[WINDOWS]' + CRLF + 'Commands="Harbour Commands",(653,102,360,600),20736,(r14876671),(r12632256),f2' + CRLF +'API="Harbour Commands",(653,102,360,600),20736,(r14876671),(r12632256),f2' + CRLF + 'Error="Harbour Run Time Errors",(653,102,360,600),20736,(r14876671),(r12632256),f2' + CRLF + 'Tools="Harbour Tools",(653,102,360,600),20736,(r14876671),(r12632256),f2' + CRLF + 'Class="Harbour OOP Commands",(653,102,360,600),20736,(r14876671),(r12632256),f2' + CRLF + 'Funca="Harbour Run Time Functions A-M",(653,102,360,600),20736,(r14876671),(r12632256),f2' + CRLF + 'Funcn="Harbour Run Time Functions N-_",(653,102,360,600),20736,(r14876671),(r12632256),f2' + CRLF + 'Main="HARBOUR",(117,100,894,873),60672,(r14876671),(r12632256),f2' + CRLF )
FCLOSE( nHpj )
+ nHpj := FCREATE( lower(substr(cLinkName,1,AT(".",cLinkName)-1)) +".cnt" )
+ FWRITE( nHpj, ':Base'+ lower(substr(cLinkName,1,AT(".",cLinkName)-1)) +".hlp"+ CRLF )
+ FWRITE( nHpj, ':Title'+cTitle+CRLF)
+ FWRITE( nHpj, ':Index harbour='+lower(substr(cLinkName,1,AT(".",cLinkName)-1)) +".hlp"+ CRLF )
+ FWRITE( nHpj, '1 Harbour'+CRLF)
+ asort(aWww,,,{|x,y| x[3]+x[1]Main"+CRLF)
+ endif
+ Next
+ asort(aWww,,,{|x,y| x[3]+x[1]Error"+CRLF)
+ endif
+ Next
+ FWRITE( nHpj, '1 Harbour Runtime functions and Commands by Name'+CRLF)
+ asort(aWww,,,{|x,y| x[1]'Run Time Errors' .and. aWww[ppp,3] <>"Document" .and. aWww[ppp,3] <>"The garbage collector" .and. aWww[ppp,3] <>"OOP Command" .and. aWww[ppp,3] <>"Command" .and. aWww[ppp,3] <>"The idle states"
+ fWrite( nHpj, '2 '+aWww[ppp,1]+"="+aWww[ppp,2]+">Funca"+CRLF)
+ endif
+ Next
+
+ FWRITE( nHpj, '1 Harbour Runtime functions Category'+CRLF)
+ asort(aWww,,,{|x,y| x[3]'Run Time Errors' .and. cLast <>"Document" .and. cLast <>"The garbage collector" .and. cLast <>"OOP Command" .and. cLast <>"Command" .and. cLast <>"The idle states"
+ WriteContentFile(aWww,cLast,nHpj)
+ endif
+ Next
+
+ FWRITE( nHpj, '1 Harbour Commands'+CRLF)
+ for ppp:=1 to len(aWww)
+ if aWww[ppp,3]=='Command'
+ fWrite( nHpj, '2 '+aWww[ppp,1]+"="+aWww[ppp,2]+">Commands"+CRLF)
+ endif
+ Next
+ FWRITE( nHpj, '1 Harbour OOP commands'+CRLF)
+ for ppp:=1 to len(aWww)
+ if aWww[ppp,3]=='OOP Command'
+ fWrite( nHpj, '2 '+aWww[ppp,1]+"="+aWww[ppp,2]+">Class"+CRLF)
+ endif
+ Next
+ FWRITE( nHpj, '1 The Garbage API'+CRLF)
+ for ppp:=1 to len(aWww)
+ if aWww[ppp,3]=='The garbage collector'
+ fWrite( nHpj, '2 '+aWww[ppp,1]+"="+aWww[ppp,2]+">API"+CRLF)
+ endif
+ Next
+ fClose(nHpj)
+set console off
ELSEIF lWWW
asort(adocinfo,,,{|x,y| x[1]+x[2]" )
@@ -510,7 +574,7 @@ FUNCTION MAIN( cFlags, cLinkName, cAtFile )
ohtm1:WriteLink('hb'+strtran(adocinfo[1,1]," ","")+'.htm',cItem)
for ppp:=1 to len(adocinfo)
- if citem<>adocinfo[ppp,1]
+ if citem<>adocinfo[ppp,1] .and. cItem <>"Document"
citem:=alltrim(rtrim(ltrim(adocinfo[ppp,1])))
ohtm1:WriteLink('hb'+strtran(adocinfo[ppp,1]," ","")+'.htm',cItem)
@@ -636,6 +700,7 @@ FUNCTION MAIN( cFlags, cLinkName, cAtFile )
ohtm:WriteText("")
citem:=adocinfo[ppp,1]
+ if cItem <>"Document"
oHtm:Listitem()
oHtm:AddObject("text/sitemap")
oHtm:AddParam("Name",adocinfo[ppp,1])
@@ -647,7 +712,7 @@ FUNCTION MAIN( cFlags, cLinkName, cAtFile )
oHtm:AddParam("Local",lower(aDocInfo[ppp,4]))
oHtm:EndObject()
oHtm:WriteChmlink(lower(adocinfo[ppp,4]),adocinfo[ppp,2])
-
+endif
endif
next
if ppp>len(adocinfo)
@@ -1308,3 +1373,44 @@ cReturn:=substr(cVersion,9,4)
RETURN cReturn
+Function WriteContentFile(aTop,cCat,nFile)
+Local nCount:=0
+
+Local aTemp:={}
+ascan(aWww,,,{|x,y|x[3]+x[1]Funca"+CRLF)
+next
+return nil
+
+
+function GetNextContent(nPos)
+Local cReturn
+if nPos <=Len(aResult)
+cReturn := aResult[nPos]
+endif
+return cReturn
+// fWrite( nHpj, '2 '+aWww[1,3]+CRLF)
+/* if aWww[ppp,3] <> cLast .and. aWww[ppp,3]<>'Run Time Errors' .and. aWww[ppp,3] <>"Document" .and. aWww[ppp,3] <>"The garbage collector" .and. aWww[ppp,3] <>"OOP Command" .and. aWww[ppp,3] <>"Command" .and. aWww[ppp,3] <>"The idle states"
+ fWrite( nHpj, '2 '+aWww[ppp,3]+CRLF)
+ lAdded:=.t.
+ endif
+ if lAdded
+ ppp++
+ if aWww[ppp,3] == cLast .and. aWww[ppp,3]<>'Run Time Errors' .and. aWww[ppp,3] <>"Document" .and. aWww[ppp,3] <>"The garbage collector" .and. aWww[ppp,3] <>"OOP Command" .and. aWww[ppp,3] <>"Command" .and. aWww[ppp,3] <>"The idle states"
+ fWrite( nHpj, '3 '+aWww[ppp,1]+"="+aWww[ppp,2]+">Funca"+CRLF)
+ endif
+ lAdded:=.F.
+ Elseif aWww[ppp,3] == cLast .and. aWww[ppp,3]<>'Run Time Errors' .and. aWww[ppp,3] <>"Document" .and. aWww[ppp,3] <>"The garbage collector" .and. aWww[ppp,3] <>"OOP Command" .and. aWww[ppp,3] <>"Command" .and. aWww[ppp,3] <>"The idle states"
+ fWrite( nHpj, '3 '+aWww[ppp,1]+"="+aWww[ppp,2]+">Funca"+CRLF)
+ endif
+
+ cLast:=aWww[ppp,3]
+ */
diff --git a/harbour/utils/hbdoc/rtf.prg b/harbour/utils/hbdoc/rtf.prg
index d02a84581e..6afa7bc2cd 100644
--- a/harbour/utils/hbdoc/rtf.prg
+++ b/harbour/utils/hbdoc/rtf.prg
@@ -37,7 +37,7 @@
#include 'hbclass.ch'
#include 'common.ch'
-
+MEMVAR aWWW,aResult
*+北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北
*+
*+ Class TRTF
@@ -185,7 +185,7 @@ METHOD WriteParBoldText( cPar, cText ) CLASS TRTF
FWRITE( Self:nHandle, '\par \pard\cf1\f6\fs20\i\b ' + ALLTRIM( HB_OEMTOANSI( cPar ) ) + ' \b\cf1\f6\fs20\i0\b0\li300 ' + ALLTRIM( HB_OEMTOANSI( cText ) ) + CRLF )
RETURN Self
-METHOD WriteTitle( cTitle, cTopic, cOne ) CLASS TRTF
+METHOD WriteTitle( cTitle, cTopic, cOne ,cCat) CLASS TRTF
LOCAL cTemp
LOCAL nPos
@@ -207,7 +207,11 @@ METHOD WriteTitle( cTitle, cTopic, cOne ) CLASS TRTF
' ${\footnote \pard\fs20 $ ' + ALLTRIM( cTopic ) + ' }' + CRLF + ;
' K{\footnote \pard\fs20 K ' + ALLTRIM( cTopic ) + ' }' + CRLF + ;
'}' + CRLF
-
+ aadd(aWww,{cTopic,"IDH_"+cTemp,cCat})
+ nPos := ascan(aResult,{|a| UPPER(a) == UPPER(cCat)})
+ if nPos==0
+ aadd(aResult,cCat)
+ endif
FWRITE( Self:nHandle, cWrite )
FWRITE( Self:nHandle, '\pard\cf1\f6\fs30\i0\b\keepn ' + ALLTRIM( HB_OEMTOANSI( cTopic ) ) + CRLF )