Commit Graph

57 Commits

Author SHA1 Message Date
Jean-Marc Lasgouttes
4f4d52e8c0 Fix warning with --disable-nls 2020-01-27 15:34:27 +01:00
Jean-Marc Lasgouttes
5249eaaa60 Use <cstdint> instead of <boost/cstdint.hpp>
This is mandated by C++11.
2019-06-17 16:19:31 +02:00
Stephan Witt
d470477ab0 Add dummy implementation for Messages::getIfFound (used when ENABLE_NLS is false) 2018-10-27 16:12:02 +02:00
Jean-Marc Lasgouttes
30ec879d3a Add a translator as a fallback to Qt inner one
This reuses code intended only for mac manus and generalizes it. The
list of strings to add to po files is found in
GuiTranslator::translate.

This is useful now that LyX relies on QDialogButtonBox class for its
dialogs. Indeed many languages are not covered natively by Qt.

It is possible to enable the "locace" debug channel to see what
strings are not covered and should be added to our own translation
tables.

In order to make things easier, a new method getIfFound() has been
added to the Messages class, which returns an empty string when no
translation has been found, as Qt's translate() does.
2018-07-18 10:13: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
Jean-Marc
28e997781d Restore lyxerr number format to decimal
Coverity issue 23427
2015-09-12 19:38:38 +02:00
Georg Baum
84cca2dd94 Fix indentation 2015-05-17 17:27:27 +02:00
Jean-Marc Lasgouttes
ac9a2fa9f8 Turn an error message into a Debug::LOCALE warning 2014-05-06 14:29:42 +02:00
Jean-Marc Lasgouttes
50af06c29b Implement reading of mo files with bad byte endianness 2013-10-11 17:21:16 +02:00
Vincent van Ravesteijn
72f70cbe5e Fix bug #8830: Compile error with disabled NLS
The Messages::gui_lang_ variable is instantiated in the '#ifdef ENABLE_NLS' block. To prevent compile problems, we should also instantiate it when NLS is disabled.
2013-09-09 16:25:53 +02:00
Jean-Marc Lasgouttes
deb6e16e79 Move a Qt workaround to the Qt frontend. 2013-06-04 12:08:36 +02:00
Jean-Marc Lasgouttes
00387b2a38 Fix crash at startup for tex2ylx and lyxclient
This is done by handling explicitly a dummy Message object, where no parsing of mo file is attempted. This avoids in turn that the lyxerr object is used during initialization of a global dummy Message object.
2013-05-31 11:59:52 +02:00
Jean-Marc Lasgouttes
149b574b07 Read the right .gmo files when running in place
With gettext, we have been forced to install .mo files at the right place in order to read them. Now that we have our code, the situation changes.

* Add new method Package::messages_file(code), when returns the right path, depending on whether we are running in place.
* In Messages class use that intead of the existing one.
2013-05-30 22:10:01 +02:00
Jean-Marc Lasgouttes
d7e2705228 Get rid of all traces of libintl.
This requires to re-add some tests in configure.ac.

Note that the code to generate a Makefile in po/ has been kept.
2013-05-30 22:10:01 +02:00
Jean-Marc Lasgouttes
19024f7255 Implement native reading of mo files.
Get the default language by a mix of QLocale and LyXRC::gui_language

Known limitations:
   * encoding is supposed to be UTF-8 (the charset parameter is checked);
   * context is not handled (implemented differently in LyX);
   * plural forms not implemented (not used for now in LyX);.
   * tThe byte endianness of the machine on which the .mo file have been
     built is expected to be the same as the one of the machine where this
     code is run.
2013-05-30 22:10:01 +02:00
Vincent van Ravesteijn
fec57fe959 Implement the use of [[Context]] for placeholders
When placeholders are used, the context can indicate what will be
substituted for the placeholder (e.g. "%1$s[[date]], %1$s[[time]]).
2013-05-13 22:21:33 +02:00
Jean-Marc Lasgouttes
cc00530743 Remove cruft 2013-05-08 15:12:42 +02:00
Jean-Marc Lasgouttes
bd2e7480b1 A first batch of potential bugs spotted by llvm/clang
There are more warnings left, but these are the easiest to fix. And some of them are real bugs (assignments with == instead of =).
2013-05-02 16:38:25 +02: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
Jean-Marc Lasgouttes
81d863fd41 Fix bug #8537: LyX creates the environment variable LC_ALL
The current code is not able to unset an environment variable, only to set it to an empty value. This patch refactors a bit the Message class and uses a new EnvChanger helper class that allows to change temporarily an environment variable and that is able to unset variables if needed.

The patch also adds new functions hasEnv and unsetEnv in environment.cpp.

Open issues:
 * there may be systems where unsetenv is not available and putenv("name=") does not do the right thing;
 * unsetenv may lead to leaks on some platforms.
 * when using unsetenv, we may need to remove strings from the internal map that setEnv uses.
2013-02-12 12:14:06 +01:00
Lars Gullik Bjønnes
54d1cb1880 support/Messages.cpp: add space to not be taken as user defined literal
In C++11 you are not allowed to have non-literal specifiers right
after a string literal.
2012-10-24 23:46:42 +02:00
Stephan Witt
e0787e839f C++ style to avoid compiler warning for non-NLS implementation of Messages::available 2012-09-25 16:20:43 +02:00
Stephan Witt
5a9aa21350 correct Messages class implementation for non-NLS 2012-09-23 16:06:56 +02:00
Jean-Marc Lasgouttes
7a7b9abf1b Tracking correctly available translations (take 2)
The previous scheme of loading all possible translations and checking
whether the work is a bit too much "brute force" and causes problems
on Mac OS X (documents loaded with the wrong language).

Now there is an helper static method in Messages class that checks
whether a readable .mo file exist for the language. There should be an
API in gettext for doing that, but alas it is not possible.

As a consequence the method Language::translated() has been removed,
along with its cache.
2012-09-08 16:59:19 +02:00
Jean-Marc Lasgouttes
2e1c618824 Typo introduced in commit 16fd47ad. 2012-07-16 00:30:28 +02:00
Jean-Marc Lasgouttes
16fd47ad8f Fix bug #7741: incorrect locale when starting R from LyX?
The goal here is to get rid of the old code that modified variables
LANGUAGE and LC_ALL, therefore creating the problems mentionned
in the ticket.

In the new system, there is no explicit "GUI" message handler, that
needs to be reset at each language change. Instead, getGuiMessages
calls getMessages with the correct parameter. This allows to simplify
greatly the code and to remove a lot of old cruft.
2012-07-15 22:22:10 +02:00
Georg Baum
a2e8cb758b Translations for listings insets
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
2012-04-10 20:21:01 +02:00
Kornel Benko
45b61c6ecf 1.) Corrected internal compilation for Libintl
2.) Changed cmake-files accordingly
Patch from Jean-Marc Lasgouttes


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38606 a592a061-630c-0410-9148-cb99ea01b6c8
2011-05-06 19:24:54 +00:00
Jürgen Spitzmüller
8d4c3ae854 * Messages.cpp (get):
- set again bind_textdomain_codeset before calling gettext.
	  This works around the infamous bug #7371

