]> git.lyx.org Git - lyx.git/blobdiff - src/LyX.cpp
Some more cleanup of LyXView:
[lyx.git] / src / LyX.cpp
index 81acf9f6cf3f5ae5423d3a3c59898fa27f58aaa6..456b47ebf698493d9a55e9fd8373d84751f4bd83 100644 (file)
@@ -17,6 +17,7 @@
 
 #include "LyX.h"
 
+#include "Color.h"
 #include "ConverterCache.h"
 #include "Buffer.h"
 #include "buffer_funcs.h"
@@ -29,9 +30,9 @@
 #include "Format.h"
 #include "gettext.h"
 #include "KeyMap.h"
+#include "CmdDef.h"
 #include "Language.h"
 #include "Session.h"
-#include "Color.h"
 #include "LyXAction.h"
 #include "LyXFunc.h"
 #include "Lexer.h"
 
 #include "frontends/alert.h"
 #include "frontends/Application.h"
-#include "frontends/Dialogs.h"
-#include "frontends/Gui.h"
 #include "frontends/LyXView.h"
 
 #include "support/environment.h"
 #include "support/filetools.h"
+#include "support/lstrings.h"
 #include "support/lyxlib.h"
-#include "support/convert.h"
 #include "support/ExceptionMessage.h"
 #include "support/os.h"
 #include "support/Package.h"
@@ -62,7 +61,7 @@
 #include "support/Systemcall.h"
 
 #include <boost/bind.hpp>
-#include <boost/filesystem/operations.hpp>
+#include <boost/scoped_ptr.hpp>
 
 #include <algorithm>
 #include <iostream>
@@ -84,17 +83,13 @@ using std::signal;
 using std::system;
 #endif
 
