retroforth/package/list.forth

68 lines
1.5 KiB
Text
Raw Permalink Normal View History

# Custom Extensions
This is a system for allowing you to easily add your own
extensions to RETRO on Unix systems.
The first extension uses the scripting interface to get source
data for words, and record this as part of the header.
~~~
{{
'Sources d:create #128 allot
:known? (s-sf) dup &Sources a:contains/string? ;
:index (s-s) &Sources swap a:index/string
&Sources swap a:fetch ;
:record (s-s) s:keep dup &Sources v:inc
@Sources &Sources + store ;
[ script:current-file known? &index &record choose
[ &d:add-header #2 + call ] dip
d:last d:source store
d:last d:name @d:Hash-Function call d:last d:hash store
] &d:add-header set-hook
}}
~~~
There are two options:
## Manual Additions
Add files to include to the code block below. Use a form
like:
'filename include
You can either put the files (or links to them) into this
directory or use full path names to the files. You can
also use any Retro code directly.
~~~
'dict-words-listing.forth include
~~~
## Automatic Extensions
This does not require manual editing of this file. To use
this:
- copy (or symlink) the extensions into the `extensions` subdirectory
- run `make update-extensions`
- run `make`
This will build RETRO, generate a new `load-extensions.retro` and
then rebuild, including the extensions.
~~~
'load-extensions.retro include
~~~
## Final Bits
Save the image with anything loaded here added in. The
`retro` binary will be rebuilt using the extended image.
~~~
'../rre.image image:save
~~~