Fix CAS computation of a selected subformula.

Invoking a computer algebra system program for computing a selected
subformula has never worked (checked with all LyX versions back to 1.3)
and, moreover, in the presence of a selection things go awry.
This commit allows this computation by replacing the selected
subformula with the result of the computation.
This commit is contained in:
Enrico Forestieri 2014-11-10 00:47:50 +01:00
parent 5644470576
commit b16b1ddb58
2 changed files with 12 additions and 11 deletions

View File

@ -66,6 +66,7 @@ using namespace lyx::support;
namespace lyx {
using cap::grabAndEraseSelection;
using cap::reduceSelectionToOneCell;
namespace {
@ -1316,14 +1317,14 @@ void InsetMathHull::doExtern(Cursor & cur, FuncRequest & func)
extra = from_ascii("noextra");
string const lang = to_ascii(dlang);
// FIXME: temporarily disabled
//if (cur.selection()) {
// MathData ar;
// selGet(cur.ar);
// lyxerr << "use selection: " << ar << endl;
// insert(pipeThroughExtern(lang, extra, ar));
// return;
//}
// replace selection with result of computation
if (reduceSelectionToOneCell(cur)) {
MathData ar;
asArray(grabAndEraseSelection(cur), ar);
lyxerr << "use selection: " << ar << endl;
cur.insert(pipeThroughExtern(lang, extra, ar));
return;
}
// only inline, display or eqnarray math is allowed
if (getType() > hullEqnArray) {
@ -1344,9 +1345,7 @@ void InsetMathHull::doExtern(Cursor & cur, FuncRequest & func)
if (getType() == hullSimple) {
size_type pos = cur.cell().find_last(eq);
MathData ar;
if (cur.inMathed() && cur.selection()) {
asArray(grabAndEraseSelection(cur), ar);
} else if (pos == cur.cell().size()) {
if (pos == cur.cell().size()) {
ar = cur.cell();
lyxerr << "use whole cell: " << ar << endl;
} else {

View File

@ -46,6 +46,8 @@ What's new
- References no longer truncated in outliner (bug 9312).
- Allow computing selected subformulas with computer algebra systems.
* DOCUMENTATION AND LOCALIZATION