Commit Graph

25629 Commits

Author SHA1 Message Date
Günter Milde
4a481975b6 Use CJKutf8 package if input encoding is "utf8" and a used language requires CJK.
CJKutf8 now used also if a secondary language requires CJK.
2019-03-13 11:31:25 +01:00
Günter Milde
0f265a5ab6 Remove special code for CJK that is no longer required (amends e665715fc4). 2019-03-13 11:13:44 +01:00
Jean-Marc Lasgouttes
f659af339e Revert "Let tm be a reference here as elsewhere"
This commit was wrong because a reference variable can never be
re-assigned (it would change the original variable). I learn C++
pitfalls every day.

Fixes bug #11512.

This reverts commit 10e2c65835.
2019-03-12 16:03:22 +01:00
Jean-Marc Lasgouttes
63bfaa14be Make TextMetrics noncopyable
This is done by declaring unimplemented private copy constructor and
assignment operator.

This breaks compilation in BufferView::textMetrics, which does a copy when
inserting a TextMetrics object in the cache. Some C++11 wizardry I will not
pretend to completely understand saves the day.

See the following page for details:
  https://en.cppreference.com/w/cpp/container/map/emplace

This avoids real world bugs like #11512.
2019-03-12 16:03:22 +01:00
Juergen Spitzmueller
8b92a2a689 Add NeedMBoxProtect [inset]layout option
This accesses the inulemcmd output param which protects specific commands
(\cite, \ref) in an \mbox.

This is needed in ulem and soul commands, since their complex
detokenization makes such commands (who produce multiple words via local
assignment) fail.

So now it is possible to properly support ulem and soul via
[inset]layout

Fixes a case reported in #9404
2019-03-12 14:08:05 +01:00
Juergen Spitzmueller
c41df5b671 Warn if included file does not exist
Patch by Jürgen Womser-Schütz
2019-03-12 09:00:59 +01:00
Juergen Spitzmueller
3c83f01f1b More exceptions to percent encoding
See #11511
2019-03-10 16:37:31 +01:00
Juergen Spitzmueller
936cddc715 Do not percent-encode & in urls
This is query syntax

Fixes: #11511

follows up [c2db448ff5/lyxgit]
2019-03-10 13:23:36 +01:00
Juergen Spitzmueller
de449daa71 update tex2lyx tests after file format change 2019-03-10 13:04:15 +01:00
Juergen Spitzmueller
ebd7a1a22a Support for the Malayalam language
Patch by Joice Joseph
2019-03-10 10:21:59 +01:00
Kornel Benko
c041439c51 FindAdv: Special handling for \dot{i} and 'ß'
Different behaviour in regexp{..} for 'İ' and 'ß':
1.) lowercase routine for 'İ' gives 'İ', so that if we are searching
  while ignoring case, the string '\dot{I}' is converted to '\dot{i}'.
  In this case we have to change it to 'İ' (instead of 'i', as one would expect).

2.) If 'ß' is inserted via keybord on fresh created regexp box it appears as \lyxmathsym{ß},
  if pasted from the lyx-screen it appears as \text{ß}
2019-03-10 00:29:56 +01:00
Kornel Benko
99e216b78d Amend 62f8b8be
The file test-insets.tex is changed, therefore the file
which is expected by tex2lyx (test-insets.lyx.lyx) has to be changed too.
2019-03-09 21:24:21 +01:00
Juergen Spitzmueller
55c9bc218a Do not use GUI language for shortcut info inset if no translation is available
Fixes: #11508

Now there is the opposite case which needs to be addressed:
If no translation is available for a shortcut in a non-latin-scripted
document, we need to switch the language to English.
2019-03-09 12:00:40 +01:00
Kornel Benko
f848183fa8 FindAdv: Expand the list of handled chars for dot below and ring above 2019-03-08 22:44:00 +01:00
Juergen Spitzmueller
2078a02ce9 Silence compiler warning 2019-03-08 16:48:49 +01:00
Günter Milde
24b675783f Ensure \LyX macro works also with non-standard font encodings (Greek, ...).
Babel provides the \textlatin macro to ensure Latin letter ASCII characters are
output as Latin letters.

