]> git.lyx.org Git - lyx.git/blobdiff - src/LyX.cpp
Fix compilation for clang 3.7 with libc++
[lyx.git] / src / LyX.cpp
index 20c5e83b01de8af67b0296a4ef802dae1d8f0e0a..fc2f87110176850254fcc9e6791e051d39821cfd 100644 (file)
@@ -27,6 +27,7 @@
 #include "ConverterCache.h"
 #include "Converter.h"
 #include "CutAndPaste.h"
+#include "DispatchResult.h"
 #include "EnchantChecker.h"
 #include "Encoding.h"
 #include "ErrorList.h"
@@ -37,8 +38,6 @@
 #include "Language.h"
 #include "LaTeXFonts.h"
 #include "LayoutFile.h"
-#include "Lexer.h"
-#include "LyX.h"
 #include "LyXAction.h"
 #include "LyXRC.h"
 #include "ModuleList.h"
@@ -46,7 +45,6 @@
 #include "Server.h"
 #include "ServerSocket.h"
 #include "Session.h"
-#include "WordList.h"
 
 #include "frontends/alert.h"
 #include "frontends/Application.h"
@@ -65,7 +63,6 @@
 #include "support/Package.h"
 #include "support/unique_ptr.h"
 
-#include <algorithm>
 #include <csignal>
 #include <iostream>
 #include <functional>
@@ -141,7 +138,7 @@ string cl_user_support;
 
 string geometryArg;
 
-LyX * singleton_ = 0;
+LyX * singleton_ = nullptr;
 
 void showFileError(string const & error)
 {
@@ -155,7 +152,9 @@ void showFileError(string const & error)
 /// The main application class private implementation.
 struct LyX::Impl {
        Impl()
-               : latexfonts_(0), spell_checker_(0), apple_spell_checker_(0), aspell_checker_(0), enchant_checker_(0), hunspell_checker_(0)
+               : latexfonts_(nullptr), spell_checker_(nullptr),
+                 apple_spell_checker_(nullptr), aspell_checker_(nullptr),
+                 enchant_checker_(nullptr), hunspell_checker_(nullptr)
        {}
 
        ~Impl()
@@ -232,7 +231,7 @@ public:
                  argc_(argc), argv_(argv)
        {
        }
-       void doExec()
+       void doExec() override
        {
                int const exit_status = lyx_->execWithoutGui(argc_, argv_);
                exit(exit_status);
@@ -250,14 +249,14 @@ frontend::Application * theApp()
        if (singleton_)
                return singleton_->pimpl_->application_.get();
        else
-               return 0;
+               return nullptr;
 }
 
 
 LyX::~LyX()
 {
        delete pimpl_;
-       singleton_ = 0;
+       singleton_ = nullptr;
 }
 
 
@@ -397,11 +396,9 @@ int LyX::exec(int & argc, char * argv[])
        if (!pimpl_->lyx_server_->deferredLoadingToOtherInstance())
                exit_status = pimpl_->application_->exec();
        else if (!pimpl_->files_to_load_.empty()) {
-               vector<string>::const_iterator it = pimpl_->files_to_load_.begin();
-               vector<string>::const_iterator end = pimpl_->files_to_load_.end();
                lyxerr << _("The following files could not be loaded:") << endl;
-               for (; it != end; ++it)
-                       lyxerr << *it << endl;
+               for (auto const & f : pimpl_->files_to_load_)
+                       lyxerr << f << endl;
        }
 
        prepareExit();
@@ -909,6 +906,25 @@ bool LyX::init()
        if (package().build_support().empty())
                prependEnvPath("PATH", package().binary_dir().absFileName());
 #endif
+       {
+               // Add the directory containing the dt2dv and dv2dt executables to the path
+               FileName dtldir;
+               if (!package().build_support().empty()) {
+                       // dtl executables should be in the same dir ar tex2lyx
+                       dtldir = package().binary_dir();
+               }
+               else {
+                       dtldir = FileName(addName(package().system_support().absFileName(), "extratools"));
+               }
+#if defined(_WIN32)
+               string dtlexe = "dt2dv.exe";
+#else
+               string dtlexe = "dt2dv";
+#endif
+               FileName const dt2dv = FileName(addName(dtldir.absFileName(), dtlexe));
+               if (dt2dv.exists())
+                       prependEnvPath("PATH", dtldir.absFileName());
+       }
        if (!lyxrc.path_prefix.empty())
                prependEnvPath("PATH", replaceEnvironmentPath(lyxrc.path_prefix));
 
@@ -989,7 +1005,7 @@ bool LyX::init()
        pimpl_->toplevel_keymap_.read("site");
        pimpl_->toplevel_keymap_.read(lyxrc.bind_file);
        // load user bind file user.bind
-       pimpl_->toplevel_keymap_.read("user", 0, KeyMap::MissingOK);
+       pimpl_->toplevel_keymap_.read("user", nullptr, KeyMap::MissingOK);
 
        if (lyxerr.debugging(Debug::LYXRC))
                lyxrc.print();
@@ -1087,7 +1103,7 @@ bool LyX::queryUserLyXDir(bool explicit_userdir)
 
        if (!sup.createDirectory(0755)) {
                // Failed, so let's exit.
-               lyxerr << to_utf8(_("Failed to create directory. Exiting."))
+               lyxerr << to_utf8(_("Failed to create directory. Perhaps wrong -userdir option?\nExiting."))
                       << endl;
                earlyExit(EXIT_FAILURE);
        }
@@ -1164,10 +1180,15 @@ int parse_dbg(string const & arg, string const &, string &)
                Debug::showTags(cout);
                exit(0);
        }
-       lyxerr << to_utf8(bformat(_("Setting debug level to %1$s"), from_utf8(arg))) << endl;
-
-       lyxerr.setLevel(Debug::value(arg));
-       Debug::showLevel(lyxerr, lyxerr.level());
+       string bad = Debug::badValue(arg);
+       if (bad.empty()) {
+               lyxerr.setLevel(Debug::value(arg));
+               Debug::showLevel(lyxerr, lyxerr.level());
+       } else {
+               cout << to_utf8(bformat(_("Bad debug value `%1$s'. Exiting."),
+                                       from_utf8(bad))) << endl;
+               exit(1);
+       }
        return 1;
 }
 
