New tests.
[mono.git] / mcs / tools / monodoc / ChangeLog
index 81e75ae647d0a9c7cb9ca4ef9417d112612fa857..2ea79257c13db28843124b03565002f00ee8a9b2 100644 (file)
@@ -1,3 +1,310 @@
+2010-04-25  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/ecma-provider.cs: Support the full set of possible operator
+         names within EcmaHelpSource.MakeOperatorSignature() (where "full" is
+         "whatever is included in ECMA-335 §10.3.1 through §10.3.3").
+         Fixes InvalidOperationException reported to mono-docs-list.
+
+2010-02-28  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/provider.cs: Add
+         RootTree.LoadTree(string,string,IEnumerable) for compatibility with
+         Mono 2.6's monodoc.dll.
+
+2010-02-26  Jonathan Pryor  <jpryor@novell.com>
+
+       * Makefile: Add a System.Core.dll reference; embed monodoc.xml as a
+         resource.
+       * Monodoc/provider.cs: Add a
+         RootTree.LoadTree(string,XmlDocument,IEnumerable<string>) method.
+         This is so 'mdoc export-html-webdoc' doesn't need to rely on the
+         system-wide .source files (allowing execution w/o changing/replacing
+         the system-wide .source files) and so MonoDevelop can support
+         multiple .source files spread throughout the system sanely.
+       * Monodoc/ecma-provider.cs: Always add the extension methods contained
+         in the current EcmaHelpSource, instead of implicitly requiring that
+         the current EcmaHelpSource also be contained within
+         RootTree.HelpSources.  This simplifies logic in 'mdoc'.
+
+2010-01-13  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/provider.cs, Monodoc/ecma-provider.cs: Improve cache support
+         by having EcmaHelpSource.GetTextFromUrl() look for cached contents.
+         This greatly speeds up type member listings (e.g. T:...List`1/*),
+         e.g. from ~2.0s to 0.06s.
+
+2010-01-13  Jonathan Pryor  <jpryor@novell.com>
+
+       * Mono.Documentation/XmlDocUtils.cs: XmlDocUtils.AddExtensionMethods()
+         wasn't adding extension methods which matched *interfaces* of base
+         classes.  Result: Mono.Options.OptionSet (which inherits
+         System.Collections.ObjectModel.KeyedCollection`2 which inherits from
+         System.Collections.ObjectModel.Collection`1 which implements
+         System.Collections.Generic.IEnumerable`1) wasn't getting any of the
+         LINQ extension methods (which is bad).  Fix this.
+
+2010-01-13  Jonathan Pryor  <jpryor@novell.com>
+
+       * Resources/mdoc-html-utils.xsl: Fix regression caused by 2009-12-02
+         commit adding GetLinkTargetHtml().  The problem was that when
+         running within ASP.NET/monodoc ~all extension method links would be
+         'javascript:alert("...")M:Foo.Method(...)', which is clearly wrong.
+         This occurred because $linkid's generation would always call
+         GetLinkTargetHtml() with a $cref value of '', thus the monodoc
+         GetLinkTarget() would return '', so GetLinkTargetHtml() would return
+         the javascript "not found" alert.  Thus, we can't expect
+         GetLinkTargetHtml() with $cref='' to work under monodoc, but it's
+         ~required to work sanely under 'mdoc export-html'.
+         Solution is to not call GetLinkTargetHtml() here UNLESS we're doing
+         'mdoc export-html' generation, which we assume to be the case if
+         $html-anchor is true.
+
+2009-12-30  Jonathan Pryor  <jpryor@novell.com>
+
+       * Lucene.Net/Lucene.Net/QueryParser/QueryParser.cs: Fix crash when 
+         searching for "()".  Fixes #423853.  
+         Thanks to Benoît Tuduri <bento78@gmail.com>.
+
+2009-12-03  Jonathan Pryor  <jpryor@novell.com>
+
+       * Resources/mdoc-html-utils.xsl: Add support for generating namespace
+         links via <see cref="N:..." />
+
+2009-12-03  Jonathan Pryor  <jpryor@novell.com>
+
+       * Resources/mdoc-html-utils.xsl: Fix link-id generation of conversion
+         operators.
+
+2009-12-02  Jonathan Pryor  <jpryor@novell.com>
+
+       * Mono.Documentation/ManifestResourceResolver.cs:
+         Assembly.GetManifestResourceStream() throws an exception if the
+         resource isn't present (instead of returning null), so don't just
+         call it to see if the resource exists.
+       * Resources/mdoc-html-utils.xsl: .NET compatibility fixes (so that
+         mdoc can run under .NET w/o bundling Mono's System.Xml):
+         - Use msxsl:node-set() when required.
+         - Use <xsl:variable/> not <xsl:param/> when a variable is needed.
+         - Change semantics of GetLinkTarget(): instead of returning
+           javascript code (previous behavior) or '--not-available--' (did
+           this ever happen), return "" if the target can't be found.
+         - Add GetLinkTargetHtml() to wrap GetLinkTarget() and return the
+           previous javascript if the target couldn't be found.
+
+2009-11-24  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/ecma-provider.cs: Use XslCompiledTransform instead of
+         XslTransform, as XslCompiledTransform is *significantly* faster
+         under .NET (3m7s -> 1.7s for some tests).
+
+2009-10-02  Jonathan Pryor  <jpryor@novell.com>
+
+       * Mono.Documentation/XmlDocUtils.cs: GetInterfaces() can throw if the
+         type we're trying to load can't be found (e.g. if a type implements
+         an internal interface, there won't be an XML file for that internal
+         interface).  Ignore the exception.
+
+2009-09-25  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/ecma-provider.cs: Don't return 'null' from GetPublicUrl(),
+         but instead provide a decent URL even if the url isn't to a single
+         member, but instead to show all members, e.g. T:System.String/*.
+       * Monodoc/provider.cs: Obsolete Node.URL.  It's too variable for sane
+         use; use Node.PublicUrl.
+
+2009-09-09  Jonathan Pryor  <jpryor@novell.com>
+
+       * Mono.Documentation/ManifestResourceResolver.cs: Allow it to lookup
+         files located in multiple directories.  Needed so that 'mdoc
+         export-html' can properly deal with multiple source directories.
+
+2009-08-13  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/provider.cs: Add a RootTree.AddSource(string) method, so that 
+         additional directories can be checked for .source file loading.
+
+2009-08-13  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/provider.cs: Make RootTree.LoadTree() just call
+         RootTree.LoadTree(null), and move the .config-file parsing into
+         .LoadTree(string) (for when basedir==null).  This will simplify the
+         logic of monodoc, as we want to add the ability to monodoc to use
+         any arbitrary directory, and this will remove the need to do 
+         `if (d==null) RootTree.LoadTree(); else RootTree.LoadTree(d)`.
+         This also conforms to FxDG guidelines.
+
+2009-08-12  Jonathan Pryor  <jpryor@novell.com>
+
+       * Resources/mdoc-html-format: Added; XSLT file to match
+         "//format[@type='text/html']//*", to support "pass-through"
+         semantics.  This allows you to use actual HTML within your
+         documentation and have it visible to HTML-supporting output formats.
+         WARNING: Use as a "last resort" -- this is primarily intended for
+         importing existing HTML w/o needing lots of extra logic to convert
+         into mdoc format XML first (with a corresponding loss of fidelity).
+         However, it means that if (when) we get non-HTML output format
+         support, the <format type="text/html" /> blocks WILL be skipped for
+         that non-HTML output format.
+
+         For example, the forever-on-the-back-burner ROFF output support --
+         to remove the use of lynx, as no one ever has it installed --
+         wouldn't be able to support HTML format, so it would skip these
+         <format type="text/html"/> blocks.
+
+         Consider <format /> the moral equivalent of Perl POD's 
+         '=begin formatname' block; see perlpod(1).
+       * Resources/mdoc-html-utils.xsl: <xsl:import/> mdoc-html-format.xsl.
+         It *must* be imported (NOT included) so that it will have a lower
+         priority than other <template/>s, thus allowing the HTML formatter
+         to <xsl:apply-templates/> which then use the "normal" rules.  This
+         allows:
+               <format type="text/html">
+                       <p><see cref="T:System.String" /></p>
+               </format>
+         to work as expected.
+       * Makefile: Add mdoc-html-format.xsl as a resource.
+
+2009-04-16  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/man-provider.cs: NEVER return a non-null string from
+         HelpSource.GetText() unless *useful* content is being returned, as
+         when non-null is returned RootTree.RenderUrl() assumes that the url
+         was handled and won't try any other HelpSources.  In this case, we
+         can (and do) have multiple ManHelpSources present, but since
+         ManHelpSource.GetText() was returning "<html>url was null</html>",
+         RootTree thought it was handled...when it wasn't.  Fix.
+
+2009-04-16  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/provider.cs: Overview: MonoDevelop loads monodoc.dll into
+         it's own process, and spawns monodoc GUI into a separate process,
+         then sends Node.URL values (obtained from the MonoDevelop process)
+         to load the documentation into the monodoc GUI.  Problem:
+         occasionally the requested documentation isn't loaded, but instead
+         some completely unrelated documentation is shown instead.  This is
+         because the Node.URL value contains HelpSource-dependent data, e.g.
+         a Node.URL value of "ecma:0#Foo/" will specify the 1st file
+         within...whatever HelpSource is first consulted by monodoc (which
+         can vary between monodoc runs, the phase of the moon, etc.).
+         Solution: Add a Node.PublicUrl property which returns _stable_ URLs
+         which aren't specific to a given HelpSource.
+         - Add Node.PublicUrl property, which delegates to
+           Provider.GetPublicUrl(string), so that a Provider can generate a
+           Provider-independent URL (if possible).
+         - Print PublicUrl from Node.PrintTree().
+         - Add RootTree.GetSupportedFormats(), RootTree.GetProvider()
+           methods.
+         - Make RootTree.GetHelpSource() public.
+       * Monodoc/ecma-provider.cs: Add EcmaDoc.GetCref() method (generates an
+         XML documentation //see/@cref value), override
+         Provider.GetPublicUrl() (which will return cref's if possible).
+
+2009-04-15  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/ecma-provider.cs: EcmaHelpSource.GetText() doesn't need to
+         call GetCachedText() twice.
+
+2009-04-15  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/provider.cs: Correct UseWebdocCache logic.
+       * Monodoc/xhtml-provider.cs: Use GetCachedText().
+
+2009-04-15  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/provider.cs: UseWebdocCache is a better name that
+         IgnoreCache (considering that cache is disabled by default).
+
+2009-04-15  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/provider.cs:
+         - Add HelpSource.IgnoreCache field, so that if the cache is present 
+           it will be ignored.  (Required by 'mdoc export-html-webdoc' so it 
+           gets "fresh" content to generate the cache, and by monodoc GUI as 
+           it can't use the cache'd HTML; cache'd HTML is for ASP.NET 
+           webdoc only.)
+         - Alter the cache directory from e.g. sources/netdocs to 
+           sources/cache/netdocs (as defined by 
+           XmlDocUtils.GetCacheDirectory()).
+         - Add HelpSource.GetCachedText() method which will return the 
+           contents of the cache for an id.
+       * Monodoc/addins-provider.cs, Monodoc/ecma-provider.cs, 
+         Monodoc/error-provider.cs, Monodoc/man-provider.cs, 
+         Monodoc/simple-provider.cs: Use GetCachedText().
+       * Mono.Documentation/XmlDocUtils.cs: Add GetCacheDirectory(),
+         GetCacheFileName() methods.
+
+2009-04-14  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/provider.cs: Fix NullReferenceException in 'mdoc dump-tree'.
+
+2009-04-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
+
+       * ecma-provider.cs: remove 'using'.
+       * provider.cs: if there's a directory with the base name, read the
+       files from there instead of from the .zip file.
+
+2009-03-01  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/ecma-provider.cs: Viewing type members (plural, e.g. the
+         Fields sub-node) would result in a stack overflow within
+         Resources/mdoc-html-utils.xsl:GetInheritedMembers(), because the
+         document() XSLT function was being used to obtain the base type's
+         documentation.  It stack overflowed because the XmlUrlResolver was
+         being used, which when given e.g. file:///DocAttribute.xml, would
+         return file:///DocAttribute.xml (which makes sense), but it was
+         non-terminating.  (I find this troubling as it should have been
+         trying to resolve e.g. System.Attribute, not DocAttribute; it must
+         be some XmlTransform-fu that was substituting documents.)
+         The fix is for EcmaUncompiledHelpSource to provide an alternate
+         document XmlResolver, one which always returns null from
+         XmlResolver.ResolveUri(), thus preventing endless recursion.
+
+2009-03-01  Jonathan Pryor  <jpryor@novell.com>
+
+       * Mono.Documentation/XmlDocUtils.cs: It's possible for the `loader'
+         delegate to return `null' if no further base types are found, so
+         stop processing if we find a null base type.
+       * Monodoc/provider.cs: 
+         - Make GetHelpStream() virtual so that EcmaUncompiledHelpSource can
+           override it, as the default zip-based behavior is inappropriate.
+         - Make GetHelpXmlWithChanges() virtual so that
+           EcmaUncompiledHelpSource can override it, as the default zip-based
+           behavior is inappropriate.
+         - When initializing UncompiledHelpSources, set the
+           HelpSource.RootTree property (avoids an NRE from
+           EcmaHelpSource.GetTextFromUrl() when it reads RootTree.HelpSources).
+       * Monodoc/ecma-provider.cs: 
+         - Within the XmlDocUtils.AddExtensionMethods() call, don't always 
+           prefix the type with "T:", as sometimes the type will already start 
+           with "T:", which is the case with EcmaUncompiledHelpSource ids.  
+         - Add EcmaUncompiledHelpSource.GetHelpStream() and
+           EcmaUncompiledHelpSource.GetHelpXmlWithChanges(), which Do The
+           Right Thing for the file-based backend.
+
+2009-03-01  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/ecma-provider.cs: For some reason,
+         EcmaHelpSource.GetNamespaceDocument() wasn't being used anymore,
+         which is what EcmaUncompiledHelpSource overrides to permit loading
+         of local files.  Result: an exception when trying to view namespaces
+         of local (non-assembled) directories.  Oops.  "Fixes" 443508.
+
+2009-02-26  Jonathan Pryor  <jonpryor@vt.edu>
+
+       * Monodoc/provider.cs: Revert; Don't check for Tree.Nodes == null, as it
+         happens in numerous places.  Instead, take a page out of the "I
+         never should have invented `null'" book, and ensure that Tree.Nodes
+         can never be null.  This fixes the "HelpSource has 0 items" issue
+         and several other related ones.
+
+2009-02-26  Jonathan Pryor  <jonpryor@vt.edu>
+
+       * Monodoc/provider.cs: It's possible for a HelpSource to have 0
+         elements (which can be done by e.g. running `mdoc assemble' on an 
+         empty directory), in which case HelpSource.Tree.Nodes will be null.
+         Make sure that we don't get a NullReferenceException.
+         Patch thanks to Theerud Lawtrakul.  Fixes #443699.
+
 2009-02-25  Jonathan Pryor  <jonpryor@vt.edu>
 
        * Makefile: