- correct the kerning between two subsequent '<' or '>' characters.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25436 a592a061-630c-0410-9148-cb99ea01b6c8
- do not assume that typewriter can encode any character (bug 4727).
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25433 a592a061-630c-0410-9148-cb99ea01b6c8
* development/MacOSX/lyxrc.dist.in: new variable mac_like_word_movement,
set to true on Mac OS X. There is no GUI for it now.
* src/Paragraph.cpp (isSpace): new method
(isChar): return false for a space.
* src/Text.cpp (cursorForwardOneWord, cursorBackWardOneWord): implement
mac-like cursor movement.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25413 a592a061-630c-0410-9148-cb99ea01b6c8
* Paragraph.cpp (isChar): new method; returns true when pointer is on
a character that is not a letter. Note that a footnote inset, for
example is neither a letter nor a character.
* Text.cpp (cursorForwardOneWord, cursorBackwardOneWord): rewrite by
using 3 character categories: letters, characters and others.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25373 a592a061-630c-0410-9148-cb99ea01b6c8
- do not use braces for combinated characters that are natively output (as unicode glyphs)
(fixes part of bug 4946)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25347 a592a061-630c-0410-9148-cb99ea01b6c8
Unfortunately, we can't do a one-short fix for InsetCommand, requiring that it take
a Buffer & in the constructor, due to problems in mathed, specifically, here:
void InsetMathHull::label(row_type row, docstring const & label)
{
...
label_[row] = new InsetLabel(p);
if (buffer_)
label_[row]->setBuffer(buffer());
}
If InsetLabel has to have a Buffer, then buffer_ has to be set, which means InsetMathHull needs a Buffer. But then truckloads of these are created in Parser, where we don't really seem to have access to a Buffer.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25137 a592a061-630c-0410-9148-cb99ea01b6c8
This bug dates back to my cleanup of the Paragraph class; amazing that nobody noticed it before.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24891 a592a061-630c-0410-9148-cb99ea01b6c8
The need for a LayoutPtr arises from the fact that (a) we do not want to give our clients a Layout &, since we do not want them to be able to change our Layout; but (b) we also need to be able to change which layout is ours. So we cannot store a Layout const &. Or so it seems to the compiler.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23522 a592a061-630c-0410-9148-cb99ea01b6c8
dependent, we need the buffer pointer. In fact we already have a
pointer to the text inset. So as soon as inset know their buffer we
can easily switch to a buffer local word list.
* there might be missing some more places to update the words from a
buffer, like for example after backspace or more important when the
cursor leaves a paragraph.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23244 a592a061-630c-0410-9148-cb99ea01b6c8
Sorry, Andre, but this broke not only the modules stuff but the general handling of TextClasses. I'm not opposed to doing this sort of thing, but it's going to be a little more complicated. I'll do it when I get a bit of time, or I can explain what the issue is here if you want to do it.
I'll separately re-commit some of the cleanup here.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23189 a592a061-630c-0410-9148-cb99ea01b6c8
Also a few cosmetical changes where I xould not resist.
Would be nice if the 'modules people' could verify that their baby
is strill alive...
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23154 a592a061-630c-0410-9148-cb99ea01b6c8
from the one posted to the list.
The basic idea has two parts. First, we hard code an "empty layout"
(called PlainLayout, for want of a better name) in TextClass and read it
before doing anything else. It can therefore be customized by classes,
if they want---say, to make it left-aligned. Second, InsetText's are
divided into three types: (i) normal ones, that use the "default" layout
defined by the text class; (ii) highly restrictive ones, such as ERT and
(not quite an inset) table cells, which demand the empty layout; (iii)
middling ones, which default to an empty layout and use the empty layout
in place of the default. (This is so we don't get the same problem we
had with ERT in e.g. footnotes.) The type of inset is signaled by new
methods InsetText::forceEmptyLayout() and InsetText::useEmptyLayout().
(The latter might better be called: useEmptyLayoutInsteadOfDefault(),
but that's silly.) The old InsetText::forceDefaultParagraphs() has been
split into these, plus a new method InsetText::allowParagraphCustomization().
A lot of the changes just adapt to this change.
The other big change is in GuiToolbar: We want to show LyXDefault and
the "default" layout only when they're active.
There are a handful of places where I'm not entirely sure whether we
should be using forceEmptyLayout or !allowParagraphCustomization() or
both. The InsetCaption is one of these. These places, and some others,
are marked with FIXMEs, so I'd appreciate it if people would search
through the patch and let me know whether these need changing. If they
don't, the FIXMEs can be deleted.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22966 a592a061-630c-0410-9148-cb99ea01b6c8
already set.
* src/Paragraph.cpp (changeCase): make sure to update the selection
as needed.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22695 a592a061-630c-0410-9148-cb99ea01b6c8
avoidable ~5% overhead when loading the UserGuide. This is an attempt on
rectifying the situation.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22532 a592a061-630c-0410-9148-cb99ea01b6c8
* src/TextClass{cpp,h}:
- implement Requires tag for class and InsetLayout.
* src/Layout.{cpp,h}:
- implement Requires tag for layouts.
- increase layouts format to 6.
* src/Paragraph.cpp:
- request required features for paragraph layouts.
* src/LaTeXFeatures.cpp:
- add some packages needed by modules.
- remove Preamble method for InsetLayout. This is now done
in InsetFlex::validate.
* src/BufferParams.cpp (validate):
- request required features for the class.
* src/insets/InsetLayout.h:
- new member "requires".
* src/insets/InsetFlex.{cpp,h}:
- implement validate method and request required features and preamble snippets.
* lib/layouts/*.{layout,module,inc}:
- increase layouts format to 6.
- use Requires tags in some modules (more can be done later).
* lib/doc/Customization.lyx:
- document Requires tag.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22414 a592a061-630c-0410-9148-cb99ea01b6c8
and correctly match strings in order to coalesce translations.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22337 a592a061-630c-0410-9148-cb99ea01b6c8
- better translatable error message for uncodable chars, now also
displaying the code point value.
* src/Paragraph.cpp:
- do not throw in View Source mode, but mark up uncodable chars (fix bug 4437).
* src/frontends/qt4/LaTeXHighlighter.{cpp,h}:
- highlight LyX warnings.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22294 a592a061-630c-0410-9148-cb99ea01b6c8
* DocIterator as MacroPosition
* Iterative search for macro in scope until a visible one is found.
This include the ability to resolve macro inside nested text insets.
* Speed up macro lookups by factor 2: only getMacro(name) call, no
further hasMacro(name) call before
* Both way child/master support
* Correct macro scope for multi-paragraph environments
* Correct macro scope for multi-depth-paragraphs
* Buffer::updateMacros made const
* Update macros when loaded (of master and child)
* Do not remove too many braces when unfolding a macro. This could
lead to a data loss because the relationship between arguments of
macros can be mixed up if nested macros are unfold at once.
* Reduce dependencies to MetricsInfo in MathMacro
* Update macros when needed. Normally it's done just before doing
metrics. But in cases without a brace around some constructs (like
\left(bla\right)) there is some help needed.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22241 a592a061-630c-0410-9148-cb99ea01b6c8
* src/output_latex.{cpp, h}:
- Many changes in order to allow CJK in a mulitlingual context.
* src/Paragraph.cpp:
- Fix file encoding switch and language nesting with CJK.
* src/Buffer.cpp:
- Move the opening and closing CJK and lanaguage tags to ouput_latex.cpp.
* src/Font.cpp:
- switchEncoding call now takes runparams as argument.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22011 a592a061-630c-0410-9148-cb99ea01b6c8
Now support/* should have no dependencies on src/* anymore.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21851 a592a061-630c-0410-9148-cb99ea01b6c8
- fileformat change
- tex2lyx support
- rename LFUN_BREAK_LINE to LFUN_NEW_LINE because this is what the lfun does and to avoid confusions
- new menu entry
- new shortcut C-S-Return
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21778 a592a061-630c-0410-9148-cb99ea01b6c8
This fixes, for example, the URL inset, which used to be included here
explicitly when it was a standalone inset.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21407 a592a061-630c-0410-9148-cb99ea01b6c8
* Font::FontBits -> FontInfo
* Font::FONT_XXX -> all enums transfered to FontEnums.h and renamed to FontXxx
I've replaced Font uses with FontInfo were the language() member was not needed, basically all draw() and metrics methods. There's one problematic cases with InsetQuotes which I solved by taking the Buffer main language.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21240 a592a061-630c-0410-9148-cb99ea01b6c8
* src/Paragraph.cpp (knownLangChars): renamed as writeScriptChars.
Now only deals with characters that cannot be encoded using the
current latex encoding.
(latexSpecialChars): only call writeScriptChars if the character
cannot be encoded.
* src/Encoding.{cpp,h} (isKnownLangChar): renamed as isKnownScriptChar.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21183 a592a061-630c-0410-9148-cb99ea01b6c8
- remove META_INSET from Paragraph.h
- move text_ container to Private. I know this put there for performance reason but I don't see any penalty with this move. I guess this is because Buffer loading doesn't use Paragraph::getChar() anymore. I will move performance critical code to Paragraph::Private when/if we detect them.
- replace Paragraph::value_type with straight char_type: this was more noise than anything.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21163 a592a061-630c-0410-9148-cb99ea01b6c8
- simpleTeXOnePar(): renamed to latex(), beginning of de-spaghettization by truly splitting inset and character cases.
- appendChar(), appendString(): new method for buffer reading.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21117 a592a061-630c-0410-9148-cb99ea01b6c8
- Move Changes.h out of Paragraph.h
- pimpl the inset list.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21033 a592a061-630c-0410-9148-cb99ea01b6c8
- rename the lfun to href-insert.png
- rename the files to Hyperlink...
- the former URLUi produces now \href commands (hyperref)
Only missing thing is the lyx2lyx conversion routine - this will be done by Richard
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20950 a592a061-630c-0410-9148-cb99ea01b6c8
necessary to mark them in the proper language for typesetting.
* src/Paragraph.cpp
(Paragraph::Pimpl::knownLangChars): new method.
(Paragraph::Pimpl::simpleTeXSpecialChars): output proper
latex code for greek and cyrillic chars.
* src/LaTeXFeatures.cpp: add textgreek and textcyr features.
* src/Encoding.{cpp,h}
(Encodings::isKnownLangChar): new method.
* lib/unicodesymbols: add greek and cyrillic alphabetic chars.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20931 a592a061-630c-0410-9148-cb99ea01b6c8
(maily move layout related enums into a header of there own to remov
include dependencies, alos rename a few things)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20598 a592a061-630c-0410-9148-cb99ea01b6c8
- don't judge possibility of configurable label string by the existence of such,
but rather by the margintype (bug 4127)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20189 a592a061-630c-0410-9148-cb99ea01b6c8
* src/Paragraph.cpp (expandLabel): if the labelstring is empty,
use \thecounter instead; when processing @layout@ tokens, pass the
process_appendix boolean.
* src/buffer_funcs.cpp (setLabel):
* src/insets/InsetFoot.cpp (updateLabels):
* src/insets/InsetCaption.cpp (updateLabels): use
Counters::theCounter.
* src/insets/InsetBibitem.cpp: remove the ad-hoc numbering code
and replace it with a proper updateLabels-based solution.
* src/insets/InsetCommands.cpp (refresh): new method.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19603 a592a061-630c-0410-9148-cb99ea01b6c8
insets. Up until now this has not been 100% correct, especially in the case
of RTL languages (but not only those).
This fixes bug 1820 (http://bugzilla.lyx.org/show_bug.cgi?id=1820)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19150 a592a061-630c-0410-9148-cb99ea01b6c8
* Layout.h:
- name_, obsoleted_by_, depends_on_ are now docstrings.
All other changes results from the above string -> docstring changes. In particular, we now try to translate the layout names only if possible (i.e. if they are ASCII only).
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19042 a592a061-630c-0410-9148-cb99ea01b6c8
* src/Changes.cpp:
* src/support/userinfo.cpp:
* src/Paragraph.cpp:
* src/Changes.h:
* src/Buffer.cpp:
* src/Paragraph.h:
* src/BufferParams.cpp: do not save the name of authors
in LyX documents, who have not made a single change in
change tracking mode
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19019 a592a061-630c-0410-9148-cb99ea01b6c8
of \inputencoding commands, which are not needed in some cases (e.g., Hebrew
with ivritex).
This fixes some of the remaining problems (but not all) from bug 3613 (namely, http://bugzilla.lyx.org/show_bug.cgi?id=3613#c9).
See also some example files fixed by this in http://permalink.gmane.org/gmane.editors.lyx.devel/88805 .
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18994 a592a061-630c-0410-9148-cb99ea01b6c8
is that we distinguish between the "Default" alignment and whatever
that default happens to be: I.e., so far as the code goes, the UI now
distinguishes LYX_ALIGN_LAYOUT from LYX_ALIGN_WHATEVER, when WHATEVER
happens to be the default. So you can explicitly force, say, left-align,
and that will stick between document classes.
* src/Paragraph.cpp:
Don't output params if alignment is the default.
* src/ParagraphParameters.cpp
Treat LYX_ALIGN_LAYOUT as its own alignment.
* src/Text2.cpp
Treat LYX_ALIGN_LAYOUT as its own alignment, and force it to be accepted
as a possible alignment.
* src/frontends/controllers/ControlParagraph.{h,cpp}
New method haveMultiParSelection().
*src/frontends/qt4/QParagraph.{h,cpp}
*src/frontends/qt4/ui/ParagraphUi.ui
UI adjustments as mentioned.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18922 a592a061-630c-0410-9148-cb99ea01b6c8
which now returns 1 if an InsetBibitem was inserted (and the cursor needs
to be incremented) or -POS if an InsetBibitem was deleted at position POS
(and the cursor needs to be decremented if it was past POS). Otherwise, it
returns 0. Made the corresponding changes in TextMetrics.cpp.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18424 a592a061-630c-0410-9148-cb99ea01b6c8