diff --git a/src/toplevel.pl b/src/toplevel.pl index e45de8d7..fdc5c18f 100644 --- a/src/toplevel.pl +++ b/src/toplevel.pl @@ -10,12 +10,14 @@ :- use_module(library('$project_atts')). :- use_module(library('$atts')). +:- dynamic(disabled_init_file/0). + load_scryerrc :- ( '$home_directory'(HomeDir) -> append(HomeDir, "/.scryerrc", ScryerrcFile), ( file_exists(ScryerrcFile) -> atom_chars(ScryerrcFileAtom, ScryerrcFile), - catch(use_module(ScryerrcFileAtom), E, print_exception(E)) + catch(consult(ScryerrcFileAtom), E, print_exception(E)) ; true ) ; true @@ -31,8 +33,8 @@ load_scryerrc :- ; asserta('$toplevel':argv([])), Args = Args0 ), - load_scryerrc, delegate_task(Args, []), + (\+ disabled_init_file -> load_scryerrc ; true), repl. '$repl'(_) :- ( \+ argv(_) -> asserta('$toplevel':argv([])) @@ -44,14 +46,17 @@ load_scryerrc :- delegate_task([], []). delegate_task([], Goals0) :- reverse(Goals0, Goals), + (\+ disabled_init_file -> load_scryerrc ; true), run_goals(Goals), repl. + delegate_task([Arg0|Args], Goals0) :- ( member(Arg0, ["-h", "--help"]) -> print_help ; member(Arg0, ["-v", "--version"]) -> print_version ; member(Arg0, ["-g", "--goal"]) -> gather_goal(g, Args, Goals0) + ; member(Arg0, ["-f"]) -> disable_init_file ; atom_chars(Mod, Arg0), - catch(use_module(Mod), E, print_exception(E)) + catch(consult(Mod), E, print_exception(E)) ), delegate_task(Args, Goals0). @@ -59,12 +64,14 @@ print_help :- write('Usage: scryer-prolog [OPTIONS] [FILES] [-- ARGUMENTS]'), nl, nl, write('Options:'), nl, - write(' -h, --help '), + write(' -h, --help '), write('Display this message'), nl, - write(' -v, --version '), + write(' -v, --version '), write('Print version information and exit'), nl, - write(' -g, --goal GOAL '), + write(' -g, --goal GOAL '), write('Run the query GOAL'), nl, + write(' -f '), + write('Fast startup. Do not load initialization file (~/.scryerrc)'),nl, % write(' '), halt. @@ -82,6 +89,9 @@ gather_goal(Type, Args0, Goals) :- Gs =.. [Type, Gs1], delegate_task(Args, [Gs|Goals]). +disable_init_file :- + asserta('disabled_init_file'). + arg_type(g). arg_type(t). arg_type(g(_)).