This module provides the SWI-Prolog `make' facility that synchronises
Prolog internal database after loaded files have been edited.
- bug
- - Dependency tracking is incomplete. Notably, there is no
dependency tracking if compilation of one module depends
on goal_expansion/2 or term_expansion/2 rules provided by
another.
- make
- Reload all source files that have been changed since they were
loaded. This predicate peforms the following steps:
- Compute the set of files that need to be reloaded.
- Call the hook prolog:
make_hook(before, Files)
- Reload the files
- Call the hook prolog:
make_hook(after, Files)
- If (4) fails, call list_undefined/0.
The hooks are called with an empty list if no files need
reloading.
- make_reload_file(File)
- Reload file into the proper module.
- bug
- - If modules import each other, we must load them in the
proper order for import/export dependencies.
- prolog:make_hook(+When, +Files) is semidet[multifile]
- This hook is called by make/0. It is called with the following
values for When:
- before
- The hook is called before reloading starts. The default
action is to do nothing.
- after
- The hook is called after reloading completed. The default
action is to call list_undefined/1 as:
list_undefined([scan(local)]).
The hook can be used to change program validation, stop or
restart services, etc.
- Arguments:
-
Files | - is a list holding the canonical file names of the
files that need to be reloaded. This list can be empty. |