Patch from Peter Kümmel.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38325 a592a061-630c-0410-9148-cb99ea01b6c8
2011-04-10 16:53:10 +00:00
Stephan Witt
fefb5e7f71 without NLS dummy available() should return false
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36720 a592a061-630c-0410-9148-cb99ea01b6c8
2010-12-04 17:42:38 +00:00
Stephan Witt
58f1126355 attempt to make LyX linkable without NLS, assuming dummy available() should return true without NLS
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36711 a592a061-630c-0410-9148-cb99ea01b6c8
2010-12-04 08:28:10 +00:00
Georg Baum
53a72a4526 fix bug #6584
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36687 a592a061-630c-0410-9148-cb99ea01b6c8
2010-12-03 17:48:06 +00:00
Stephan Witt
1d499cbf73 avoid compiler warning
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@35288 a592a061-630c-0410-9148-cb99ea01b6c8
2010-09-06 06:14:25 +00:00
Pavel Sanda
62ca7f3ae5 Proper camel case for FileName.absFilename
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34234 a592a061-630c-0410-9148-cb99ea01b6c8
2010-04-21 01:19:09 +00:00
Richard Heck
c6721161b0 If the translation fails for some reason, just return what we were
given. This is already how it is done in client/.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33935 a592a061-630c-0410-9148-cb99ea01b6c8
2010-03-29 21:33:26 +00:00
Jean-Marc Lasgouttes
9c0b6cf700 really reset the LANGUAGE variable to its old value, instead of some other guessed value
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28737 a592a061-630c-0410-9148-cb99ea01b6c8
2009-03-09 13:49:53 +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
André Pönitz
7aa28f3efe char * for string literals is deprecated...
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26526 a592a061-630c-0410-9148-cb99ea01b6c8
2008-09-24 19:51:46 +00:00
Abdelrazak Younes
309ce3bf0c Fix linking problem when nls is disabled. Spotted by Dov and fix by Kornel.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26036 a592a061-630c-0410-9148-cb99ea01b6c8
2008-08-03 06:34:52 +00:00
Abdelrazak Younes
8085efd83a Some locale related cleanup. JMarc, please when you come back, review this. It is working fine in all my testings though.
* GuiApplication: delay locale loading until setGuiLanguage() is called.

* Messages: memorize default locale for current environment.



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25930 a592a061-630c-0410-9148-cb99ea01b6c8
2008-07-28 11:26:46 +00:00
Abdelrazak Younes
1d109d8c6f microptimisation.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25389 a592a061-630c-0410-9148-cb99ea01b6c8
2008-06-25 16:18:27 +00:00
Abdelrazak Younes
1c83bf9420 GUI language via RC: some bug corrections.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25386 a592a061-630c-0410-9148-cb99ea01b6c8
2008-06-25 11:10:10 +00:00
Abdelrazak Younes
39393bf788 Introduce Debug::LOCALE for locale debugging.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25385 a592a061-630c-0410-9148-cb99ea01b6c8
2008-06-25 10:53:34 +00:00
Abdelrazak Younes
928c1daa55 Messages::get(): Add two error messages just in case.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25378 a592a061-630c-0410-9148-cb99ea01b6c8
2008-06-24 12:45:57 +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
Peter Kümmel
2988537f7f there is no trunk/src/intl folder
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24297 a592a061-630c-0410-9148-cb99ea01b6c8
2008-04-16 16:51:29 +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
André Pönitz
42fb18c6f8 look up LANGUAGE and LC_ALL only once.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23854 a592a061-630c-0410-9148-cb99ea01b6c8
2008-03-20 19:35:53 +00:00
Uwe Stöhr
ecde9d6a0f revert r22574 to be able to compile
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22578 a592a061-630c-0410-9148-cb99ea01b6c8
2008-01-14 23:45:04 +00:00
Abdelrazak Younes
11f36d2d72 header cleanup
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22574 a592a061-630c-0410-9148-cb99ea01b6c8
2008-01-14 23:19:55 +00:00