X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLyX.cpp;h=7b5c07636f00556e3b9fa21e5d44ecc3a9424b2c;hb=0a7705a6736a85c3c751f7b4e9998833cdb71fc9;hp=550bf83fb3ea27d1938a780676beccf28f9bd6ca;hpb=f1cba8ff64b369792fd49f5ddf90e8126ab476ac;p=lyx.git diff --git a/src/LyX.cpp b/src/LyX.cpp index 550bf83fb3..7b5c07636f 100644 --- a/src/LyX.cpp +++ b/src/LyX.cpp @@ -17,11 +17,11 @@ #include "LyX.h" -#include "LayoutFile.h" +#include "AspellChecker.h" #include "Buffer.h" #include "BufferList.h" #include "CmdDef.h" -#include "Color.h" +#include "ColorSet.h" #include "ConverterCache.h" #include "Converter.h" #include "CutAndPaste.h" @@ -29,8 +29,10 @@ #include "ErrorList.h" #include "Format.h" #include "FuncStatus.h" +#include "HunspellChecker.h" #include "KeyMap.h" #include "Language.h" +#include "LayoutFile.h" #include "Lexer.h" #include "LyXAction.h" #include "LyXFunc.h" @@ -117,17 +119,23 @@ void reconfigureUserLyXDir() } // namespace anon - /// The main application class private implementation. struct LyX::Impl { - Impl() + Impl() : spell_checker_(0), aspell_checker_(0), hunspell_checker_(0) { // Set the default User Interface language as soon as possible. // The language used will be derived from the environment // variables. messages_["GUI"] = Messages(); } + + ~Impl() + { + delete aspell_checker_; + delete hunspell_checker_; + } + /// our function handler LyXFunc lyxfunc_; /// @@ -169,6 +177,12 @@ struct LyX::Impl /// graphics::Previews preview_; + /// + SpellChecker * spell_checker_; + /// + SpellChecker * aspell_checker_; + /// + SpellChecker * hunspell_checker_; }; /// @@ -296,12 +310,13 @@ int LyX::exec(int & argc, char * argv[]) Buffer * buf = *I; if (buf != buf->masterBuffer()) continue; - bool success = false; vector::const_iterator bcit = pimpl_->batch_commands.begin(); vector::const_iterator bcend = pimpl_->batch_commands.end(); + DispatchResult dr; for (; bcit != bcend; bcit++) { - buf->dispatch(*bcit, &success); - final_success |= success; + LYXERR(Debug::ACTION, "Buffer::dispatch: cmd: " << *bcit); + buf->dispatch(*bcit, dr); + final_success |= !dr.error(); } } prepareExit(); @@ -354,6 +369,9 @@ void LyX::prepareExit() cap::clearCutStack(); cap::clearSelection(); + // Write the index file of the converter cache + ConverterCache::get().writeIndex(); + // close buffers first pimpl_->buffer_list_.closeAll(); @@ -732,7 +750,7 @@ bool LyX::init() if (!LyXSetStyle()) return false; //...and the modules - moduleList.load(); + theModuleList.read(); // read keymap and ui files in batch mode as well // because InsetInfo needs to know these to produce @@ -745,9 +763,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"); - - pimpl_->lyxfunc_.initKeySequences(&pimpl_->toplevel_keymap_); + pimpl_->toplevel_keymap_.read("user", 0, KeyMap::MissingOK); if (lyxerr.debugging(Debug::LYXRC)) lyxrc.print(); @@ -941,7 +957,7 @@ int parse_dbg(string const & arg, string const &, string &) } lyxerr << to_utf8(bformat(_("Setting debug level to %1$s"), from_utf8(arg))) << endl; - lyxerr.level(Debug::value(arg)); + lyxerr.setLevel(Debug::value(arg)); Debug::showLevel(lyxerr, lyxerr.level()); return 1; } @@ -965,9 +981,11 @@ int parse_help(string const &, string const &, string &) " 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" + " Note that the order of -e and -x switches matters.\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" + "\t--batch execute commands and exit\n" "\t-version summarize version and build info\n" "Check the LyX man page for more details.")) << endl; exit(0); @@ -1062,6 +1080,13 @@ int parse_geometry(string const & arg1, string const &, string &) } +int parse_batch(string const &, string const &, string &) +{ + use_gui = false; + return 0; +} + + } // namespace anon @@ -1083,6 +1108,7 @@ void LyX::easyParse(int & argc, char * argv[]) cmdmap["-i"] = parse_import; cmdmap["--import"] = parse_import; cmdmap["-geometry"] = parse_geometry; + cmdmap["--batch"] = parse_batch; for (int i = 1; i < argc; ++i) { map::const_iterator it @@ -1243,4 +1269,34 @@ CmdDef & theTopLevelCmdDef() return singleton_->pimpl_->toplevel_cmddef_; } + +SpellChecker * theSpellChecker() +{ + if (!singleton_->pimpl_->spell_checker_) + setSpellChecker(); + return singleton_->pimpl_->spell_checker_; +} + + +void setSpellChecker() +{ +#if defined(USE_ASPELL) + if (lyxrc.spellchecker == "aspell") { + if (!singleton_->pimpl_->aspell_checker_) + singleton_->pimpl_->aspell_checker_ = new AspellChecker(); + singleton_->pimpl_->spell_checker_ = singleton_->pimpl_->aspell_checker_; + return; + } +#endif +#if defined(USE_HUNSPELL) + if (lyxrc.spellchecker == "hunspell") { + if (!singleton_->pimpl_->hunspell_checker_) + singleton_->pimpl_->hunspell_checker_ = new HunspellChecker(); + singleton_->pimpl_->spell_checker_ = singleton_->pimpl_->hunspell_checker_; + return; + } +#endif + singleton_->pimpl_->spell_checker_ = 0; +} + } // namespace lyx