#include "Language.h"
#include "Layout.h"
#include "LyXAction.h"
-#include "LyXFunc.h"
+#include "LyX.h"
#include "Lexer.h"
#include "LyXRC.h"
#include "Paragraph.h"
recUndo(cur, pit, pit + 1);
cur.finishUndo();
pars_.swap(pit, pit + 1);
- cur.buffer()->updateLabels();
+ cur.buffer()->updateBuffer();
needsUpdate = true;
++cur.pit();
break;
recUndo(cur, pit - 1, pit);
cur.finishUndo();
pars_.swap(pit, pit - 1);
- cur.buffer()->updateLabels();
+ cur.buffer()->updateBuffer();
--cur.pit();
needsUpdate = true;
break;
par.params().startOfAppendix(start);
// we can set the refreshing parameters now
- cur.buffer()->updateLabels();
+ cur.buffer()->updateBuffer();
break;
}
cur.posForward();
// Some insets are numbered, others are shown in the outline pane so
// let's update the labels and the toc backend.
- bv->buffer().updateLabels();
+ bv->buffer().updateBuffer();
break;
case LFUN_TABULAR_INSERT:
// date metrics.
FuncRequest cmd_caption(LFUN_CAPTION_INSERT);
doInsertInset(cur, cur.text(), cmd_caption, true, false);
- bv->buffer().updateLabels();
+ bv->buffer().updateBuffer();
cur.updateFlags(Update::Force);
// FIXME: When leaving the Float (or Wrap) inset we should
// delete any empty paragraph left above or below the
case LFUN_SPELLING_ADD: {
docstring word = from_utf8(cmd.getArg(0));
- string code;
- string variety;
+ Language * lang;
if (word.empty()) {
word = cur.selectionAsString(false);
// FIXME
selectWordWhenUnderCursor(cur, WHOLE_WORD);
word = cur.selectionAsString(false);
}
- code = cur.getFont().language()->code();
- variety = cur.getFont().language()->variety();
+ lang = const_cast<Language *>(cur.getFont().language());
} else
- variety = split(cmd.getArg(1), code, '-');
- WordLangTuple wl(word, code, variety);
+ lang = const_cast<Language *>(languages.getLanguage(cmd.getArg(1)));
+ WordLangTuple wl(word, lang);
theSpellChecker()->insert(wl);
break;
}
case LFUN_SPELLING_IGNORE: {
docstring word = from_utf8(cmd.getArg(0));
- string code;
- string variety;
+ Language * lang;
if (word.empty()) {
word = cur.selectionAsString(false);
// FIXME
selectWordWhenUnderCursor(cur, WHOLE_WORD);
word = cur.selectionAsString(false);
}
- code = cur.getFont().language()->code();
- variety = cur.getFont().language()->variety();
+ lang = const_cast<Language *>(cur.getFont().language());
} else
- variety = split(cmd.getArg(1), code, '-');
- WordLangTuple wl(word, code, variety);
+ lang = const_cast<Language *>(languages.getLanguage(cmd.getArg(1)));
+ WordLangTuple wl(word, lang);
theSpellChecker()->accept(wl);
break;
}
case LFUN_OUTLINE_UP:
outline(OutlineUp, cur);
setCursor(cur, cur.pit(), 0);
- cur.buffer()->updateLabels();
+ cur.buffer()->updateBuffer();
needsUpdate = true;
break;
case LFUN_OUTLINE_DOWN:
outline(OutlineDown, cur);
setCursor(cur, cur.pit(), 0);
- cur.buffer()->updateLabels();
+ cur.buffer()->updateBuffer();
needsUpdate = true;
break;
case LFUN_OUTLINE_IN:
outline(OutlineIn, cur);
- cur.buffer()->updateLabels();
+ cur.buffer()->updateBuffer();
needsUpdate = true;
break;
case LFUN_OUTLINE_OUT:
outline(OutlineOut, cur);
- cur.buffer()->updateLabels();
+ cur.buffer()->updateBuffer();
needsUpdate = true;
break;
// not allowed in description items
enable = !inDescriptionItem(cur);
break;
- case LFUN_FLOAT_LIST_INSERT:
+ case LFUN_FLOAT_LIST_INSERT: {
code = FLOAT_LIST_CODE;
// not allowed in description items
enable = !inDescriptionItem(cur);
+ if (enable) {
+ FloatList const & floats = cur.buffer()->params().documentClass().floats();
+ FloatList::const_iterator cit = floats[to_ascii(cmd.argument())];
+ // make sure we know about such floats
+ if (cit == floats.end() ||
+ // and that we know how to generate a list of them
+ (!cit->second.needsFloatPkg() && cit->second.listCommand().empty())) {
+ flag.unknown(true);
+ // probably not necessary, but...
+ enable = false;
+ }
+ }
break;
+ }
case LFUN_CAPTION_INSERT:
code = CAPTION_CODE;
// not allowed in description items