Instead of 8 different definitions for the several variants of the macro definition,
wrappers are individually added if required and available.
2019-03-07 17:01:05 +01:00
Kornel Benko
b702eda4ed FindAdv: Amend cd4ae51f
Prevent to match only part of a macro.
For instance, we want find '\imath' but not '\imathxxxx'
while checking for accents.
2019-03-04 14:37:10 +01:00
Kornel Benko
cd4ae51f77 FindAdv: Amend b21c8b21: Expand the list for handled latin characters
1.) Added for 'breve' and 'grave' accents
2.) Corrected handling for 'i'-accents (allowed \hat{i} _and_ \hat{\imath})
	because of problems with ignoring case
3.) Spaces: Changed some indents in source
2019-03-04 14:05:44 +01:00
Günter Milde
68b6198d63 Fix/simplify "if" clause for application of \textcyrrillic or \textgreek.
Also with Xe/LuaTeX only required with non-native font encodings.
2019-03-04 00:04:03 +01:00
Günter Milde
7dfc6c7f8b Update latex export of combining characters.
* Remove exception for polytonikogreek (drop braces)
  no longer required since the fixes to #6463 and #9637.
* Update comments.
2019-03-04 00:04:03 +01:00
Kornel Benko
99bacf006e FindAdv: Handle some more accented latin characters.
Also try to use UTF8 encoded chars instead of their
latex equivalent if possible.
2019-03-03 14:08:27 +01:00
Kornel Benko
b21c8b214d FindAdv: Expand the list for handled latin characters 2019-03-02 22:00:20 +01:00
Kornel Benko
3541a49db4 FindAdv: Try to add the possibility to search for accented characters in regex
The problem is the handling of regex as using math-mode. That is
any accented character is converted to a math macro.
For instance "ä" --> "\\ddot{a}".
Outside of math or regex it is not converted (if used xetex flavour),
but there are other chars which are converted in math and in text (but differently)
For instance "ů"
	in math --> "\\mathring{u}"
	in text --> "\\r{u}"

TODO: determine the still not handled conversions.
It would be nice, if we could persuade math factory to not convert
these characters, but I was unable to find the place where the
conversion actually takes place.
2019-03-02 15:42:38 +01:00
Günter Milde
e665715fc4 Don't switch encodings when a document wide encoding is specified.
Remove special code for CJK that is no longer required after
we use CJKutf8 document-wide with inputenc "utf8-cjk"
(and "utf8" for languages requiring CJK) (since 7bbf333fa1).

CJK characters can no longer be used with a document-wide 8-bit encoding.
(Hint: Use utf8-cjk or one of the CJK legacy encodings if your document contains CJK characters.)
2019-02-28 22:55:43 +01:00
Kornel Benko
9d6b71c6b3 FindAdv: Use isAlnumASCII() instead of std::isalnum()
Thanks Jean-Marc
2019-02-28 13:00:12 +01:00
Jean-Marc Lasgouttes
32d6396f88 Use || instead of or operator
It is more consistent and visual studio seems to dislike it anyway.
2019-02-28 12:03:34 +01:00
Kornel Benko
2c5c397afa Amend aaffcd0b: Remove some remnants ... 2019-02-27 10:33:25 +01:00
Kornel Benko
aaffcd0b39 FindAdv: Do not use data from included listing if in search mode
Fixes #11496 	"Find and replace (advanced)" is too slow
2019-02-27 10:17:56 +01:00
Kornel Benko
b1f93e0982 FindAdv: Try to use a better algorithm to find begin of a searched string 2019-02-26 23:00:31 +01:00
Jean-Marc Lasgouttes
954531f247 Update screen as needed when preferences are changed
This commit removes the adhoc code in GuiPrefs and moves it to LyXRC,
so that it triggers in every preference change.

The code has also been updated to trigger on more variables, e.g.
font_*_foundry.

Note that the actual function that are called have not been changed
(addPreviews and LFUN_SCREEN_FONT_UPDATE), although there are doubts
that they behave as needed (see FIXMEs).

