void edit_typeset_rep::typeset_exec_until (path p) { //time_t t1= texmacs_time (); if (has_changed (THE_TREE + THE_ENVIRONMENT)) if (p != correct_cursor (et, rp * 0)) { if (DEBUG_STD) std_warning << "resynchronizing for path " << p << "\n"; // apply_changes (); } if (p == tp && inside_graphics (true) && p != closest_inside (et, p)) { //cout << "TeXmacs] Warning: corrected cursor\n"; tp= closest_inside (et, tp); p = tp; } //cout << "Exec until " << p << LF; if (N(cur[p])!=0) return; if (N(cur)>=25) // avoids out of memory in weird cases typeset_invalidate_env (); typeset_prepare (); if (enable_fastenv) { if (!(rp < p)) { failed_error << "Erroneous path " << p << "\n"; FAILED ("invalid typesetting path"); } tree t= subtree (et, rp); path q= path_up (p / rp); while (!is_nil (q)) { int i= q->item; restricted_exec (env, t, i); tree w= drd->get_env_child (t, i, tree (ATTR)); if (w == "") break; //cout << "t= " << t << "\n"; //cout << "i= " << i << "\n"; //cout << "w= " << w << "\n"; for (int j=0; j<N(w); j+=2) { //cout << w[j] << " := " << env->exec (w[j+1]) << "\n"; env->write (w[j]->label, env->exec (w[j+1])); } t= t[i]; q= q->next; } if (env->read (PREAMBLE) == "true") env->write (MODE, "src"); } else exec_until (ttt, p / rp); env->read_env (cur (p)); //time_t t2= texmacs_time (); //if (t2 - t1 >= 10) cout << "typeset_exec_until took " << t2-t1 << "ms\n"; }
bool edit_graphics_rep::inside_active_graphics (bool b) { return inside_graphics (b) && get_env_string (PREAMBLE) == "false"; }