]> git.lyx.org Git - lyx.git/blobdiff - src/lyx_main.C
minimal effort implementation of:
[lyx.git] / src / lyx_main.C
index fbe578706f84df68bad517459d73324446ca593f..72709815b8f0655347fe0274522df3f845be0273 100644 (file)
@@ -258,14 +258,6 @@ int LyX::exec2(int & argc, char * argv[])
        if (first_start)
                files.push_back(i18nLibFileSearch("examples", "splash.lyx"));
 
-       // if a file is specified, I assume that user wants to edit *that* file
-       if (files.empty() && lyxrc.load_session) {
-               vector<string> const & lastopened = session_->lastOpenedFiles();
-               files.insert(files.end(), lastopened.begin(), lastopened.end()  );
-       }
-       // clear this list to save a few bytes of RAM
-       session_->clearLastOpenedFiles();
-
        // Execute batch commands if available
        if (!batch_command.empty()) {
 
@@ -282,12 +274,18 @@ int LyX::exec2(int & argc, char * argv[])
                        // the filename if necessary
                        string s = fileSearch(string(), *it, "lyx");
                        if (s.empty()) {
-                               last_loaded = newFile(*it, string(), true);
+                               Buffer * const b = newFile(*it, string(), true);
+                               if (b)
+                                       last_loaded = b;
                        } else {
                                Buffer * buf = bufferlist.newBuffer(s, false);
-                               buf->error.connect(boost::bind(&LyX::printError, this, _1));
-                               if (loadLyXFile(buf, s))
+                               if (loadLyXFile(buf, s)) {
                                        last_loaded = buf;
+                                       ErrorList const & el = buf->errorList("Parse");
+                                       if (!el.empty())
+                                               for_each(el.begin(), el.end(),
+                                                       boost::bind(&LyX::printError, this, _1));
+                               }
                                else
                                        bufferlist.release(buf);
                        }
@@ -342,9 +340,26 @@ int LyX::exec2(int & argc, char * argv[])
                        width = 0;
                        height = 0;
                }
+               // create the main window
+               LyXView * view = lyx_gui::create_view(width, height, posx, posy, maximize);
+               
+               // load files
+               for_each(files.begin(), files.end(),
+                       bind(&LyXView::loadLyXFile, view, _1, true));
+
+               // if a file is specified, I assume that user wants to edit *that* file
+               if (files.empty() && lyxrc.load_session) {
+                       vector<string> const & lastopened = session_->lastOpenedFiles();
+                       // do not add to the lastfile list since these files are restored from
+                       // last seesion, and should be already there (regular files), or should
+                       // not be added at all (help files).
+                       for_each(lastopened.begin(), lastopened.end(),
+                               bind(&LyXView::loadLyXFile, view, _1, false));
+               }
+               // clear this list to save a few bytes of RAM
+               session_->clearLastOpenedFiles();
 
-               return lyx_gui::start(batch_command, files, width, height, posx, posy, maximize);
-
+               return lyx_gui::start(view, batch_command);
        } else {
                // Something went wrong above
                quitLyX(false);
@@ -504,12 +519,12 @@ bool LyX::init()
        if (!lyxrc.path_prefix.empty())
                prependEnvPath("PATH", lyxrc.path_prefix);
 
-       // Check that user LyX directory is ok. We don't do that if
-       // running in batch mode.
-       if (lyx_gui::use_gui) {
-               if (queryUserLyXDir(package().explicit_user_support()))
-                       reconfigureUserLyXDir();
-       } else {
+       // Check that user LyX directory is ok. 
+       if (queryUserLyXDir(package().explicit_user_support()))
+               reconfigureUserLyXDir();
+
+       // no need for a splash when there is no GUI
+       if (!lyx_gui::use_gui) {
                first_start = false;
        }
 
@@ -928,7 +943,7 @@ int parse_help(string const &, string const &)
 int parse_version(string const &, string const &)
 {
        lyxerr << "LyX " << lyx_version
-              << " of " << lyx_release_date << endl;
+              << " (" << lyx_release_date << ")" << endl;
        lyxerr << "Built on " << __DATE__ << ", " << __TIME__ << endl;
 
        lyxerr << lyx_version_info << endl;