Add \save_transient_properties parameter (#9841)

Increment LyX format to 504.

With this new parameter, the user can indicate that some other parameters that
are frequently switched must not be recorded in the file (as if they were a
setting specific to the user or transient, rather than a document setting). This
will play nicer with version control systems.

See the discussion, e.g.:
http://thread.gmane.org/gmane.editors.lyx.devel/157824/focus=157993 (third
solution mentioned)

TODO:
* The interface remains to be set up. We cannot change this setting from LyX
  for now.
* If save_transient_properties is false, we should read the user setting as a
  per-user-per-document (session) setting (e.g. like the cursor position).
* Once the above is done, we can treat \justification the same way (but it would
  be even better if \justification was moved to lyxrc).
This commit is contained in:
Guillaume Munch 2015-12-20 16:37:29 +00:00
parent f475795b92
commit 5c2d049996
9 changed files with 57 additions and 10 deletions

View File

@ -11,6 +11,13 @@ adjustments are made to tex2lyx and bugs are fixed in lyx2lyx.
-----------------------
2015-12-20 Guillaume Munch <gm@lyx.org>
* Format incremented to 504
New parameter "\save_transient_properties". When set to false, various
settings are no longer written to the file (only with a default
value). These include for now \tracking_changes and \output_changes.
Bug 9841.
2015-11-24 Uwe Stöhr <uwestoehr@web.de>
* Format incremented to 503
No new parameters.

View File

@ -80,12 +80,13 @@ format_relation = [("0_06", [200], minor_versions("0.6" , 4)),
("1_1_6_3", [218], ["1.1", "1.1.6.3","1.1.6.4"]),
("1_2", [220], minor_versions("1.2" , 4)),
("1_3", [221], minor_versions("1.3" , 7)),
# Note that range(i,j) is up to j *excluded*.
("1_4", list(range(222,246)), minor_versions("1.4" , 5)),
("1_5", list(range(246,277)), minor_versions("1.5" , 7)),
("1_6", list(range(277,346)), minor_versions("1.6" , 10)),
("2_0", list(range(346,414)), minor_versions("2.0" , 8)),
("2_1", list(range(414,475)), minor_versions("2.1" , 0)),
("2_2", list(range(475,504)), minor_versions("2.2" , 0))
("2_2", list(range(475,505)), minor_versions("2.2" , 0))
]
####################################################################

View File

