* ADD LFUN_SPELLING_ADD and LFUN_SPELLING_IGNORE (bug 6102).

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33089 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jürgen Spitzmüller 2010-01-19 08:21:56 +00:00
parent c129f0f8b3
commit 3a714c6057
4 changed files with 83 additions and 0 deletions

View File

@ -442,7 +442,9 @@ enum FuncCode
LFUN_BUFFER_CLOSE_ALL, // vfr 20090806 LFUN_BUFFER_CLOSE_ALL, // vfr 20090806
LFUN_GRAPHICS_RELOAD, // vfr 20090810 LFUN_GRAPHICS_RELOAD, // vfr 20090810
LFUN_SCREEN_SHOW_CURSOR, // vfr, 20090325 LFUN_SCREEN_SHOW_CURSOR, // vfr, 20090325
LFUN_SPELLING_ADD, // spitz 20100118
// 345 // 345
LFUN_SPELLING_IGNORE, // spitz 20100118
LFUN_LASTACTION // end of the table LFUN_LASTACTION // end of the table
}; };

View File

@ -980,6 +980,28 @@ void LyXAction::init()
* \endvar * \endvar
*/ */
{ LFUN_WORD_LOWCASE, "word-lowcase", Noop, Edit }, { LFUN_WORD_LOWCASE, "word-lowcase", Noop, Edit },
/*!
* \var lyx::FuncCode lyx::LFUN_SPELLING_ADD
* \li Action: Add the word under the cursor to the respective
* spell checker dictionary.
* \li Syntax: spelling-add [<STRING>] [<LANG>]
* \li Params: <WORD>: word to add
<LANG>: language code (see file languages)
* \li Origin: JSpitzm, 18 Jan 2010
* \endvar
*/
{ LFUN_SPELLING_ADD, "spelling-add", ReadOnly, Edit },
/*!
* \var lyx::FuncCode lyx::LFUN_SPELLING_IGNORE
* \li Action: Let the spell checker ignore the word under the cursor
* in the current session for the given language.
* \li Syntax: spelling-ignore [<WORD>] [<LANG>]
* \li Params: <WORD>: word to ignore
<LANG>: language code (see file languages)
* \li Origin: JSpitzm, 18 Jan 2010
* \endvar
*/
{ LFUN_SPELLING_IGNORE, "spelling-ignore", ReadOnly, Edit },
/*! /*!
* \var lyx::FuncCode lyx::LFUN_THESAURUS_ENTRY * \var lyx::FuncCode lyx::LFUN_THESAURUS_ENTRY
* \li Action: Look up thesaurus entries with respect to the word under the cursor. * \li Action: Look up thesaurus entries with respect to the word under the cursor.

View File

@ -42,9 +42,11 @@
#include "LyXRC.h" #include "LyXRC.h"
#include "Paragraph.h" #include "Paragraph.h"
#include "ParagraphParameters.h" #include "ParagraphParameters.h"
#include "SpellChecker.h"
#include "TextClass.h" #include "TextClass.h"
#include "TextMetrics.h" #include "TextMetrics.h"
#include "VSpace.h" #include "VSpace.h"
#include "WordLangTuple.h"
#include "frontends/Application.h" #include "frontends/Application.h"
#include "frontends/Clipboard.h" #include "frontends/Clipboard.h"
@ -1996,6 +1998,48 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
break; break;
} }
case LFUN_SPELLING_ADD: {
docstring word = from_utf8(cmd.getArg(0));
string code;
string variety;
if (word.empty()) {
word = cur.selectionAsString(false);
// FIXME
if (word.size() > 100 || word.empty()) {
// Get word or selection
selectWordWhenUnderCursor(cur, WHOLE_WORD);
word = cur.selectionAsString(false);
}
code = cur.getFont().language()->code();
variety = cur.getFont().language()->variety();
} else
variety = split(cmd.getArg(1), code, '-');
WordLangTuple wl(word, code, variety);
theSpellChecker()->insert(wl);
break;
}
case LFUN_SPELLING_IGNORE: {
docstring word = from_utf8(cmd.getArg(0));
string code;
string variety;
if (word.empty()) {
word = cur.selectionAsString(false);
// FIXME
if (word.size() > 100 || word.empty()) {
// Get word or selection
selectWordWhenUnderCursor(cur, WHOLE_WORD);
word = cur.selectionAsString(false);
}
code = cur.getFont().language()->code();
variety = cur.getFont().language()->variety();
} else
variety = split(cmd.getArg(1), code, '-');
WordLangTuple wl(word, code, variety);
theSpellChecker()->accept(wl);
break;
}
case LFUN_PARAGRAPH_PARAMS_APPLY: { case LFUN_PARAGRAPH_PARAMS_APPLY: {
// Given data, an encoding of the ParagraphParameters // Given data, an encoding of the ParagraphParameters
// generated in the Paragraph dialog, this function sets // generated in the Paragraph dialog, this function sets
@ -2505,6 +2549,11 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
case LFUN_BREAK_PARAGRAPH: case LFUN_BREAK_PARAGRAPH:
enable = cur.inset().getLayout().isMultiPar(); enable = cur.inset().getLayout().isMultiPar();
break; break;
case LFUN_SPELLING_ADD:
case LFUN_SPELLING_IGNORE:
enable = theSpellChecker();
break;
case LFUN_WORD_DELETE_FORWARD: case LFUN_WORD_DELETE_FORWARD:
case LFUN_WORD_DELETE_BACKWARD: case LFUN_WORD_DELETE_BACKWARD:

View File

@ -741,6 +741,16 @@ void MenuDefinition::expandSpellingSuggestions(BufferView const * bv)
} }
if (i >= 10) if (i >= 10)
add(item); add(item);
if (i > 0)
add(MenuItem(MenuItem::Separator));
docstring arg = wl.word() + " " + from_ascii(wl.lang_code());
if (!wl.lang_variety().empty())
arg += from_ascii("-") + from_ascii(wl.lang_variety());
add(MenuItem(MenuItem::Command, qt_("Add to personal dictionary|c"),
FuncRequest(LFUN_SPELLING_ADD, arg)));
add(MenuItem(MenuItem::Command, qt_("Ignore all|I"),
FuncRequest(LFUN_SPELLING_IGNORE, arg)));
} }