Fixes bug #11498.
2019-02-26 16:53:14 +01:00
Kornel Benko
babb291ef3 FindAdv: Partially revert e69f7022
The slowness returns, but the search works again
2019-02-26 13:24:36 +01:00
Richard Kimberly Heck
5b959033d2 Fix bad error message (bug 11486). 2019-02-25 21:56:40 -05:00
Jean-Marc Lasgouttes
4028eefe61 Make callstack printing useful and optional
When callback printing is enabled, link lyx with -rdynamic, so that
stacks have LyX symbols available.

Add option --disable-callstack-printing to configure.

Running "size" on binary:
 * with callstack printing support
   text	   data	    bss	    dec	    hex	filename
20891684	  34680	 107796	21034160	140f4b0	src/lyx

 * without callstack printing support
    text	   data	    bss	    dec	    hex	filename
17953640	  34648	 107796	18096084	1141fd4	src/lyx
2019-02-25 17:58:06 +01:00
Jean-Marc Lasgouttes
bc128e7bf8 Use range-based loops in BufferList 2019-02-25 15:19:58 +01:00
Jean-Marc Lasgouttes
7f0525e9e0 Change the way scrolled rows are tracked
The goal of this commit is to simplify the logic in TextMetrics::draw.
Now, rows are repainted depending on their changed() status.

Instead of checking whether rows have been scrolled horizontally at
draw time, the code marks the row as changed when testing for
horizontal scrolling.

To this end a new method TestMetrics::setRowChanged is added, that
searches a row in the text metrics cache and marks it changed if
found.

The old code that remembered the previously scrolled row can now be
removed.
2019-02-25 15:19:58 +01:00
Kornel Benko
e69f702275 FindAdv: Fix #11496 -- too slow find
Also added some more macros to handle
2019-02-25 12:12:19 +01:00
Jean-Marc Lasgouttes
ab02a907f0 Move some TextMetrics code around.
No change intended.
2019-02-25 11:58:50 +01:00
Kornel Benko
6a6b670bbd FindAdv: Correctly match '\[' and '\]' in regular expressions with format enabled
We have to check for instances of '{[}' and '{]}' and
omit removing the enclosing parentheses
2019-02-23 13:11:34 +01:00
Kornel Benko
44a06adb6c FindAdv: debug info
1.) Fill the 'head'-member to easier recognize the macro. May be discarded
 later, although it does not take too much run-time
2.) Add some comment
3.) Ignore any macro inside the regex.
2019-02-22 13:21:23 +01:00
Kornel Benko
01fd1f7679 FindAdv: Discard \parbox, \input macros
The languge of these macros does not matter. What's more,
without removing them we may obtain wrong matching.
2019-02-21 20:32:08 +01:00
Kornel Benko
8a0db92523 FindAdv: Handle \shortcut
Essentially remove the header and handle the language inside
\shortcut{...} appropriately
2019-02-21 14:45:41 +01:00
Jean-Marc Lasgouttes
9bdc0dab31 Honor Update::SinglePar properly
The SinglePar update flags has been a no-op for a long time without
naybody noticing. This means that the current paragraph was
always rebroken and redrawn, even when only moving the cursor around.

Now we only do that when Update::SinglePar has been specified. This
means that there may be cases where update will not be correct
anymore, because this flag has not been specified. These places will
have to be found and fixed.

Update PAINTING_ANALYSIS.
2019-02-20 14:41:22 +01:00
Kornel Benko
a298fc55d9 FindAdv: Added handling for latex environments
1.) Make sure the environment is mentioned in the string for search
  (Added the keyword \latexenvironment{...})
2.) Handle it similar to \textcolor{}

That way we can also search for 'conclusion*' or 'summary' etc
in Additional.lyx.
2019-02-20 14:14:50 +01:00
Kornel Benko
0a2dda0904 Findadv: Added handling for frontmatter macros
title, subtitle, author etc.
2019-02-19 23:11:09 +01:00
Enrico Forestieri
c3b9504835 Fix bug #11490
Correctly add the branch name suffix when the stem
of the filename contains a dot.
2019-02-19 19:51:11 +01:00
Jean-Marc Lasgouttes
2ae51b947b Rename TextMetrics::dimension() to dim() 2019-02-19 18:04:43 +01:00
Jean-Marc Lasgouttes
91fc45ed35 Do not use trailing underscore for local variable 2019-02-18 16:04:15 +01:00
Jean-Marc Lasgouttes
4c90183e4d Remove unused method 2019-02-18 16:03:38 +01:00
Jean-Marc Lasgouttes
a04b5c3965 Rename Row::dimension() to dim()
This is what is done elsewhere.
2019-02-18 15:47:27 +01:00
Jean-Marc Lasgouttes
10e2c65835 Let tm be a reference here as elsewhere 2019-02-18 15:47:27 +01:00
Jean-Marc Lasgouttes
26ad2c6a67 Do a round of DEPM after changing layout 2019-02-18 15:36:21 +01:00
Jean-Marc Lasgouttes
386a347484 DEPM: allow to delete empty paragraphs after deleting extra spaces
Remove return statement when spaces have been deleted.

