-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bring Jupyter to Zed Editing (#12062)
Run any Jupyter kernel in Zed on any buffer (editor): <img width="1074" alt="image" src="https://github.com/zed-industries/zed/assets/836375/eac8ed69-d02b-4d46-b379-6186d8f59470"> ## TODO ### Lifecycle * [x] Launch kernels on demand * [x] Wait for kernel to be started * [x] Request Kernel info on start * [x] Show in progress indicator * [ ] Allow picking kernel (it defaults to first matching language name) * [ ] Menu for interrupting and shutting down the kernel * [ ] Drop running kernels once editor is dropped ### Media Outputs * [x] Render text and tracebacks with ANSI color handling * [x] Render markdown as text * [x] Render PNG and JPEG images using an explicit height based on line-height * ~~Render SVG~~ -- not happening for this PR due to lack of text in SVG support * [ ] Process `update_display_data` message and related `display_id` * [x] Process `page` data from payloads as outputs * [ ] Render markdown as, well, rendered markdown -- Note: unsure if we can get line heights here ### Document * [x] Select code and run * [x] Run current line * [x] Clear previous overlapping runs * [ ] Support running markdown code blocks * [ ] Action to export session as notebook or output files * [ ] Action to clear all outputs * [ ] Delete outputs when lines are deleted ## Other missing features The following is a list of missing functionality or expectations that are out of scope for this PR. ### Python Environments Detecting python environments should probably be done in a separate PR in tandem with how they're used with LSP. Users likely want to pick an environment for their project, whether a virtualenv, conda env, pyenv, poetry backed virtualenv, or the system. Related issues: * #7646 * #7808 * #7296 ### LSP Integration * Submit `complete_request` messages for completions to interleave interactive variables with LSP * LSP for IPython semantics (`%%timeit`, `!ls`, `get_ipython`, etc.) ## Future release notes - Run code in any editor, whether it's a script or a markdown document Release Notes: - N/A
- Loading branch information
Showing
15 changed files
with
2,117 additions
and
24 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
[package] | ||
name = "repl" | ||
version = "0.1.0" | ||
edition = "2021" | ||
publish = false | ||
license = "GPL-3.0-or-later" | ||
|
||
[lints] | ||
workspace = true | ||
|
||
[lib] | ||
path = "src/repl.rs" | ||
doctest = false | ||
|
||
[dependencies] | ||
anyhow.workspace = true | ||
alacritty_terminal.workspace = true | ||
async-dispatcher.workspace = true | ||
base64.workspace = true | ||
collections.workspace = true | ||
editor.workspace = true | ||
gpui.workspace = true | ||
futures.workspace = true | ||
image.workspace = true | ||
language.workspace = true | ||
log.workspace = true | ||
project.workspace = true | ||
runtimelib.workspace = true | ||
schemars.workspace = true | ||
serde.workspace = true | ||
serde_json.workspace = true | ||
settings.workspace = true | ||
smol.workspace = true | ||
theme.workspace = true | ||
terminal_view.workspace = true | ||
ui.workspace = true | ||
uuid.workspace = true | ||
workspace.workspace = true | ||
|
||
[dev-dependencies] | ||
editor = { workspace = true, features = ["test-support"] } | ||
env_logger.workspace = true | ||
gpui = { workspace = true, features = ["test-support"] } | ||
language = { workspace = true, features = ["test-support"] } | ||
project = { workspace = true, features = ["test-support"] } | ||
settings = { workspace = true, features = ["test-support"] } | ||
theme = { workspace = true, features = ["test-support"] } | ||
util = { workspace = true, features = ["test-support"] } | ||
http = { workspace = true, features = ["test-support"] } |
Oops, something went wrong.