]> git.lyx.org Git - lyx.git/blobdiff - src/LyX.cpp
Fix duplicate, disabled "Separated Frame Below"
[lyx.git] / src / LyX.cpp
index f9c3c2ddad946dfd97a9e5ef0ad7c6a5bd62205d..0e1b19faf664f849a37f6add26f620fbad54e2d8 100644 (file)
@@ -150,7 +150,7 @@ void showFileError(string const & error)
                           "Please check your installation."), from_utf8(error)));
 }
 
-} // namespace anon
+} // namespace
 
 /// The main application class private implementation.
 struct LyX::Impl {
@@ -192,7 +192,7 @@ struct LyX::Impl {
        Converters converters_;
        /// The system converters after reading lyxrc.defaults.
        Converters system_converters_;
-       
+
        /// Global format information
        Formats formats_;
        /// The system formats after reading lyxrc.defaults.
@@ -419,8 +419,12 @@ void LyX::prepareExit()
        // Write the index file of the converter cache
        ConverterCache::get().writeIndex();
 
-       // close buffers first
-       pimpl_->buffer_list_.closeAll();
+       // closing buffer may throw exceptions, but we ignore them since we
+       // are quitting.
+       try {
+               // close buffers first
+               pimpl_->buffer_list_.closeAll();
+       } catch (ExceptionMessage const &) {}
 
        // register session changes and shutdown server and socket
        if (use_gui) {
@@ -467,39 +471,45 @@ void LyX::earlyExit(int status)
 
 int LyX::init(int & argc, char * argv[])
 {
-       // check for any spurious extra arguments
-       // other than documents
-       for (int argi = 1; argi < argc ; ++argi) {
-               if (argv[argi][0] == '-') {
-                       lyxerr << to_utf8(
-                               bformat(_("Wrong command line option `%1$s'. Exiting."),
-                               from_utf8(os::utf8_argv(argi)))) << endl;
+       try {
+               // check for any spurious extra arguments
+               // other than documents
+               for (int argi = 1; argi < argc ; ++argi) {
+                       if (argv[argi][0] == '-') {
+                               lyxerr << to_utf8(
+                                       bformat(_("Wrong command line option `%1$s'. Exiting."),
+                                                       from_utf8(os::utf8_argv(argi)))) << endl;
+                               return EXIT_FAILURE;
+                       }
+               }
+
+               // Initialization of LyX (reads lyxrc and more)
+               LYXERR(Debug::INIT, "Initializing LyX::init...");
+               bool success = init();
+               LYXERR(Debug::INIT, "Initializing LyX::init...done");
+               if (!success)
+                       return EXIT_FAILURE;
+               // Remaining arguments are assumed to be files to load.
+               for (int argi = 1; argi < argc; ++argi)
+                       pimpl_->files_to_load_.push_back(os::utf8_argv(argi));
+
+               if (!use_gui && pimpl_->files_to_load_.empty()) {
+                       lyxerr << to_utf8(_("Missing filename for this operation.")) << endl;
                        return EXIT_FAILURE;
                }
-       }
 
-       // Initialization of LyX (reads lyxrc and more)
-       LYXERR(Debug::INIT, "Initializing LyX::init...");
-       bool success = init();
-       LYXERR(Debug::INIT, "Initializing LyX::init...done");
-       if (!success)
-               return EXIT_FAILURE;
+               if (first_start) {
+                       pimpl_->files_to_load_.push_back(
+                               i18nLibFileSearch("examples", "splash.lyx").absFileName());
+               }
 
-       // Remaining arguments are assumed to be files to load.
-       for (int argi = 1; argi < argc; ++argi)
-               pimpl_->files_to_load_.push_back(os::utf8_argv(argi));
+               return EXIT_SUCCESS;
 
-       if (!use_gui && pimpl_->files_to_load_.empty()) {
-               lyxerr << to_utf8(_("Missing filename for this operation.")) << endl;
+       } catch (exception const &e) {
+               // This can happen _in_theory_ in replaceEnvironmentPath
+               lyxerr << "Caught exception `" << e.what() << "'." << endl;
                return EXIT_FAILURE;
        }
-
-       if (first_start) {
-               pimpl_->files_to_load_.push_back(
-                       i18nLibFileSearch("examples", "splash.lyx").absFileName());
-       }
-
-       return EXIT_SUCCESS;
 }
 
 
@@ -512,7 +522,7 @@ int LyX::execWithoutGui(int & argc, char * argv[])
        }
 
        // Used to keep track of which buffers were explicitly loaded by user request.
-       // This is necessary because master and child document buffers are loaded, even 
+       // This is necessary because master and child document buffers are loaded, even
        // if they were not named on the command line. We do not want to dispatch to
        // those.
        vector<Buffer *> command_line_buffers;
@@ -771,7 +781,7 @@ namespace {
                        return std::string(line, nameLen);
                }
        }
-}
+} // namespace
 
 void cleanDuplicateEnvVars()
 {
@@ -1380,7 +1390,7 @@ int parse_force(string const & arg, string const &, string &)
 }
 
 
-} // namespace anon
+} // namespace
 
 
 void LyX::easyParse(int & argc, char * argv[])