diff --git a/changes-5.1.html b/changes-5.1.html
index 381ee2f05..be3caaf48 100644
--- a/changes-5.1.html
+++ b/changes-5.1.html
@@ -16,6 +16,8 @@
Yap-5.1.2:
+- FIXED: library_directory/1 was not being used.
+- FIXED: style_checker was failing on DCGs (obs from Miguel Filgueiras).
- FIXED: +inf is a number (obs from Trevor Walker).
- FIXED: if peek finds EOF get should not return an error (obs
from Miguel Filgueiras).
diff --git a/pl/boot.yap b/pl/boot.yap
index 37614a840..2ce0ca286 100644
--- a/pl/boot.yap
+++ b/pl/boot.yap
@@ -934,12 +934,17 @@ bootstrap(F) :-
( '$open'(F,Mode,S,0) -> '$close'(S), set_value(fileerrors,V) ; set_value(fileerrors,V), fail).
+% This sequence must be followed:
+% user and user_input are special;
+% library(F) must check library_directories
+% T(F) must check file_search_path
+% all must try search in path
'$find_in_path'(user,user_input, _) :- !.
'$find_in_path'(user_input,user_input, _) :- !.
'$find_in_path'(library(File),NewFile, _) :-
- '$dir_separator'(D),
+ '$dir_separator'(D),
atom_codes(A,[D]),
- '$system_library_directories'(Dir),
+ ( user:library_directory(Dir), '$do_not_creep' ; '$do_not_creep', fail),
'$extend_path'(Dir, A, File, NFile, Goal),
'$search_in_path'(NFile, NewFile), !.
'$find_in_path'(S,NewFile, _) :-
diff --git a/pl/consult.yap b/pl/consult.yap
index ed0d47ea7..07f1333c4 100644
--- a/pl/consult.yap
+++ b/pl/consult.yap
@@ -170,6 +170,13 @@ use_module(F,Is) :-
'$load_files'(F, [if(not_loaded),imports(Is)], use_module(F,Is)).
use_module(M,F,Is) :-
+ '$use_module'(M,F,Is).
+
+'$use_module'(M,F,Is) :- nonvar(M), !,
+ recorded('$module','$module'(F1,M,_),_),
+ '$load_files'(F1, [if(not_loaded),imports(Is)], use_module(M,F,Is)),
+ F1 = F.
+'$use_module'(M,F,Is) :- nonvar(F),
'$load_files'(F, [if(not_loaded),imports(Is)], use_module(M,F,Is)).
'$csult'(V, _) :- var(V), !,
@@ -333,7 +340,8 @@ prolog_load_context(file, FileName) :-
( IncFileName = [] ->
get_value('$consulting_file',FileName)
;
- FileName = IncFileName
+ FileName
+ = IncFileName
).
prolog_load_context(module, X) :-
'$current_module'(X).
@@ -472,4 +480,4 @@ remove_from_path(New) :- '$check_path'(New,Path),
'$system_library_directories'(Dir) :-
getenv('YAPSHAREDIR', Dir).
'$system_library_directories'(Dir) :-
- get_value(system_library_directory,Dir).
\ No newline at end of file
+ get_value(system_library_directory,Dir).
diff --git a/pl/directives.yap b/pl/directives.yap
index de8da18bf..d4b3052f9 100644
--- a/pl/directives.yap
+++ b/pl/directives.yap
@@ -104,8 +104,8 @@
'$load_files'(M:F, [if(not_loaded)],use_module(F)).
'$exec_directive'(use_module(F,Is), _, M) :-
'$load_files'(M:F, [if(not_loaded),imports(Is)],use_module(F,Is)).
-'$exec_directive'(use_module(_Mod,F,Is), _, M) :-
- '$load_files'(F, [if(not_loaded),imports(Is)],use_module(M,F,Is)).
+'$exec_directive'(use_module(Mod,F,Is), _, M) :-
+ '$use_module'(Mod,F,Is).
'$exec_directive'(block(BlockSpec), _, _) :-
'$block'(BlockSpec).
'$exec_directive'(wait(BlockSpec), _, _) :-
diff --git a/pl/init.yap b/pl/init.yap
index 7dded9885..1e743b183 100644
--- a/pl/init.yap
+++ b/pl/init.yap
@@ -94,6 +94,13 @@ system_mode(verbose,off) :- set_value('$verbose',off).
:- default_sequential(off).
+:- multifile user:library_directory/1.
+
+:- dynamic user:library_directory/1.
+
+user:library_directory(D) :-
+ prolog:'$system_library_directories'(D).
+
%
% cleanup ensure loaded and recover some data-base space.
%
@@ -131,7 +138,4 @@ file_search_path(library, Dir) :-
file_search_path(system, Dir) :-
prolog_flag(host_type, Dir).
-:- multifile library_directory/1.
-
-:- dynamic library_directory/1.