@ -2184,6 +2184,23 @@ def revert_verbatim_star(document):
revert_verbatim(document, True)
def convert_save_props(document):
" Add save_transient_properties parameter. "
i = find_token(document.header, '\\origin', 0)
if i == -1:
document.warning("Malformed lyx document: Missing '\\origin'.")
return
document.header.insert(i, '\\save_transient_properties true')
def revert_save_props(document):
" Remove save_transient_properties parameter. "
i = find_token(document.header, "\\save_transient_properties", 0)
if i == -1:
return
del document.header[i]
##
# Conversion hub
#
@ -2221,10 +2238,12 @@ convert = [
[500, []],
[501, [convert_fontsettings]],
[502, []],
[503, []]
[503, []],
[504, [convert_save_props]]
]
revert = [
[503, [revert_save_props]],
[502, [revert_verbatim_star]],
[501, [revert_solution]],
[500, [revert_fontsettings]],

View File

@ -2765,11 +2765,13 @@ void Buffer::dispatch(FuncRequest const & func, DispatchResult & dr)
break;
case LFUN_CHANGES_TRACK:
if (params().save_transient_properties)
undo().recordUndoBufferParams(CursorData());
params().track_changes = !params().track_changes;
break;
case LFUN_CHANGES_OUTPUT:
if (params().save_transient_properties)
undo().recordUndoBufferParams(CursorData());
params().output_changes = !params().output_changes;
if (params().output_changes) {

View File

@ -369,6 +369,7 @@ BufferParams::BufferParams()
biblio_style = "plain";
use_bibtopic = false;
use_indices = false;
save_transient_properties = true;
track_changes = false;
output_changes = false;
use_default_options = true;
@ -673,6 +674,8 @@ string BufferParams::readToken(Lexer & lex, string const & token,
frontend::Alert::warning(_("Document class not available"),
msg, true);
}
} else if (token == "\\save_transient_properties") {
lex >> save_transient_properties;
} else if (token == "\\origin") {
lex.eatLine();
origin = lex.getString();
@ -1015,6 +1018,9 @@ void BufferParams::writeFile(ostream & os, Buffer const * buf) const
// The top of the file is written by the buffer.
// Prints out the buffer info into the .lyx file given by file
os << "\\save_transient_properties "
<< convert<string>(save_transient_properties) << '\n';
// the document directory (must end with a path separator)
// realPath() is used to resolve symlinks, while addPath(..., "")
// ensures a trailing path separator.
@ -1273,9 +1279,15 @@ void BufferParams::writeFile(ostream & os, Buffer const * buf) const
}
}
os << "\\tracking_changes " << convert<string>(track_changes) << '\n'
<< "\\output_changes " << convert<string>(output_changes) << '\n'
<< "\\html_math_output " << html_math_output << '\n'
os << "\\tracking_changes "
<< (save_transient_properties ? convert<string>(track_changes) : "false")
<< '\n';
os << "\\output_changes "
<< (save_transient_properties ? convert<string>(output_changes) : "false")
<< '\n';
os << "\\html_math_output " << html_math_output << '\n'
<< "\\html_css_as_file " << html_css_as_file << '\n'
<< "\\html_be_strict " << convert<string>(html_be_strict) << '\n';

View File

@ -381,11 +381,14 @@ public:
bool use_bibtopic;
/// Split the index?
bool use_indices;
/// revision tracking for this buffer ?
/// Save trensient properties?
bool save_transient_properties;
/// revision tracking for this buffer ? (this is a transient property)
bool track_changes;
/** This param decides whether change tracking marks should be used
* in output (irrespective of how these marks are actually defined;
* for instance, they may differ for DVI and PDF generation)
* This is a transient property.
*/
bool output_changes;
///

View File

@ -536,6 +536,7 @@ Preamble::Preamble() : one_language(true), explicit_babel(false),
h_secnumdepth = "3";
h_shortcut[0] = "idx";
h_spacing = "single";
h_save_transient_properties = "true";
h_suppress_date = "false";
h_textclass = "article";
h_tocdepth = "3";
@ -1102,6 +1103,7 @@ bool Preamble::writeLyXHeader(ostream & os, bool subdoc, string const & outfiled
<< "\\lyxformat " << LYX_FORMAT << '\n'
<< "\\begin_document\n"
<< "\\begin_header\n"
<< "\\save_transient_properties " << h_save_transient_properties << "\n"
<< "\\origin " << origin << "\n"
<< "\\textclass " << h_textclass << "\n";
string const raw = subdoc ? empty_string() : h_preamble.str();

View File

@ -191,6 +191,7 @@ private:
std::string h_shortcut[99];
std::string h_spacing;
std::string h_suppress_date;
std::string h_save_transient_properties;
std::string h_textclass;
std::string h_tocdepth;
std::string h_tracking_changes;

View File

@ -32,8 +32,8 @@ extern char const * const lyx_version_info;
// Do not remove the comment below, so we get merge conflict in
// independent branches. Instead add your own.
#define LYX_FORMAT_LYX 503 // uwestoehr: support for verbatim* environment
#define LYX_FORMAT_TEX2LYX 503
#define LYX_FORMAT_LYX 504 // gm: add save_transient_properties parameter
#define LYX_FORMAT_TEX2LYX 504
#if LYX_FORMAT_TEX2LYX != LYX_FORMAT_LYX
#ifndef _MSC_VER