Skip to content

Commit

Permalink
restore .scryerrc loading
Browse files Browse the repository at this point in the history
  • Loading branch information
mthom committed Feb 28, 2021
1 parent a367812 commit f935060
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 28 deletions.
3 changes: 3 additions & 0 deletions src/clause_types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,7 @@ pub enum SystemClauseType {
IsSTOEnabled,
SetSTOAsUnify,
SetNSTOAsUnify,
HomeDirectory,
}

impl SystemClauseType {
Expand Down Expand Up @@ -591,6 +592,7 @@ impl SystemClauseType {
&SystemClauseType::IsSTOEnabled => clause_name!("$is_sto_enabled"),
&SystemClauseType::SetSTOAsUnify => clause_name!("$set_sto_as_unify"),
&SystemClauseType::SetNSTOAsUnify => clause_name!("$set_nsto_as_unify"),
&SystemClauseType::HomeDirectory => clause_name!("$home_directory"),
}
}

Expand Down Expand Up @@ -839,6 +841,7 @@ impl SystemClauseType {
("$is_sto_enabled", 1) => Some(SystemClauseType::IsSTOEnabled),
("$set_sto_as_unify", 0) => Some(SystemClauseType::SetSTOAsUnify),
("$set_nsto_as_unify", 0) => Some(SystemClauseType::SetNSTOAsUnify),
("$home_directory", 1) => Some(SystemClauseType::HomeDirectory),
_ => None,
}
}
Expand Down
28 changes: 0 additions & 28 deletions src/machine/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -126,34 +126,6 @@ fn current_dir() -> PathBuf {
include!(concat!(env!("OUT_DIR"), "/libraries.rs"));

impl Machine {
/*
fn compile_scryerrc(&mut self) {
let mut path = match dirs_next::home_dir() {
Some(path) => path,
None => return,
};
path.push(".scryerrc");
if path.is_file() {
let file_src = match File::open(&path) {
Ok(file_handle) => Stream::from_file_as_input(
clause_name!(".scryerrc"),
file_handle,
),
Err(_) => return,
};
let rc_src = ListingSource::from_file_and_path(
clause_name!(".scryerrc"),
path.to_path_buf(),
);
compile_user_module(self, file_src, rc_src);
}
}
*/

fn run_module_predicate(&mut self, module_name: ClauseName, key: PredicateKey) {
if let Some(module) = self.indices.modules.get(&module_name) {
if let Some(ref code_index) = module.code_dir.get(&key) {
Expand Down
22 changes: 22 additions & 0 deletions src/machine/system_calls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5454,6 +5454,28 @@ impl MachineState {
&SystemClauseType::SetNSTOAsUnify => {
self.unify_fn = MachineState::unify;
}
&SystemClauseType::HomeDirectory => {
let path = match dirs_next::home_dir() {
Some(path) => path,
None => {
self.fail = true;
return Ok(());
}
};

if path.is_dir() {
if let Some(path) = path.to_str() {
let path_atom = self.heap.to_unifiable(
HeapCellValue::Atom(clause_name!(path.to_string(), self.atom_tbl), None),
);

(self.unify_fn)(self, self[temp_v!(1)], path_atom);
return return_from_clause!(self.last_call, self);
}
}

self.fail = true;
}
};

return_from_clause!(self.last_call, self)
Expand Down
9 changes: 9 additions & 0 deletions src/toplevel.pl
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@
:- use_module(library('$project_atts')).
:- use_module(library('$atts')).

load_scryerrc :-
( '$home_directory'(HomeDir) ->
atom_concat(HomeDir, '/.scryerrc', ScryerrcFile),
catch(use_module(ScryerrcFile), E, print_exception(E))
; true
).

:- dynamic(argv/1).

'$repl'([_|Args0]) :-
Expand All @@ -19,12 +26,14 @@
; asserta('$toplevel':argv([])),
Args = Args0
),
load_scryerrc,
delegate_task(Args, []),
repl.
'$repl'(_) :-
( \+ argv(_) -> asserta('$toplevel':argv([]))
; true
),
load_scryerrc,
repl.

delegate_task([], []).
Expand Down

0 comments on commit f935060

Please sign in to comment.