@@ -61,94 +61,97 @@ pub fn init(cx: &mut AppContext) {
return;
}
- let is_local_project = editor
- .workspace()
- .map(|workspace| workspace.read(cx).project().read(cx).is_local())
- .unwrap_or(false);
+ cx.defer(|editor, cx| {
+ let workspace = Workspace::for_window(cx);
- if !is_local_project {
- return;
- }
+ let is_local_project = workspace
+ .map(|workspace| workspace.read(cx).project().read(cx).is_local())
+ .unwrap_or(false);
- let editor_handle = cx.view().downgrade();
+ if !is_local_project {
+ return;
+ }
- editor
- .register_action({
- let editor_handle = editor_handle.clone();
- move |_: &Run, cx| {
- if !JupyterSettings::enabled(cx) {
- return;
- }
+ let editor_handle = cx.view().downgrade();
- crate::run(editor_handle.clone(), true, cx).log_err();
- }
- })
- .detach();
-
- editor
- .register_action({
- let editor_handle = editor_handle.clone();
- move |_: &RunInPlace, cx| {
- if !JupyterSettings::enabled(cx) {
- return;
- }
+ editor
+ .register_action({
+ let editor_handle = editor_handle.clone();
+ move |_: &Run, cx| {
+ if !JupyterSettings::enabled(cx) {
+ return;
+ }
- crate::run(editor_handle.clone(), false, cx).log_err();
- }
- })
- .detach();
-
- editor
- .register_action({
- let editor_handle = editor_handle.clone();
- move |_: &ClearOutputs, cx| {
- if !JupyterSettings::enabled(cx) {
- return;
+ crate::run(editor_handle.clone(), true, cx).log_err();
}
-
- crate::clear_outputs(editor_handle.clone(), cx);
- }
- })
- .detach();
-
- editor
- .register_action({
- let editor_handle = editor_handle.clone();
- move |_: &Interrupt, cx| {
- if !JupyterSettings::enabled(cx) {
- return;
+ })
+ .detach();
+
+ editor
+ .register_action({
+ let editor_handle = editor_handle.clone();
+ move |_: &RunInPlace, cx| {
+ if !JupyterSettings::enabled(cx) {
+ return;
+ }
+
+ crate::run(editor_handle.clone(), false, cx).log_err();
}
-
- crate::interrupt(editor_handle.clone(), cx);
- }
- })
- .detach();
-
- editor
- .register_action({
- let editor_handle = editor_handle.clone();
- move |_: &Shutdown, cx| {
- if !JupyterSettings::enabled(cx) {
- return;
+ })
+ .detach();
+
+ editor
+ .register_action({
+ let editor_handle = editor_handle.clone();
+ move |_: &ClearOutputs, cx| {
+ if !JupyterSettings::enabled(cx) {
+ return;
+ }
+
+ crate::clear_outputs(editor_handle.clone(), cx);
}
-
- crate::shutdown(editor_handle.clone(), cx);
- }
- })
- .detach();
-
- editor
- .register_action({
- let editor_handle = editor_handle.clone();
- move |_: &Restart, cx| {
- if !JupyterSettings::enabled(cx) {
- return;
+ })
+ .detach();
+
+ editor
+ .register_action({
+ let editor_handle = editor_handle.clone();
+ move |_: &Interrupt, cx| {
+ if !JupyterSettings::enabled(cx) {
+ return;
+ }
+
+ crate::interrupt(editor_handle.clone(), cx);
}
-
- crate::restart(editor_handle.clone(), cx);
- }
- })
- .detach();
+ })
+ .detach();
+
+ editor
+ .register_action({
+ let editor_handle = editor_handle.clone();
+ move |_: &Shutdown, cx| {
+ if !JupyterSettings::enabled(cx) {
+ return;
+ }
+
+ crate::shutdown(editor_handle.clone(), cx);
+ }
+ })
+ .detach();
+
+ editor
+ .register_action({
+ let editor_handle = editor_handle.clone();
+ move |_: &Restart, cx| {
+ if !JupyterSettings::enabled(cx) {
+ return;
+ }
+
+ crate::restart(editor_handle.clone(), cx);
+ }
+ })
+ .detach();
+ });
})
.detach();
}
@@ -4540,6 +4540,11 @@ impl Workspace {
.children(leader_border),
)
}
+
+ pub fn for_window(cx: &mut WindowContext) -> Option<View<Workspace>> {
+ let window = cx.window_handle().downcast::<Workspace>()?;
+ cx.read_window(&window, |workspace, _| workspace).ok()
+ }
}
fn leader_border_for_pane(