Add an early return in part 2 when current paragraph is not empty.

Remove some comments that concern things that are OK now.
2019-02-18 15:36:21 +01:00
Jean-Marc Lasgouttes
aaab1ad65d DEPM: do not strip explicitly leading spaces
For the local version of DEPM, only what was around old cursor should change

For the global version, leading spaces are already handled.
2019-02-18 15:36:21 +01:00
Jean-Marc Lasgouttes
1f1a1b0dc7 DEPM: replace loop by existing method 2019-02-18 15:36:21 +01:00
Jean-Marc Lasgouttes
b59b968c3e DEPM: reorganize a bit (no change intended)
Exit early if the cursor has not moved.

Place comments where they belong.
2019-02-18 15:36:21 +01:00
Jean-Marc Lasgouttes
2dc62d0405 DEPM: handle undo when deleting spaces
Also, do not do any DEPM when the buffer is read-only.
2019-02-18 15:36:21 +01:00
Juergen Spitzmueller
dbe963a1ef Fix copy/paste error spotted by coverity. 2019-02-18 15:14:16 +01:00
Jean-Marc Lasgouttes
c521e3e1de Initialize member
Spotted by coverity
2019-02-18 15:10:30 +01:00
Juergen Spitzmueller
71737b87f9 Basic support for biblatex-chicago
This uses a specific wrapper package that must be loaded instead of
biblatex.

Via "Requires biblatex-chicago", this is now possible.

For proper support, a citeengine file needs to be written

This commit here could also be backported to stable.
2019-02-18 13:14:53 +01:00
Kornel Benko
96ca66d664 FindAdv: Handle more cases
Some macros need:
1.) Take care of case sensitivity
2.) Better handling of used argument values
3.) Cleaner list-environment search
4.) Remove superfluous '~' if searching for description or labeling env
2019-02-18 00:40:55 +01:00
Kornel Benko
dfbe29317d FindAdv: Even more fine tuning 2019-02-16 18:39:10 +01:00
Kornel Benko
faf7f0666f FindAdv: More fine tuning 2019-02-13 13:41:57 +01:00
Kornel Benko
8d752b68e9 FindAdv: Fine tuning 2019-02-12 14:21:14 +01:00
Günter Milde
296bafa928 Update comment. 2019-02-12 09:30:48 +01:00
Günter Milde
7a17610a00 Load "textcomp" and "pmboxdraw" before "(lua)inputenc" to fix #11454.
Prevents wrong or missing characters with LuaTeX and 8-bit fonts.

Also "uninvert" the corresponding test case and two other
no longer failing "unicodesymbols" exports.
2019-02-12 09:22:55 +01:00
Kornel Benko
a47dbed6bd FindAdv: Try to find real start of found match
Sometime it happen that the selection contains area which was skipped
in splitOnKnownMacros().
So we check, if a shorter selection would give the same mach size.
2019-02-11 13:13:28 +01:00
Jean-Marc Lasgouttes
2215f4c2b4 Fix Visual C++ warnning 2019-02-11 10:44:13 +01:00
Kornel Benko
f19bd163de FindAdv: Add handling of begin{multicols}[...][...]{...}
Also
a.) try to speed up regex search using non-greedy mode (.*?)
b.) remove '\n' completely in searched strings if it is not surrounded with
	aplanumerical chars
2019-02-10 18:00:55 +01:00
Günter Milde
7bbf333fa1 Don't switch encodings to/from CJK if the document encoding is using the CJK package.
Also, since we return earlier if the document encoding is an utf8-variant
since fc0ab1283, the wrapper around "setEncoding" is no longer required.
2019-02-09 20:42:24 +01:00
Kornel Benko
7fa1244dd8 Findadv: Add handling for powerdot macros
With format enabled, these macros were hard to process:
	lyxslide, twocolumn
