* Licence details can be found in the file COPYING.
*
* \author Alfredo Braunstein
- * \author Lars Gullik Bjønnes
+ * \author Lars Gullik Bjønnes
* \author Jean-Marc Lasgouttes
* \author John Levon
- * \author André Pönitz
+ * \author André Pönitz
*
* Full author contact details are available in file CREDITS.
*/
#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"
#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"
} // 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_;
///
///
graphics::Previews preview_;
+ ///
+ SpellChecker * spell_checker_;
+ ///
+ SpellChecker * aspell_checker_;
+ ///
+ SpellChecker * hunspell_checker_;
};
///
Buffer * buf = *I;
if (buf != buf->masterBuffer())
continue;
- bool success = false;
vector<string>::const_iterator bcit = pimpl_->batch_commands.begin();
vector<string>::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();
cap::clearCutStack();
cap::clearSelection();
+ // Write the index file of the converter cache
+ ConverterCache::get().writeIndex();
+
// close buffers first
pimpl_->buffer_list_.closeAll();
}
// clear this list to save a few bytes of RAM
pimpl_->files_to_load_.clear();
- }
- else
+ } else
pimpl_->application_->restoreGuiSession();
// Execute batch commands if available
Windows handles SIGFPE and SIGSEGV signals as expected.
-Cntl+C interrupts (mapped to SIGINT by Windows' POSIX compatability layer)
+Ctrl+C interrupts (mapped to SIGINT by Windows' POSIX compatability layer)
cause a new thread to be spawned. This may well result in unexpected
behaviour by the single-threaded LyX.
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
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();
" 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);
int parse_geometry(string const & arg1, string const &, string &)
{
geometryArg = arg1;
+ // don't remove "-geometry", it will be pruned out later in the
+ // frontend if need be.
+ return -1;
+}
+
+
+int parse_batch(string const &, string const &, string &)
+{
+ use_gui = false;
+ return 0;
}
cmdmap["-i"] = parse_import;
cmdmap["--import"] = parse_import;
cmdmap["-geometry"] = parse_geometry;
+ cmdmap["--batch"] = parse_batch;
for (int i = 1; i < argc; ++i) {
map<string, cmd_helper>::const_iterator it
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