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.rs | 51 |
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) }}; } |