---- D=16-Oct-1992 A=Ross Williams S=Suggestions for improving FunnelWeb K=funnelweb funnel web suggestions improvement ---- SUGGESTIONS FOR IMPROVING FUNNELWEB =================================== This file records suggestions that users of FunnelWeb have made for improving FunnelWeb. Because I received so many suggestions, it would take too long to request permission from each person to quote their email here. As a result, I have quoted anonymously or summarized instead. The following list of suggestions does not constitute any sort of promise of features to come. It is merely an indication of what various users would like. The number in square brackets after each suggestion indicates the number of users who have suggested the feature. Also: S: Stands for suggestion. R: Stands for my reply (if any). A look at this list indicates that future work on FunnelWeb should mainly be directed towards improving its typesetting facilities. Ross Williams ross@spam.adelaide.edu.au PS: Part of the reason for FunnelWeb being weak on typesetting is that when I was writing FunnelWeb I knew that once it was released, I would be committed to whatever input syntax I defined, and so I concentrated on getting that right. Back-end typesetter drivers and other such stuff can always be added later. General ------- S: Integrate FW into the Borland C++ development environment. [1] S: Add a feature for updating FW source files after the product files have been modified. [1] Documentation ------------- S: Improve the typesetting of the index. [1] S: Add more entries to the index. [1] S: Add a quick reference guide. [1] Scanner ------- S: Fix the bug that makes FunnelWeb bomb on excceptionally long input lines. [1] S: If a closing @} occurs at the start of a line, eliminate the preceeding end of line. [1] S: Allow TABS [1]. S: The syntax is ugly. Redesign it. [2] R: The syntax IS ugly, but this is a consequence of its simplicity which I feel is more important. In FunnelWeb, the special character reigns supreme and this makes everything simple. Parser ------ S: Add named parameters for macros. [1] S: Add conditionals. [1] S: Add a feature that enables the user to specify that all the macros called within a particular macros be defined in the order in which they are called. [1] Tangle ------ S: Allow line-oriented substitution and so on rather than stream oriented. [1] Weave ----- S: Don't typeset non-leaf macros. This will avoid clutter. [1] S: Teach FW C++ so it can typeset it nicely. [1] S: Allow both FW text and TeX in the same document (two modes). [1] S: Include greater support for typesetting a program as a book. [1] "What we need is a facility for TANGLING small WEB files into small source files, but WEAVING those same small WEB files into a single large documentation file, without the seams becoming apparent." S: Add a new format: Microsoft Rich Text Format (RTF). [2] S: Write a program to convert an RTF file into FunnelWeb source. Then people can edit programs in MSWord and run them through FunnelWeb. [1] S: Detailed notes on indexing from one user: [1] S: Add the ability to include typeset comments within program text. [2] R: The @[..@] syntax has been reserved for this. S: Add a new format: LaTeX. [1] S: Add a new format: Plain ASCII text. [1] S: Add a GENERIC language typesetting facility: [1] "Have you seen the program 'vgrind' (for TeX) or 'psgrind' (for PostScript)? It contains a termcap-like database of programming language features, e.g. format of a label, format of a producedure/function, keyword listings, character string quoting rules, etc. Perhaps this would be useful for FW?" S: Automatically generate an index. [1] S: Allow @" and @" in documentation to typeset double quotes properly. [1] MORE DETAILED COMMENTS ====================== Weave ----- "The ability to generate a cross reference of identifiers (variables and functions) is essential. Constants are generally defined only in 1 place and so a cross reference to the definition macro is useful. Variables are generally declared in 1 place but refered to and defined in multiple places. A cross reference to the declaration site is generally not useful. A cross reference to the site of use is confusing, since there may be many, equally important sites where the variable is assigned a value. functions are generally unique and so a cross reference to the site of definition (or declaration in the absense of a definition) is useful. In FWEB (which I have used extensively recently) each instance of use of an identifier contains a subscript which points to the site of definition of the identifier (I think this is what you refer to in the documents as a feature of the original WEB.) The fact that locating identifiers requires knowledge of the programming language is true." Documentation ------------- Page 34, section 1.7.2, paragraph 2, last sentence: "free text be default" should be "free text by default". Page 34, section 1.7.3, paragraph 1, 1st sentence: "divide and conquor" should be "divide and conquer" Page 35, section 1.73, paragraph 2 on page 35: "section heading at level n cannot....at level (n-1) or less." I think this should be: "section heading at level n cannot.. at less than level (n-1)" Otherwise you are saying that level C cannot occur at B or less. Page 50, section 2.11, last paragraph, line 10 of para: "excessibly" should be "excessively" In the example on p. 21, "... the string ``Hello World''" looks like a TeX dependent hangover. The caption under Fig. 4, p.111 came out badly spaced on our system. Isn't it `holistic' rather than `wholistic?' There is often a need to have version dependent documentation as well as version dependent code. It would be nice if there was a special kind of macro that could run the output to a file through the typesetter, i.e., generate TeX files. Meanwhile, you can get some interesting effects by letting FunnelWeb generate .fw files! You might like to mention this exciting possibility in V2 of the user manual. ----