Commit Graph

81 Commits

Author SHA1 Message Date
Juergen Spitzmueller
a5115d4e4a tex2lyx: Also factor out error and debug messages 2022-12-29 09:37:00 +01:00
Scott Kostyshak
d44eaa9713 Fix compiler warning -Wstring-plus-int
Warning was as follows:

  src/tex2lyx/Parser.cpp:898:39: error: adding 'uint32_t' (aka 'unsigned int') to a string does not append to the string [-Werror,-Wstring-plus-int]
                  warning_message("ignoring a char: " + static_cast<uint32_t>(c));
                                  ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
  src/tex2lyx/Parser.cpp:898:39: note: use array indexing to silence this warning
                  warning_message("ignoring a char: " + static_cast<uint32_t>(c));
                                                      ^
                                  &                   [                         ]
  1 error generated.
2022-12-28 21:58:30 -05:00
Juergen Spitzmueller
9ecc30174a Factor out tex2lyx warnings and add -q option (#11328) 2022-12-28 16:29:38 +01:00
Juergen Spitzmueller
b3b22b0c70 Sync with master 2022-10-26 10:52:21 +02:00
Juergen Spitzmueller
7d7b21ec3e Introduce InsetIndexMacros
This adds native macros for subindexes (!level), |see and |seealso
as well as native support for ranges |( |) and pagination format
-- e.g., |textbf -- via the index dialog

Resolves #12478, #7232 and #5014

The feature is complete (incl. tex2lyx) except for

* file format change and lyx2lyx
* docbook/xhtml
* documentation
2022-04-19 11:46:08 +02:00
Yuriy Skalko
cafa1d4ae4 Fix C++20 compilation on systems where char_type is wchar_t 2020-12-30 09:42:50 +02:00
Yuriy Skalko
8cb728c2d7 Constify 2020-11-27 12:16:45 +02:00
Yuriy Skalko
43b16548b4 Cleanup headers 2020-11-25 02:43:16 +02:00
Yuriy Skalko
5061db891c Use const references 2020-11-01 22:23:26 +02:00
Yuriy Skalko
a7018252b7 Constify 2020-10-25 09:28:34 +02:00
Yuriy Skalko
65c88f0a0a Remove redundant const & for primitive types 2020-10-19 12:50:07 +03:00
Yuriy Skalko
fe85162a29 Refactoring 2020-10-05 14:55:00 +02:00
Jean-Marc Lasgouttes
dd65a97b55 Pass parameters as const references when possible
Fixes some cppcheck warnings.
2020-10-02 18:56:01 +02:00
Jean-Marc Lasgouttes
110f8f67ac Run codespell on tex2lyx/, client/, convert/ and graphics/
Command was
codespell -w -i 3  -S Makefile.in -L mathed,afe,tthe,ue,fro,uint,larg,alph,te,thes,alle,Claus,pres,pass-thru  src/xxx
2020-06-25 23:50:52 +02:00
Juergen Spitzmueller
b1c36045ee fix typo in comment 2019-03-31 14:30:55 +02:00
Juergen Spitzmueller
57157d2e4d tex2lyx: support for list preambles 2019-03-31 14:27:56 +02:00
Juergen Spitzmueller
506ae2d2ea tex2lyx: add support for LaTeXParam
Part of #11068
2018-03-16 12:58:01 +01:00
Juergen Spitzmueller
c74e399981 tex2lyx: support for beamer text styles with overlays
E.g. things like \textbf<article>{foo} have to be imported as insets.

Part of #11068
2018-03-14 14:38:18 +01:00
Juergen Spitzmueller
cba38881d6 tex2lyx: honor grouping in optional arguments.
E.g., \cite[{a literal ] character}]{key}
2018-03-09 13:14:13 +01:00
Juergen Spitzmueller
0915e81481 tex2lyx: support qualified citation lists (biblatex) 2018-03-04 20:12:27 +01:00
Richard Heck
12db09aac2 Fix bug #10936. 2018-02-24 00:36:55 -05: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
Richard Heck
75bfed5507 Fix trailing whitespace in cpp files. 2017-07-03 13:53:14 -04:00
Guillaume Munch
6144bbfbf8 Replace foreach with for
C++11 allows foreach-style iterations with the following syntax:

