Commit Graph

66 Commits

Author SHA1 Message Date
Richard Kimberly Heck
684d27c0fb New counter manipulation inset.
This inset allows counters to be set, reset, saved, restored, etc,
both in the LyX GUI and in the output; optionally, the effect can be
limited to the GUI. Of course, LaTeX provides means for doing all of
these things, so they could previously be done with ERT, as far as
the output is concerned. But there was no mechanism for manipulating
counters in the GUI and none for other output formats.
2020-04-30 23:09:36 -04:00
Richard Kimberly Heck
5baca8171f Use ranges, fix warning 2020-02-28 01:48:10 -05:00
Jean-Marc Lasgouttes
f5f2f5b7ea Revert "Use swap in InsetText::updateBuffer for notes ad friends"
This reverts commit 05d3a64952.
2018-09-18 23:07:48 +02:00
Jean-Marc Lasgouttes
05d3a64952 Use swap in InsetText::updateBuffer for notes ad friends
Avoid as much as possible to do full copies of all counters, since
that can be exensive. Unfortunately, it is just posible when we want
to restore the saved counters.

Explanations why we use friend swap is here:
https://stackoverflow.com/questions/5695548/public-friend-swap-member-function

Part of bug #5973.
2018-07-22 12:35:05 +02:00
Christian Ridderström
e30f3d76d2 Bulk cleanup/fix incorrect annotation at the end of namespaces.
This commit does a bulk fix of incorrect annotations (comments) at the
end of namespaces.

The commit was generated by initially running clang-format, and then
from the diff of the result extracting the hunks corresponding to
fixes of namespace comments. The changes being applied and all the
results have been manually reviewed. The source code successfully
builds on macOS.

Further details on the steps below, in case they're of interest to
someone else in the future.

1. Checkout a fresh and up to date version of src/

    git pull && git checkout -- src && git status src

2. Ensure there's a suitable .clang-format in place, i.e. with options
   to fix the comment at the end of namespaces, including:

    FixNamespaceComments:                           true
    SpacesBeforeTrailingComments:                   1

and that clang-format is >= 5.0.0, by doing e.g.:

    clang-format -dump-config | grep Comments:
    clang-format --version

3. Apply clang-format to the source:

    clang-format -i $(find src -name "*.cpp" -or -name "*.h")

4. Create and filter out hunks related to fixing the namespace

    git diff -U0 src > tmp.patch
    grepdiff '^} // namespace' --output-matching=hunk tmp.patch  > fix_namespace.patch

5. Filter out hunks corresponding to simple fixes into to a separate patch:

    pcregrep -M -e '^diff[^\n]+\nindex[^\n]+\n--- [^\n]+\n\+\+\+ [^\n]+\n'  \
        -e '^@@ -[0-9]+ \+[0-9]+ @@[^\n]*\n-\}[^\n]*\n\+\}[^\n]*\n'         \
        fix_namespace.patch > fix_namespace_simple.patch

6. Manually review the simple patch and then apply it, after first
   restoring the source.

    git checkout -- src
    patch -p1 < fix_namespace_simple.path

7. Manually review the (simple) changes and then stage the changes

    git diff src
    git add src

8. Again apply clang-format and filter out hunks related to any
   remaining fixes to the namespace, this time filter with more
   context. There will be fewer hunks as all the simple cases have
   already been handled:

    clang-format -i $(find src -name "*.cpp" -or -name "*.h")
    git diff src > tmp.patch
    grepdiff '^} // namespace' --output-matching=hunk tmp.patch  > fix_namespace2.patch

9. Manually review/edit the resulting patch file to remove hunks for files
   which need to be dealt with manually, noting the file names and
   line numbers. Then restore files to as before applying clang-format
   and apply the patch:

    git checkout src
    patch -p1 < fix_namespace2.patch

10. Manually fix the files noted in the previous step. Stage files,
    review changes and commit.
