From 6ec4017a8d9f690dd9c9e5c54eadbafdff8be620 Mon Sep 17 00:00:00 2001 From: Blaž Hrastnik Date: Sat, 3 Sep 2022 12:36:06 +0900 Subject: Expand doc/view macros to allow fetching specific id This simplifies the code and hides away unwraps --- helix-view/src/editor.rs | 12 ++++++------ helix-view/src/macros.rs | 14 +++++++++++++- 2 files changed, 19 insertions(+), 7 deletions(-) (limited to 'helix-view') diff --git a/helix-view/src/editor.rs b/helix-view/src/editor.rs index 65e64b16..b6947e44 100644 --- a/helix-view/src/editor.rs +++ b/helix-view/src/editor.rs @@ -890,7 +890,7 @@ impl Editor { view.doc = doc_id; view.offset = Position::default(); - let doc = self.documents.get_mut(&doc_id).unwrap(); + let doc = doc_mut!(self, &doc_id); doc.ensure_view_init(view.id); // TODO: reuse align_view @@ -961,7 +961,7 @@ impl Editor { } Action::Load => { let view_id = view!(self).id; - let doc = self.documents.get_mut(&id).unwrap(); + let doc = doc_mut!(self, &id); doc.ensure_view_init(view_id); return; } @@ -982,7 +982,7 @@ impl Editor { }, ); // initialize selection for view - let doc = self.documents.get_mut(&id).unwrap(); + let doc = doc_mut!(self, &id); doc.ensure_view_init(view_id); } } @@ -1036,9 +1036,9 @@ impl Editor { } pub fn close(&mut self, id: ViewId) { - let view = self.tree.get(self.tree.focus); + let (_view, doc) = current!(self); // remove selection - self.documents.get_mut(&view.doc).unwrap().remove_view(id); + doc.remove_view(id); self.tree.remove(id); self._refresh(); } @@ -1112,7 +1112,7 @@ impl Editor { .unwrap_or_else(|| self.new_document(Document::default())); let view = View::new(doc_id, self.config().gutters.clone()); let view_id = self.tree.insert(view); - let doc = self.documents.get_mut(&doc_id).unwrap(); + let doc = doc_mut!(self, &doc_id); doc.ensure_view_init(view_id); } diff --git a/helix-view/src/macros.rs b/helix-view/src/macros.rs index 04f8df94..53ab4346 100644 --- a/helix-view/src/macros.rs +++ b/helix-view/src/macros.rs @@ -14,7 +14,7 @@ macro_rules! current { ($editor:expr) => {{ let view = $crate::view_mut!($editor); let id = view.doc; - let doc = $editor.documents.get_mut(&id).unwrap(); + let doc = $crate::doc_mut!($editor, &id); (view, doc) }}; } @@ -32,6 +32,9 @@ 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 }}; @@ -41,6 +44,9 @@ 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) }}; @@ -50,6 +56,9 @@ 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) }}; @@ -57,6 +66,9 @@ macro_rules! view { #[macro_export] macro_rules! doc { + ($editor:expr, $id:expr) => {{ + $editor.documents[$id] + }}; ($editor:expr) => {{ $crate::current_ref!($editor).1 }}; -- cgit v1.2.3-70-g09d2