# repl: Add initial notebook execution \+ KernelSession abstraction \(\#43553\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/e9aadaf0afc2563ce6b6dde8c93e626e9965bfb0)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: e9aadaf0afc2563ce6b6dde8c93e626e9965bfb0

Requested commit: e9aadaf0afc2563ce6b6dde8c93e626e9965bfb0

Commit: e9aadaf0afc2563ce6b6dde8c93e626e9965bfb0

Tree: cd9afde9eb802bdaa9cd730c438f101c2bc69975

Author: MostlyK

Committer: GitHub

## Message

```
repl: Add initial notebook execution + KernelSession abstraction (#43553)

Coming from discussion on #25936 and
https://github.com/zed-industries/zed/pull/19756 .
This PR introduces the KernelSession abstraction and adds basic notebook
cell execution inside NotebookEditor.

The following provides a base starter for the development on Notebooks.

What this PR includes today:

Release Notes:

- KernelSession trait extracted. Both REPL and NotebookEditor now share
the same routing mechanism.
- NotebookEditor can launch kernels, execute code cells, and display
outputs.
- Basic cell operations: run current cell, run all, move up/down, add
code/markdown blocks. Keybindings follow Jupyter defaults.


Next Steps:

- [x] Editing support for markdown and code blocks.
- Buffer integration instead of temporary cell text.
- [x] Proper focus behavior when executing or adding cells.
- Kernel control UI.

A little far fetched steps:

- Vim Support
- Cell Handling Improvement and other convenient features and design
from other editors
- Ability to have better parsing for AI Support. 


I have attached a video of showcasing some of the features:


https://github.com/user-attachments/assets/37e6f3e5-2022-45f0-a73d-2dd01ebc2932
```

## Parents

- [a09aeb14e8c5fffe6bdcc33aac52f74528b37e1e](https://git.cafe/gitcafe/zed/commit/a09aeb14e8c5fffe6bdcc33aac52f74528b37e1e?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/e9aadaf0afc2563ce6b6dde8c93e626e9965bfb0?format=markdown)
