on master help sign in
Expand doc/view macros to allow fetching specific id

This simplifies the code and hides away unwraps

commit6ec4017a8d9f690dd9c9e5c54eadbafdff8be620 authorBlaž Hrastnik <blaz@mxxn.io> dateSat 3 Sep 2022, 12:36 (4 years ago) parent1caba2d
3 files changed+23−11
helix-term/src/ui/editor.rs+4−4 helix-view/src/editor.rs+6−6 helix-view/src/macros.rs+13−1
helix-term/src/ui/editor.rs+4−4
@@ -1061,7 +1061,7 @@ impl EditorView {
10611061 let editor = &mut cxt.editor;
10621062
10631063 if let Some((pos, view_id)) = pos_and_view(editor, row, column) {
1064− let doc = editor.document_mut(editor.tree.get(view_id).doc).unwrap();
1064+ let doc = doc_mut!(editor, &view!(editor, view_id).doc);
10651065
10661066 if modifiers == KeyModifiers::ALT {
10671067 let selection = doc.selection(view_id).clone();
@@ -1190,7 +1190,7 @@ impl EditorView {
11901190 }
11911191
11921192 if let Some((pos, view_id)) = pos_and_view(editor, row, column) {
1193− let doc = editor.document_mut(editor.tree.get(view_id).doc).unwrap();
1193+ let doc = doc_mut!(editor, &view!(editor, view_id).doc);
11941194 doc.set_selection(view_id, Selection::point(pos));
11951195 cxt.editor.focus(view_id);
11961196 commands::MappableCommand::paste_primary_clipboard_before.execute(cxt);
@@ -1320,8 +1320,8 @@ impl Component for EditorView {
13201320 if cx.editor.tree.contains(focus) {
13211321 let config = cx.editor.config();
13221322 let mode = cx.editor.mode();
1323− let view = cx.editor.tree.get_mut(focus);
1324− let doc = cx.editor.documents.get_mut(&view.doc).unwrap();
1323+ let view = view_mut!(cx.editor, focus);
1324+ let doc = doc_mut!(cx.editor, &view.doc);
13251325
13261326 view.ensure_cursor_in_view(doc, config.scrolloff);
13271327
helix-view/src/editor.rs+6−6
@@ -890,7 +890,7 @@ impl Editor {
890890 view.doc = doc_id;
891891 view.offset = Position::default();
892892
893− let doc = self.documents.get_mut(&doc_id).unwrap();
893+ let doc = doc_mut!(self, &doc_id);
894894 doc.ensure_view_init(view.id);
895895
896896 // TODO: reuse align_view
@@ -961,7 +961,7 @@ impl Editor {
961961 }
962962 Action::Load => {
963963 let view_id = view!(self).id;
964− let doc = self.documents.get_mut(&id).unwrap();
964+ let doc = doc_mut!(self, &id);
965965 doc.ensure_view_init(view_id);
966966 return;
967967 }
@@ -982,7 +982,7 @@ impl Editor {
982982 },
983983 );
984984 // initialize selection for view
985− let doc = self.documents.get_mut(&id).unwrap();
985+ let doc = doc_mut!(self, &id);
986986 doc.ensure_view_init(view_id);
987987 }
988988 }
@@ -1036,9 +1036,9 @@ impl Editor {
10361036 }
10371037
10381038 pub fn close(&mut self, id: ViewId) {
1039− let view = self.tree.get(self.tree.focus);
1039+ let (_view, doc) = current!(self);
10401040 // remove selection
1041− self.documents.get_mut(&view.doc).unwrap().remove_view(id);
1041+ doc.remove_view(id);
10421042 self.tree.remove(id);
10431043 self._refresh();
10441044 }
@@ -1112,7 +1112,7 @@ impl Editor {
11121112 .unwrap_or_else(|| self.new_document(Document::default()));
11131113 let view = View::new(doc_id, self.config().gutters.clone());
11141114 let view_id = self.tree.insert(view);
1115− let doc = self.documents.get_mut(&doc_id).unwrap();
1115+ let doc = doc_mut!(self, &doc_id);
11161116 doc.ensure_view_init(view_id);
11171117 }
11181118
helix-view/src/macros.rs+13−1
@@ -14,7 +14,7 @@ macro_rules! current {
1414 ($editor:expr) => {{
1515 let view = $crate::view_mut!($editor);
1616 let id = view.doc;
17− let doc = $editor.documents.get_mut(&id).unwrap();
17+ let doc = $crate::doc_mut!($editor, &id);
1818 (view, doc)
1919 }};
2020}
@@ -32,6 +32,9 @@ macro_rules! current_ref {
3232/// Returns `&mut Document`
3333#[macro_export]
3434macro_rules! doc_mut {
35+ ($editor:expr, $id:expr) => {{
36+ $editor.documents.get_mut($id).unwrap()
37+ }};
3538 ($editor:expr) => {{
3639 $crate::current!($editor).1
3740 }};
@@ -41,6 +44,9 @@ macro_rules! doc_mut {
4144/// Returns `&mut View`
4245#[macro_export]
4346macro_rules! view_mut {
47+ ($editor:expr, $id:expr) => {{
48+ $editor.tree.get_mut($id)
49+ }};
4450 ($editor:expr) => {{
4551 $editor.tree.get_mut($editor.tree.focus)
4652 }};
@@ -50,6 +56,9 @@ macro_rules! view_mut {
5056/// Returns `&View`
5157#[macro_export]
5258macro_rules! view {
59+ ($editor:expr, $id:expr) => {{
60+ $editor.tree.get($id)
61+ }};
5362 ($editor:expr) => {{
5463 $editor.tree.get($editor.tree.focus)
5564 }};
@@ -57,6 +66,9 @@ macro_rules! view {
5766
5867#[macro_export]
5968macro_rules! doc {
69+ ($editor:expr, $id:expr) => {{
70+ $editor.documents[$id]
71+ }};
6072 ($editor:expr) => {{
6173 $crate::current_ref!($editor).1
6274 }};