This assures that refs to existing labels are not being touched if a new label with a duplicate name is created, and the name then changed by the duplicate checker.
Branch candidate.
Fixes 2 issues:
1. LyX uses for a decimal alignment a multicolumn and having for a cell a multicolumn _and_ a multirow is invalid LaTeX.
2. It was impossible to unset a decimal alignment via the context menu or toolbar button.
This is the same protection used for \cite{}. Although "ulem" commands
don't strictly need this protection with \ref{} and friends, this helps
when one wants to use another package souch as "soul".
Indeed, ulem's \uline{} doesn't hyphenate words, while soul's \ul{} does,
and thus the output is much nicer.
With this patch, replacing ulem with soul is as simple as adding
\usepackage{soul}
\renewcommand{\uline}[1]{\ul{#1}}
to the preamble, without worrying about manually enclosing in \mbox the
\ref commands. In any case, the output from ulem remains unchanged.
Another possibility offered by soul is that of typesetting as
"yellow highlighted" the underlined text. This is achieved by adding
\usepackage{color,soul}
\renewcommand{\uline}[1]{\hl{#1}}
to the preamble.
This commit does a bit more than fix selection, since it saves the full cursor state
in the undo stack. This means that undo now restores:
* the selection
* the current font
* transient mark (shall we keep this one?), logical position...
In order to do that, it introduces an intermediate class between Cursor and DotIterator: CursorData.
The new inheritance diagram is thus
DocIteraator -> CursorData -> Cursor
CursorData contains all the members of Cursor that define the current position, but not the stuff
related to current view of dispatch mechanism. It may make sense in the future to move members
between CursorData and Cursor and to move some member functions to CursorData.
Now UndoElement uses CursorData for cur_before and cur_after, but not for the cell. The undo API uses
also CursorData instead of DocIterator.
If someone can tell me how I can tell QtCreator to actually use tabs, not spaces, I would be most grateful (yes, I have set Tab Policy to Tabs Only in Prefs)
The button text of InsetInclude insets shows whether the child document is
included or excluded from compilation. Changing this for a child document
in the document settings does not get reflected on screen. This patch
updates the button text on the updateBuffer() call.
We want the key as id, not the label (which is optional).
We also need a kind of namespace for the citation ids.
We should also clean the id tag before using it.
is intended for us, i.e., if the first argument is "box". Maybe we
should also check to make sure that the rest of the arguments are
good, but we used just to return true no matter what the argument
was, so this is an improvement.
LFUN_INSET_MODIFY is really kind of a mess.
The listings inset and include inset of type listings use two english terms
that are not localized yet: "Listing" for the caption and "Listings" for the
list of listings (not supported natively by LyX yet). The existing layout
translation mechanism has been extended to translate these terms as well:
1) Support [[stuff]] context in lib/layouttranslations
2) Support BabelPreamble and LangPreamble in InsetLayout
3) Use a InsetLayout for InsetInclude of type listings
4) Define BabelPreamble and LangPreamble in the layouts for InsetInclude
and InsetListings
Math commands need it as well as text commands. At the same time, this
further unifies the checking for termination and fixes cases of wrong
output (e.g. for 0x2005).
The crash was due to the otherwise innocent looking 07924ac300. The cast
Vincent replaced was already wrong---it seems to have been a thinko in
7bbd67eb2679---but it worked kind of by accident before. Now it crashes.
Multirows were introduced in 8bb69f24 (Uwe Stoehr, 11 Feb 2010). In the
computation of the nearest cell, it was forgotten to account for the
vertical offset. tabular.cellHeight is the full height of the cell, while
the point that comes from the coordCache is offsetted by VOffset.
Therefore, we have to subtract the VOffset from o.y_.
* do not terminate macros by {} if not necessary (prevent kerning violation)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40891 a592a061-630c-0410-9148-cb99ea01b6c8
Currently only basic functionality (our math-tipa functionality plus multipar input). Further enhancements (such as proper unicode input and a specific toolbar) are planned. DocBook and XHTML output also need to be audited.
The lyx2lyx reversion routine surely can be improved (help appreciated), and I don't know tex2lyx enough to handle this file format change.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40867 a592a061-630c-0410-9148-cb99ea01b6c8
Add a new layout syntax CiteEngine to define the citation commands
available for a given citation engine.
Also extend the CiteFormat syntax to allow more customization. This
mechanism, previously used to produce bibliography entries in the
citation GUI based on the BibTeX entrytype, is now also used to
produce the textual labels for citation insets in the buffer view.
Thus citation styles are almost completely customizable by modules.
Modules for the basic, jurabib and natbib engines are implemented.
Layout format incremented to 37.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40820 a592a061-630c-0410-9148-cb99ea01b6c8
* now hasSettings only means... that the inset has a settings dialog
* and clickable means that something should happen with left-clicking on the inset
Some inset behaviours are changed:
* (V)Space insets are not clickable anymore (the settings dialog is still accessible via context menu and Edit menu)
* TOC inset is now shown as active
* FloatList inset is shown as active and clicking on it opens the relevant part of the TOC dialog
This could be a candidate for branch (2.0.4)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40755 a592a061-630c-0410-9148-cb99ea01b6c8
- 0x200c is equivalent to \textcompwordmark
- 0x2011 is equivalent to \nobreakdash-
- 0x2009 is a breakable thin space (the old definition was non-breakable)
- 0x202f is a non-breakable thin space
- add spaces 0x2007, 0x2008, 0x200a and 0x200b
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40694 a592a061-630c-0410-9148-cb99ea01b6c8
To avoid duplicity, remove natbib_authoryear and natbib_numerical
and replace them by natbib, and keep track of the engine `type'
in the new \cite_engine_type document setting. This will make it
easier to add more citation engines.
LyX format incremented to 424.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40592 a592a061-630c-0410-9148-cb99ea01b6c8
This holds the name of a BibTeX style file for now. Any BibTeX inset
can set the style to "default" to use the document-wide style.
LyX format incremented to 420.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40484 a592a061-630c-0410-9148-cb99ea01b6c8
(i) Validate even for comments when outputting XHTML.
(ii) Output comments as divs hidden by default. Then people
can display them other ways if they wish.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40400 a592a061-630c-0410-9148-cb99ea01b6c8
"from-dialog" is added to the LFUN_INSET_MODIFY function when it is issued from the table settings dialog. This is done to prevent the checking of the individual parameters, because it has to consider all parameters alltogether. Besides, when issued from the dialog it is already guaranteed that the parameters are valid.
This parameter should not be passed onto tabularfeatures.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40376 a592a061-630c-0410-9148-cb99ea01b6c8
It is valid for a label to be empty, but up to now the bibliography
information was not updated when a label was emptied.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40347 a592a061-630c-0410-9148-cb99ea01b6c8
from the context menu. As mentioned in the FIXME, we cannot now
handle the case where the branches are held in a master buffer.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40334 a592a061-630c-0410-9148-cb99ea01b6c8
In this case, the inset parameters win in case there is any conflict. The only
exception is "type=eps", since I was too lazy to make the full keyval parser
of tex2lyx available to InsetGraphics in order to parse the special parameter.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40298 a592a061-630c-0410-9148-cb99ea01b6c8
file names with a proper one: Only replace dots in the base name, and only
request the lyxdot feature if it is needed. This is a partial fix of bug #7650.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40115 a592a061-630c-0410-9148-cb99ea01b6c8
This restores \input@path handling, which turns out to be necessary, as
the TEXINPUTS mechanism is not used with relative paths. It turns out
that both methods must be used, because \input@path does not work in all
cases (most notably with tikz).
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39918 a592a061-630c-0410-9148-cb99ea01b6c8
A long standing bug has been fixed in GCC 4.7, the bug was a non-
sactioned extra lookup. This caused some code to work that really
shouldn't.
The fixes are: add this->, Class::, or move functions about
as required to fullfill the rules.
In this case some template instantiations
where move to after what they reference.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39813 a592a061-630c-0410-9148-cb99ea01b6c8
(e.g., compressed dia, odg, sxd, ...). These need to be marked via the "zipped=native" flag in the RC file.
The old 'dia' configuration is automatically updated (it used to be hardcoded in the code, now it is handled
via the flag).
See also http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg170974.html
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39705 a592a061-630c-0410-9148-cb99ea01b6c8
- Remove hack with $$AbsOrRelPath substitution in the guiName.
Instead, let LyX display the filename automatically in the gui,
consistent with InsetInclude.
- Use the guiName in the drop-down menu in the dialog instead of the
internal lyxName. These guiNames ought to be more descriptive.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39675 a592a061-630c-0410-9148-cb99ea01b6c8
- \negmedspace and \negthickspace outside of math
- \enspace, \hspace*, \hspace*{\fill} and \hfill inside math
(fileformat change)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39557 a592a061-630c-0410-9148-cb99ea01b6c8
The PreviewLoader is created directly by Buffer on demand. The PreviewLoader cache was complex and unneeded because there is one and only one PreviewLoader per Buffer.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39276 a592a061-630c-0410-9148-cb99ea01b6c8
* uniqueLabel(docstring & label) to enforce label unicity
* updateLabel() to update only the label.
* InsetLabel::updateLabelAndRefs() to update label & refs
* InsetLabel::updateReferences() to update the references
This fixes bug #7655
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39250 a592a061-630c-0410-9148-cb99ea01b6c8
It's amazing we haven't seen problems with this before. The basic problem is that buf.errorList("whatever") would always return the same global, static error list, if it did not already exist. So, to a significant extent, there was only one global error list!
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38980 a592a061-630c-0410-9148-cb99ea01b6c8
It's amazing we haven't seen problems with this before. The basic problem is that buf.errorList("whatever") would always return the same global, static error list, if it did not already exist. So, to a significant extent, there was only one global error list!
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38978 a592a061-630c-0410-9148-cb99ea01b6c8
Otherwise, we were asking to construct strings of random size at a
certain point, e.g., two 2GB strings, in one case I saw.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38704 a592a061-630c-0410-9148-cb99ea01b6c8
inset to know that the BibTeX data had changed. So we introduce a
Buffer-wide variable that we can query for that information.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38619 a592a061-630c-0410-9148-cb99ea01b6c8
As the bug report notes, you do NOT get this crash if you move up or
down in the table a bit before you do the rest. The reason is that
moving up and down sets the cursor's x_target_, and it is because that
is not set that we enter the other code at all and eventually crash.
That is, in InsetTabular's dispatch, we have:
(*) cur.pos() = tm.x2pos(cur.pit(), pm.rows().size()-1, cur.targetX());
You can see the potential for trouble here already. cur.pit() is in the
NEW cell, i.e., the one to which we are moving; it was changed a few
lines previously, and cur.idx() points to the new cell, too. But we are
trying to calculate cur.pos(), which means that cur.pos() is currently
the one from the OLD cell. So the cursor is in an inconsistent state.
Calling cur.targetX() leads us to call Cursor::getPos(), and that is
what causes the crash.
We fix the problem by making sure we call targetX() on the original
cursor. The same problem clearly exists in the DOWN stuff, so we fix
that, too.
By the way, should we be setting x_target_ here once we have calculated
it?
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38530 a592a061-630c-0410-9148-cb99ea01b6c8
documents and graphics were not copied to the export directory, since
the format passed to addExternalFile() was wrong.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38378 a592a061-630c-0410-9148-cb99ea01b6c8
involves no change of functionality, due to the fall-back mechanism and
is needed for XHTML CSS output for the boxes.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38225 a592a061-630c-0410-9148-cb99ea01b6c8
Also, if we're "undefined", then we should just continue reading.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38116 a592a061-630c-0410-9148-cb99ea01b6c8
of a flex InsetLayout, let's check for it when we hit a LyXType tag, and
refuse to honor it unless we have the right sort of name.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38115 a592a061-630c-0410-9148-cb99ea01b6c8
- Have InsetFlex::layoutName() report "Flex:" + the inset name.
- Do some layout2layout work so that user insets that do not have
the "Flex:" prefix get it.
Note that this will break some CopyStyle stuff, but we do not have any
decent way to do that, so users will have to make that change for
themselves. I guess we should add that to the release notes.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38112 a592a061-630c-0410-9148-cb99ea01b6c8
preparatory to fixing #7080. Note that mathed uses the same routine, but
for a completely different purpose, so I did not rename it there. I have
seen no difference in behavior after testing, e.g., opening and
exporting Math.lyx, and also re-saving it and looking at the diff.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38109 a592a061-630c-0410-9148-cb99ea01b6c8
- don't assume that the exported file extension is .tex
- use converter tool chain to produce a latex file for input or include
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38025 a592a061-630c-0410-9148-cb99ea01b6c8
make NOBREAKDASH isLetter()
* Paragraph.cpp (isWord separator):
handle composites with hyphens as one word (i.e., "-" is not a word separator).
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37946 a592a061-630c-0410-9148-cb99ea01b6c8
under refstyle, since (a) the default refstyle.cfg defines \eqref itself
and (b) does NOT define it the way AMS does. So we simply output:
(\ref{label})
in this case, to match what we say in the UI.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37918 a592a061-630c-0410-9148-cb99ea01b6c8
Currently, if an inset outputs a newline, the new latex row is still
associated with a previous id/pos. Now, if a latex error occurs before
this newline, we would still highlight everything associated to that
id/pos, even if it is extraneous to the error.
This is avoided by associating the new latex row with the id/pos in
effect right before entering the inset. If an inset does not output
a newline, it is not excluded from the selection, consistent with the
fact that the text of the inset does appear in the error description.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37903 a592a061-630c-0410-9148-cb99ea01b6c8
This improves the fix in r37328 and allows centered sweave chunks, for example (although this does not work yet for other reasons)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37831 a592a061-630c-0410-9148-cb99ea01b6c8
resetFontEdit(). The former is used for on-screen and export formatting,
and the latter is used for interactive editing.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37761 a592a061-630c-0410-9148-cb99ea01b6c8
- (getLastCellInRow): fix crash when in first multirow row
- (TeXRow): do not output row separator in in last row (bug #7294).
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37709 a592a061-630c-0410-9148-cb99ea01b6c8
This went in without discussion and is IMHO wrong (bug #7055 is invalid).
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37676 a592a061-630c-0410-9148-cb99ea01b6c8
latex error occurs inside a table, the exact faulty table row is spotted.
However, if all cells of a table row are output on the same line, lyx is
not able to tell what cell caused the error and highlights the last cell
of the row. This patch allows to output each cell of a table on its own
line, such that the exact point where the error occurred can be highlighted.
Note that this is only done when exporting for preview, and in normal (nice)
exports everything goes as usual.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37643 a592a061-630c-0410-9148-cb99ea01b6c8
If no initializer is specified for an object, and the object is of (possibly
cv-qualified) non-POD class type (or array thereof), the object shall be
default-initialized; if the object is of const-qualified type, the underlying
class type shall have a user-declared default constructor.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37603 a592a061-630c-0410-9148-cb99ea01b6c8
counting when exporting to latex. This is done for the code comprised
between \begin{document} and \end{document}, while the preamble code
still needs manual calls to TexRow::newline() for registering new lines.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37584 a592a061-630c-0410-9148-cb99ea01b6c8