2019-02-07 13:35:47 +01:00
Jean-Marc Lasgouttes
e203bf519b Fix algorithm for finding localized files
Now we search in priority with the GUI language, and then the
language(s) specified in the LANGUAGES environment variable.
Preoviously, the GUI language would only be considered when
LANGUAGES was not set (which was a bug).

Take this opportunity to remove old compatibility code from 2007.
2019-02-06 15:53:47 +01:00
Günter Milde
426ed23ec0 Fix CJK preamble.
Don't load the CJK package with utf8x (feature clash).

Load CJK (not CJKutf8) with traditional Chinese and "language-default".
2019-02-05 20:29:10 +01:00
Scott Kostyshak
591ee36df0 Comment: add matching parenthesis 2019-02-05 13:42:08 -05:00
Enrico Forestieri
26c692a0c8 Use braces for listings caption
Commit [3366c49f/lyxgit] intended to strip braces only for minted
but was actually stripping them also for listings. As the braces
are necessary for the listings package, reintroduce them.
This is a master-only issue.
2019-02-05 19:04:12 +01:00
Jean-Marc Lasgouttes
5e4fd6c796 DEPM: fix infinite loop. 2019-02-05 11:52:17 +01:00
Günter Milde
fc0ab1283c Check for CJK instead of CJKutf8.
The specific test was introduced in ef6be5f4 because
CJKutf8 was relatively new (cf. lyx.org/trac/ticket/5386).

10 years on, CJKutf8 is an established part of the CJK bundle
and we can skip the special test for CJKutf8 to make the logic
considerabely simpler to read, maintain and debug.
2019-02-05 11:31:27 +01:00
Günter Milde
32e4a85e43 Prevent fallback to "utf8" if "inputenc" package is not loaded.
Since April 2018, pdflatex falls back to input-encoding utf8 if
it does not detect an input encoding setting.
https://www.latex-project.org/news/latex2e-news/ltnews28.pdf

This leads to failure with CJK legacy encodings and may not
be what you want if selecting "Language Default (no inputenc)"
as document input-encoding.
2019-02-05 11:25:33 +01:00
Kornel Benko
50550a215f Findadv: Handle \lettrine{} in initials.module
The problem here is, that selecting any subset of a \lettrine{}
line always creates an initials header. That makes it impossible
to our search engine to find strings, because the regex does not
contain that info. So we have to discard the leading \lettrine part
completely.
We place now a marker (\endarguments) to determine that removable
part.
2019-02-05 08:04:47 +01:00
Jean-Marc Lasgouttes
051b6ce68a Do not rely on x_ when painting label
Additionally fixes a warning about unused value (from clang-analyzer).
2019-02-04 12:15:21 +01:00
Enrico Forestieri
6316b9b7ae Fix bug #11484
When splitting parameters at commas, take into account that
commas inside curly braces are not parameter separators.
2019-02-04 10:49:02 +01:00
Jean-Marc Lasgouttes
c00234503f Fix DEPM at end of paragraph
Remove special handling of spaces at end of paragraph. Now they are
handled like interword spaces by both DEPM methods.

Fix off-by-one error in loop when testing for end of paragraph.

Style: use Dociterator::lastpos() instead of Paragraph::size().

Part of bug #11412.
2019-01-30 23:50:53 +01:00
Günter Milde
319a986fc0 Do not use \inputencoding when the buffer input encoding is one of the "legacy" CJK encodings.
If Document>Settings>Language>Encoding is set to any value except "auto" or "default", we
expect the whole document to use this encoding. Wiht encodings from the CJK package, this means
one big "CJK" environment and no encoding switches.

Characters that are not handled by the CJK package need to be "forced" in lib/unicodesymbols.
This is completed for "euc-cn", the others will follow.
2019-01-30 15:14:45 +01:00
Juergen Spitzmueller
c2db448ff5 ? and = must not be percent-encoded in hrefs
Fixes: #11482
2019-01-29 14:50:06 +01:00
Jean-Marc Lasgouttes
5c380dcc73 DEPM: some factorization beween both versions
Additionally, correct the cursor by an offset equal to the variation of paragraph size : if change tracking is on, deleting a space may mean that it is just marked as deleted.