-namespace fs = boost::filesystem;
-
 namespace lyx {
 
 using support::addName;
 using support::addPath;
 using support::bformat;
 using support::changeExtension;
-using support::createDirectory;
 using support::createLyXTmpDir;
-using support::destroyDir;
 using support::FileName;
 using support::fileSearch;
 using support::getEnv;
@@ -111,10 +106,9 @@ namespace os = support::os;
 
 
 
-/// are we using the GUI at all?
-/**
-* We default to true and this is changed to false when the export feature is used.
-*/
+// Are we using the GUI at all?  We default to true and this is changed
+// to false when the export feature is used.
+
 bool use_gui = true;
 
 bool quitting; // flag, that we are quitting the program
@@ -143,7 +137,7 @@ void reconfigureUserLyXDir()
        string const configure_command = package().configure_command();
 
        lyxerr << to_utf8(_("LyX: reconfiguring user directory")) << endl;
-       support::Path p(package().user_support());
+       support::PathChanger p(package().user_support());
        Systemcall one;
        one.startscript(Systemcall::Wait, configure_command);
        lyxerr << "LyX: " << to_utf8(_("Done!")) << endl;
@@ -153,9 +147,9 @@ void reconfigureUserLyXDir()
 
 
 /// The main application class private implementation.
-struct LyX::Singletons
+struct LyX::Impl
 {
-       Singletons()
+       Impl()
        {
                // Set the default User Interface language as soon as possible.
                // The language used will be derived from the environment
@@ -169,6 +163,8 @@ struct LyX::Singletons
        ///
        boost::scoped_ptr<KeyMap> toplevel_keymap_;
        ///
+       boost::scoped_ptr<CmdDef> toplevel_cmddef_;
+       ///
        boost::scoped_ptr<Server> lyx_server_;
        ///
        boost::scoped_ptr<ServerSocket> lyx_socket_;
@@ -191,9 +187,13 @@ struct LyX::Singletons
 
        ///
        Movers movers_;
-
        ///
        Movers system_movers_;
+
+       /// has this user started lyx for the first time?
+       bool first_start;
+       /// the parsed command line batch command if any
+       std::string batch_command;
 };
 
 ///
@@ -208,6 +208,7 @@ frontend::Application * theApp()
 
 LyX::~LyX()
 {
+       delete pimpl_;
 }
 
 
@@ -229,7 +230,7 @@ LyX::LyX()
        : first_start(false)
 {
        singleton_ = this;
-       pimpl_.reset(new Singletons);
+       pimpl_ = new Impl;
 }
 
 
@@ -320,6 +321,13 @@ KeyMap & LyX::topLevelKeymap()
 }
 
 
+CmdDef & LyX::topLevelCmdDef()
+{
+       BOOST_ASSERT(pimpl_->toplevel_cmddef_.get());
+       return *pimpl_->toplevel_cmddef_.get();
+}
+
+
 Converters & LyX::converters()
 {
        return pimpl_->converters_;
@@ -366,39 +374,6 @@ void LyX::setGuiLanguage(std::string const & language)
 }
 
 
-Buffer const * LyX::updateInset(Inset const * inset) const
-{
-       if (quitting || !inset)
-               return 0;
-
-       Buffer const * buffer_ptr = 0;
-       vector<int> const & view_ids = pimpl_->application_->gui().viewIds();
-       vector<int>::const_iterator it = view_ids.begin();
-       vector<int>::const_iterator const end = view_ids.end();
-       for (; it != end; ++it) {
-               Buffer const * ptr =
-                       pimpl_->application_->gui().view(*it).updateInset(inset);
-               if (ptr)
-                       buffer_ptr = ptr;
-       }
-       return buffer_ptr;
-}
-
-
-void LyX::hideDialogs(std::string const & name, Inset * inset) const
-{
-       if (quitting || !use_gui)
-               return;
-
-       vector<int> const & view_ids = pimpl_->application_->gui().viewIds();
-       vector<int>::const_iterator it = view_ids.begin();
-       vector<int>::const_iterator const end = view_ids.end();
-       for (; it != end; ++it)
-               pimpl_->application_->gui().view(*it).getDialogs().
-                       hide(name, inset);
-}
-
-
 int LyX::exec(int & argc, char * argv[])
 {
        // Here we need to parse the command line. At least
@@ -432,7 +407,7 @@ int LyX::exec(int & argc, char * argv[])
 
                loadFiles();
 
-               if (batch_command.empty() || pimpl_->buffer_list_.empty()) {
+               if (pimpl_->batch_command.empty() || pimpl_->buffer_list_.empty()) {
                        prepareExit();
                        return EXIT_SUCCESS;
                }
@@ -442,10 +417,10 @@ int LyX::exec(int & argc, char * argv[])
                bool final_success = false;
                for (BufferList::iterator I = begin; I != pimpl_->buffer_list_.end(); ++I) {
                        Buffer * buf = *I;
-                       if (buf != buf->getMasterBuffer())
+                       if (buf != buf->masterBuffer())
                                continue;
                        bool success = false;
-                       buf->dispatch(batch_command, &success);
+                       buf->dispatch(pimpl_->batch_command, &success);
                        final_success |= success;
                }
                prepareExit();
@@ -455,8 +430,6 @@ int LyX::exec(int & argc, char * argv[])
        // Let the frontend parse and remove all arguments that it knows
        pimpl_->application_.reset(createApplication(argc, argv));
 
-       initGuiFont();
-
        // Parse and remove all known arguments in the LyX singleton
        // Give an error for all remaining ones.
        int exit_status = init(argc, argv);
@@ -505,10 +478,10 @@ void LyX::prepareExit()
 
        // do any other cleanup procedures now
        if (package().temp_dir() != package().system_temp_dir()) {
-               LYXERR(Debug::INFO) << "Deleting tmp dir "
-                                   << package().temp_dir().absFilename() << endl;
+               LYXERR(Debug::INFO, "Deleting tmp dir "
+                                   << package().temp_dir().absFilename());
 
-               if (!destroyDir(package().temp_dir())) {
+               if (!package().temp_dir().destroyDirectory()) {
                        docstring const msg =
                                bformat(_("Unable to remove the temporary directory %1$s"),
                                from_utf8(package().temp_dir().absFilename()));
@@ -555,9 +528,9 @@ int LyX::init(int & argc, char * argv[])
        }
 
        // Initialization of LyX (reads lyxrc and more)
-       LYXERR(Debug::INIT) << "Initializing LyX::init..." << endl;
+       LYXERR(Debug::INIT, "Initializing LyX::init...");
        bool success = init();
-       LYXERR(Debug::INIT) << "Initializing LyX::init...done" << endl;
+       LYXERR(Debug::INIT, "Initializing LyX::init...done");
        if (!success)
                return EXIT_FAILURE;
 
@@ -597,7 +570,7 @@ void LyX::loadFiles()
                        continue;
 
                Buffer * buf = pimpl_->buffer_list_.newBuffer(it->absFilename(), false);
-               if (loadLyXFile(buf, *it)) {
+               if (buf->loadLyXFile(*it)) {
                        ErrorList const & el = buf->errorList("Parse");
                        if (!el.empty())
                                for_each(el.begin(), el.end(),
@@ -643,13 +616,12 @@ void LyX::execBatchCommands()
        }
        
        // Execute batch commands if available
-       if (batch_command.empty())
+       if (pimpl_->batch_command.empty())
                return;
 
-       LYXERR(Debug::INIT) << "About to handle -x '"
-               << batch_command << '\'' << endl;
+       LYXERR(Debug::INIT, "About to handle -x '" << pimpl_->batch_command << '\'');
 
-       pimpl_->lyxfunc_.dispatch(lyxaction.lookupFunc(batch_command));
+       pimpl_->lyxfunc_.dispatch(lyxaction.lookupFunc(pimpl_->batch_command));
 }
 
 
@@ -666,7 +638,7 @@ void LyX::restoreGuiSession()
        if (!pimpl_->files_to_load_.empty()) {
                for_each(pimpl_->files_to_load_.begin(),
                        pimpl_->files_to_load_.end(),
-                       bind(&LyXView::loadLyXFile, view, _1, true));
+                       bind(&LyXFunc::loadAndViewFile, pimpl_->lyxfunc_, _1, true));
                // clear this list to save a few bytes of RAM
                pimpl_->files_to_load_.clear();
                pimpl_->session_->lastOpened().clear();
@@ -677,7 +649,7 @@ void LyX::restoreGuiSession()
                // last session, 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));
+                       bind(&LyXFunc::loadAndViewFile, pimpl_->lyxfunc_, _1, false));
 
                // clear this list to save a few bytes of RAM
                pimpl_->session_->lastOpened().clear();
@@ -687,7 +659,7 @@ void LyX::restoreGuiSession()
        BufferList::iterator end = pimpl_->buffer_list_.end();
        for (; I != end; ++I) {
                Buffer * buf = *I;
-               if (buf != buf->getMasterBuffer())
+               if (buf != buf->masterBuffer())
                        continue;
                updateLabels(*buf);
        }
@@ -705,54 +677,8 @@ LyXView * LyX::newLyXView()
        if (!lyx::use_gui)
                return 0;
 
-       // determine windows size and position, from lyxrc and/or session
-       // initial geometry
-       unsigned int width = 690;
-       unsigned int height = 510;
-       // default icon size, will be overwritten by  stored session value
-       unsigned int iconSizeXY = 0;
-       int maximized = LyXView::NotMaximized;
-       // first try lyxrc
-       if (lyxrc.geometry_width != 0 && lyxrc.geometry_height != 0 ) {
-               width = lyxrc.geometry_width;
-               height = lyxrc.geometry_height;
-       }
-       // if lyxrc returns (0,0), then use session info
-       else {
-               string val = session().sessionInfo().load("WindowWidth");
-               if (!val.empty())
-                       width = convert<unsigned int>(val);
-               val = session().sessionInfo().load("WindowHeight");
-               if (!val.empty())
-                       height = convert<unsigned int>(val);
-               val = session().sessionInfo().load("WindowMaximized");
-               if (!val.empty())
-                       maximized = convert<int>(val);
-               val = session().sessionInfo().load("IconSizeXY");
-               if (!val.empty())
-                       iconSizeXY = convert<unsigned int>(val);
-       }
-
-       // if user wants to restore window position
-       int posx = -1;
-       int posy = -1;
-       if (lyxrc.geometry_xysaved) {
-               string val = session().sessionInfo().load("WindowPosX");
-               if (!val.empty())
-                       posx = convert<int>(val);
-               val = session().sessionInfo().load("WindowPosY");
-               if (!val.empty())
-                       posy = convert<int>(val);
-       }
-
-       if (!geometryArg.empty())
-       {
-               width = 0;
-               height = 0;
-       }
-
        // create the main window
-       LyXView * view = &pimpl_->application_->createView(width, height, posx, posy, maximized, iconSizeXY, geometryArg);
+       LyXView * view = &pimpl_->application_->createView(geometryArg);
 
        return view;
 }
@@ -864,20 +790,6 @@ void LyX::printError(ErrorItem const & ei)
 }
 
 
-void LyX::initGuiFont()
-{
-       if (lyxrc.roman_font_name.empty())
-               lyxrc.roman_font_name = pimpl_->application_->romanFontName();
-
-       if (lyxrc.sans_font_name.empty())
-               lyxrc.sans_font_name = pimpl_->application_->sansFontName();
-
-       if (lyxrc.typewriter_font_name.empty())
-               lyxrc.typewriter_font_name
-                       = pimpl_->application_->typewriterFontName();
-}
-
-
 bool LyX::init()
 {
 #ifdef SIGHUP
@@ -953,7 +865,7 @@ bool LyX::init()
                return false;
 
        // Load the layouts
-       LYXERR(Debug::INIT) << "Reading layouts..." << endl;
+       LYXERR(Debug::INIT, "Reading layouts...");
        if (!LyXSetStyle())
                return false;
        //...and the modules
@@ -966,10 +878,16 @@ bool LyX::init()
        // Set the language defined by the user.
        //setGuiLanguage(lyxrc.gui_language);
 
+       // Set up command definitions
+       pimpl_->toplevel_cmddef_.reset(new CmdDef);
+       pimpl_->toplevel_cmddef_->read(lyxrc.def_file);
+
        // Set up bindings
        pimpl_->toplevel_keymap_.reset(new KeyMap);
-       defaultKeyBindings(pimpl_->toplevel_keymap_.get());
+       pimpl_->toplevel_keymap_->read("site");
        pimpl_->toplevel_keymap_->read(lyxrc.bind_file);
+       // load user bind file user.bind
+       pimpl_->toplevel_keymap_->read("user");
 
        pimpl_->lyxfunc_.initKeySequences(pimpl_->toplevel_keymap_.get());
 
@@ -985,8 +903,7 @@ bool LyX::init()
                prependEnvPath("PATH", lyxrc.path_prefix);
 
        FileName const document_path(lyxrc.document_path);
-       if (fs::exists(document_path.toFilesystemEncoding()) &&
-           fs::is_directory(document_path.toFilesystemEncoding()))
+       if (document_path.exists() && document_path.isDirectory())
                package().document_dir() = document_path;
 
        package().temp_dir() = createLyXTmpDir(FileName(lyxrc.tempdir_path));
@@ -1004,11 +921,10 @@ bool LyX::init()
                return false;
        }
 
-       LYXERR(Debug::INIT) << "LyX tmp dir: `"
-                           << package().temp_dir().absFilename()
-                           << '\'' << endl;
+       LYXERR(Debug::INIT, "LyX tmp dir: `"
+                           << package().temp_dir().absFilename() << '\'');
 
-       LYXERR(Debug::INIT) << "Reading session information '.lyx/session'..." << endl;
+       LYXERR(Debug::INIT, "Reading session information '.lyx/session'...");
        pimpl_->session_.reset(new Session(lyxrc.num_lastfiles));
 
        // This must happen after package initialization and after lyxrc is
@@ -1019,58 +935,6 @@ bool LyX::init()
 }
 
 
-void LyX::defaultKeyBindings(KeyMap  * kbmap)
-{
-       kbmap->bind("Right", FuncRequest(LFUN_CHAR_FORWARD));
-       kbmap->bind("Left", FuncRequest(LFUN_CHAR_BACKWARD));
-       kbmap->bind("Up", FuncRequest(LFUN_UP));
-       kbmap->bind("Down", FuncRequest(LFUN_DOWN));
-
-       kbmap->bind("Tab", FuncRequest(LFUN_CELL_FORWARD));
-       kbmap->bind("C-Tab", FuncRequest(LFUN_CELL_SPLIT));
-       kbmap->bind("~S-ISO_Left_Tab", FuncRequest(LFUN_CELL_BACKWARD));
-       kbmap->bind("~S-BackTab", FuncRequest(LFUN_CELL_BACKWARD));
-
-       kbmap->bind("Home", FuncRequest(LFUN_LINE_BEGIN));
-       kbmap->bind("End", FuncRequest(LFUN_LINE_END));
-       kbmap->bind("Prior", FuncRequest(LFUN_SCREEN_UP));
-       kbmap->bind("Next", FuncRequest(LFUN_SCREEN_DOWN));
-
-       kbmap->bind("Return", FuncRequest(LFUN_BREAK_PARAGRAPH));
-       //kbmap->bind("~C-~S-~M-nobreakspace", FuncRequest(LFUN_PROTECTEDSPACE));
-
-       kbmap->bind("Delete", FuncRequest(LFUN_CHAR_DELETE_FORWARD));
-       kbmap->bind("BackSpace", FuncRequest(LFUN_CHAR_DELETE_BACKWARD));
-
-       // kbmap->bindings to enable the use of the numeric keypad
-       // e.g. Num Lock set
-       //kbmap->bind("KP_0", FuncRequest(LFUN_SELF_INSERT));
-       //kbmap->bind("KP_Decimal", FuncRequest(LFUN_SELF_INSERT));
-       kbmap->bind("KP_Enter", FuncRequest(LFUN_BREAK_PARAGRAPH));
-       //kbmap->bind("KP_1", FuncRequest(LFUN_SELF_INSERT));
-       //kbmap->bind("KP_2", FuncRequest(LFUN_SELF_INSERT));
-       //kbmap->bind("KP_3", FuncRequest(LFUN_SELF_INSERT));
-       //kbmap->bind("KP_4", FuncRequest(LFUN_SELF_INSERT));
-       //kbmap->bind("KP_5", FuncRequest(LFUN_SELF_INSERT));
-       //kbmap->bind("KP_6", FuncRequest(LFUN_SELF_INSERT));
-       //kbmap->bind("KP_Add", FuncRequest(LFUN_SELF_INSERT));
-       //kbmap->bind("KP_7", FuncRequest(LFUN_SELF_INSERT));
-       //kbmap->bind("KP_8", FuncRequest(LFUN_SELF_INSERT));
-       //kbmap->bind("KP_9", FuncRequest(LFUN_SELF_INSERT));
-       //kbmap->bind("KP_Divide", FuncRequest(LFUN_SELF_INSERT));
-       //kbmap->bind("KP_Multiply", FuncRequest(LFUN_SELF_INSERT));
-       //kbmap->bind("KP_Subtract", FuncRequest(LFUN_SELF_INSERT));
-       kbmap->bind("KP_Right", FuncRequest(LFUN_CHAR_FORWARD));
-       kbmap->bind("KP_Left", FuncRequest(LFUN_CHAR_BACKWARD));
-       kbmap->bind("KP_Up", FuncRequest(LFUN_UP));
-       kbmap->bind("KP_Down", FuncRequest(LFUN_DOWN));
-       kbmap->bind("KP_Home", FuncRequest(LFUN_LINE_BEGIN));
-       kbmap->bind("KP_End", FuncRequest(LFUN_LINE_END));
-       kbmap->bind("KP_Prior", FuncRequest(LFUN_SCREEN_UP));
-       kbmap->bind("KP_Next", FuncRequest(LFUN_SCREEN_DOWN));
-}
-
-
 void LyX::emergencyCleanup() const
 {
        // what to do about tmpfiles is non-obvious. we would
@@ -1114,38 +978,32 @@ void LyX::deadKeyBindings(KeyMap * kbmap)
 }
 
 
-namespace {
-
 // return true if file does not exist or is older than configure.py.
-bool needsUpdate(string const & file)
+static bool needsUpdate(string const & file)
 {
        // We cannot initialize configure_script directly because the package
        // is not initialized yet when  static objects are constructed.
-       static string configure_script;
+       static FileName configure_script;
        static bool firstrun = true;
        if (firstrun) {
-               configure_script = FileName(addName(
-                               package().system_support().absFilename(),
-                               "configure.py")).toFilesystemEncoding();
+               configure_script =
+                       FileName(addName(package().system_support().absFilename(),
+                               "configure.py"));
                firstrun = false;
        }
 
-       string const absfile = FileName(addName(
-               package().user_support().absFilename(), file)).toFilesystemEncoding();
-       return (! fs::exists(absfile))
-               || (fs::last_write_time(configure_script)
-                   > fs::last_write_time(absfile));
-}
-
+       FileName absfile = 
+               FileName(addName(package().user_support().absFilename(), file));
+       return !absfile.exists()
+               || configure_script.lastModified() > absfile.lastModified();
 }
 
 
 bool LyX::queryUserLyXDir(bool explicit_userdir)
 {
        // Does user directory exist?
-       string const user_support =
-               package().user_support().toFilesystemEncoding();
-       if (fs::exists(user_support) && fs::is_directory(user_support)) {
+       FileName const sup = package().user_support();
+       if (sup.exists() && sup.isDirectory()) {
                first_start = false;
 
                return needsUpdate("lyxrc.defaults")
@@ -1173,10 +1031,9 @@ bool LyX::queryUserLyXDir(bool explicit_userdir)
        }
 
        lyxerr << to_utf8(bformat(_("LyX: Creating directory %1$s"),
-                         from_utf8(package().user_support().absFilename())))
-              << endl;
+                         from_utf8(sup.absFilename()))) << endl;
 
-       if (!createDirectory(package().user_support(), 0755)) {
+       if (!sup.createDirectory(0755)) {
                // Failed, so let's exit.
                lyxerr << to_utf8(_("Failed to create directory. Exiting."))
                       << endl;
@@ -1189,21 +1046,19 @@ bool LyX::queryUserLyXDir(bool explicit_userdir)
 
 bool LyX::readRcFile(string const & name)
 {
-       LYXERR(Debug::INIT) << "About to read " << name << "... ";
+       LYXERR(Debug::INIT, "About to read " << name << "... ");
 
        FileName const lyxrc_path = libFileSearch(string(), name);
        if (!lyxrc_path.empty()) {
-
-               LYXERR(Debug::INIT) << "Found in " << lyxrc_path << endl;
-
+               LYXERR(Debug::INIT, "Found in " << lyxrc_path);
                if (lyxrc.read(lyxrc_path) < 0) {
                        showFileError(name);
                        return false;
                }
-       } else
-               LYXERR(Debug::INIT) << "Not found." << lyxrc_path << endl;
+       } else {
+               LYXERR(Debug::INIT, "Not found." << lyxrc_path);
+       }
        return true;
-
 }
 
 
@@ -1231,14 +1086,12 @@ bool LyX::readUIFile(string const & name, bool include)
        std::list<string>::const_iterator end = uifiles.end();
        it = std::find(it, end, name);
        if (it != end) {
-               LYXERR(Debug::INIT) << "UI file '" << name
-                                   << "' has been read already. "
-                                   << "Is this an include loop?"
-                                   << endl;
+               LYXERR(Debug::INIT, "UI file '" << name << "' has been read already. "
+                                   << "Is this an include loop?");
                return false;
        }
 
-       LYXERR(Debug::INIT) << "About to read " << name << "..." << endl;
+       LYXERR(Debug::INIT, "About to read " << name << "...");
 
 
        FileName ui_path;
@@ -1252,15 +1105,14 @@ bool LyX::readUIFile(string const & name, bool include)
                ui_path = libFileSearch("ui", name, "ui");
 
        if (ui_path.empty()) {
-               LYXERR(Debug::INIT) << "Could not find " << name << endl;
+               LYXERR(Debug::INIT, "Could not find " << name);
                showFileError(name);
                return false;
        }
 
        uifiles.push_back(name);
 
-       LYXERR(Debug::INIT) << "Found " << name
-                           << " in " << ui_path << endl;
+       LYXERR(Debug::INIT, "Found " << name << " in " << ui_path);
        Lexer lex(uitags, ui_last - 1);
        lex.setFile(ui_path);
        if (!lex.isOK()) {
@@ -1306,7 +1158,7 @@ bool LyX::readUIFile(string const & name, bool include)
 // Read the languages file `name'
 bool LyX::readLanguagesFile(string const & name)
 {
-       LYXERR(Debug::INIT) << "About to read " << name << "..." << endl;
+       LYXERR(Debug::INIT, "About to read " << name << "...");
 
        FileName const lang_path = libFileSearch(string(), name);
        if (lang_path.empty()) {
@@ -1322,8 +1174,8 @@ bool LyX::readLanguagesFile(string const & name)
 bool LyX::readEncodingsFile(string const & enc_name,
                            string const & symbols_name)
 {
-       LYXERR(Debug::INIT) << "About to read " << enc_name << " and "
-                           << symbols_name << "..." << endl;
+       LYXERR(Debug::INIT, "About to read " << enc_name << " and "
+                           << symbols_name << "...");
 
        FileName const symbols_path = libFileSearch(string(), symbols_name);
        if (symbols_path.empty()) {
@@ -1379,6 +1231,8 @@ int parse_help(string const &, string const &)
                  "                  where command is a lyx command.\n"
                  "\t-e [--export] fmt\n"
                  "                  where fmt is the export format of choice.\n"
+                 "                  Look on Tools->Preferences->File formats->Format\n"
+                 "                  to get an idea which parameters should be passed.\n"
                  "\t-i [--import] fmt file.xxx\n"
                  "                  where fmt is the import format of choice\n"
                  "                  and file.xxx is the file to be imported.\n"
@@ -1388,6 +1242,7 @@ int parse_help(string const &, string const &)
        return 0;
 }
 
+
 int parse_version(string const &, string const &)
 {
        lyxerr << "LyX " << lyx_version
@@ -1399,6 +1254,7 @@ int parse_version(string const &, string const &)
        return 0;
 }
 
+
 int parse_sysdir(string const & arg, string const &)
 {
        if (arg.empty()) {
@@ -1410,6 +1266,7 @@ int parse_sysdir(string const & arg, string const &)
        return 1;
 }
 
+
 int parse_userdir(string const & arg, string const &)
 {
        if (arg.empty()) {
@@ -1421,6 +1278,7 @@ int parse_userdir(string const & arg, string const &)
        return 1;
 }
 
+
 int parse_execute(string const & arg, string const &)
 {
        if (arg.empty()) {
@@ -1432,6 +1290,7 @@ int parse_execute(string const & arg, string const &)
        return 1;
 }
 
+
 int parse_export(string const & type, string const &)
 {
        if (type.empty()) {
@@ -1444,6 +1303,7 @@ int parse_export(string const & type, string const &)
        return 1;
 }
 
+
 int parse_import(string const & type, string const & file)
 {
        if (type.empty()) {
@@ -1460,6 +1320,7 @@ int parse_import(string const & type, string const & file)
        return 2;
 }
 
+
 int parse_geometry(string const & arg1, string const &)
 {
        geometryArg = arg1;
@@ -1503,8 +1364,10 @@ void LyX::easyParse(int & argc, char * argv[])
                if (it == cmdmap.end())
                        continue;
 
-               string const arg((i + 1 < argc) ? to_utf8(from_local8bit(argv[i + 1])) : string());
-               string const arg2((i + 2 < argc) ? to_utf8(from_local8bit(argv[i + 2])) : string());
+               string const arg =
+                       (i + 1 < argc) ? to_utf8(from_local8bit(argv[i + 1])) : string();
+               string const arg2 =
+                       (i + 2 < argc) ? to_utf8(from_local8bit(argv[i + 2])) : string();
 
                int const remove = 1 + it->second(arg, arg2);
 
@@ -1518,7 +1381,7 @@ void LyX::easyParse(int & argc, char * argv[])
                }
        }
 
-       batch_command = batch;
+       pimpl_->batch_command = batch;
 }