Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'helix-view/src/macros.rs')
-rw-r--r--helix-view/src/macros.rs51
1 files changed, 19 insertions, 32 deletions
diff --git a/helix-view/src/macros.rs b/helix-view/src/macros.rs
index ee9cd411..0bebd02f 100644
--- a/helix-view/src/macros.rs
+++ b/helix-view/src/macros.rs
@@ -11,19 +11,9 @@
/// Returns `(&mut View, &mut Document)`
#[macro_export]
macro_rules! current {
- ($editor:expr) => {{
- let view = $crate::view_mut!($editor);
- let id = view.doc;
- let doc = $crate::doc_mut!($editor, &id);
- (view, doc)
- }};
-}
-
-#[macro_export]
-macro_rules! current_ref {
- ($editor:expr) => {{
- let view = $editor.tree.get($editor.tree.focus);
- let doc = &$editor.documents[&view.doc];
+ ( $( $editor:ident ).+ ) => {{
+ let view = $crate::view_mut!( $( $editor ).+ );
+ let doc = &mut $( $editor ).+ .documents[view.doc];
(view, doc)
}};
}
@@ -32,11 +22,8 @@ macro_rules! current_ref {
/// Returns `&mut Document`
#[macro_export]
macro_rules! doc_mut {
- ($editor:expr, $id:expr) => {{
- $editor.documents.get_mut($id).unwrap()
- }};
- ($editor:expr) => {{
- $crate::current!($editor).1
+ ( $( $editor:ident ).+ ) => {{
+ $crate::current!( $( $editor ).+ ).1
}};
}
@@ -44,11 +31,8 @@ macro_rules! doc_mut {
/// Returns `&mut View`
#[macro_export]
macro_rules! view_mut {
- ($editor:expr, $id:expr) => {{
- $editor.tree.get_mut($id)
- }};
- ($editor:expr) => {{
- $editor.tree.get_mut($editor.tree.focus)
+ ( $( $editor:ident ).+ ) => {{
+ $( $editor ).+ .tree.get_mut($( $editor ).+ .tree.focus)
}};
}
@@ -56,20 +40,23 @@ macro_rules! view_mut {
/// Returns `&View`
#[macro_export]
macro_rules! view {
- ($editor:expr, $id:expr) => {{
- $editor.tree.get($id)
- }};
- ($editor:expr) => {{
- $editor.tree.get($editor.tree.focus)
+ ( $( $editor:ident ).+ ) => {{
+ $( $editor ).+ .tree.get($( $editor ).+ .tree.focus)
}};
}
#[macro_export]
macro_rules! doc {
- ($editor:expr, $id:expr) => {{
- &$editor.documents[$id]
+ ( $( $editor:ident ).+ ) => {{
+ $crate::current_ref!( $( $editor ).+ ).1
}};
- ($editor:expr) => {{
- $crate::current_ref!($editor).1
+}
+
+#[macro_export]
+macro_rules! current_ref {
+ ( $( $editor:ident ).+ ) => {{
+ let view = $( $editor ).+ .tree.get($( $editor ).+ .tree.focus);
+ let doc = &$( $editor ).+ .documents[view.doc];
+ (view, doc)
}};
}