Richard Heck [Thu, 30 Jun 2016 18:53:19 +0000 (14:53 -0400)]
Fix bug #8782.
We need to invalidate the BibTeX cache when undoing or redoing. I do
not like having to do it for every undo or redo. We should only have
to do it if we restored or deleted an InsetBibTeX. But there is no
way, so far as I can see, to do it that way. I tried.
Richard Heck [Mon, 20 Jun 2016 19:10:14 +0000 (15:10 -0400)]
This patch does two closely related things.
The main thing it does is integrate mouse-modifiers into the
FuncRequest machinery. Previously, these had to be passed
separately, which led to some ugly function signatures.
There was also an unnecessary form of the constructor, which
can now be removed.
Georg Baum [Sun, 26 Jun 2016 18:31:31 +0000 (20:31 +0200)]
Escape backslashes
The parser that reads unicodesymbols uses backslashes to escape quotes, so
every backslash that is part of a LaTeX command needs to be escaped as well.
There are more candidates in the greek and cyrillic sections, but I don't
know those commands, so I did not touch them.
Georg Baum [Sun, 26 Jun 2016 17:03:10 +0000 (19:03 +0200)]
Convert files to unix line ends in the repo
These files were aded with windows line ends before we did set the text=auto
attribute for all files in .gitattributes, and this caused phantom changes on
linux workspaces after .gitattributes was introduced.
Now these files appear with linux line ends on linux workspaces and with
windows line ends on windows workspaces, like all source files.
Georg Baum [Sun, 26 Jun 2016 16:22:59 +0000 (18:22 +0200)]
Remove using directives from headers
The only exceptions are:
- The purpose of the header is to drag in the used symbol, e.g. unique_ptr.h
- The used symbol is inside a class or a namespace other than lyx
The reason for this is that global 'using' statements effectively forbid to
use the used symbols in any other namespace in the whole program, since simply
adding or removing an #include of the corresponding header subtly changes the
name lookup. The namespace lyx is sort of global, so it should not have these
statements either.
Maxima uses \it as a markup for multiletter variables. However,
it has been reported that since texlive 2016 using \it in math
mode produces an error, even though I was not able to reproduce.
Anyway, this can be avoided by replacing the old-style construct
"{\it ...}" with the new-style one "\mathit{...}".
The problem has also been reported upstream:
https://sourceforge.net/p/maxima/bugs/3181/
but this workaround will hold whatever the resolution.
Scott Kostyshak [Sat, 25 Jun 2016 23:37:15 +0000 (19:37 -0400)]
Remove \it and other oldfonts from math completion
\it and the other oldfont commands are deprecated and the new forms
(e.g. \mathit) should be used instead. The old forms can lead to a
warning in TeX Live 2015 and an error in TeX Live 2016.
Note that with this commit only affects completion, so LyX still
supports displaying e.g. \it in math if the user enters it without
completion.
Georg Baum [Sat, 25 Jun 2016 19:09:21 +0000 (21:09 +0200)]
Remove asciiimage and asciixfig formats
The external templates requested conversion to these formats, but there was no
converter defined, so plain text export did fail, and there are no obvious ways
to create plain text representations for the files used by these templates.
Now we output the file name as for other templates and also the graphics inset.
This fixes bug #7135.
Reported the \it behaviour to maxima bugzilla.
https://sourceforge.net/p/maxima/bugs/3181/
If they don't fix it we might want to kill this line altogether.
Richard Heck [Mon, 20 Jun 2016 15:06:31 +0000 (11:06 -0400)]
Add new module:
Provides two new styles:
1. An "In Premable" style that puts whatever is entered into it into the preamble.
This can be used, if one wishes, to include preamble code in the body of the
LyX document.
2. An "In Title" style that will put its contents into the body of the LaTeX
document, but before \maketitle is issued. This is useful for making branches
and notes in title-related material. (If you put these in a Standard layout,
this signals to LyX to output \maketitle, which may then come too early.)
Due to the ForceLocal machinery, no format change is needed.
Richard Heck [Mon, 20 Jun 2016 14:21:22 +0000 (10:21 -0400)]
Fix bug #10153: There's a mechanism in XHTML output that defers the
output of tags until we know they're needed. In the case of HTML
tables, empty cells should of course be output, so we need to force
the tags to be output.
Georg Baum [Sun, 19 Jun 2016 19:23:25 +0000 (21:23 +0200)]
Remove external date inset
The external date inset was implemented as a demonstrator for external insets
in general. It was never intended for production code. Now that we have several
external insets defined we do not need the demonstrator anymore. This fixes
bugs #4398 and #9948.
Georg Baum [Sun, 19 Jun 2016 14:28:02 +0000 (16:28 +0200)]
Ajust instructions to qt 5
Building with MSVC and qt4 is an esoteric special case nowadays. People who
are able to do this will also figure out how to call cmake. The standard case
is qt 5, and this was not yet documented.
Georg Baum [Sun, 19 Jun 2016 11:26:48 +0000 (13:26 +0200)]
Describe how to set env vars for the MSVC compiler
The old instructions did assume that the MSVC bin directory was in the PATH.
This is not recommended, since it gets in the way if you want to compile for
32 and 64 bit. Therefore it is now described how to configure without the
PATH dependency.
Georg Baum [Sun, 19 Jun 2016 10:55:00 +0000 (12:55 +0200)]
Update MSVC build instructions
We recommend MSVC 2015 now, because of better C++11 support and MSVC 2010 is
not available anymore. Also update several pathsdue tro changed dependency
packages.
Georg Baum [Thu, 16 Jun 2016 20:05:56 +0000 (22:05 +0200)]
Use unicode cmdline args consistently
Previously the commandline arguments were processed in an operating system
dependent encoding if running under python 2. Now they are converted to
unicode during the parsing, using the more modern argpase instead of optparse.
The individual conversion methods do no longer need to know anything about
commandline encoding. This fixes a bug similar to #10218 if running under
python 2 which I probably introduced during the python 3 conversion.
Georg Baum [Thu, 16 Jun 2016 18:39:32 +0000 (20:39 +0200)]
Remove InsetMathXYArrow
This was dead code that did never work, and most of it was boilerplate that
you can steel in 15 minutes from any existing math inset. Apart from that it
did contain a pointer to InsetXYMatrix which would create the same problems
we saw with the macros.
Georg Baum [Wed, 15 Jun 2016 20:21:21 +0000 (22:21 +0200)]
Fix boost packaging
icu.{hpp,cpp} is not needed and cannot be compiled since it depends on libicu.
The other two files are currently not used, but could be in principle, so I
added them to the build.
Detect clang version in autoconf (and use it a bit)
The version is read by checking the macros __clang_major__,
__clang_minor__ and __clang_patchlevel__. Hopefully they will have
coherent values everywhere.
For now, the version is used to set warnings a bit more reasonably for
older clang versions, which do not support -Wdeprecated-register and
some others that are used in pragmas in boost.
This removes many warnings when compiling with clang 3.3.
Guillaume Munch [Tue, 7 Jun 2016 21:58:55 +0000 (22:58 +0100)]
Remove a conversion to_utf8() inside FontSetChanger
This requires to change many docstrings into std::strings. The logic behind that
is that they represent a fixed set of math fonts, and therefore “string” means
here “poor man's enum” rather than text (this is consistent with MetricsBase).
Profiling of scrolling inside a document over macro-instensive areas:
Before the patch:
44,1% BufferView::updateMetrics()
-> 34,8% InsetMathHull::metrics()
-> 9,8% FontSetChanger::FontSetChanger()
28,4% BufferView::draw()
After the patch:
35,3% BufferView::updateMetrics()
-> 27,2% InsetMathHull::metrics
-> 0,4% FontSetChanger::FontSetChanger()
47,5% BufferView::draw()
FontSetChanger::FontSetChanger() is made 41x less expensive (with reference
BV::draw()) just by removing this conversion. The remaining 0,4% could be
squished by replacing the strings with a proper enum, but this is premature. Of
course, this only treats the symptoms: there is no good reason that this
function is called 45500 times over the time of 40 repaints.
Guillaume Munch [Sat, 4 Jun 2016 09:49:21 +0000 (10:49 +0100)]
Simplify the TexRow information for mathed output
Replace the manual manipulation of a stack of RowEntries with a Changer
function. When I introduced the stack of RowEntries, I did not know about the
Changer mechanism.
Guillaume Munch [Sun, 22 May 2016 21:48:28 +0000 (22:48 +0100)]
Change tracking cue: paint over labels in text and prepare for further work
* Inset::canTrackChange() had two meanings: can it deal with change tracking?
Will it paint its own CT status? The latter information is now given by
Inset::canPaintChange().
* Line thickness computation is moved from RowPainter to MetricsBase.
* Painting function for Changes moved to lyx::Change. (One new, that strikes
diagonally.)
Guillaume Munch [Mon, 23 May 2016 21:30:23 +0000 (22:30 +0100)]
RefChanger
RefChanger temporarily assigns a value to a non-const reference of any
kind. RefChanger provides a flexible and uniform generalisation of the various
scope guards previously derived from the old Changer class in MetricsInfo.h.
As before, a temporary assignment lasts as long as the Changer object lives. But
the new Changer is movable. In particular, contorsions are no longer needed to
change a private field. Special code can be moved into the appropriate classes,
and it is no longer necessary to create a new class for each specific use.
Georg Baum [Sun, 12 Jun 2016 19:21:15 +0000 (21:21 +0200)]
Make lyx2lyx infrastructure python3 ready
The LyX class works now with python 3. Certain file format conversions may
still fail (convert_multiencoding() is a hot candidate), but this will need
to be fixed in the individual modules.