diff options
Diffstat (limited to 'src/lisp/prelude.rs')
-rw-r--r-- | src/lisp/prelude.rs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/lisp/prelude.rs b/src/lisp/prelude.rs index 336dbaf..aebff98 100644 --- a/src/lisp/prelude.rs +++ b/src/lisp/prelude.rs | |||
@@ -1,6 +1,7 @@ | |||
1 | use crate::{ | 1 | use crate::{ |
2 | bitmap::MapPoint, | 2 | bitmap::MapPoint, |
3 | brush::Brush, | 3 | brush::Brush, |
4 | guide::Guide, | ||
4 | lisp::{ | 5 | lisp::{ |
5 | error::{EvalError, LispError}, | 6 | error::{EvalError, LispError}, |
6 | expr::{Arity, LispExpr}, | 7 | expr::{Arity, LispExpr}, |
@@ -413,5 +414,19 @@ pub fn new_env() -> Result<Environment, LispError> { | |||
413 | return Ok(LispExpr::Unit); | 414 | return Ok(LispExpr::Unit); |
414 | }); | 415 | }); |
415 | 416 | ||
417 | primitive!(env, Arity::Exact(2), "add-guide!", |args, app| { | ||
418 | match args { | ||
419 | [axis, LispExpr::Number(LispNumber::Integer(offset))] => { | ||
420 | let guide = Guide { | ||
421 | axis: axis.try_into()?, | ||
422 | offset: *offset as u32, | ||
423 | }; | ||
424 | app.guides.insert(guide, true); | ||
425 | return Ok(LispExpr::Unit); | ||
426 | } | ||
427 | _ => return Err(EvalError::TypeMismatch.into()), | ||
428 | } | ||
429 | }); | ||
430 | |||
416 | Ok(env) | 431 | Ok(env) |
417 | } | 432 | } |