-
-
Notifications
You must be signed in to change notification settings - Fork 7.2k
Open
Labels
area:design papercutSmall visual defectsSmall visual defectsarea:languages/unsupportedFeedback related to unsupported LSPsFeedback related to unsupported LSPsarea:replrepl, jupyter, notebooks, etcrepl, jupyter, notebooks, etc
Description
Check for existing issues
- Completed
Problem
As evidenced in #5273, Jupyter Notebook users would love to edit notebooks. There's a need for seamless integration that supports the variety of media types in Jupyter notebooks and the interactive runtimes underneath.
Proposed Plan
The fastest path where we'll see progress along the way will be to:
- Create a kernel/runtime manager for Zed ✅
- Enable execution in the editor, a la Hydrogen ✅
- Create a notebook viewer ✅
- Allow execution in notebooks ✅
In parallel, we can work on new GPUI features to support rendering custom media types that Jupyter users expect.
Steps
Runtime support
To bring Jupyter kernels (aka runtimes aka REPLs) to Rust, the https://github.com/runtimed/runtimed project has been started.
- Discover python and/or jupyter kernel environments
- Launch kernels/runtimes
- Track kernels/runtimes in their own pane
Notebook File support
- New filetype support (Foundations for Open All the Things #9353, Image viewer #9425)
- Load Jupyter notebooks
.ipynbinto a new viewer - Full Buffer integration inside Jupyter Notebooks (LSPs, vim, etc.)
- Ability to focus from one cell to another
- Move cells around
- Vim Mode inside Jupyter View
Rich Media -> GPUI needs
Some of the needs for notebook and/or in-editor execution will require GPUI work. Some will be able to reuse existing components as is (div, img, markdown preview).
These are the likely mediatypes to support:
-
text/plain->div() -
image/svg+xml,image/png,image/jpeg,image/gif -
application/vnd.dataresource+json- built in table support -
text/markdown- repl: Streamline Markdown output usage #47713 -
text/html- repl: Use wry to render HTML outputs #48157 -
text/latex- repl: Add LaTeX mimetype support #44525, Add LaTeX rendering to Markdown preview #48143 -
application/json- repl: Renderapplication/jsonmedia types from Jupyter kernels #47905 -
application/geo+json- requires repl: Use wry to render HTML outputs #48157 - VegaLite, Vega - requires repl: Use wry to render HTML outputs #48157
-
application/javascript- requires repl: Use wry to render HTML outputs #48157 -
application/vnd.jupyter.widget-view+json,application/vnd.jupyter.widget-state+json- no support
Kernel Improvements
- REPL support inside dev containers
- Recommendation based on worktree/project
- Easy control and UI/UX for managing current Kernels
- Union and predictable behavior over all modes of repl ( remote/local )
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area:design papercutSmall visual defectsSmall visual defectsarea:languages/unsupportedFeedback related to unsupported LSPsFeedback related to unsupported LSPsarea:replrepl, jupyter, notebooks, etcrepl, jupyter, notebooks, etc