From: Richard Heck Date: Fri, 19 Jun 2009 13:37:14 +0000 (+0000) Subject: XHTML output for InsetListings. X-Git-Tag: 2.0.0~6258 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=51d4d42906dd553ec72fa03e6c707c02bd73d494;p=lyx.git XHTML output for InsetListings. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@30185 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/development/HTML/HTML.notes b/development/HTML/HTML.notes index bf7a870ebf..7f8a77a281 100644 --- a/development/HTML/HTML.notes +++ b/development/HTML/HTML.notes @@ -5,14 +5,17 @@ Known issues:

, in violation of the DTD. I guess we could close the paragraph and then do the


, but isn't there a better solution? There's actually a LyX bug here, I think, since a line surely ought not appear in a normal paragraph? -* The same issue arises with InsetVSpace, unsurprisingly. +* The same issue arises with InsetVSpace, unsurprisingly. And also with the inline + version of InsetListings. +* One option here, actually, would be to use just
and never use

, setting + the spacing and such via CSS. * The code that manages the nesting of tags is pretty primitive. It needs a lot of work. These insets are basically done, though there are probably issues here and there, and there are even some FIXMEs: Bibitem, Branch, Caption, Collapsable, Footnote, Hyperlink, Info, Label, Line, - Marginal, Note, Newline, Newpage, Quotes, Space, SpecialChar, Wrap + Listings, Marginal, Note, Newline, Newpage, Quotes, Space, SpecialChar, Wrap These insets do nothing for XHTML: ERT, OptArg, Phantom @@ -58,7 +61,6 @@ These do not yet work and need some attention: InsetInclude: I think we just want to include it, straightforwardly. Probably will base this more on the latex() routine, then. Another possibility, maybe with a flag of some sort, would be to do it as a separate file, to which we link. - InsetListings: Probably just output it as

.
 	InsetRef: Presumably, this is an internal link. But what should the text be, and how
 		should we get it? Probably some validation thing again, where labels tell us where 
 		they are. Alternatively, we could parse the aux file.
diff --git a/src/insets/InsetListings.cpp b/src/insets/InsetListings.cpp
index aa8a831a60..b54b4106fd 100644
--- a/src/insets/InsetListings.cpp
+++ b/src/insets/InsetListings.cpp
@@ -135,7 +135,7 @@ int InsetListings::latex(odocstream & os, OutputParams const & runparams) const
 	// NOTE: I use {} to quote text, which is an experimental feature
 	// of the listings package (see page 25 of the manual)
 	int lines = 0;
-	bool isInline = params().isInline();
+	bool const isInline = params().isInline();
 	// get the paragraphs. We can not output them directly to given odocstream
 	// because we can not yet determine the delimiter character of \lstinline
 	docstring code;
@@ -273,6 +273,37 @@ int InsetListings::latex(odocstream & os, OutputParams const & runparams) const
 }
 
 
+docstring InsetListings::xhtml(odocstream & os, OutputParams const & rp) const
+{
+	odocstringstream out;
+
+	bool const isInline = params().isInline();
+	if (isInline) 
+		out << "
\n"; + else { + out << "
\n"; + docstring caption = getCaptionHTML(rp); + if (!caption.empty()) + out << "
" << caption << "
\n"; + } + + out << "
\n";
+	docstring def = InsetText::xhtml(out, rp);
+	out << "\n
\n"; + + if (isInline) { + out << "
\n"; + os << out.str(); + } else { + out << "
"; + // In this case, this needs to be deferred, but we'll put it + // before anything the text itself deferred. + def = out.str() + '\n' + def; + } + return def; +} + + docstring InsetListings::contextMenu(BufferView const &, int, int) const { return from_ascii("context-listings"); diff --git a/src/insets/InsetListings.h b/src/insets/InsetListings.h index 5396b7d0e1..51a3f7022c 100644 --- a/src/insets/InsetListings.h +++ b/src/insets/InsetListings.h @@ -57,6 +57,8 @@ private: /// int latex(odocstream &, OutputParams const &) const; /// + docstring xhtml(odocstream &, OutputParams const &) const; + /// void validate(LaTeXFeatures &) const; /// bool showInsetDialog(BufferView *) const;