From 953984e3dad6ea4aff0c4c613c4a91f31ef021b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Matox?= Date: Thu, 6 Jan 2005 16:52:08 +0000 Subject: [PATCH] place one paragraph parameter per line. (file format = 239) git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@9450 a592a061-630c-0410-9148-cb99ea01b6c8 --- development/FORMAT | 45 +++++++++++++++++++++++++++------------ lib/lyx2lyx/ChangeLog | 7 ++++++ lib/lyx2lyx/LyX.py | 26 +++++++++++----------- lib/lyx2lyx/lyx_1_4.py | 32 ++++++++++++++++++++++++++-- src/ChangeLog | 8 ++++++- src/ParagraphParameters.C | 18 ++++++---------- src/buffer.C | 2 +- src/paragraph.C | 8 +++---- 8 files changed, 100 insertions(+), 46 deletions(-) diff --git a/development/FORMAT b/development/FORMAT index b62e5278e8..7bd5e0a94b 100644 --- a/development/FORMAT +++ b/development/FORMAT @@ -1,26 +1,43 @@ LyX file-format changes ----------------------- +2005-01-06 José Matos + + * format incremented to 239. + * the paragraph parameters are displayed in their own line. This + change is consistent with the insets behaviour, and corresponds + to a more uniform treatment of the paragraphs since some of them + had already their own line. + + An example of a single paragraph follows: + +\begin_layout Standard +\paragraph_spacing single +\align left +Paragraph text. +\end_layout + + 2004-12-03 José Matos - * format up to 238. - * The compatibility code to read old latex accents from 0.12.x in - InsetLatexAccent::checkContents has been removed. - The following translations are done: - "\i \x" -> "\i \x{}" - "\i \xy" -> "\i \x{y}" - "\i \x y" -> "\i \x{y}" - "\i \x\i" -> "\i \x{\i}" - "\i \x\j" -> "\i \x{\j}" - x is a latex accent command, y the base character. \, i and j are - literal. - lyx did these changes already from 0.12.x -> 215, but not lyx2lyx, - so formats 215 - 237 can have both versions. + * format incremented to 238. + * The compatibility code to read old latex accents from 0.12.x in + InsetLatexAccent::checkContents has been removed. + The following translations are done: + "\i \x" -> "\i \x{}" + "\i \xy" -> "\i \x{y}" + "\i \x y" -> "\i \x{y}" + "\i \x\i" -> "\i \x{\i}" + "\i \x\j" -> "\i \x{\j}" + x is a latex accent command, y the base character. \, i and j are + literal. + lyx did these changes already from 0.12.x -> 215, but not lyx2lyx, + so formats 215 - 237 can have both versions. 2004-10-10 José Matos - * format up to 237. + * format incremented to 237. * In the header, the following statments use now booleans values, instead of 0, 1: - \use_geometry diff --git a/lib/lyx2lyx/ChangeLog b/lib/lyx2lyx/ChangeLog index b7f1028538..18d00214cd 100644 --- a/lib/lyx2lyx/ChangeLog +++ b/lib/lyx2lyx/ChangeLog @@ -1,3 +1,10 @@ +2005-01-06 José Matos + + * lyx_1_4.py (normalize_paragraph_params): update file format to 239. + + * LyX.py (convert): simplify code and add running times + information for higher debug levels. + 2005-01-04 José Matos * lyx_0_12.py: diff --git a/lib/lyx2lyx/LyX.py b/lib/lyx2lyx/LyX.py index df8baa3d8a..e3e2739d8a 100644 --- a/lib/lyx2lyx/LyX.py +++ b/lib/lyx2lyx/LyX.py @@ -16,12 +16,14 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -from parser_tools import get_value, check_token, find_token, find_tokens, find_end_of, find_end_of_inset +from parser_tools import get_value, check_token, find_token,\ + find_tokens, find_end_of, find_end_of_inset import os.path import gzip import sys import re import string +import time version_lyx2lyx = "1.4.0cvs" default_debug_level = 2 @@ -44,7 +46,7 @@ format_relation = [("0_10", [210], ["0.10.7","0.10"]), ("1_1_6fix3", [218], ["1.1.6fix3","1.1.6fix4","1.1"]), ("1_2", [220], ["1.2.0","1.2.1","1.2.3","1.2.4","1.2"]), ("1_3", [221], ["1.3.0","1.3.1","1.3.2","1.3.3","1.3.4","1.3.5","1.3"]), - ("1_4", range(223,239), ["1.4.0cvs","1.4"])] + ("1_4", range(223,240), ["1.4.0cvs","1.4"])] def formats_list(): @@ -267,23 +269,23 @@ class LyX_Base: for step in convertion_chain: steps = getattr(__import__("lyx_" + step), mode) + self.warning("Convertion step: %s - %s" % (step, mode), default_debug_level + 1) if not steps: self.error("The convertion to an older format (%s) is not implemented." % self.format) - if len(steps) == 1: - version, table = steps[0] - for conv in table: - conv(self) - self.format = version - continue - + multi_conv = len(steps) != 1 for version, table in steps: - if self.format >= version and mode == "convert": - continue - if self.format <= version and mode == "revert": + if multi_conv and \ + (self.format >= version and mode == "convert") or\ + (self.format <= version and mode == "revert"): continue + for conv in table: + init_t = time.time() conv(self) + self.warning("%lf: Elapsed time on %s" % (time.time() - init_t, str(conv)), + default_debug_level + 1) + self.format = version if self.end_format == self.format: return diff --git a/lib/lyx2lyx/lyx_1_4.py b/lib/lyx2lyx/lyx_1_4.py index 0722503a42..ac81fc39b7 100644 --- a/lib/lyx2lyx/lyx_1_4.py +++ b/lib/lyx2lyx/lyx_1_4.py @@ -1507,6 +1507,32 @@ def use_x_binary(file): decompose = split(file.header[i]) file.header[i] = decompose[0] + ' ' + bool2bin[decompose[1]] +## +# Place all the paragraph parameters in their own line +# +def normalize_paragraph_params(file): + body = file.body + allowed_parameters = '\\paragraph_spacing', '\\noindent', '\\align', '\\labelwidthstring' + + i = 0 + while 1: + i = find_token(file.body, '\\begin_layout', i) + if i == -1: + return + + i = i + 1 + while 1: + if strip(body[i]) and split(body[i])[0] not in allowed_parameters: + break + + j = find(body[i],'\\', 1) + + if j != -1: + body[i:i+1] = [strip(body[i][:j]), body[i][j:]] + + i = i + 1 + + ## # Convertion hub # @@ -1529,9 +1555,11 @@ convert = [[223, [insert_tracking_changes, add_end_header, remove_color_default, [236, [convert_bullets, add_begin_header, add_begin_body, normalize_papersize, strip_end_space]], [237, [use_x_boolean]], - [238, [update_latexaccents]]] + [238, [update_latexaccents]], + [239, [normalize_paragraph_params]]] -revert = [[237, []], +revert = [[238, []], + [237, []], [236, [use_x_binary]], [235, [denormalize_papersize, remove_begin_body,remove_begin_header, revert_bullets]], diff --git a/src/ChangeLog b/src/ChangeLog index 66fac148bd..a2194bcc5f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2005-01-06 José Matos + + * ParagraphParameters.C (write): put every parameter in its own line. + * paragraph.C (write): reduce number of consecutive empty lines exported. + * buffer.C (LYX_FORMAT): increase file format to 239. + 2005-01-06 Lars Gullik Bjonnes * everywhere: change support/tostr.h -> support/convert.h @@ -184,7 +190,7 @@ * Makefile.am (BOOST_LIBS): use boost variables -2004-12-03 José Matos +2004-12-03 José Matos * buffer.C: format up to 238. diff --git a/src/ParagraphParameters.C b/src/ParagraphParameters.C index d93e07cbb6..1f5da6720a 100644 --- a/src/ParagraphParameters.C +++ b/src/ParagraphParameters.C @@ -246,28 +246,25 @@ void ParagraphParameters::read(LyXLex & lex) void ParagraphParameters::write(ostream & os) const { - ostringstream oss; - // Maybe the paragraph has special spacing - spacing().writeFile(oss, true); + spacing().writeFile(os, true); // The labelwidth string used in lists. if (!labelWidthString().empty()) - oss << "\\labelwidthstring " + os << "\\labelwidthstring " << labelWidthString() << '\n'; // Start of appendix? if (startOfAppendix()) - oss << "\\start_of_appendix "; + os << "\\start_of_appendix\n"; // Noindent? if (noindent()) - oss << "\\noindent "; + os << "\\noindent\n"; // Do we have a manual left indent? if (!leftIndent().zero()) - oss << "\\leftindent " << leftIndent().asString() - << ' '; + os << "\\leftindent " << leftIndent().asString() << '\n'; // Alignment? if (align() != LYX_ALIGN_LAYOUT) { @@ -278,9 +275,8 @@ void ParagraphParameters::write(ostream & os) const case LYX_ALIGN_CENTER: h = 3; break; default: h = 0; break; } - oss << "\\align " << string_align[h] << ' '; + os << "\\align " << string_align[h] << '\n'; } - os << rtrim(oss.str()); } @@ -301,7 +297,7 @@ void params2string(Paragraph const & par, string & data) params.write(os); // Is alignment possible - os << '\n' << "\\alignpossible " << layout->alignpossible << '\n'; + os << "\\alignpossible " << layout->alignpossible << '\n'; /// set default alignment os << "\\aligndefault " << layout->align << '\n'; diff --git a/src/buffer.C b/src/buffer.C index de6a46b06e..3439e408da 100644 --- a/src/buffer.C +++ b/src/buffer.C @@ -136,7 +136,7 @@ extern BufferList bufferlist; namespace { -int const LYX_FORMAT = 238; +int const LYX_FORMAT = 239; } // namespace anon diff --git a/src/paragraph.C b/src/paragraph.C index ce8b9967d8..5be1eaaa76 100644 --- a/src/paragraph.C +++ b/src/paragraph.C @@ -156,10 +156,6 @@ void Paragraph::write(Buffer const & buf, ostream & os, int column = 0; for (pos_type i = 0; i < size(); ++i) { - if (!i) { - os << '\n'; - column = 0; - } Change change = pimpl_->lookupChangeFull(i); Changes::lyxMarkChange(os, column, curtime, running_change, change); @@ -185,7 +181,9 @@ void Paragraph::write(Buffer const & buf, ostream & os, // the file inset->write(buf, os); } else { - os << "\n\\begin_inset "; + if (i) + os << '\n'; + os << "\\begin_inset "; inset->write(buf, os); os << "\n\\end_inset\n\n"; column = 0;