aboutsummaryrefslogtreecommitdiff
path: root/rprt-engine/src/selection_functions/function_character.rs
diff options
context:
space:
mode:
authortslil <tslil@posteo.de>2026-03-21 08:49:35 +0000
committertslil <tslil@posteo.de>2026-03-21 17:26:50 +0000
commitc22cc3b348bdcb446fb0e44070da36fdf6b05800 (patch)
tree81371ff735529e7b2a5b1727be9c8b06123609e6 /rprt-engine/src/selection_functions/function_character.rs
parent5a5da7bc299bee12072e421d1936554690e34dd6 (diff)
big rework to support evaluation of selection functions, WiP
Diffstat (limited to 'rprt-engine/src/selection_functions/function_character.rs')
-rw-r--r--rprt-engine/src/selection_functions/function_character.rs31
1 files changed, 22 insertions, 9 deletions
diff --git a/rprt-engine/src/selection_functions/function_character.rs b/rprt-engine/src/selection_functions/function_character.rs
index 0d0699f..94c0963 100644
--- a/rprt-engine/src/selection_functions/function_character.rs
+++ b/rprt-engine/src/selection_functions/function_character.rs
@@ -1,9 +1,12 @@
-use crate::selection::Selection;
-use crate::selection_function_param;
-use crate::selection_functions::types::{get_buffer, SFArguments, SFError, SFResult};
-use crate::state::EditorState;
+use crate::{
+ dispatch_selection_function,
+ selection::Selection,
+ selection_function,
+ selection_functions::types::{get_buffer, SFArguments, SFError, SFResult},
+ state::EditorState,
+};
-selection_function_param! {
+selection_function! {
name: character,
param_type: usize,
niladic: |(param, es): (usize, &EditorState)| {
@@ -19,7 +22,7 @@ selection_function_param! {
)
}
-selection_function_param!(
+selection_function!(
name: sequential_character,
param_type: usize,
niladic: |_| Err(SFError::NoNiladicForm(";n").into()),
@@ -33,7 +36,7 @@ selection_function_param!(
}
);
-selection_function_param!(
+selection_function!(
name: reverse_character,
param_type: usize,
niladic: |(param, es): (usize, &EditorState)| {
@@ -53,7 +56,7 @@ selection_function_param!(
)
);
-selection_function_param!(
+selection_function!(
name: sequential_reverse_character,
param_type: usize,
niladic: |_| Err(SFError::NoNiladicForm(";'n").into()),
@@ -65,7 +68,7 @@ selection_function_param!(
}
);
-selection_function_param!(
+selection_function!(
name: reverse_sequential_character,
param_type: usize,
niladic: |_| Err(SFError::NoNiladicForm("';n").into()),
@@ -76,3 +79,13 @@ selection_function_param!(
Ok(Selection::Position {buffer_id, pos: if *param<int.start {int.start - *param} else {0}})
}
);
+
+dispatch_selection_function!(
+ name: selection_function_character,
+ param_type: usize,
+ base: character,
+ sequential: sequential_character,
+ reverse: reverse_character,
+ sequential_reverse: sequential_reverse_character,
+ reverse_sequential: reverse_sequential_character,
+);