@@ -1620,7 +1641,7 @@ void setSpellChecker()
                        singleton_->pimpl_->apple_spell_checker_ = new AppleSpellChecker;
                singleton_->pimpl_->spell_checker_ = singleton_->pimpl_->apple_spell_checker_;
 #else
-               singleton_->pimpl_->spell_checker_ = 0;
+               singleton_->pimpl_->spell_checker_ = nullptr;
 #endif
        } else if (lyxrc.spellchecker == "aspell") {
 #if defined(USE_ASPELL)
@@ -1628,7 +1649,7 @@ void setSpellChecker()
                        singleton_->pimpl_->aspell_checker_ = new AspellChecker;
                singleton_->pimpl_->spell_checker_ = singleton_->pimpl_->aspell_checker_;
 #else
-               singleton_->pimpl_->spell_checker_ = 0;
+               singleton_->pimpl_->spell_checker_ = nullptr;
 #endif
        } else if (lyxrc.spellchecker == "enchant") {
 #if defined(USE_ENCHANT)
@@ -1636,7 +1657,7 @@ void setSpellChecker()
                        singleton_->pimpl_->enchant_checker_ = new EnchantChecker;
                singleton_->pimpl_->spell_checker_ = singleton_->pimpl_->enchant_checker_;
 #else
-               singleton_->pimpl_->spell_checker_ = 0;
+               singleton_->pimpl_->spell_checker_ = nullptr;
 #endif
        } else if (lyxrc.spellchecker == "hunspell") {
 #if defined(USE_HUNSPELL)
@@ -1644,10 +1665,10 @@ void setSpellChecker()
                        singleton_->pimpl_->hunspell_checker_ = new HunspellChecker;
                singleton_->pimpl_->spell_checker_ = singleton_->pimpl_->hunspell_checker_;
 #else
-               singleton_->pimpl_->spell_checker_ = 0;
+               singleton_->pimpl_->spell_checker_ = nullptr;
 #endif
        } else {
-               singleton_->pimpl_->spell_checker_ = 0;
+               singleton_->pimpl_->spell_checker_ = nullptr;
        }
        if (singleton_->pimpl_->spell_checker_) {
                singleton_->pimpl_->spell_checker_->changeNumber(speller_change_number);