From 145f583244562db7558f762f738ff7c991b15ef1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCnter=20Milde?= Date: Mon, 8 Jan 2018 22:47:09 +0100 Subject: [PATCH] Do not convert dashes/hyphens in Code insets (logical markup). Code is by default rendered as typewriter and should be treated similar: In text marked up as code, -- or --- is typically part of a command (e.g. "lyx --help" or "x--") and not a transliteration for en dash, see #10961. This is already handled so for text in typewriter font (see Text.cpp:500). --- lib/lyx2lyx/lyx_2_2.py | 9 ++++++--- lib/lyx2lyx/lyx_2_3.py | 18 ++++++++---------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/lib/lyx2lyx/lyx_2_2.py b/lib/lyx2lyx/lyx_2_2.py index 2f4ef3ac2a..12ccd4a003 100644 --- a/lib/lyx2lyx/lyx_2_2.py +++ b/lib/lyx2lyx/lyx_2_2.py @@ -618,12 +618,15 @@ def convert_dashes(document): i = 0 while i < len(document.body): words = document.body[i].split() - if len(words) > 1 and words[0] == "\\begin_inset" and \ - words[1] in ["CommandInset", "ERT", "External", "Formula", "FormulaMacro", "Graphics", "IPA", "listings"]: + if (len(words) > 1 and words[0] == "\\begin_inset" + and (words[1] in ["CommandInset", "ERT", "External", "Formula", + "FormulaMacro", "Graphics", "IPA", "listings"] + or ' '.join(words[1:]) == "Flex Code")): # must not replace anything in insets that store LaTeX contents in .lyx files - # (math and command insets withut overridden read() and write() methods + # (math and command insets without overridden read() and write() methods # filtering out IPA makes Text::readParToken() more simple # skip ERT as well since it is not needed there + # Flex Code is logical markup, typically rendered as typewriter j = find_end_of_inset(document.body, i) if j == -1: document.warning("Malformed LyX document: Can't find end of " + words[1] + " inset at line " + str(i)) diff --git a/lib/lyx2lyx/lyx_2_3.py b/lib/lyx2lyx/lyx_2_3.py index f2689fbf45..9cda3d7be8 100644 --- a/lib/lyx2lyx/lyx_2_3.py +++ b/lib/lyx2lyx/lyx_2_3.py @@ -1862,9 +1862,10 @@ def convert_dashligatures(document): if (i < j) or line.startswith("\\labelwidthstring"): continue words = line.split() - if len(words) > 1 and words[0] == "\\begin_inset" and \ - words[1] in ["CommandInset", "ERT", "External", "Formula", - "FormulaMacro", "Graphics", "IPA", "listings"]: + if (len(words) > 1 and words[0] == "\\begin_inset" + and (words[1] in ["CommandInset", "ERT", "External", "Formula", + "FormulaMacro", "Graphics", "IPA", "listings"] + or ' '.join(words[1:]) == "Flex Code")): j = find_end_of_inset(document.body, i) if j == -1: document.warning("Malformed LyX document: " @@ -1903,10 +1904,6 @@ def revert_dashligatures(document): return use_dash_ligatures = get_bool_value(document.header, "\\use_dash_ligatures", i) del document.header[i] - use_non_tex_fonts = False - i = find_token(document.header, "\\use_non_tex_fonts", 0) - if i != -1: - use_non_tex_fonts = get_bool_value(document.header, "\\use_non_tex_fonts", i) if not use_dash_ligatures or document.backend != "latex": return @@ -1918,9 +1915,10 @@ def revert_dashligatures(document): new_body.append(line) continue words = line.split() - if len(words) > 1 and words[0] == "\\begin_inset" and \ - words[1] in ["CommandInset", "ERT", "External", "Formula", - "FormulaMacro", "Graphics", "IPA", "listings"]: + if (len(words) > 1 and words[0] == "\\begin_inset" + and (words[1] in ["CommandInset", "ERT", "External", "Formula", + "FormulaMacro", "Graphics", "IPA", "listings"] + or ' '.join(words[1:]) == "Flex Code")): j = find_end_of_inset(document.body, i) if j == -1: document.warning("Malformed LyX document: Can't find end of "