for (auto & element : container) {
 ...
}
2016-06-12 19:17:33 +01:00
Jean-Marc Lasgouttes
0f5c34b8ab Initialize Parse::theCatCode_ in constructor
Normally, it is done before tokenizing, but it does not hurt to do it
even before.

Found by Coverity.
2016-06-09 17:11:41 +02:00
Georg Baum
3f72a026cc Fix parsing of verbatim options (bug #9113)
Parser::verbatimOption() did swallow backslashes previously. The similar code
in Parser::verbatim_item() was already correct.
2015-01-03 20:45:06 +01:00
Georg Baum
99cdabd206 Fix writer2latex quote handling (bug #8903)
writer2latex surrounds quotes by braces which we skip to avoid useless ERT.
I broke this in 25fe87e5 which made Parser::next_next_token() not recognize
that it needed to parse one more token. If we had a unit test for the Parser
class it would probably have detected that. Now we have at least a test for
the special quote.
2013-12-11 21:54:26 +01:00
Georg Baum
14a5d07df6 Fix encoding for copying LaTeX from clipboard
If we call tex2lyx on a temporary file created from the clipboard, the
file is always in utf8 encoding, without any temporary changes, even if it
contains encoding changing LaTeX commands. Therefore, we must tell tex2lyx
to use a fixed utf8 encoding for the whole file, and this is done using the
new latexclipboard format. Previously, tex2lyx thought the encoding was
latin1.
As a side effect, the -e option is now also documented in the man page.
2013-11-11 21:52:14 +01:00
Georg Baum
df4f08862e Remove confusing warning
I added it because of a misunderstanding. If the encoding is really set too
late, to_utf8() in the Token constructor would probably fail, but a non-empty
putback buffer is no problem, since it was always created via to_utf8() ->
from_utf8().
2013-03-04 19:50:49 +01:00
Jean-Marc Lasgouttes
e5a9199927 Improvements to Parser::verbatimStuff
* return a Parser:Arg pair to indicate whether parsing was successful
 * add new parameter to restrict parsing to the current line
2013-02-22 15:53:40 +01:00
Jean-Marc Lasgouttes
683050d4f9 Some fixes to parsing in tex2lyx
* put_almost_back and putback are actually the same thing
* add Parser::dropPosition
* deparse on Parser::popPosition
2013-02-22 15:53:40 +01:00
Georg Baum
25fe87e55c Make tex2lyx encoding changes more robust
This is achieved by not calling Parse::tokenize_one() anymore in
Parser::good(): The status of the input can be tested without performing the
actual tokenizing. Now there are only two methods that may prevent an encoding
change:next_token() and next_next_token().
2013-02-17 15:04:14 +01:00
Uwe Stöhr
fb64fe613f Parser.cpp: a workaround for bug #8525 2013-02-17 02:38:29 +01:00
Georg Baum
5f3cd55f1d Fix dangerous parser use
Jean-Marc discovered a possible data loss caused by Parser::getChar().
This is now fixed, and Parser::getChar() is removed, since it is no longer
needed and easy to use it in the wrong way.
2013-02-16 17:48:42 +01:00
Jean-Marc Lasgouttes
21be4a31cc Fix bug with reading of verbatim environment
The kind of putback() functionality that we need is more tricky
than I thought at first...
2013-02-15 23:22:46 +01:00
Jean-Marc Lasgouttes
47b8ab14db Implement deparsing of tokens
When switching catcodes (for example to verbatim), there are in general some tokens that have already been parsed according to the old catcodes. It is therefore needed to "forget" those token and reparse them.

The basic idea is to use idocstream::putback() to feed the characters back to the stream, but this does not work (probably because we disable buffering). Therefore, we implement a simple stream-like class that implements putback().
2013-02-15 17:15:16 +01:00
Jean-Marc Lasgouttes
9631c36ff0 Move stuff around 2013-02-15 14:46:57 +01:00
Jean-Marc Lasgouttes
bac4fe7843 Continue support for verbatim
This is a refactoring commit, which may introduce minor regressions, but should go in the right direction.

 * introduce Parser::verbatimEnvironment, which is a wrapper around verbatimStuff
 * introduce output_ert, which inserts a string as ERT; this allows to factor out several code instances.
 * rename handle_ert to output_ert_inset: this creates an inset and then calls output_ert
 * remove handle_comment (use handle_ert instead)
 * remove handle_backaspace (unused now)
 * use the new methods in handle_listing

TODO:
 * use for other verbatim-like cases (Sweave chunk, url...)
 * maybe implement Parser::unparse to reparse tokens already parsed with the wrong catcodes (if needed)
2013-02-04 15:14:30 +01:00
Jean-Marc Lasgouttes
be42f1398d Fix bug #5408: tex2lyx cannot handle verbatim code
- Implement catcode setting in Parser
- add a new Parser::verbatimStuff method that reads verbatim contents
- use this method to parse "verbatim" environment.
- use it to parse \verb too.
- rename Parser::verbatimEnvironment to ertEnvironment.

TODO:
- use for other verbatim-like cases (Sweave chunk, lstlisting...)
- factor out the function that outputs ERT (including line breaks)
- maybe implement Parser::unparse (if needed)
2013-02-04 10:25:58 +01:00
Julien Rioux
2eea1590b1 Separation of the various names for encodings.
Provide functions for translating to the LyX name
of an encoding from either a LaTeX name or an Iconv
name, with the possibility to specify the package.
This is in anticipation of changing to use the LyX
name of the encoding in the .lyx file format and
allowing multiple lib/encodings entries to have
the same LaTeX name (but different packages!).

The tex2lyx parser needs to worry about the iconv
name of the input encoding, so store that instead
of the latex name.
2013-01-22 23:43:18 +01:00
Georg Baum
ee3ce572a0 Fix import of shift-jis and big5 CJK texts.
These encodings were not defined, since they must not be used as document
encodings (the characters {, } and \ may appear in high bytes, and latex
would be confused). However, they are supported by CJK.sty (which uses a
preprocessor to circumvent the limitations of the latex executable). These
encodings are now defined, but used for import in tex2lyx only.
The test case CJK.tex contained fake tests for shift-jis and big5 (the
japanese and chinese characters were entered using the utf8 encoding), and
therefore the wrong interpretation of these encoding looked as if it worked.
The comments about missing iconv support of shift-jis and big5 were wrong as
well (otherwise shift-jis-plain would not work either).
2012-12-30 20:52:50 +01:00
Jean-Marc Lasgouttes
f775add258 Whitespace only 2012-12-14 12:33:39 +01:00
Georg Baum
28dc8a77ee Fix regression introduced in commit 7cfac95
Commit 7cfac95 got rid of empty lines that were created by removing \usepackage
statements. However, it added an additional newline in case the \usepackage
was not at the end of the line. This is now fixed.
2012-10-05 22:16:46 +02:00
Georg Baum
2f7f0c7631 Really fix bug #4468.
The old fix was incomplete (\verb~\~ was translated to \verb~~ in roundtrip).
The real cause for this bug (and also the mistranslation of \href{...}{\}})
was the misbehaviour of Token::character() (see comment in Parser.h): This
method even returns a character if the category is catEscape, and this is not
wanted in most (all?) cases.
2012-10-05 00:12:18 +02:00
Uwe Stöhr
487c8b5bd3 tex2lyx: update a command
Parser.cpp: improve a command as discussed
2012-07-03 00:39:41 +02:00
Uwe Stöhr
56f0e0c4fc tex2lyx/Parser.cpp: refine \verb handling 2012-07-01 02:12:56 +02:00
Uwe Stöhr
80884330d1 tex2lyx: fix handling of \verb
- Parser.cpp: \verb can have any character as delimiter (except of ASCII letters) not only '+', therefore partly revert [3943b887/lyxgit] and fix it for all cases
2012-06-30 03:25:19 +02:00
Uwe Stöhr
3943b887a8 tex2lyx/Parser.cpp: fix bug #4468: single '\' are allowed in the special case of '+' as comment argument delimiter 2012-06-23 20:00:49 +02:00
Vincent van Ravesteijn
1d721b6ea7 Fix typo and whitespace
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40909 a592a061-630c-0410-9148-cb99ea01b6c8
2012-03-10 21:20:25 +00:00
Uwe Stöhr
408728aed9 tex2lyx: support for inline listings (fixes last part of #8066)
OK also for branch?

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40860 a592a061-630c-0410-9148-cb99ea01b6c8
2012-03-05 22:04:22 +00:00