2017-07-23 13:11:54 +02:00
Juergen Spitzmueller
0eb651a2cf New layout tags for better counter handling
* ResumeCounter: allow to resume an (enumerate) counter
* StepMasterCounter: allow to increase a master counter
2016-10-14 20:08:12 +02:00
Jean-Marc Lasgouttes
72e038f03e When a counter is stepped, reset recursively all slaves
Fixes bug #10063.
2016-05-28 17:43:01 -04:00
Georg Baum
d3b5260f45 Remove unused variables
Found by cppcheck: (style) Unused variable: x
2015-10-10 21:28:28 +02:00
Jean-Marc Lasgouttes
053d02d176 Don't try to show 1000 as a roman number
Fixes coverity issue 23360.
2015-02-20 15:59:19 +01:00
Jean-Marc Lasgouttes
edddb47bae whitespace 2015-02-20 15:57:45 +01:00
Jean-Marc Lasgouttes
9b530e59c2 Let the Foot inset have a different Layout when inside a title
This allows to address two main issues
 * \thanks does only accept one paragraph, while \footnote allows several (ticket #2666)
 * footnotes in titling environments were not numbered on screen.

Moreover, the code reduces hardcoding of features, which is always a good thing.

There are several pieces in this commit:

 * new numbering type \fnsymbol for counters

 * the Foot inset changes its layoutName() to Foot:InTitle when inside a paragraph with InTitle property. This is set when running updateBuffer.

 * Foot:intitle uses the \thanks command, does not allow multiple paragraphs and marks its contents as moving argument.

 * The InsetLayouts for Foot now have properLaTeXName/Type, so that InsetFoot::latex can be removed; further code simplification is probably possible.

Fixes: #2666
2014-11-21 10:23:56 +01:00
Vincent van Ravesteijn
3fb7394db8 Initialize variable to fix Counter 0 problem
Fixes: #9070
2014-04-01 21:41:13 +02:00
Richard Heck
bbce65b68e Initialize initial_value_. 2013-06-02 09:41:09 -04:00
Richard Heck
2374229cc6 Introduce InitialValue tag for counters. Fixes bug #8707. 2013-06-01 17:42:08 -04:00
Richard Heck
d79225ae98 Remove all messages to user related to assertions. We'll just use
a basic message which is defined in lassert.cpp now.
2013-04-27 17:52:55 -04:00
Richard Heck
1b1f8dd235 Audit all the LASSERT calls, and try to do something sensible at
each failure.

There are several places I was not sure what to do. These are marked
by comments beginning "LASSERT:" so they can be found easily. At the
moment, they are at:

Author.cpp:105: // LASSERT: What should we do here?
Author.cpp:121: // LASSERT: What should we do here?
Buffer.cpp:4525:        // LASSERT: Is it safe to continue here, or should we just return?
Cursor.cpp:345:         // LASSERT: Is it safe to continue here, or should we return?
Cursor.cpp:403:         // LASSERT: Is it safe to continue here, or should we return?
Cursor.cpp:1143:                // LASSERT: There have been several bugs around this code, that seem
CursorSlice.cpp:83:     // LASSERT: This should only ever be called from an InsetMath.
CursorSlice.cpp:92:     // LASSERT: This should only ever be called from an InsetMath.
LayoutFile.cpp:303:                     // LASSERT: Why would this fail?
Text.cpp:995:           // LASSERT: Is it safe to continue here?
2013-04-25 17:27:10 -04:00
Lars Gullik Bjønnes
6b2232a29c src/*.cpp: reformatting to increase consistency 2012-10-28 17:42:07 +01:00
Richard Heck
a436c20c3d Extracting translation information does not help if you don't actually
use it to translate the message. (Note that this is presently used only
for XHTML output.)


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38405 a592a061-630c-0410-9148-cb99ea01b6c8
2011-04-15 11:34:06 +00:00
Richard Heck
152aba682f OK, the previous idea, that we don't need to check the masters of other
counters, was silly. So here we do.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37198 a592a061-630c-0410-9148-cb99ea01b6c8
2011-01-13 01:47:41 +00:00
Richard Heck
1ff710d0b6 Add comment.
The reason we don't need to do what I say we don't need to do is that a
given counter doesn't really care about whether it has a master. It's
when the master is stepped that we check for which other ones to reset.
So if the master doesn't exist, nothing will happen, anyway.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37197 a592a061-630c-0410-9148-cb99ea01b6c8
2011-01-12 23:22:06 +00:00
Richard Heck
49436e4c2d Add NoCounter layout tag. When working on output of equation numbers, I
noticed that article, for example, still has a counter "chapter". This
surprised me.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37193 a592a061-630c-0410-9148-cb99ea01b6c8
2011-01-12 22:53:41 +00:00
Richard Heck
7e33edc3c3 Apparently deques aren't so cool.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36709 a592a061-630c-0410-9148-cb99ea01b6c8
2010-12-03 22:42:22 +00:00
Richard Heck
31fcb5c97e Save a header: We don't really need a vector here.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36667 a592a061-630c-0410-9148-cb99ea01b6c8
2010-12-02 21:11:08 +00:00
Richard Heck
445cb9970c Stupid implicit conversion.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36665 a592a061-630c-0410-9148-cb99ea01b6c8
2010-12-02 21:04:01 +00:00
Richard Heck
09466ad2db Some cleanup of the counters code.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36663 a592a061-630c-0410-9148-cb99ea01b6c8
2010-12-02 20:22:10 +00:00
Vincent van Ravesteijn
5eb7add409 Fix bug #6315: counters in insets that don't produce output have ghost values.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36603 a592a061-630c-0410-9148-cb99ea01b6c8
2010-11-29 19:11:38 +00:00
Richard Heck
aff3907ec6 Fix output of formatted counters.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33122 a592a061-630c-0410-9148-cb99ea01b6c8
2010-01-20 22:28:42 +00:00
Richard Heck
4dd9a8acf1 Partly disable pretty counter output.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33115 a592a061-630c-0410-9148-cb99ea01b6c8
2010-01-20 20:50:11 +00:00
Richard Heck
c2ac70552c Introduce a "formatted counter" for use with formatted reference during
XHTML output.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33113 a592a061-630c-0410-9148-cb99ea01b6c8
2010-01-20 20:33:36 +00:00
Richard Heck
caa4e94bf0 Get rid of some magic booleans in updateLabels() and related routines.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33110 a592a061-630c-0410-9148-cb99ea01b6c8
2010-01-20 19:42:12 +00:00
Richard Heck
22dc345e8c Better XHTML output for InsetRef.
The idea here is to implement something like \refstepcounter for LyX. We
do this by tracking the "active" counter in Counters.cpp. We also have
to track when we go in and out of environments to which counters are
local, and so on and so forth.

This all gets done in updateLabels(), but only if we are producing
output, which is why I added the output boolean a while ago.

I expect there are bugs in here, though it seems to work pretty well
with the documents I've tested.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33108 a592a061-630c-0410-9148-cb99ea01b6c8
2010-01-20 19:03:17 +00:00
Richard Heck
1f8bf874aa IfStyle and IfCounter tags for layout. Docs to follow.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@30989 a592a061-630c-0410-9148-cb99ea01b6c8
2009-08-12 14:50:01 +00:00
Jean-Marc Lasgouttes
af905aaff6 small optimization and cleanup of Counters::counterLabel
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@30539 a592a061-630c-0410-9148-cb99ea01b6c8
2009-07-13 11:05:31 +00:00
Jean-Marc Lasgouttes
e9d19b82d4 Make sure that the new caching mechanism for flattened labels respects languages.
* Counters.cpp (flatLabelString): return a cache of the flattened strings for each used language
 * Counters.cpp (theCounter, counterLabel, flattenLabelString): add a lang parameter; in theCounter, populate the cache as needed.

 * insets/InsetCaption.cpp:
 * insets/InsetFoot.cpp:
 * insets/InsetBibitem.cpp:
 * insets/InsetCollapsable.cpp:
 * Paragraph.cpp:
 * Buffer.cpp: pass a language argument to counter methods.

 * Paragraph.cpp (translateIfPossible): use the function with same name in gettext.cpp.



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@30520 a592a061-630c-0410-9148-cb99ea01b6c8
2009-07-12 20:09:53 +00:00
Jean-Marc Lasgouttes
c355edfb6d revert r30515: too many files there
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@30516 a592a061-630c-0410-9148-cb99ea01b6c8
2009-07-12 17:30:56 +00:00
Jean-Marc Lasgouttes
834bfe5e21 fix a couple warnings after the number localization patch
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@30515 a592a061-630c-0410-9148-cb99ea01b6c8
2009-07-12 17:28:46 +00:00
Richard Heck
8b286036d1 Whitespace.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29907 a592a061-630c-0410-9148-cb99ea01b6c8
2009-06-02 16:09:01 +00:00
Richard Heck
f28c1a2cce Allow customization of enumerate counters.
This patch is from JMarc, except the docs, which are due to me.



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29906 a592a061-630c-0410-9148-cb99ea01b6c8
2009-06-02 16:02:29 +00:00
Jean-Marc Lasgouttes
ac5a6ac79a I did this one all by myself; naughty jmarc
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29358 a592a061-630c-0410-9148-cb99ea01b6c8
2009-04-20 11:00:30 +00:00
Jean-Marc Lasgouttes
4b32876be0 revert 29349; Abdel made me do it
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29356 a592a061-630c-0410-9148-cb99ea01b6c8
2009-04-20 10:00:54 +00:00
Jean-Marc Lasgouttes
19e6f30b18 cut-and-paste made me do it, I swear
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29355 a592a061-630c-0410-9148-cb99ea01b6c8
2009-04-20 09:46:52 +00:00
Jean-Marc Lasgouttes
9c61ea54ef compilation fix
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29351 a592a061-630c-0410-9148-cb99ea01b6c8
2009-04-19 23:03:50 +00:00
Uwe Stöhr
0ff6c86ee1 Counters.cpp: whitespace
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29350 a592a061-630c-0410-9148-cb99ea01b6c8
2009-04-19 22:44:46 +00:00
Jean-Marc Lasgouttes
b20965dd83 please Abdel
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29349 a592a061-630c-0410-9148-cb99ea01b6c8
2009-04-19 22:24:48 +00:00
Jean-Marc Lasgouttes
8d0fcad676 Speedup the expandLabel by avoiding the recursive part. The labelstrings
are computed recursively to get rid of any \thexxx string by the method
flattenLabelString. The values are cached in Counter objects.

On my mac, the total time (updatelabels+redraw) goes down by 30%. YMMV.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29342 a592a061-630c-0410-9148-cb99ea01b6c8
2009-04-19 20:05:26 +00:00
Jean-Marc Lasgouttes
22e92f0d6f constify counters code and rename private variable counterList
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29323 a592a061-630c-0410-9148-cb99ea01b6c8
2009-04-19 10:06:17 +00:00
André Pönitz
f1cba8ff64 more latin1..utf8 schanges. all of src/* should be utf8 now
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@27425 a592a061-630c-0410-9148-cb99ea01b6c8
2008-11-14 15:58:50 +00:00
Richard Heck
d841355b7e Fix bug 5316 properly. The fix is to make the routine that reads a counter
update an existing counter rather than overwrite it.

This turns out to be more complicated than it might seem. There are two 
large parts to the patch. One moves the counter read routine out of TextClass
and into the Counter and Counters classes. The other changes the syntax of 
counters from:
	Counter
		Name whatever
	....
to:
	Counter whatever
	....
This allows us to get the name of the counter right away, so we can decide
whether it is an old one or a new one. So the layout format had to be 
changed (again), with corresponding layout2layout code.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26779 a592a061-630c-0410-9148-cb99ea01b6c8
2008-10-06 14:37:28 +00:00
Jean-Marc Lasgouttes
9b4a26a252 rename assert.h to lassert.h
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24559 a592a061-630c-0410-9148-cb99ea01b6c8
2008-04-30 08:26:40 +00:00
André Pönitz
7f461f4392 infrastructure for 'graceful asserts'
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24216 a592a061-630c-0410-9148-cb99ea01b6c8
2008-04-10 21:49:34 +00:00