123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416 |
- This is the todo list for the Texinfo::Parser implementation.
- Copyright 2012, 2013, 2014, 2015 Free Software Foundation.
- Copying and distribution of this file, with or without modification,
- are permitted in any medium without royalty provided the copyright
- notice and this notice are preserved.
- export XML_CATALOG_FILES=~/src/texinfo/tp/maintain/catalog.xml
- xmllint --nonet --noout --valid commands.xml
- Before next release
- ===================
- Bugs
- ====
- Profiling
- =========
- profiling: package on debian:
- libdevel-nytprof-perl
- In doc:
- perl -d:NYTProf ../tp/texi2any.pl texinfo.texi
- nytprofhtml --open
- # firefox nytprof/index.html
- Delayed bugs
- ============
- In @inline* ignore arguments, @value and user macros should not be
- expanded. For example
- @set closebrace }
- @inlinefmt{html,
- truc @value{closebrace}
- machin
- In Plaintext, @quotation text should have the right margin narrowed.
- Text after @bye should be kept as is when redoing Texinfo.
- @-commands in index entries are transliterated when sorting, they should
- certainly be converted to unicode instead.
- Sorting of index entries should be locale dependent and sort properly
- unicode sorting.
- my $collator = Unicode::Collate::Locale->new('locale' => $locale_name, 'normalization' => 'NFKD')
- @sorted = $collator->sort(@not_sorted);
- Currently there is no error for something like
- @chapter @code{@anchor{TTO}}
- there should be an error as for the following construct:
- @chapter @anchor{TTez}
- This would certainly imply adding, on top of the 'context_stack', a
- stack of opened @-commands (although maybe not every @-commands?). This
- would allow to catch many other dubious nesting, such as @table in @menu,
- @caption in @caption and also would certainly allow to handle the 2 cases
- below. This should, however, slow down the computation even more.
- warn nested footnotes.
- Following should be an error:
- @example
- @heading A heading
- @end example
- Example in heading/heading_in_example.
- Similar, but not exactly the same issue, there is no warning with a
- block command between @def* and @def*x, only for paragraph.
- @defun a b c d e f
- @itemize @minus
- truc
- @item t
- @end itemize
- @defunx g h j k l m
- @end defun
- Punctuation and spaces before @image do not lead to a doubling of space.
- In fact @image is completly formatted outside of usual formatting containers.
- Not sure what should be the right way?
- test in info_test/image_and_punctuation
- There should be a warning for something like
- @example text
- ...
- Image on sectioning command line haven't their length ignored correctly.
- Not sure it is a big deal. An example in sectioning/at_commands_in_refs.
- warn when a @noindent/@indent appears within a paragraph.
- in info_tests/error_in_footnote there is an error message for each
- listoffloats; Line numbers are right, though, so maybe this is not
- an issue.
- converters_tests/things_before_setfilename there is no error
- for anchor and footnote before setfilename. It is not completly
- clear that there should be, though.
- Recursive expansion of @value may lead to an infinite loop. Wait for
- marksource to proceed.
- https://bugzilla.redhat.com/show_bug.cgi?id=744878
- Missing tests
- =============
- Test node files that differ only in case. This may be rather complicated,
- however, as http://savannah.gnu.org/bugs/?38380 shows. This may be linked
- to a possible test of CASE_INSENSITIVE_FILENAMES.
- Unit test of end_line_count for Texinfo/Convert/Paragraph.pm .... containers.
- In html test empty @top for title, with different cases for
- setcontentsaftertit* and for anchors.
- Test @sc{@aa{}} and @sc{@'e} in HTML with 8bit and utf8, with and without
- enable encoding and entities.
- in html test footnotestyle separate. There are such tests in tp/tests,
- maybe they are sufficient, but they are only done for long checks.
- anchor in flushright, on an empty line, with a current byte offset.
- Future features
- ===============
- Update Unicode-EastAsianWidth. The new version has improved tests
- and a new license, but no functional change. So maybe wait a
- bit to update.
- Add some elements of texinfo that are not of interest in the
- tree, like beginning and end of included file, @ protecting
- end of line in @def*, begin and end of user defined macro
- or value expansion. Maybe call the key for these elements
- 'sourcemark'?
- In a similar way, keep the information about aliases in the tree?
- And about @setfilename in included files which is for now completly
- removed (consistently with documentation).
- Right now VERBOSE is almost not used.
- Handle better @exdent in html? (there is a FIXME in the code)
- Check the design of the HTML.pm API. Document the API, in particular
- everything in Texinfo::Config. Add an API for everything used in the
- default functions, for example in page_head, use $self->title_string()
- and so on and so forth.
- Functions to document for HTML API (many more are missing!):
- sectioning_command_target_name
- node_target_name
- Implement what is proposed in HTML Cross Reference Mismatch.
- Protection of punctuation in nodes.
- in @ref. First : is searched. if followed by a : the node name is found
- and there is no label. When parsing a node a filename with ( is searched for.
- Nested parentheses are taken into account.
- Then more parentheses?
- Automatic generation of node names from section names. To be protected:
- * in every case
- ( at the beginning
- * In @node line
- commas
- * In menu entry
- * if there is a label
- tab comma dot
- * if there is no label
- :
- * In @ref
- commas
- In Info
- Nodes:
- * in every case
- ( at the beginning
- * in Node line
- commas
- * In menu entry and *Note
- * if there is a label
- tab comma dot
- * if there is no label
- :
- Labels in Info (which also means index entries)
- :
- * at the beginning of a line in a @menu
- *note more or less everywhere
- DocBook
- =======
- deftypevr, deftypecv: use type and not returnvalue for the type
- also informalfigure in @float
- also use informaltable or table, for multitable?
- What is before the first sectioning command is put in <bookinfo><abstract>.
- what about @titlefont in docbook?
- maybe use simpara instead of para. Indeed, simpara is for paragraph without
- block element within, and it should be that way in generated output.
- put <title> in <articleinfo>?
- * in docbook, when there is only one section <article> should be better
- than book. Maybe the best way to do that would be passing the
- information that there is only one section to the functions formatting
- the page header and page footer.
- Interrogations and remarks
- ==========================
- Instead of _set_global_multiple_commands and _unset_global_multiple_commands
- have a better granularity and do something per command, with the possibility
- to really revert everything, including things that are not set by set_conf.
- (There is a FIXME in the code). This is not that important, now that the
- actual case that was problematic (setting encodings as a side effect of
- setting @documentencoding) is not supported anymore. (Now the encoding is
- set at the initialization of the converter and should be changed by setting
- the correct customization variable, in general OUTPUT_ENCODING_NAME).
- Should more Converter ignore the last new line (with type
- last_raw_newline) of a raw block format?
- In a first step, close when the the command to be closed is at the
- top of the tree, not when it should be closed theoretically.
- Then it could be possible to come back to the place where the command
- should be closed and give an error message.
- This is certainly only an issue for @footnote and similar not a general issue.
- There is no forward looking code anymore, so maybe a lex/yacc parser
- could be used for the main loop. More simply, a binary tokenizer, at
- least, could make for a notable speedup.
- def/end_of_lines_protected_in_footnote.pl the footnote is
- (1) -- category: deffn_name arguments arg2 more args with end of line
- and not
- (1)
- -- category: deffn_name arguments arg2 more args with end of line
- It happens this way because the paragraph starts right after the footnote
- number.
- in HTML, the argument of a quotation is ignored if the quotation is empty,
- as in
- @quotation thing
- @end quotation
- Is it really a bug?
- In @copying things like some raw formats may be expanded. However it is
- not clear that it should be the same than in the main converter. Maybe a
- specific list of formats could be passed to Convert::Text::convert, which
- would be different (for example Info and Plaintext even if converting HTML).
- This requires a test, to begin with.
- Use INLINE_INSERTCOPYING as the default for some formats?
- In HTML, HEADERS is used. But not in other modules, especially not in
- Plaintext.pm or Info.pm, this is determined by the module used (Plaintext.pm
- or Info.pm). No idea whether it is right or wrong.
- in hyphenation: only text and accent commands, and should
- only appear in toplevel
- use definfoenclose information in Convert::Text?
- From vincent Belaïche. About svg image files in HTML:
- I don't think that supporting svg would be easy: its seems that to embed an
- svg picture you need to declare the width x height of the frame in
- which you embed it, and this information cannot be derived quite
- straightforwardly from the picture.
- With @image you can declare width and height but this is intended for
- scaling. I am not sure whether or not that these arguments can be used
- for the purpose of defining that frame...
- What I did in 5x5 is that coded the height of the frame directly in
- the macro @FIGURE with which I embed the figure, without going through
- an argument.
- The @FIGURE @macro is, for html:
- @macro FIGURE {F,W}
- @html
- <div align="center">
- <embed src="5x5_\F\.svg" height="276"
- type="image/svg+xml"
- pluginspage="http://www.adobe.com/svg/viewer/install/" /></div>
- @end html
- @end macro
- Add @value to the corresponding commands categories?
- tests .init file not relevant since indices cannot be split anymore
- indices/index_test.init
- Use of specialized synopsis in DocBook is not a priority and it is not even
- obvious that it is interesting to do so. The following notes explain the
- possibilities and issues extensively.
- Instead of synopsis it might seem to be relevant to use specialized synopsis,
- funcsynopsis/funcprototype for deftype* and some def*, and other for object
- oriented. There are many issues such that this possibility do not appear
- appealing at all.
- 1) there is no possibility to have a category. So the category must be
- added somewhere as a role= or in the *synopsisinfo, or this should only
- be used for specialized @def, like @defun.
- 2) @defmethod and @deftypemethod cannot really be mapped to methodsynopsis
- as the class name is not associated with the method as in Texinfo, but
- instead the method should be in a class in docbook.
- 3) From the docbook reference for funcsynopsis
- "For the most part, the processing application is expected to
- generate all of the parentheses, semicolons, commas, and so on
- required in the rendered synopsis. The exception to this rule is
- that the spacing and other punctuation inside a parameter that is a
- pointer to a function must be provided in the source markup."
- So this mean it is language specific (C, as said in the docbook doc)
- and one have to remove the parentheses, semicolons, commas.
- See also the mails from Per Bothner bug-texinfo, Sun, 22 Jul 2012 01:45:54.
- specialized @def, without a need for category:
- @defun and @deftypefun
- <funcsynopsis><funcprototype><funcdef>TYPE <function>NAME</function><paramdef><parameter>args</parameter></paramdef></funcprototype></funcsynopsis>
- specialized @def, without a need for category, but without DocBook synopsis
- because of missing class:
- @defmethod, @deftypemethod: methodsynopsis cannot be used since the class
- is not available
- @defivar and @deftypeivar: fieldsynopsis cannot be used since the class
- is not available
- Generic @def with a need for a category
- For deffn deftypefn (and defmac?, defspec?), the possibilities of
- funcsynopsis, with a category added could be used:
- <funcsynopsis><funcprototype><funcdef role=...>TYPE <function>NAME</function></funcdef><paramdef>PARAMTYPE <parameter>PARAM</parameter></paramdef></funcprototype></funcsynopsis>
- Alternatively, use funcsynopsisinfo for the category.
- Generic @def with a need for a category, but without DocBook synopsis because
- of missing class:
- @defop and @deftypeop: methodsynopsis cannot be used since the class
- is not available
- defcv, deftypecv: fieldsynopsis cannot be used since the class
- is not available
- Remaining @def without DocBook synopsis because there is no equivalent,
- and requires a category
- defvr (defvar, defopt), deftypevr (deftypevar)
- deftp
- Missing test outputs as files in t/
- ===================================
- output files split (node or not split) could be interesting +texi2html
- style for some tests. However, the test suite is already too long to
- run so such additions should be done with caution.
- t/30sectioning.t
- chapter_between_nodes (more_nodes_than_sections renamed)
- more_sections_than_nodes
- two_nodes_between_chapters
- two_nodes_at_the_end
- character_and_spaces_in_refs
- character_and_spaces_in_node
- some_at_commands_in_ref_nodes
- at_commands_in_refs
- character_and_spaces_in_refs <- mono/chapter
- rec_nodes (with USE_NODES and without)
- loop_nodes?
- nodes_before_top?
- no_element
- top_node_no_menu_direction? (with USE_NODES and without?)
- anchor_in_footnote
- anchor_in_footnote_separate
- placed_things_before_node (with USE_NODES and without?)
- placed_things_before_element (with USE_NODES and without?)
- top_no_argument_and_node
- top_no_argument_and_top_node
- nodes_after_top_before_chapter_(nodes/sections) (with USE_NODES and --split chapter)
- nodes_after_top_before_section_(nodes/sections) (with USE_NODES and --split chapter and only --split chapter)
- sectioning_part_appendix (--split chapter)
- nodes_no_node_top_explicit_directions (with USE_NODES and without)
- one_node_explicit_directions_anchor (with USE_NODES and without) Really useful?
- top_without_node_sections
- t/info_tests.t
- space_in_setfilename
|