Instead of remembering the caret ascent and descent for the cell that contains the cursor, the new code remembers caret dimension for each MathRow object. This makes the code much less fragile (ans slightly smaller).
This fixes caret size issues when the Update::SinglePar flag is active.
Fixes bug #11541.
Fixes wrong and missing characters in text parts in other languages
(platex does not support "inputenc").
Fixes compilation errors due to desynchronized encoding switches.
* Force unicodesymbols conversion for all *-platex input encodings,
* except some characters that work well in utf8.
* Use platex if document language is "japanese" and input encoding is "utf8".
The category tag was rarely used and thus not very useful. This adds
categorization to most modules (the rest will follow) and uses the
\DeclareCategory tag we use in layouts rather than the extra syntax
we used in modules. Categories are now added to the po files and
translated.
Note that this is work in progress: the current categories are still
subject to change.
The ultimate goal of this is to sort the modules in the GUI by category
as we do with layouts, examples and templates (and add a filter to search
for specific modules)
As it is now (with the many modules we accumulated), the module selector
is not really usable anymore. If you don't happen to know how exactly a
module is named, selecting a module is really a PITA.
The current heuristics only considered modules with styles that defined
a searched command in their preamble, and only for commands/environments
that were defined in the document's preamble. This limited the module
support drastically.
The new heuristics also checks for commands coming from packages. If the
command is not (re-)defined in the document preamble, it checks modules
that provide a style with a matching LaTeXName, checks for their
requirements and matches those with the packages loaded by the document.
If no module provides a searched style, but we found modules that load
packages that are loaded in the imported tex file, and if those packages
are not auto-loaded by LyX anyway, we also load this module.
fixes: #11259, part of #8229
* Take preceding line break out of the l10n range. This is bound to get
lost in translation
* Display encoding names that people actually find in the GUI
* New: support also utf8 (working around false positive test in "inputenc.sty").
* Do not force the change of input encoding to "ascii".
Deny compilation with XeTeX if a document uses TeX fonts and a non-supported input encoding.
This corresponds to what is done on display. The same should be done
for start label too (e.g. beginning of a proof), but this requires more
work.
This required to move the static function getEndLabel to Text.
Fixes bug #11536.
Characters that needed to be inserted in text mode in mathed were not
correctly inserted. Here we do two fixes:
1/ in niceInsert(), do not replace the contents of the active insets
first cell with selection, insert selection instead. This wa sthe
cause of the bug: an empty selection replaced the contents that was
already in the cell.
2/ do not use niceInsert() anyway, insert() is perfect for what we
want to do.
Fixes bug #11527.
The idea is simple: we insert a pre-formatted table (with a given border
style currently, but other attributes are possible as well) via file-insert
and scale it then to the requested size.
We need three sizes (1x1, 1x2 and 1x3) to generate all sizes properly (due
to border specifications).
Currently, these styles can only be accessed via lfun tabular-style-insert
and the Tabular Create dialog.
My plan is to add a buffer param to set a default style (#9901) which then
also is respected by the toolbar button and probably a layout tag to let
classes specify a default style (#8360).
Attempt to save the template in the appropriate language subfolder of
the user template directory (and propose to create it if it doesn't exist
yet).
That way, user-generated templates (1.) get the correct language attribution
in the lyxfiles dialog and (2.) users can easily generate different
language versions of a template.
Several changes are needed to get things right:
* nested supersripts only work with inheritFonts=true.
* to get caret position right, it is necessary to remember the outside
font of the inset before computing metrics.
* to get the size right at insertion time, it is necessary to trigger
a metrics computation just after inset insertion.
While math style (scriptstyle,...) is not really something that can be
set, it is useful for text subscripts and superscripts and therefore
it makes sense to handle it in some places.
With this change, style is still not a first class feature, but good
enough for now. In particular, it is taken into account in update().
Instead of the weird corner line, display a pilcrow sign (even when
disabled in prefs) to mark inserted/deleted end of paragraph.
Incidentally, this fixes the recent placement bug of the corner line.
Now only the languages available for the selected file are displayed.
By default, LyX pre-selects the GUI language (and falls back to English
if this is not available). Once another language has been selected by
the user, this one is preferred before the GUI language (and the English
fallback).
This seems to be necessary on windows, where math editing can get very
slow. Note that other methods like rbearing already use a cache.
In the future all these caches for single characters shall be unified.
* Fix macro termination if \textcyrillic or \textgreek is not required
for Greek or Cyrillic letter.
* Replace "writeScriptChars" with conditionals in the character-output loop in
"Paragraph::latex" (solves "FIXME: modifying i here is not very nice...").
The font changing commands \textcyrillic and \textgreek are no longer
part of the textcommand in "lib/unicodesymbols" but added when required
in Paragraph::Private::latexSpecialChar.
Re-structure and rename files in a transparent way. Most template/example
names now correspond to the (verbose GUI) name of their layouts.
Note that this, most prominently, also changes [LANG/]splash.lyx to
something less insiderish, namely "Welcome.lyx".
This lists all respective files from user, build and system directory
in a structured way and thus allows for easier access to them.
Fixes: #2396, #6861
1.) Use vector for borders, because any value may be too small
if there are plenty of accented characters in a paragraph
2.) use '[\S]' instead of '.' in regex for 'accre'. The regex would
otherwise find also patterns like '\ {some text}'
This is more portable, and the old code prevented in windows to use
instrument several classes at the same time (several .obj files,
actually).
No new feature here, bu the code is nicely slower. It might be less
efficient, I am not really at ease with how std::chrono works.
To reproduce: Do a search for text in a footnote (say) that is
currently closed. Click inside the now open footnote. It will close
by itself.
We need to know whether we can go into the inset, not whether we can
edit once we're there.
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.
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.
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