tree evaluate_change_case (tree t, tree nc, bool evaluate_flag, bool first) { if (is_atomic (t)) { string s= t->label; tree r= copy (s); int i, n= N(s); bool all= true; bool up = false; bool lo = false; if (nc == "Upcase") { all= false; up= true; } else if (nc == "UPCASE") { up= true; } else if (nc == "locase") { lo= true; } for (i=0; i<n; tm_char_forwards (s, i)) if (is_iso_alpha (s[i]) && (all || (first && (i==0)))) { if (up && is_locase (s[i])) r->label[i]= upcase (s[i]); if (lo && is_upcase (s[i])) r->label[i]= locase (s[i]); } r->obs= list_observer (ip_observer (obtain_ip (t)), r->obs); return r; } else if (is_concat (t)) { int i, n= N(t); tree r (t, n); for (i=0; i<n; i++) r[i]= evaluate_change_case (t[i], nc, evaluate_flag, first && (i==0)); r->obs= list_observer (ip_observer (obtain_ip (t)), r->obs); return r; } else { if (evaluate_flag) return t; else return evaluate_change_case (evaluate (t), nc, true, first); } }
void decorate_ip (tree ref, path ip) { if (obtain_ip (ref) == path (DETACHED)) { ref->obs= list_observer (ip_observer (ip), ref->obs); if (is_compound (ref)) { int i, n= N(ref); for (i=0; i<n; i++) decorate_ip (ref[i], ip); } } }
int main (int argc, char** argv) { boot_hacks (); windows_delayed_refresh (1000000000); immediate_options (argc, argv); set_env ("LC_NUMERIC", "POSIX"); #ifdef MACOSX_EXTENSIONS // Reset TeXmacs if Alt is pressed during startup if (mac_alternate_startup()) { cout << "TeXmacs] Performing setup (Alt on startup)" << LF; remove (url ("$TEXMACS_HOME_PATH/system/settings.scm")); remove (url ("$TEXMACS_HOME_PATH/system/setup.scm")); remove (url ("$TEXMACS_HOME_PATH/system/cache") * url_wildcard ("*")); remove (url ("$TEXMACS_HOME_PATH/fonts/error") * url_wildcard ("*")); } #endif #ifdef QTTEXMACS // initialize the Qt application infrastructure new QTMApplication (argc, argv); #endif TeXmacs_init_paths (argc, argv); //cout << "Bench ] Started TeXmacs\n"; the_et = tuple (); the_et->obs= ip_observer (path ()); cache_initialize (); bench_start ("initialize texmacs"); init_texmacs (); bench_cumul ("initialize texmacs"); #ifdef ENABLE_TESTS test_routines (); #endif //#ifdef EXPERIMENTAL // test_environments (); //#endif start_scheme (argc, argv, TeXmacs_main); return 0; }
void transfer_ip (tree src, tree dest) { ASSERT (obtain_ip (dest) == path (DETACHED), "already has an ip"); dest->obs= list_observer (ip_observer (obtain_ip (src)), dest->obs); }