Part of bug #11412.
2019-01-29 14:42:13 +01:00
Günter Milde
62865d190d Fix CJK environment nesting issue.
If the last paragraph is nested in an environment,
we'll have to \end that first.
2019-01-28 23:02:33 +01:00
Günter Milde
34f5ba3c54 Fix for CJK-documents with input-encoding "utf8". 2019-01-28 17:49:58 +01:00
Günter Milde
7da76b1b9f Load CJK support package before font selection. 2019-01-28 17:26:52 +01:00
Jean-Marc Lasgouttes
4435be026e Take care of spaces tracked as inserted in depm
When there are Change::INSERTED spaces in the range of consecutive
spaces to delete, it is better to remove them first.

Part of bug #11412.
2019-01-28 10:25:55 +01:00
Juergen Spitzmueller
a936bc2df5 Do not check for duplicates when pasting a label into a non-outputting inset.
Issue mentioned at #10333
2019-01-25 14:40:30 +01:00
Günter Milde
5ebc0b3f43 Fix second part of #5386.
A \clearpage command issued right before \end{CJK} is recommended by the
package author to prevent any un-processed CJK chars outside the
\begin{CJK} and \end{CJK} scope. Otherwise, TOC, header, footer,
and may contain CJK chars but get processed outside the CJK environment scope.

Tha new dedicated export test fails without the fix.
2019-01-24 14:40:19 +01:00
Günter Milde
197735747e Support for documents in other scripts with parts in CJK scripts.
Fix CJK support for documents using input-encoding "utf8-cjk"
when the main language is not Chinese, Korean, or Japanese.
2019-01-24 00:40:51 +01:00
Richard Kimberly Heck
7f8cfde2e7 Add spaces. Thanks, Kornel. 2019-01-19 22:05:47 -05:00
Richard Kimberly Heck
b804e8851c Rename emergency file when it is kept.
Otherwise, we will ask about it again next time, when the file
may have changed. Also, if we crash again, we'll over-write that
file, which we may not want to do.

See bug #11464.
2019-01-17 23:00:23 -05:00
Jean-Marc Lasgouttes
66a3d64346 Try to compute row height like it should be done
Currently, our computation of row height is not completely standard:
* we ignore completely the QFontMetrics::leading() parameter

* we add arbitrarily 2 hardcoded pixels to the height.

This patch reverses these two choices, which leads to
* slightly larger spacing for MinionPro (which has a big leading).

* an additional spacing of 20% font height that depends on dpi and zoom.

Visual inspection with LibreOffice seems to imply that it disregards
the font leading but uses a interline which is 20% larger than the
font height.
2019-01-16 11:04:53 +01:00
Jean-Marc Lasgouttes
7848d3c90c Allow to type a space in front of another one
This is a follow-up to 714b731e. This fixes the issue when the cursor
is in front of a space
  abc| def
and one inserts another space (to start a word). DEPM would eat one
space and produce
  abc |def
instead of
  abc | def

Additionally, fix the same_par boolean, wheich did not take the cell
index into account.

Related to ticket #11412.
2019-01-14 16:41:12 +01:00
Juergen Spitzmueller
cd6229ee5c Fix copy-paste error 2019-01-13 11:38:28 +01:00
Juergen Spitzmueller
143703f927 Amend 7b639d2db2
Not the (ASCII) encoding matters here, but the (TU) font encoding.
2019-01-13 11:25:17 +01:00
Juergen Spitzmueller
7b639d2db2 Script wrapper is needed with ASCII encoding 2019-01-12 18:45:41 +01:00
Enrico Forestieri
ad0c9a548b Remove PYTHONPATH from the environment on Windows
This make sure to use the the modules distributed with LyX,
avoiding reconfigure failures.
2019-01-12 18:37:41 +01:00
Enrico Forestieri
472bdf5910 Replace environment variables in PATH prefix
The PATH prefix modified through the GUI was set without
replacing embedded environment variables. This might have
caused problems on Windows with external python installations.
2019-01-11 18:15:40 +01:00