aboutsummaryrefslogtreecommitdiff
path: root/src/lisp/prelude.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lisp/prelude.rs')
-rw-r--r--src/lisp/prelude.rs15
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 @@
1use crate::{ 1use 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}