Add a call to `open_abs_path` to enable opening of files from

R Aadarsh created

`InvalidBufferView`

Change summary

crates/encodings/src/selectors.rs | 36 ++++++++++++++++++++++++--------
1 file changed, 27 insertions(+), 9 deletions(-)

Detailed changes

crates/encodings/src/selectors.rs 🔗

@@ -426,6 +426,15 @@ pub mod encoding {
         }
 
         fn confirm(&mut self, _: bool, window: &mut Window, cx: &mut Context<Picker<Self>>) {
+            let workspace = self
+                .selector
+                .upgrade()
+                .unwrap()
+                .read(cx)
+                .workspace
+                .upgrade()
+                .unwrap();
+
             if let Some(buffer) = &self.buffer
                 && let Some(buffer) = buffer.upgrade()
             {
@@ -440,15 +449,6 @@ pub mod encoding {
                     } else if self.action == Action::Save {
                         let executor = cx.background_executor().clone();
 
-                        let workspace = self
-                            .selector
-                            .upgrade()
-                            .unwrap()
-                            .read(cx)
-                            .workspace
-                            .upgrade()
-                            .unwrap();
-
                         executor
                             .spawn(workspace.update(cx, |workspace, cx| {
                                 workspace
@@ -458,6 +458,24 @@ pub mod encoding {
                             .detach();
                     }
                 });
+            } else {
+                workspace.update(cx, |workspace, cx| {
+                    workspace
+                        .open_abs_path(
+                            self.selector
+                                .upgrade()
+                                .unwrap()
+                                .read(cx)
+                                .path
+                                .as_ref()
+                                .unwrap()
+                                .clone(),
+                            Default::default(),
+                            window,
+                            cx,
+                        )
+                        .detach();
+                })
             }
             self.dismissed(window, cx);
         }