+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: