comparison etc/TODO @ 110286:75aed7131b9b

* lisp/nxml/TODO: Remove. * etc/NEWS: Move nxml TODO items here.
author Glenn Morris <rgm@gnu.org>
date Wed, 08 Sep 2010 19:34:25 -0700
parents dc71fe13a42c
children 3e933e6f8752
comparison
equal deleted inserted replaced
110285:dc71fe13a42c 110286:75aed7131b9b
668 Tested on Fedora 12, 14, and the libmagick that ships with it. 668 Tested on Fedora 12, 14, and the libmagick that ships with it.
669 I also tried using an ImageMagick compiled from their SVN, in 669 I also tried using an ImageMagick compiled from their SVN, in
670 parallel with the one packaged by Fedora, it worked well. 670 parallel with the one packaged by Fedora, it worked well.
671 Ubuntu 8.04 was tested, but it seems it ships a broken ImageMagick. 671 Ubuntu 8.04 was tested, but it seems it ships a broken ImageMagick.
672 672
673 ** nxml mode
674
675 *** High priority
676
677 **** Command to insert an element template, including all required
678 attributes and child elements. When there's a choice of elements
679 possible, we could insert a comment, and put an overlay on that
680 comment that makes it behave like a button with a pop-up menu to
681 select the appropriate choice.
682
683 **** Command to tag a region. With a schema should complete using legal
684 tags, but should work without a schema as well.
685
686 **** Provide a way to conveniently rename an element. With a schema should
687 complete using legal tags, but should work without a schema as well.
688
689 *** Outlining
690
691 **** Implement C-c C-o C-q.
692
693 **** Install pre/post command hook for moving out of invisible section.
694
695 **** Put a modify hook on invisible sections that expands them.
696
697 **** Integrate dumb folding somehow.
698
699 **** An element should be able to be its own heading.
700
701 **** Optimize to avoid complete buffer scan on each command.
702
703 **** Make it work with HTML-style headings (i.e. level indicated by
704 name of heading element rather than depth of section nesting).
705
706 **** Recognize root element as a section provided it has a title, even
707 if it doesn't match section-element-name-regex.
708
709 **** Support for incremental search automatically making hidden text visible.
710
711 **** Allow title to be an attribute.
712
713 **** Command that says to recognize the tag at point as a section/heading.
714
715 **** Explore better ways to determine when an element is a section
716 or a heading.
717
718 **** rng-next-error needs to either ignore invisible portion or reveal it
719 (maybe use isearch oriented text properties).
720
721 **** Errors within hidden section should be highlighted by underlining the
722 ellipsis.
723
724 **** Make indirect buffers work.
725
726 **** How should nxml-refresh outline recover from non well-formed tags?
727
728 **** Hide tags in title elements?
729
730 **** Use overlays instead of text properties for holding outline state?
731 Necessary for indirect buffers to work?
732
733 **** Allow an outline to go in the speedbar.
734
735 **** Split up outlining manual section into subsections.
736
737 **** More detail in the manual about each outlining command.
738
739 **** More menu entries for hiding/showing?
740
741 **** Indication of many lines have been hidden?
742
743 *** Locating schemas
744
745 **** Should rng-validate-mode give the user an opportunity to specify a
746 schema if there is currently none? Or should it at least give a hint
747 to the user how to specify a non-vacuous schema?
748
749 **** Support for adding new schemas to schema-locating files.
750 Add documentElement and namespace elements.
751
752 **** C-c C-w should be able to report current type id.
753
754 **** Implement doctypePublicId.
755
756 **** Implement typeIdBase.
757
758 **** Implement typeIdProcessingInstruction.
759
760 **** Support xml:base.
761
762 **** Implement group.
763
764 **** Find preferred prefix from schema-locating files. Get rid of
765 rng-preferred-prefix-alist.
766
767 **** Inserting document element with vacuous schema should complete using
768 document elements declared in schema locating files, and set schema
769 appropriately.
770
771 **** Add a ruleType attribute to the <include> element?
772
773 **** Allow processing instruction in prolog to contain the compact syntax
774 schema directly.
775
776 **** Use RDDL to locate a schema based on the namespace URI.
777
778 **** Should not prompt to add redundant association to schema locating file.
779
780 **** Command to reload current schema.
781
782 *** Schema-sensitive features
783
784 **** Should filter dynamic markup possibilities using schema validity, by
785 adding hook to nxml-mode.
786
787 **** Dynamic markup word should (at least optionally) be able to look in
788 other buffers that are using nxml-mode.
789
790 **** Should clicking on Invalid move to next error if already on an error?
791
792 **** Take advantage of a:documentation. Needs change to schema format.
793
794 **** Provide feasible validation (as in Jing) toggle.
795
796 **** Save the validation state as a property on the error overlay to enable
797 more detailed diagnosis.
798
799 **** Provide an Error Summary buffer showing all the validation errors.
800
801 **** Pop-up menu. What is useful? Tag a region (should be greyed out if
802 the region is not balanced). Suggestions based on error messages.
803
804 **** Have configurable list of namespace URIs so that we can provide
805 namespace URI completion on extension elements or with schema-less documents.
806
807 **** Allow validation to handle XInclude.
808
809 **** ID/IDREF support.
810
811 *** Completion
812
813 **** Make it work with icomplete. Only use a function to complete when
814 some of the possible names have undeclared namespaces.
815
816 **** How should C-return in mixed text work?
817
818 **** When there's a vacuous schema, C-return after < will insert the end-tag.
819 Is this a bug or a feature?
820
821 **** After completing start-tag, ensure we don't get unhelpful message
822 from validation
823
824 **** Syntax table for completion.
825
826 **** Should complete start-tag name with a space if namespace attributes
827 are required.
828
829 **** When completing start-tag name with no prefix and it doesn't match
830 should try to infer namespace from local name.
831
832 **** Should completion pay attention to characters after point? If so, how?
833
834 **** When completing start-tag name, add required atts if only one required
835 attribute.
836
837 **** When completing attribute name, add attribute value if only one value
838 is possible.
839
840 **** After attribute-value completion, insert space after close delimiter
841 if more attributes are required.
842
843 **** Complete on enumerated data values in elements.
844
845 **** When in context that allows only elements, should get tag
846 completion without having to type < first.
847
848 **** When immediately after start-tag name, and name is valid and not
849 prefix of any other name, should C-return complete on attribute names?
850
851 **** When completing attributes, more consistent to ignore all attributes
852 after point.
853
854 **** Inserting attribute value completions needs to be sensitive to what
855 delimiter is used so that it quotes the correct character.
856
857 **** Complete on encoding-names in XML decl.
858
859 **** Complete namespace declarations by searching for all namespaces
860 mentioned in the schema.
861
862 *** Well-formed XML support
863
864 **** Deal better with Mule-UCS
865
866 **** Deal with UTF-8 BOM when reading.
867
868 **** Complete entity names.
869
870 **** Provide some support for entity names for MathML.
871
872 **** Command to repeat the last tag.
873
874 **** Support for changing between character references and characters.
875 Need to check that context is one in which character references are
876 allowed. xmltok prolog parsing will need to distinguish parameter
877 literals from other kinds of literal.
878
879 **** Provide a comment command to bind to M-; that works better than the
880 normal one.
881
882 **** Make indenting in a multi-line comment work.
883
884 **** Structure view. Separate buffer displaying element tree.
885 Be able to navigate from structure view to document and vice-versa.
886
887 **** Flash matching >.
888
889 **** Smart selection command that selects increasingly large syntactically
890 coherent chunks of XML. If point is in an attribute value, first
891 select complete value; then if command is repeated, select value plus
892 delimiters, then select attribute name as well, then complete
893 start-tag, then complete element, then enclosing element, etc.
894
895 **** ispell integration.
896
897 **** Block-level items in mixed content should be indented, e.g:
898 <para>This is list:
899 <ul>
900 <li>item</li>
901
902 **** Provide option to indent like this:
903 <para>This is a paragraph
904 occupying multiple lines.</para>
905
906 **** Option to add make a / that closes a start-tag electrically insert a
907 space for the XHTML guys.
908
909 **** C-M-q should work.
910
911 *** Datatypes
912
913 **** Figure out workaround for CJK characters with regexps.
914
915 **** Does category C contain Cn?
916
917 **** Do ENTITY datatype properly.
918
919 *** XML Parsing Library
920
921 **** Parameter entity parsing option, nil (never), t (always),
922 unless-standalone (unless standalone="yes" in XML declaration).
923
924 **** When a file is currently being edited, there should be an option to
925 use its buffer instead of the on-disk copy.
926
927 *** Handling all XML features
928
929 **** Provide better support for editing external general parsed entities.
930 Perhaps provide a way to force ignoring undefined entities; maybe turn
931 this on automatically with <?xml encoding=""?> (with no version
932 pseudo-att).
933
934 **** Handle internal general entity declarations containing elements.
935
936 **** Handle external general entity declarations.
937
938 **** Handle default attribute declarations in internal subset.
939
940 **** Handle parameter entities (including DTD).
941
942 *** RELAX NG
943
944 **** Do complete schema checking, at least optionally.
945
946 **** Detect include/external loops during schema parse.
947
948 **** Coding system detection for schemas. Should use utf-8/utf-16 per the
949 spec. But also need to allow encodings other than UTF-8/16 to support
950 CJK charsets that Emacs cannot represent in Unicode.
951
952 *** Catching XML errors
953
954 **** Check public identifiers.
955
956 **** Check default attribute values.
957
958 *** Performance
959
960 **** Explore whether overlay-recenter can cure overlays performance problems.
961
962 **** Cache schemas. Need to have list of files and mtimes.
963
964 **** Make it possible to reduce rng-validate-chunk-size significantly,
965 perhaps to 500 bytes, without bad performance impact: don't do
966 redisplay on every chunk; pass continue functions on other uses of
967 rng-do-some-validation.
968
969 **** Cache after first tag.
970
971 **** Introduce a new name class that is a choice between names (so that
972 we can use member)
973
974 **** intern-choice should simplify after patterns with same 1st/2nd args
975
976 **** Large numbers of overlays slow things down dramatically. Represent
977 errors using text properties. This implies we cannot incrementally
978 keep track of the number of errors, in order to determine validity.
979 Instead, when validation completes, scan for any characters with an
980 error text property; this seems to be fast enough even with large
981 buffers. Problem with error at end of buffer, where there's no
982 character; need special variable for this. Need to merge face from
983 font-lock with the error face: use :inherit attribute with list of two
984 faces. How do we avoid making rng-valid depend on nxml-mode?
985
986 *** Error recovery
987
988 **** Don't stop at newline in looking for close of start-tag.
989
990 **** Use indentation to guide recovery from mismatched end-tags
991
992 **** Don't keep parsing when currently not well-formed but previously
993 well-formed
994
995 **** Try to recover from a bad start-tag by popping an open element if
996 there was a mismatched end-tag unaccounted for.
997
998 **** Try to recover from a bad start-tag open on the hypothesis that there
999 was an error in the namespace URI.
1000
1001 **** Better recovery from ill-formed XML declarations.
1002
1003 *** Useability improvements
1004
1005 **** Should print a "Parsing..." message during long movements.
1006
1007 **** Provide better position for reference to undefined pattern error.
1008
1009 **** Put Well-formed in the mode-line when validating against any-content.
1010
1011 **** Trim marking of illegal data for leading and trailing whitespace.
1012
1013 **** Show Invalid status as soon as we are sure it's invalid, rather than
1014 waiting for everything to be completely up to date.
1015
1016 **** When narrowed, Valid or Invalid status should probably consider only
1017 validity of narrowed region.
1018
1019 *** Bug fixes
1020
1021 **** Need to give an error for a document like: <foo/><![CDATA[ ]]>
1022
1023 **** Make nxml-forward-balanced-item work better for the prolog.
1024
1025 **** Make filling and indenting comments work in the prolog.
1026
1027 **** Should delete RNC Input buffers.
1028
1029 **** Figure out what regex use for NCName and use it consistently,
1030
1031 **** Should have not-well-formed tokens in ref.
1032
1033 **** Require version in XML declaration? Probably not because prevents
1034 use for external parsed entities. At least forbid standalone without version.
1035
1036 **** Reject schema that compiles to rng-not-allowed-ipattern.
1037
1038 **** Move point backwards on schema parse error so that it's on the right token.
1039
1040 *** Internal
1041
1042 **** Use rng-quote-string consistently.
1043
1044 **** Use parsing library for XML to texinfo conversion.
1045
1046 **** Rename xmltok.el to nxml-token.el. Use nxml-t- prefix instead of
1047 xmltok-. Change nxml-t-type to nxml-t-token-type, nxml-t-start to
1048 nxml-t-token-start.
1049
1050 **** Can we set fill-prefix to nil and rely on indenting?
1051
1052 **** xmltok should make available replacement text of entities containing
1053 elements
1054
1055 **** In rng-valid, instead of using modification-hooks and
1056 insert-behind-hooks on dependent overlays, use same technique as nxml-mode.
1057
1058 **** Port to XEmacs. Issues include: Unicode (XEmacs seems to be based on
1059 Mule-UCS); overlays/text properties vs extents; absence of
1060 fontification-functions hook.
1061
1062 *** Fontification
1063
1064 **** Allow face to depend on element qname, attribute qname, attribute
1065 value. Use list with pairs of (R . F), where R specifies regexps and
1066 F specifies faces. How can this list be made to depend on the document type?
1067
1068 *** Other
1069
1070 **** Support RELAX NG XML syntax (use XML parsing library).
1071
1072 **** Support W3C XML Schema (use XML parsing library).
1073
1074 **** Command to infer schema from current document (like trang).
1075
1076 *** Schemas
1077
1078 **** XSLT schema should take advantage of RELAX NG to express cooccurrence
1079 constraints on attributes (e.g. xsl:template).
1080
1081 *** Documentation
1082
1083 **** Move material from README to manual.
1084
1085 **** Document encodings.
1086
1087 *** Notes
1088
1089 **** How can we allow an error to be displayed on a different token from
1090 where it is detected? In particular, for a missing closing ">" we
1091 will need to display it at the beginning of the following token. At the
1092 moment, when we parse the following token the error overlay will get cleared.
1093
1094 **** How should rng-goto-next-error deal with narrowing?
1095
1096 **** Perhaps should merge errors having same start position even if they
1097 have different ends.
1098
1099 **** How to handle surrogates? One possibility is to be compatible with
1100 utf8.e: represent as sequence of 4 chars. But utf-16 is incompatible
1101 with this.
1102
1103 **** Should we distinguish well-formedness errors from invalidity errors?
1104 (I think not: we may want to recover from a bad start-tag by implying
1105 an end-tag.)
1106
1107 **** Seems to be a bug with Emacs, where a mouse movement that causes
1108 help-echo text to appear counts as pending input but does not cause
1109 idle timer to be restarted.
1110
1111 **** Use XML to represent this file.
1112
1113 **** I had a TODO which said simply "split-string". What did I mean?
1114
1115 **** Investigate performance on large files all on one line.
1116
1117 *** Issues for Emacs versions >= 22
1118
1119 **** Take advantage of UTF-8 CJK support.
1120
1121 **** Supply a next-error-function.
1122
1123 **** Investigate this NEWS item "Emacs now tries to set up buffer coding
1124 systems for HTML/XML files automatically."
1125
1126 **** Take advantage of the pointer text property.
1127
1128 **** Leverage char-displayable-p.
1129
673 * Internal changes 1130 * Internal changes
674 1131
675 ** Cleanup all the GC_ mark bit stuff -- there is no longer any distinction 1132 ** Cleanup all the GC_ mark bit stuff -- there is no longer any distinction
676 since the mark bit is no longer stored in the Lisp_Object itself. 1133 since the mark bit is no longer stored in the Lisp_Object itself.
677 1134