2021-02-20 20:02:34 +03:00
|
|
|
[workspace]
|
2022-10-25 20:31:58 +03:00
|
|
|
members = [
|
2024-02-16 05:54:43 +03:00
|
|
|
"crates/activity_indicator",
|
2024-04-01 00:57:57 +03:00
|
|
|
"crates/anthropic",
|
2024-02-16 05:54:43 +03:00
|
|
|
"crates/assets",
|
|
|
|
"crates/assistant",
|
2024-05-24 20:03:41 +03:00
|
|
|
"crates/assistant_slash_command",
|
2024-05-09 16:23:21 +03:00
|
|
|
"crates/assistant_tooling",
|
2024-02-16 05:54:43 +03:00
|
|
|
"crates/audio",
|
|
|
|
"crates/auto_update",
|
|
|
|
"crates/breadcrumbs",
|
|
|
|
"crates/call",
|
|
|
|
"crates/channel",
|
|
|
|
"crates/cli",
|
|
|
|
"crates/client",
|
|
|
|
"crates/clock",
|
|
|
|
"crates/collab",
|
|
|
|
"crates/collab_ui",
|
|
|
|
"crates/collections",
|
|
|
|
"crates/command_palette",
|
2024-02-25 21:21:20 +03:00
|
|
|
"crates/command_palette_hooks",
|
2024-02-16 05:54:43 +03:00
|
|
|
"crates/copilot",
|
|
|
|
"crates/db",
|
2024-06-28 02:14:13 +03:00
|
|
|
"crates/dev_server_projects",
|
2024-02-16 05:54:43 +03:00
|
|
|
"crates/diagnostics",
|
|
|
|
"crates/editor",
|
|
|
|
"crates/extension",
|
2024-03-02 03:00:55 +03:00
|
|
|
"crates/extension_api",
|
2024-03-19 17:50:21 +03:00
|
|
|
"crates/extension_cli",
|
2024-02-16 05:54:43 +03:00
|
|
|
"crates/extensions_ui",
|
|
|
|
"crates/feature_flags",
|
|
|
|
"crates/feedback",
|
|
|
|
"crates/file_finder",
|
2024-03-29 23:55:01 +03:00
|
|
|
"crates/file_icons",
|
2024-02-16 05:54:43 +03:00
|
|
|
"crates/fs",
|
|
|
|
"crates/fsevent",
|
|
|
|
"crates/fuzzy",
|
|
|
|
"crates/git",
|
2024-05-07 04:24:48 +03:00
|
|
|
"crates/git_hosting_providers",
|
2024-02-16 05:54:43 +03:00
|
|
|
"crates/go_to_line",
|
2024-03-19 21:22:26 +03:00
|
|
|
"crates/google_ai",
|
2024-02-16 05:54:43 +03:00
|
|
|
"crates/gpui",
|
|
|
|
"crates/gpui_macros",
|
2024-04-12 00:36:35 +03:00
|
|
|
"crates/headless",
|
2024-06-04 23:14:26 +03:00
|
|
|
"crates/html_to_markdown",
|
2024-05-11 00:50:20 +03:00
|
|
|
"crates/http",
|
2024-03-19 20:13:10 +03:00
|
|
|
"crates/image_viewer",
|
2024-07-02 20:14:56 +03:00
|
|
|
"crates/indexed_docs",
|
2024-05-03 22:50:42 +03:00
|
|
|
"crates/inline_completion_button",
|
2024-02-16 05:54:43 +03:00
|
|
|
"crates/install_cli",
|
|
|
|
"crates/journal",
|
|
|
|
"crates/language",
|
|
|
|
"crates/language_selector",
|
|
|
|
"crates/language_tools",
|
2024-02-23 17:56:08 +03:00
|
|
|
"crates/languages",
|
2024-02-16 05:54:43 +03:00
|
|
|
"crates/live_kit_client",
|
|
|
|
"crates/live_kit_server",
|
|
|
|
"crates/lsp",
|
2024-05-09 12:03:33 +03:00
|
|
|
"crates/markdown",
|
2024-02-16 05:54:43 +03:00
|
|
|
"crates/markdown_preview",
|
|
|
|
"crates/media",
|
|
|
|
"crates/menu",
|
|
|
|
"crates/multi_buffer",
|
|
|
|
"crates/node_runtime",
|
|
|
|
"crates/notifications",
|
2024-06-12 03:35:27 +03:00
|
|
|
"crates/ollama",
|
2024-03-19 21:22:26 +03:00
|
|
|
"crates/open_ai",
|
2024-02-16 05:54:43 +03:00
|
|
|
"crates/outline",
|
2024-06-12 23:22:52 +03:00
|
|
|
"crates/outline_panel",
|
2024-06-18 02:27:42 +03:00
|
|
|
"crates/paths",
|
2024-02-16 05:54:43 +03:00
|
|
|
"crates/picker",
|
|
|
|
"crates/prettier",
|
|
|
|
"crates/project",
|
|
|
|
"crates/project_panel",
|
|
|
|
"crates/project_symbols",
|
2024-06-10 21:49:53 +03:00
|
|
|
"crates/proto",
|
2024-02-16 05:54:43 +03:00
|
|
|
"crates/quick_action_bar",
|
|
|
|
"crates/recent_projects",
|
|
|
|
"crates/refineable",
|
|
|
|
"crates/refineable/derive_refineable",
|
|
|
|
"crates/release_channel",
|
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:
* https://github.com/zed-industries/zed/issues/7646
* https://github.com/zed-industries/zed/issues/7808
* https://github.com/zed-industries/zed/issues/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
2024-06-17 20:02:31 +03:00
|
|
|
"crates/repl",
|
2024-02-16 05:54:43 +03:00
|
|
|
"crates/rich_text",
|
|
|
|
"crates/rope",
|
|
|
|
"crates/rpc",
|
|
|
|
"crates/search",
|
2024-04-12 20:40:59 +03:00
|
|
|
"crates/semantic_index",
|
2024-03-29 19:11:57 +03:00
|
|
|
"crates/semantic_version",
|
2024-02-16 05:54:43 +03:00
|
|
|
"crates/settings",
|
|
|
|
"crates/snippet",
|
2024-07-09 15:02:36 +03:00
|
|
|
"crates/snippet_provider",
|
2024-02-16 05:54:43 +03:00
|
|
|
"crates/sqlez",
|
|
|
|
"crates/sqlez_macros",
|
|
|
|
"crates/story",
|
|
|
|
"crates/storybook",
|
|
|
|
"crates/sum_tree",
|
2024-05-03 22:50:42 +03:00
|
|
|
"crates/supermaven",
|
|
|
|
"crates/supermaven_api",
|
2024-06-28 02:14:13 +03:00
|
|
|
"crates/tab_switcher",
|
|
|
|
"crates/task",
|
|
|
|
"crates/tasks_ui",
|
|
|
|
"crates/telemetry_events",
|
2024-02-16 05:54:43 +03:00
|
|
|
"crates/terminal",
|
|
|
|
"crates/terminal_view",
|
|
|
|
"crates/text",
|
|
|
|
"crates/theme",
|
|
|
|
"crates/theme_importer",
|
|
|
|
"crates/theme_selector",
|
2024-02-24 05:18:06 +03:00
|
|
|
"crates/time_format",
|
2024-06-28 02:14:13 +03:00
|
|
|
"crates/title_bar",
|
2024-02-16 05:54:43 +03:00
|
|
|
"crates/ui",
|
2024-07-09 00:05:30 +03:00
|
|
|
"crates/ui_input",
|
2024-02-16 05:54:43 +03:00
|
|
|
"crates/util",
|
|
|
|
"crates/vcs_menu",
|
|
|
|
"crates/vim",
|
|
|
|
"crates/welcome",
|
|
|
|
"crates/workspace",
|
2024-03-11 21:35:27 +03:00
|
|
|
"crates/worktree",
|
2024-02-16 05:54:43 +03:00
|
|
|
"crates/zed",
|
|
|
|
"crates/zed_actions",
|
2024-03-09 01:18:06 +03:00
|
|
|
|
2024-03-27 01:50:08 +03:00
|
|
|
"extensions/astro",
|
2024-04-02 20:47:03 +03:00
|
|
|
"extensions/clojure",
|
2024-03-29 23:38:27 +03:00
|
|
|
"extensions/csharp",
|
2024-04-06 00:04:07 +03:00
|
|
|
"extensions/dart",
|
2024-04-24 03:44:11 +03:00
|
|
|
"extensions/deno",
|
Extract Elixir extension (#10948)
This PR extracts Elixir support into an extension and removes the
built-in Elixir support from Zed.
As part of this, [Lexical](https://github.com/lexical-lsp/lexical) has
been added as an available language server for Elixir.
Since the Elixir extension provides three different language servers,
you'll need to use the `language_servers` setting to select the one you
want to use:
#### Elixir LS
```json
{
"languages": {
"Elixir": {
"language_servers": [ "elixir-ls", "!next-ls", "!lexical", "..."]
}
}
}
```
#### Next LS
```json
{
"languages": {
"Elixir": {
"language_servers": [ "next-ls", "!elixir-ls", "!lexical", "..."]
}
}
}
```
#### Lexical
```json
{
"languages": {
"Elixir": {
"language_servers": [ "lexical", "!elixir-ls", "!next-ls", "..."]
}
}
}
```
These can either go in your user settings or your project settings.
Release Notes:
- Removed built-in support for Elixir, in favor of making it available
as an extension.
2024-04-25 20:59:14 +03:00
|
|
|
"extensions/elixir",
|
2024-04-11 20:23:49 +03:00
|
|
|
"extensions/elm",
|
2024-04-03 20:54:53 +03:00
|
|
|
"extensions/emmet",
|
2024-03-30 01:03:38 +03:00
|
|
|
"extensions/erlang",
|
2024-03-02 03:00:55 +03:00
|
|
|
"extensions/gleam",
|
2024-04-18 18:23:11 +03:00
|
|
|
"extensions/glsl",
|
2024-03-26 18:41:41 +03:00
|
|
|
"extensions/haskell",
|
2024-04-03 19:42:36 +03:00
|
|
|
"extensions/html",
|
2024-04-11 21:32:10 +03:00
|
|
|
"extensions/lua",
|
2024-04-12 01:20:19 +03:00
|
|
|
"extensions/ocaml",
|
2024-03-29 21:51:54 +03:00
|
|
|
"extensions/php",
|
2024-03-26 19:50:44 +03:00
|
|
|
"extensions/prisma",
|
2024-03-26 20:55:46 +03:00
|
|
|
"extensions/purescript",
|
2024-05-10 18:53:11 +03:00
|
|
|
"extensions/ruby",
|
2024-06-19 15:03:04 +03:00
|
|
|
"extensions/snippets",
|
2024-03-23 03:29:06 +03:00
|
|
|
"extensions/svelte",
|
2024-04-12 18:49:49 +03:00
|
|
|
"extensions/terraform",
|
2024-07-03 18:10:51 +03:00
|
|
|
"extensions/test-extension",
|
2024-03-29 01:40:12 +03:00
|
|
|
"extensions/toml",
|
2024-03-26 19:50:44 +03:00
|
|
|
"extensions/uiua",
|
2024-04-12 21:39:27 +03:00
|
|
|
"extensions/vue",
|
2024-03-28 03:56:30 +03:00
|
|
|
"extensions/zig",
|
2024-03-09 01:18:06 +03:00
|
|
|
|
2024-03-02 22:46:02 +03:00
|
|
|
"tooling/xtask",
|
2022-10-25 20:31:58 +03:00
|
|
|
]
|
2021-10-04 22:22:21 +03:00
|
|
|
default-members = ["crates/zed"]
|
2022-01-26 23:51:29 +03:00
|
|
|
resolver = "2"
|
2021-04-02 20:02:09 +03:00
|
|
|
|
2022-10-11 03:10:42 +03:00
|
|
|
[workspace.dependencies]
|
2024-02-06 22:41:36 +03:00
|
|
|
activity_indicator = { path = "crates/activity_indicator" }
|
|
|
|
ai = { path = "crates/ai" }
|
2024-04-01 00:57:57 +03:00
|
|
|
anthropic = { path = "crates/anthropic" }
|
2024-02-06 22:41:36 +03:00
|
|
|
assets = { path = "crates/assets" }
|
|
|
|
assistant = { path = "crates/assistant" }
|
2024-05-24 20:03:41 +03:00
|
|
|
assistant_slash_command = { path = "crates/assistant_slash_command" }
|
2024-04-24 02:23:26 +03:00
|
|
|
assistant_tooling = { path = "crates/assistant_tooling" }
|
2024-02-06 22:41:36 +03:00
|
|
|
audio = { path = "crates/audio" }
|
|
|
|
auto_update = { path = "crates/auto_update" }
|
|
|
|
breadcrumbs = { path = "crates/breadcrumbs" }
|
|
|
|
call = { path = "crates/call" }
|
|
|
|
channel = { path = "crates/channel" }
|
|
|
|
cli = { path = "crates/cli" }
|
|
|
|
client = { path = "crates/client" }
|
|
|
|
clock = { path = "crates/clock" }
|
|
|
|
collab = { path = "crates/collab" }
|
|
|
|
collab_ui = { path = "crates/collab_ui" }
|
|
|
|
collections = { path = "crates/collections" }
|
|
|
|
command_palette = { path = "crates/command_palette" }
|
2024-02-25 21:21:20 +03:00
|
|
|
command_palette_hooks = { path = "crates/command_palette_hooks" }
|
2024-02-06 22:41:36 +03:00
|
|
|
copilot = { path = "crates/copilot" }
|
|
|
|
db = { path = "crates/db" }
|
2024-06-28 02:14:13 +03:00
|
|
|
dev_server_projects = { path = "crates/dev_server_projects" }
|
2024-02-06 22:41:36 +03:00
|
|
|
diagnostics = { path = "crates/diagnostics" }
|
|
|
|
editor = { path = "crates/editor" }
|
2024-02-07 23:14:50 +03:00
|
|
|
extension = { path = "crates/extension" }
|
2024-02-13 22:09:02 +03:00
|
|
|
extensions_ui = { path = "crates/extensions_ui" }
|
2024-02-06 22:41:36 +03:00
|
|
|
feature_flags = { path = "crates/feature_flags" }
|
|
|
|
feedback = { path = "crates/feedback" }
|
|
|
|
file_finder = { path = "crates/file_finder" }
|
2024-03-29 23:55:01 +03:00
|
|
|
file_icons = { path = "crates/file_icons" }
|
2024-02-06 22:41:36 +03:00
|
|
|
fs = { path = "crates/fs" }
|
|
|
|
fsevent = { path = "crates/fsevent" }
|
|
|
|
fuzzy = { path = "crates/fuzzy" }
|
|
|
|
git = { path = "crates/git" }
|
2024-05-07 04:24:48 +03:00
|
|
|
git_hosting_providers = { path = "crates/git_hosting_providers" }
|
2024-02-06 22:41:36 +03:00
|
|
|
go_to_line = { path = "crates/go_to_line" }
|
2024-03-19 21:22:26 +03:00
|
|
|
google_ai = { path = "crates/google_ai" }
|
2024-02-06 22:41:36 +03:00
|
|
|
gpui = { path = "crates/gpui" }
|
|
|
|
gpui_macros = { path = "crates/gpui_macros" }
|
2024-04-12 00:36:35 +03:00
|
|
|
headless = { path = "crates/headless" }
|
2024-06-04 23:14:26 +03:00
|
|
|
html_to_markdown = { path = "crates/html_to_markdown" }
|
2024-05-11 00:50:20 +03:00
|
|
|
http = { path = "crates/http" }
|
2024-03-19 20:13:10 +03:00
|
|
|
image_viewer = { path = "crates/image_viewer" }
|
2024-07-02 20:14:56 +03:00
|
|
|
indexed_docs = { path = "crates/indexed_docs" }
|
2024-05-03 22:50:42 +03:00
|
|
|
inline_completion_button = { path = "crates/inline_completion_button" }
|
2024-06-28 02:14:13 +03:00
|
|
|
install_cli = { path = "crates/install_cli" }
|
2024-02-06 22:41:36 +03:00
|
|
|
journal = { path = "crates/journal" }
|
|
|
|
language = { path = "crates/language" }
|
|
|
|
language_selector = { path = "crates/language_selector" }
|
|
|
|
language_tools = { path = "crates/language_tools" }
|
2024-02-25 20:02:59 +03:00
|
|
|
languages = { path = "crates/languages" }
|
2024-02-06 22:41:36 +03:00
|
|
|
live_kit_client = { path = "crates/live_kit_client" }
|
|
|
|
live_kit_server = { path = "crates/live_kit_server" }
|
|
|
|
lsp = { path = "crates/lsp" }
|
2024-05-09 12:03:33 +03:00
|
|
|
markdown = { path = "crates/markdown" }
|
2024-02-06 22:41:36 +03:00
|
|
|
markdown_preview = { path = "crates/markdown_preview" }
|
|
|
|
media = { path = "crates/media" }
|
|
|
|
menu = { path = "crates/menu" }
|
|
|
|
multi_buffer = { path = "crates/multi_buffer" }
|
|
|
|
node_runtime = { path = "crates/node_runtime" }
|
|
|
|
notifications = { path = "crates/notifications" }
|
2024-06-12 03:35:27 +03:00
|
|
|
ollama = { path = "crates/ollama" }
|
2024-03-19 21:22:26 +03:00
|
|
|
open_ai = { path = "crates/open_ai" }
|
2024-02-06 22:41:36 +03:00
|
|
|
outline = { path = "crates/outline" }
|
2024-06-12 23:22:52 +03:00
|
|
|
outline_panel = { path = "crates/outline_panel" }
|
2024-06-18 02:27:42 +03:00
|
|
|
paths = { path = "crates/paths" }
|
2024-02-06 22:41:36 +03:00
|
|
|
picker = { path = "crates/picker" }
|
|
|
|
plugin = { path = "crates/plugin" }
|
|
|
|
plugin_macros = { path = "crates/plugin_macros" }
|
|
|
|
prettier = { path = "crates/prettier" }
|
|
|
|
project = { path = "crates/project" }
|
|
|
|
project_panel = { path = "crates/project_panel" }
|
|
|
|
project_symbols = { path = "crates/project_symbols" }
|
2024-06-28 02:14:13 +03:00
|
|
|
proto = { path = "crates/proto" }
|
2024-02-06 22:41:36 +03:00
|
|
|
quick_action_bar = { path = "crates/quick_action_bar" }
|
|
|
|
recent_projects = { path = "crates/recent_projects" }
|
|
|
|
release_channel = { path = "crates/release_channel" }
|
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:
* https://github.com/zed-industries/zed/issues/7646
* https://github.com/zed-industries/zed/issues/7808
* https://github.com/zed-industries/zed/issues/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
2024-06-17 20:02:31 +03:00
|
|
|
repl = { path = "crates/repl" }
|
2024-02-06 22:41:36 +03:00
|
|
|
rich_text = { path = "crates/rich_text" }
|
|
|
|
rope = { path = "crates/rope" }
|
|
|
|
rpc = { path = "crates/rpc" }
|
|
|
|
search = { path = "crates/search" }
|
2024-04-24 02:23:26 +03:00
|
|
|
semantic_index = { path = "crates/semantic_index" }
|
2024-03-29 19:11:57 +03:00
|
|
|
semantic_version = { path = "crates/semantic_version" }
|
2024-02-06 22:41:36 +03:00
|
|
|
settings = { path = "crates/settings" }
|
|
|
|
snippet = { path = "crates/snippet" }
|
2024-07-09 15:02:36 +03:00
|
|
|
snippet_provider = { path = "crates/snippet_provider" }
|
2024-02-06 22:41:36 +03:00
|
|
|
sqlez = { path = "crates/sqlez" }
|
|
|
|
sqlez_macros = { path = "crates/sqlez_macros" }
|
|
|
|
story = { path = "crates/story" }
|
|
|
|
storybook = { path = "crates/storybook" }
|
|
|
|
sum_tree = { path = "crates/sum_tree" }
|
2024-06-28 02:14:13 +03:00
|
|
|
supermaven = { path = "crates/supermaven" }
|
|
|
|
supermaven_api = { path = "crates/supermaven_api" }
|
Add tab switcher (#7987)
The Tab Switcher implementation (#7653):
- `ctrl-tab` opens the Tab Switcher and moves selection to the
previously selcted tab. It also cycles selection forward.
- `ctrl-shift-tab` opens the Tab Switcher and moves selection to the
last tab in the list. It also cycles selection backward.
- Tab is selected and the Tab Switcher is closed on the shortcut
modifier key (`ctrl` by default) release.
- List items are in reverse activation history order.
- The list reacts to the item changes in background (new tab, tab
closed, tab title changed etc.)
Intentionally not in scope of this PR:
- File icons
- Close buttons
I will come back to these features. I think they need to be implemented
in separate PRs, and be synchronized with changes in how tabs are
rendered, to reuse the code as it's done in the current implementation.
The Tab Switcher looks usable even without them.
Known Issues:
Tab Switcher doesn't react to mouse click on a list item. It's not a tab
switcher specific problem, it looks like ctrl-clicks are not handled the
same way in Zed as cmd-clicks. For instance, menu items can be activated
with cmd-click, but don't react to ctrl-click. Since the Tab Switcher's
default keybinding is `ctrl-tab`, the user can only click an item with
`ctrl` pushed down, thus preventing `on_click()` from firing.
fixes #7653, #7321
Release Notes:
- Added Tab Switcher which is accessible via `ctrl-tab` and
`ctrl-shift-tab` (#7653) (#7321)
Related issues:
- Unblocks #7356, I hope 😄
How it looks and works (it's only `ctrl-tab`'s and `ctrl-shift-tab`'s,
no `enter`'s or mouse clicks):
https://github.com/zed-industries/zed/assets/2101250/4ad4ec6a-5314-481b-8b35-7ac85e43eb92
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Co-authored-by: Mikayla Maki <mikayla@zed.dev>
2024-03-27 21:15:08 +03:00
|
|
|
tab_switcher = { path = "crates/tab_switcher" }
|
2024-06-28 02:14:13 +03:00
|
|
|
task = { path = "crates/task" }
|
|
|
|
tasks_ui = { path = "crates/tasks_ui" }
|
|
|
|
telemetry_events = { path = "crates/telemetry_events" }
|
2024-02-06 22:41:36 +03:00
|
|
|
terminal = { path = "crates/terminal" }
|
|
|
|
terminal_view = { path = "crates/terminal_view" }
|
|
|
|
text = { path = "crates/text" }
|
|
|
|
theme = { path = "crates/theme" }
|
|
|
|
theme_importer = { path = "crates/theme_importer" }
|
|
|
|
theme_selector = { path = "crates/theme_selector" }
|
2024-02-24 05:18:06 +03:00
|
|
|
time_format = { path = "crates/time_format" }
|
2024-06-28 02:14:13 +03:00
|
|
|
title_bar = { path = "crates/title_bar" }
|
2024-02-06 22:41:36 +03:00
|
|
|
ui = { path = "crates/ui" }
|
2024-07-09 00:05:30 +03:00
|
|
|
ui_input = { path = "crates/ui_input" }
|
2024-02-06 22:41:36 +03:00
|
|
|
util = { path = "crates/util" }
|
|
|
|
vcs_menu = { path = "crates/vcs_menu" }
|
|
|
|
vim = { path = "crates/vim" }
|
|
|
|
welcome = { path = "crates/welcome" }
|
|
|
|
workspace = { path = "crates/workspace" }
|
2024-06-28 02:14:13 +03:00
|
|
|
worktree = { path = "crates/worktree" }
|
2024-02-06 22:41:36 +03:00
|
|
|
zed = { path = "crates/zed" }
|
|
|
|
zed_actions = { path = "crates/zed_actions" }
|
|
|
|
|
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:
* https://github.com/zed-industries/zed/issues/7646
* https://github.com/zed-industries/zed/issues/7808
* https://github.com/zed-industries/zed/issues/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
2024-06-17 20:02:31 +03:00
|
|
|
alacritty_terminal = "0.23"
|
2024-04-03 13:21:17 +03:00
|
|
|
any_vec = "0.13"
|
2024-07-02 20:30:55 +03:00
|
|
|
anyhow = "1.0.57"
|
2024-07-09 01:29:13 +03:00
|
|
|
ashpd = { git = "https://github.com/bilelmoussaoui/ashpd", rev = "29f2e1a" }
|
2024-01-27 04:22:31 +03:00
|
|
|
async-compression = { version = "0.4", features = ["gzip", "futures-io"] }
|
2024-07-09 01:29:13 +03:00
|
|
|
async-dispatcher = { version = "0.1" }
|
2024-03-13 02:37:10 +03:00
|
|
|
async-fs = "1.6"
|
2024-03-12 13:54:12 +03:00
|
|
|
async-recursion = "1.0.0"
|
2024-02-13 22:09:02 +03:00
|
|
|
async-tar = "0.4.2"
|
2024-01-31 05:41:29 +03:00
|
|
|
async-trait = "0.1"
|
2024-07-02 20:30:55 +03:00
|
|
|
async-watch = "0.3.1"
|
2024-05-09 16:23:21 +03:00
|
|
|
async_zip = { version = "0.0.17", features = ["deflate", "deflate64"] }
|
2024-07-02 20:30:55 +03:00
|
|
|
base64 = "0.13"
|
2024-07-12 01:04:46 +03:00
|
|
|
bitflags = "2.6.0"
|
|
|
|
blade-graphics = { git = "https://github.com/zed-industries/blade", rev = "a477c2008db27db0b9f745715e119b3ee7ab7818" }
|
|
|
|
blade-macros = { git = "https://github.com/zed-industries/blade", rev = "a477c2008db27db0b9f745715e119b3ee7ab7818" }
|
|
|
|
blade-util = { git = "https://github.com/zed-industries/blade", rev = "a477c2008db27db0b9f745715e119b3ee7ab7818" }
|
2024-03-23 03:29:06 +03:00
|
|
|
cap-std = "3.0"
|
2024-05-14 01:52:12 +03:00
|
|
|
cargo_toml = "0.20"
|
2024-01-23 00:11:24 +03:00
|
|
|
chrono = { version = "0.4", features = ["serde"] }
|
2024-03-18 22:00:37 +03:00
|
|
|
clap = { version = "4.4", features = ["derive"] }
|
2024-02-23 19:13:28 +03:00
|
|
|
clickhouse = { version = "0.11.6" }
|
2024-06-11 21:43:12 +03:00
|
|
|
cocoa = "0.25"
|
2024-02-24 05:18:06 +03:00
|
|
|
core-foundation = { version = "0.9.3" }
|
|
|
|
core-foundation-sys = "0.8.6"
|
2024-07-02 20:30:55 +03:00
|
|
|
ctor = "0.2.6"
|
|
|
|
dashmap = "5.5.3"
|
2024-01-31 05:41:29 +03:00
|
|
|
derive_more = "0.99.17"
|
2024-06-18 02:27:42 +03:00
|
|
|
dirs = "4.0"
|
2024-03-07 05:18:29 +03:00
|
|
|
emojis = "0.6.1"
|
2024-01-31 05:41:29 +03:00
|
|
|
env_logger = "0.9"
|
2024-05-10 06:08:49 +03:00
|
|
|
exec = "0.3.1"
|
|
|
|
fork = "0.1.23"
|
2024-01-31 05:41:29 +03:00
|
|
|
futures = "0.3"
|
2024-04-12 20:40:59 +03:00
|
|
|
futures-batch = "0.6.1"
|
2024-03-13 02:37:10 +03:00
|
|
|
futures-lite = "1.13"
|
2024-06-18 02:31:42 +03:00
|
|
|
git2 = { version = "0.19", default-features = false }
|
2024-01-31 05:41:29 +03:00
|
|
|
globset = "0.4"
|
2024-05-30 00:15:29 +03:00
|
|
|
heed = { version = "0.20.1", features = ["read-txn-no-tls"] }
|
2024-02-23 19:13:28 +03:00
|
|
|
hex = "0.4.3"
|
2024-05-29 23:05:16 +03:00
|
|
|
html5ever = "0.27.0"
|
2024-02-27 00:09:22 +03:00
|
|
|
ignore = "0.4.22"
|
2024-06-25 16:12:45 +03:00
|
|
|
image = "0.25.1"
|
2024-06-11 22:31:55 +03:00
|
|
|
indexmap = { version = "1.6.2", features = ["serde"] }
|
2023-05-23 08:11:22 +03:00
|
|
|
indoc = "1"
|
2024-02-26 04:37:52 +03:00
|
|
|
# We explicitly disable http2 support in isahc.
|
2024-07-09 01:29:13 +03:00
|
|
|
isahc = { version = "1.7.2", default-features = false, features = [
|
|
|
|
"text-decoding",
|
|
|
|
] }
|
2024-02-26 04:37:52 +03:00
|
|
|
itertools = "0.11.0"
|
2024-01-31 05:41:29 +03:00
|
|
|
lazy_static = "1.4.0"
|
2024-05-10 06:08:49 +03:00
|
|
|
libc = "0.2"
|
2024-02-20 07:49:47 +03:00
|
|
|
linkify = "0.10.0"
|
2023-04-25 03:41:55 +03:00
|
|
|
log = { version = "0.4.16", features = ["kv_unstable_serde"] }
|
2024-05-29 23:05:16 +03:00
|
|
|
markup5ever_rcdom = "0.3.0"
|
2024-04-26 05:37:40 +03:00
|
|
|
nanoid = "0.4"
|
2024-04-30 03:13:28 +03:00
|
|
|
nix = "0.28"
|
2024-06-10 21:19:17 +03:00
|
|
|
num-format = "0.4.4"
|
2024-05-10 06:08:49 +03:00
|
|
|
once_cell = "1.19.0"
|
2024-01-31 05:41:29 +03:00
|
|
|
ordered-float = "2.1.1"
|
2024-02-28 00:29:27 +03:00
|
|
|
palette = { version = "0.7.5", default-features = false, features = ["std"] }
|
2024-03-13 02:10:49 +03:00
|
|
|
parking_lot = "0.12.1"
|
2024-05-24 17:04:24 +03:00
|
|
|
pathdiff = "0.2"
|
2024-02-22 21:59:52 +03:00
|
|
|
profiling = "1"
|
2023-04-25 03:41:55 +03:00
|
|
|
postage = { version = "0.5", features = ["futures-traits"] }
|
2024-01-31 05:41:29 +03:00
|
|
|
pretty_assertions = "1.3.0"
|
2024-03-19 05:33:20 +03:00
|
|
|
prost = "0.9"
|
|
|
|
prost-build = "0.9"
|
|
|
|
prost-types = "0.9"
|
2024-02-26 22:04:48 +03:00
|
|
|
pulldown-cmark = { version = "0.10.0", default-features = false }
|
2024-01-31 05:41:29 +03:00
|
|
|
rand = "0.8.5"
|
2023-08-18 10:03:46 +03:00
|
|
|
refineable = { path = "./crates/refineable" }
|
2024-01-31 05:41:29 +03:00
|
|
|
regex = "1.5"
|
2024-05-10 01:57:14 +03:00
|
|
|
repair_json = "0.1.0"
|
2024-07-09 01:29:13 +03:00
|
|
|
runtimelib = { version = "0.12", default-features = false, features = [
|
|
|
|
"async-dispatcher-runtime",
|
|
|
|
] }
|
2023-10-03 22:16:53 +03:00
|
|
|
rusqlite = { version = "0.29.0", features = ["blob", "array", "modern_sqlite"] }
|
2024-05-11 11:10:13 +03:00
|
|
|
rust-embed = { version = "8.4", features = ["include-exclude"] }
|
2024-01-31 05:41:29 +03:00
|
|
|
schemars = "0.8"
|
2024-02-16 05:54:43 +03:00
|
|
|
semver = "1.0"
|
2022-10-11 03:10:42 +03:00
|
|
|
serde = { version = "1.0", features = ["derive", "rc"] }
|
2023-03-17 17:39:24 +03:00
|
|
|
serde_derive = { version = "1.0", features = ["deserialize_in_place"] }
|
2022-10-11 03:10:42 +03:00
|
|
|
serde_json = { version = "1.0", features = ["preserve_order", "raw_value"] }
|
2024-03-06 23:48:43 +03:00
|
|
|
serde_json_lenient = { version = "0.1", features = [
|
|
|
|
"preserve_order",
|
|
|
|
"raw_value",
|
|
|
|
] }
|
2024-01-27 06:40:31 +03:00
|
|
|
serde_repr = "0.1"
|
2024-02-23 19:13:28 +03:00
|
|
|
sha2 = "0.10"
|
2024-02-25 20:02:59 +03:00
|
|
|
shellexpand = "2.1.0"
|
2024-05-22 07:39:16 +03:00
|
|
|
shlex = "1.3.0"
|
2024-06-18 02:27:42 +03:00
|
|
|
signal-hook = "0.3.17"
|
2024-06-11 13:39:45 +03:00
|
|
|
similar = "1.3"
|
2024-07-12 01:04:46 +03:00
|
|
|
simplelog = "0.12.2"
|
2023-04-20 10:11:45 +03:00
|
|
|
smallvec = { version = "1.6", features = ["union"] }
|
2024-01-31 05:41:29 +03:00
|
|
|
smol = "1.2"
|
2023-10-05 00:16:32 +03:00
|
|
|
strum = { version = "0.25.0", features = ["derive"] }
|
2024-03-07 06:51:43 +03:00
|
|
|
subtle = "2.5.0"
|
2024-03-12 22:27:40 +03:00
|
|
|
sysinfo = "0.30.7"
|
2024-01-31 05:41:29 +03:00
|
|
|
tempfile = "3.9.0"
|
|
|
|
thiserror = "1.0.29"
|
2024-05-16 14:09:28 +03:00
|
|
|
tiktoken-rs = "0.5.9"
|
2024-03-06 23:48:43 +03:00
|
|
|
time = { version = "0.3", features = [
|
Add `git blame` (#8889)
This adds a new action to the editor: `editor: toggle git blame`. When
used it turns on a sidebar containing `git blame` information for the
currently open buffer.
The git blame information is updated when the buffer changes. It handles
additions, deletions, modifications, changes to the underlying git data
(new commits, changed commits, ...), file saves. It also handles folding
and wrapping lines correctly.
When the user hovers over a commit, a tooltip displays information for
the commit that introduced the line. If the repository has a remote with
the name `origin` configured, then clicking on a blame entry opens the
permalink to the commit on the code host.
Users can right-click on a blame entry to get a context menu which
allows them to copy the SHA of the commit.
The feature also works on shared projects, e.g. when collaborating a
peer can request `git blame` data.
As of this PR, Zed now comes bundled with a `git` binary so that users
don't have to have `git` installed locally to use this feature.
### Screenshots
![screenshot-2024-03-28-13 57
43@2x](https://github.com/zed-industries/zed/assets/1185253/ee8ec55d-3b5e-4d63-a85a-852da914f5ba)
![screenshot-2024-03-28-14 01
23@2x](https://github.com/zed-industries/zed/assets/1185253/2ba8efd7-e887-4076-a87a-587a732b9e9a)
![screenshot-2024-03-28-14 01
32@2x](https://github.com/zed-industries/zed/assets/1185253/496f4a06-b189-4881-b427-2289ae6e6075)
### TODOs
- [x] Bundling `git` binary
### Release Notes
Release Notes:
- Added `editor: toggle git blame` command that toggles a sidebar with
git blame information for the current buffer.
---------
Co-authored-by: Antonio <antonio@zed.dev>
Co-authored-by: Piotr <piotr@zed.dev>
Co-authored-by: Bennet <bennetbo@gmx.de>
Co-authored-by: Mikayla <mikayla@zed.dev>
2024-03-28 20:32:11 +03:00
|
|
|
"macros",
|
|
|
|
"parsing",
|
2024-03-06 23:48:43 +03:00
|
|
|
"serde",
|
|
|
|
"serde-well-known",
|
|
|
|
"formatting",
|
|
|
|
] }
|
2024-02-17 01:43:40 +03:00
|
|
|
toml = "0.8"
|
2024-03-19 17:50:21 +03:00
|
|
|
tokio = { version = "1", features = ["full"] }
|
2024-02-23 22:50:06 +03:00
|
|
|
tower-http = "0.4.4"
|
2024-02-25 11:35:19 +03:00
|
|
|
tree-sitter = { version = "0.20", features = ["wasm"] }
|
2024-05-28 00:32:51 +03:00
|
|
|
tree-sitter-bash = "0.20.5"
|
2023-07-14 04:09:32 +03:00
|
|
|
tree-sitter-c = "0.20.1"
|
2024-05-28 00:32:51 +03:00
|
|
|
tree-sitter-cpp = "0.20.5"
|
|
|
|
tree-sitter-css = "0.20"
|
|
|
|
tree-sitter-elixir = "0.1.1"
|
2023-07-14 04:09:32 +03:00
|
|
|
tree-sitter-embedded-template = "0.20.0"
|
2024-05-19 21:06:40 +03:00
|
|
|
tree-sitter-go = { git = "https://github.com/tree-sitter/tree-sitter-go", rev = "b82ab803d887002a0af11f6ce63d72884580bf33" }
|
2024-05-28 00:32:51 +03:00
|
|
|
tree-sitter-gomod = "1.0.1"
|
2024-01-31 22:11:03 +03:00
|
|
|
tree-sitter-gowork = { git = "https://github.com/d1y/tree-sitter-go-work" }
|
2024-03-01 23:23:44 +03:00
|
|
|
rustc-demangle = "0.1.23"
|
2023-07-14 04:09:32 +03:00
|
|
|
tree-sitter-heex = { git = "https://github.com/phoenixframework/tree-sitter-heex", rev = "2e1348c3cf2c9323e87c2744796cf3f3868aa82a" }
|
2024-01-31 05:41:29 +03:00
|
|
|
tree-sitter-html = "0.19.0"
|
2024-04-26 15:31:04 +03:00
|
|
|
tree-sitter-jsdoc = { git = "https://github.com/tree-sitter/tree-sitter-jsdoc", rev = "6a6cf9e7341af32d8e2b2e24a37fbfebefc3dc55" }
|
2024-05-28 00:32:51 +03:00
|
|
|
tree-sitter-json = "0.20.2"
|
2023-07-14 04:09:32 +03:00
|
|
|
tree-sitter-markdown = { git = "https://github.com/MDeiml/tree-sitter-markdown", rev = "330ecab87a3e3a7211ac69bbadc19eabecdb1cca" }
|
2024-02-02 17:58:07 +03:00
|
|
|
tree-sitter-proto = { git = "https://github.com/rewinfrey/tree-sitter-proto", rev = "36d54f288aee112f13a67b550ad32634d0c2cb52" }
|
2023-07-14 04:09:32 +03:00
|
|
|
tree-sitter-python = "0.20.2"
|
2024-03-18 18:49:01 +03:00
|
|
|
tree-sitter-regex = "0.20.0"
|
2023-07-14 04:09:32 +03:00
|
|
|
tree-sitter-ruby = "0.20.0"
|
2024-01-31 05:41:29 +03:00
|
|
|
tree-sitter-rust = "0.20.3"
|
2024-05-28 00:32:51 +03:00
|
|
|
tree-sitter-typescript = "0.20.5"
|
|
|
|
tree-sitter-yaml = "0.0.1"
|
2024-01-31 05:41:29 +03:00
|
|
|
unindent = "0.1.7"
|
2024-02-28 12:03:34 +03:00
|
|
|
unicase = "2.6"
|
Fix caret movement issue for some special characters (#10198)
Currently in Zed, certain characters require pressing the key twice to
move the caret through that character. For example: "❤️" and "y̆".
The reason for this is as follows:
Currently, Zed uses `chars` to distinguish different characters, and
calling `chars` on `y̆` will yield two `char` values: `y` and `\u{306}`,
and calling `chars` on `❤️` will yield two `char` values: `❤` and
`\u{fe0f}`.
Therefore, consider the following scenario (where ^ represents the
caret):
- what we see: ❤️ ^
- the actual buffer: ❤ \u{fe0f} ^
After pressing the left arrow key once:
- what we see: ❤️ ^
- the actual buffer: ❤ ^ \u{fe0f}
After pressing the left arrow key again:
- what we see: ^ ❤️
- the actual buffer: ^ ❤ \u{fe0f}
Thus, two left arrow key presses are needed to move the caret, and this
PR fixes this bug (or this is actually a feature?).
I have tried to keep the scope of code modifications as minimal as
possible. In this PR, Zed handles such characters as follows:
- what we see: ❤️ ^
- the actual buffer: ❤ \u{fe0f} ^
After pressing the left arrow key once:
- what we see: ^ ❤️
- the actual buffer: ^ ❤ \u{fe0f}
Or after pressing the delete key:
- what we see: ^
- the actual buffer: ^
Please note that currently, different platforms and software handle
these special characters differently, and even the same software may
handle these characters differently in different situations. For
example, in my testing on Chrome on macOS, GitHub treats `y̆` as a
single character, just like in this PR; however, in Rust Playground,
`y̆` is treated as two characters, and pressing the delete key does not
delete the entire `y̆` character, but instead deletes `\u{306}` to yield
the character `y`. And they both treat `❤️` as a single character,
pressing the delete key will delete the entire `❤️` character.
This PR is based on the principle of making changes with the smallest
impact on the code, and I think that deleting the entire character with
the delete key is more intuitive.
Release Notes:
- Fix caret movement issue for some special characters
---------
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Co-authored-by: Thorsten <thorsten@zed.dev>
Co-authored-by: Bennet <bennetbo@gmx.de>
2024-04-10 22:01:25 +03:00
|
|
|
unicode-segmentation = "1.10"
|
2024-01-31 05:41:29 +03:00
|
|
|
url = "2.2"
|
2024-05-23 01:04:47 +03:00
|
|
|
uuid = { version = "1.1.2", features = ["v4", "v5", "serde"] }
|
2024-03-23 03:29:06 +03:00
|
|
|
wasmparser = "0.201"
|
|
|
|
wasm-encoder = "0.201"
|
|
|
|
wasmtime = { version = "19.0.0", default-features = false, features = [
|
windows: Better keyboard input support (#9180)
### Description
Currently, there are some issues with input handling on Windows:
#### 1. Direct crash when encountering IME input.
https://github.com/zed-industries/zed/assets/14981363/598f7272-1948-4a42-99c5-2ef7b9162a1e
#### 2. Handling messages every 1/60 seconds in the main thread. Despite
being named "immediate_handle," it's not exactly immediate.
```rust
// actually halt here
let wait_result =
unsafe { DCompositionWaitForCompositorClock(Some(&[self.inner.event]), INFINITE) };
// compositor clock ticked so we should draw a frame
if wait_result == 1 {
unsafe { invalidate_thread_windows(GetCurrentThreadId()) };
while unsafe { PeekMessageW(&mut msg, HWND::default(), 0, 0, PM_REMOVE) }.as_bool()
```
#### 3. According to Windows recommendations, character input should be
obtained using `WM_CHAR` instead of `WM_KEYDOWN`. Additionally, there
are problems with the handling within `WM_CHAR`.
```rust
fn handle_char_msg(&self, wparam: WPARAM) -> LRESULT {
let mut callbacks = self.callbacks.borrow_mut();
if let Some(callback) = callbacks.input.as_mut() {
let modifiers = self.current_modifiers();
let msg_char = wparam.0 as u8 as char; // these are u16 chars, cant treat them as u8
```
And, we don't handle `WM_SYSKEYDOWN` properly, which leads to `Alt + F4`
not working.
Release Notes:
- N/A
2024-03-13 22:10:22 +03:00
|
|
|
"async",
|
|
|
|
"demangle",
|
|
|
|
"runtime",
|
|
|
|
"cranelift",
|
|
|
|
"component-model",
|
|
|
|
] }
|
2024-03-23 03:29:06 +03:00
|
|
|
wasmtime-wasi = "19.0.0"
|
Detect and possibly use user-installed `gopls` / `zls` language servers (#8188)
After a lot of back-and-forth, this is a small attempt to implement
solutions (1) and (3) in
https://github.com/zed-industries/zed/issues/7902. The goal is to have a
minimal change that helps users get started with Zed, until we have
extensions ready.
Release Notes:
- Added detection of user-installed `gopls` to Go language server
adapter. If a user has `gopls` in `$PATH` when opening a worktree, it
will be used.
- Added detection of user-installed `zls` to Zig language server
adapter. If a user has `zls` in `$PATH` when opening a worktree, it will
be used.
Example:
I don't have `go` installed globally, but I do have `gopls`:
```
~ $ which go
go not found
~ $ which gopls
/Users/thorstenball/code/go/bin/gopls
```
But I do have `go` in a project's directory:
```
~/tmp/go-testing φ which go
/Users/thorstenball/.local/share/mise/installs/go/1.21.5/go/bin/go
~/tmp/go-testing φ which gopls
/Users/thorstenball/code/go/bin/gopls
```
With current Zed when I run `zed ~/tmp/go-testing`, I'd get the dreaded
error:
![screenshot-2024-02-23-11 14
08@2x](https://github.com/zed-industries/zed/assets/1185253/822ea59b-c63e-4102-a50e-75501cc4e0e3)
But with the changes in this PR, it works:
```
[2024-02-23T11:14:42+01:00 INFO language::language_registry] starting language server "gopls", path: "/Users/thorstenball/tmp/go-testing", id: 1
[2024-02-23T11:14:42+01:00 INFO language::language_registry] found user-installed language server for Go. path: "/Users/thorstenball/code/go/bin/gopls", arguments: ["-mode=stdio"]
[2024-02-23T11:14:42+01:00 INFO lsp] starting language server. binary path: "/Users/thorstenball/code/go/bin/gopls", working directory: "/Users/thorstenball/tmp/go-testing", args: ["-mode=stdio"]
```
---------
Co-authored-by: Antonio <antonio@zed.dev>
2024-02-23 15:39:14 +03:00
|
|
|
which = "6.0.0"
|
2024-03-23 03:29:06 +03:00
|
|
|
wit-component = "0.201"
|
2024-02-17 18:44:28 +03:00
|
|
|
sys-locale = "0.3.1"
|
2023-11-28 00:16:50 +03:00
|
|
|
|
2024-03-03 22:58:31 +03:00
|
|
|
[workspace.dependencies.windows]
|
2024-06-14 20:12:20 +03:00
|
|
|
version = "0.57"
|
2024-03-03 22:58:31 +03:00
|
|
|
features = [
|
2024-03-08 02:59:48 +03:00
|
|
|
"implement",
|
2024-04-18 21:58:46 +03:00
|
|
|
"Foundation_Numerics",
|
2024-05-10 00:24:57 +03:00
|
|
|
"System",
|
|
|
|
"System_Threading",
|
2024-06-13 20:52:53 +03:00
|
|
|
"UI_ViewManagement",
|
2024-03-06 23:48:43 +03:00
|
|
|
"Wdk_System_SystemServices",
|
2024-03-15 01:29:25 +03:00
|
|
|
"Win32_Globalization",
|
2024-04-18 21:58:46 +03:00
|
|
|
"Win32_Graphics_Direct2D",
|
|
|
|
"Win32_Graphics_Direct2D_Common",
|
2024-03-15 20:40:58 +03:00
|
|
|
"Win32_Graphics_DirectWrite",
|
2024-05-15 20:45:17 +03:00
|
|
|
"Win32_Graphics_Dwm",
|
2024-04-18 21:58:46 +03:00
|
|
|
"Win32_Graphics_Dxgi_Common",
|
2024-03-16 03:17:26 +03:00
|
|
|
"Win32_Graphics_Gdi",
|
2024-04-18 21:58:46 +03:00
|
|
|
"Win32_Graphics_Imaging",
|
|
|
|
"Win32_Graphics_Imaging_D2D",
|
2024-03-03 22:58:31 +03:00
|
|
|
"Win32_Security",
|
2024-03-18 20:16:29 +03:00
|
|
|
"Win32_Security_Credentials",
|
2024-03-14 20:43:06 +03:00
|
|
|
"Win32_Storage_FileSystem",
|
2024-03-19 22:40:57 +03:00
|
|
|
"Win32_System_LibraryLoader",
|
2024-03-08 02:59:48 +03:00
|
|
|
"Win32_System_Com",
|
|
|
|
"Win32_System_Com_StructuredStorage",
|
2024-03-05 19:35:07 +03:00
|
|
|
"Win32_System_DataExchange",
|
2024-03-16 03:17:26 +03:00
|
|
|
"Win32_System_LibraryLoader",
|
2024-07-15 05:40:41 +03:00
|
|
|
"Win32_System_Memory",
|
2024-03-05 19:35:07 +03:00
|
|
|
"Win32_System_Ole",
|
windows: Better keyboard input support (#9180)
### Description
Currently, there are some issues with input handling on Windows:
#### 1. Direct crash when encountering IME input.
https://github.com/zed-industries/zed/assets/14981363/598f7272-1948-4a42-99c5-2ef7b9162a1e
#### 2. Handling messages every 1/60 seconds in the main thread. Despite
being named "immediate_handle," it's not exactly immediate.
```rust
// actually halt here
let wait_result =
unsafe { DCompositionWaitForCompositorClock(Some(&[self.inner.event]), INFINITE) };
// compositor clock ticked so we should draw a frame
if wait_result == 1 {
unsafe { invalidate_thread_windows(GetCurrentThreadId()) };
while unsafe { PeekMessageW(&mut msg, HWND::default(), 0, 0, PM_REMOVE) }.as_bool()
```
#### 3. According to Windows recommendations, character input should be
obtained using `WM_CHAR` instead of `WM_KEYDOWN`. Additionally, there
are problems with the handling within `WM_CHAR`.
```rust
fn handle_char_msg(&self, wparam: WPARAM) -> LRESULT {
let mut callbacks = self.callbacks.borrow_mut();
if let Some(callback) = callbacks.input.as_mut() {
let modifiers = self.current_modifiers();
let msg_char = wparam.0 as u8 as char; // these are u16 chars, cant treat them as u8
```
And, we don't handle `WM_SYSKEYDOWN` properly, which leads to `Alt + F4`
not working.
Release Notes:
- N/A
2024-03-13 22:10:22 +03:00
|
|
|
"Win32_System_SystemInformation",
|
|
|
|
"Win32_System_SystemServices",
|
|
|
|
"Win32_System_Threading",
|
2024-03-16 03:17:26 +03:00
|
|
|
"Win32_System_Time",
|
2024-05-10 00:24:57 +03:00
|
|
|
"Win32_System_WinRT",
|
windows: Better keyboard input support (#9180)
### Description
Currently, there are some issues with input handling on Windows:
#### 1. Direct crash when encountering IME input.
https://github.com/zed-industries/zed/assets/14981363/598f7272-1948-4a42-99c5-2ef7b9162a1e
#### 2. Handling messages every 1/60 seconds in the main thread. Despite
being named "immediate_handle," it's not exactly immediate.
```rust
// actually halt here
let wait_result =
unsafe { DCompositionWaitForCompositorClock(Some(&[self.inner.event]), INFINITE) };
// compositor clock ticked so we should draw a frame
if wait_result == 1 {
unsafe { invalidate_thread_windows(GetCurrentThreadId()) };
while unsafe { PeekMessageW(&mut msg, HWND::default(), 0, 0, PM_REMOVE) }.as_bool()
```
#### 3. According to Windows recommendations, character input should be
obtained using `WM_CHAR` instead of `WM_KEYDOWN`. Additionally, there
are problems with the handling within `WM_CHAR`.
```rust
fn handle_char_msg(&self, wparam: WPARAM) -> LRESULT {
let mut callbacks = self.callbacks.borrow_mut();
if let Some(callback) = callbacks.input.as_mut() {
let modifiers = self.current_modifiers();
let msg_char = wparam.0 as u8 as char; // these are u16 chars, cant treat them as u8
```
And, we don't handle `WM_SYSKEYDOWN` properly, which leads to `Alt + F4`
not working.
Release Notes:
- N/A
2024-03-13 22:10:22 +03:00
|
|
|
"Win32_UI_Controls",
|
2024-03-16 03:17:26 +03:00
|
|
|
"Win32_UI_HiDpi",
|
2024-03-15 01:29:25 +03:00
|
|
|
"Win32_UI_Input_Ime",
|
windows: Better keyboard input support (#9180)
### Description
Currently, there are some issues with input handling on Windows:
#### 1. Direct crash when encountering IME input.
https://github.com/zed-industries/zed/assets/14981363/598f7272-1948-4a42-99c5-2ef7b9162a1e
#### 2. Handling messages every 1/60 seconds in the main thread. Despite
being named "immediate_handle," it's not exactly immediate.
```rust
// actually halt here
let wait_result =
unsafe { DCompositionWaitForCompositorClock(Some(&[self.inner.event]), INFINITE) };
// compositor clock ticked so we should draw a frame
if wait_result == 1 {
unsafe { invalidate_thread_windows(GetCurrentThreadId()) };
while unsafe { PeekMessageW(&mut msg, HWND::default(), 0, 0, PM_REMOVE) }.as_bool()
```
#### 3. According to Windows recommendations, character input should be
obtained using `WM_CHAR` instead of `WM_KEYDOWN`. Additionally, there
are problems with the handling within `WM_CHAR`.
```rust
fn handle_char_msg(&self, wparam: WPARAM) -> LRESULT {
let mut callbacks = self.callbacks.borrow_mut();
if let Some(callback) = callbacks.input.as_mut() {
let modifiers = self.current_modifiers();
let msg_char = wparam.0 as u8 as char; // these are u16 chars, cant treat them as u8
```
And, we don't handle `WM_SYSKEYDOWN` properly, which leads to `Alt + F4`
not working.
Release Notes:
- N/A
2024-03-13 22:10:22 +03:00
|
|
|
"Win32_UI_Input_KeyboardAndMouse",
|
|
|
|
"Win32_UI_Shell",
|
|
|
|
"Win32_UI_WindowsAndMessaging",
|
2024-03-03 22:58:31 +03:00
|
|
|
]
|
|
|
|
|
2021-04-02 20:02:09 +03:00
|
|
|
[patch.crates-io]
|
2024-04-27 01:59:35 +03:00
|
|
|
tree-sitter = { git = "https://github.com/tree-sitter/tree-sitter", rev = "7b4894ba2ae81b988846676f54c0988d4027ef4f" }
|
2024-02-14 14:55:31 +03:00
|
|
|
# Workaround for a broken nightly build of gpui: See #7644 and revisit once 0.5.3 is released.
|
2024-06-24 15:15:40 +03:00
|
|
|
pathfinder_simd = { git = "https://github.com/servo/pathfinder.git", rev = "4968e819c0d9b015437ffc694511e175801a17c7" }
|
2022-07-09 00:08:35 +03:00
|
|
|
|
2021-04-20 01:00:10 +03:00
|
|
|
[profile.dev]
|
|
|
|
split-debuginfo = "unpacked"
|
2023-11-23 19:54:43 +03:00
|
|
|
debug = "limited"
|
2024-06-24 16:43:31 +03:00
|
|
|
codegen-units = 16
|
2021-05-07 15:42:56 +03:00
|
|
|
|
2024-02-27 03:27:57 +03:00
|
|
|
[profile.dev.package]
|
|
|
|
taffy = { opt-level = 3 }
|
|
|
|
cranelift-codegen = { opt-level = 3 }
|
2024-04-01 18:56:17 +03:00
|
|
|
resvg = { opt-level = 3 }
|
2024-03-05 17:37:28 +03:00
|
|
|
rustybuzz = { opt-level = 3 }
|
|
|
|
ttf-parser = { opt-level = 3 }
|
2024-02-27 03:27:57 +03:00
|
|
|
wasmtime-cranelift = { opt-level = 3 }
|
2024-03-23 03:29:06 +03:00
|
|
|
wasmtime = { opt-level = 3 }
|
2023-11-16 10:15:14 +03:00
|
|
|
|
2021-05-07 15:42:56 +03:00
|
|
|
[profile.release]
|
2023-11-23 19:54:43 +03:00
|
|
|
debug = "limited"
|
2023-06-06 22:50:08 +03:00
|
|
|
lto = "thin"
|
2023-06-22 19:06:17 +03:00
|
|
|
codegen-units = 1
|
2024-02-26 12:08:57 +03:00
|
|
|
|
chore: Merge zed lib with zed binary.
TL;DR:
- shaves off about 0.5 seconds from most of our debug builds.
- It would've slightly regressed release build due to preventing build pipelining, but as a tradeoff I've bumped up codegen-units for zed.
\# What did you come up with this time Piotr
In our zed repository I've noticed that merely *loading dependencies* in each crate takes non-trivial amount of time (~800ms in case of editor).
That is to say, the moment you \`use editor\`, your build time increases by 800ms - this happens just once in crate though, as it looks like compiler has to load .rlibs of all of the referenced dependencies.
This is visible under rustc's self-profile. Repro steps on twitter: https://twitter.com/PiotrOsiewicz/status/1762845413072101567
\# How does this commit alleviate this?
zed lib + zed bin are on critical path of every build and cumulatively take about 3s to build. This commit bundles all of this up into ~2.2s of bin build time instead.
\# Wait, splitting binary targets is good, no?
Splitting up a binary target into lib + bin is generally considered to be a good practice, as you can then reuse the lib part elsewhere if needed.
It also allows the build to kick off the moment metadata for all of the dependencies is available (thus, you don't need to wait for codegen).
However, we do not really use zed as a lib, so the first benefit is not really a thing for us.
The latter *is* indeed something we lose out on in release mode (in dev codegen phase of leaf-ish crates is insignificant, as we use shared generics - thus we don't spend much time codegening).
That's why I've bumped codegen units for zed crate to 16 in release mode to keep build times in tact.
2024-03-19 03:11:36 +03:00
|
|
|
[profile.release.package]
|
|
|
|
zed = { codegen-units = 16 }
|
|
|
|
|
2024-06-24 15:34:16 +03:00
|
|
|
[profile.release-fast]
|
|
|
|
inherits = "release"
|
|
|
|
lto = false
|
|
|
|
codegen-units = 16
|
|
|
|
|
2024-03-05 20:01:17 +03:00
|
|
|
[workspace.lints.clippy]
|
|
|
|
dbg_macro = "deny"
|
|
|
|
todo = "deny"
|
|
|
|
|
2024-03-14 23:02:03 +03:00
|
|
|
# Motivation: We use `vec![a..b]` a lot when dealing with ranges in text, so
|
|
|
|
# warning on this rule produces a lot of noise.
|
|
|
|
single_range_in_vec_init = "allow"
|
|
|
|
|
2024-03-05 20:01:17 +03:00
|
|
|
# These are all of the rules that currently have violations in the Zed
|
|
|
|
# codebase.
|
|
|
|
#
|
|
|
|
# We'll want to drive this list down by either:
|
|
|
|
# 1. fixing violations of the rule and begin enforcing it
|
|
|
|
# 2. deciding we want to allow the rule permanently, at which point
|
|
|
|
# we should codify that separately above.
|
|
|
|
#
|
|
|
|
# This list shouldn't be added to; it should only get shorter.
|
|
|
|
# =============================================================================
|
|
|
|
|
|
|
|
# There are a bunch of rules currently failing in the `style` group, so
|
|
|
|
# allow all of those, for now.
|
2024-07-10 18:53:17 +03:00
|
|
|
style = { level = "allow", priority = -1 }
|
2024-03-05 20:01:17 +03:00
|
|
|
|
|
|
|
# Individual rules that have violations in the codebase:
|
|
|
|
almost_complete_range = "allow"
|
|
|
|
arc_with_non_send_sync = "allow"
|
|
|
|
borrowed_box = "allow"
|
|
|
|
let_underscore_future = "allow"
|
|
|
|
map_entry = "allow"
|
|
|
|
non_canonical_partial_ord_impl = "allow"
|
|
|
|
reversed_empty_ranges = "allow"
|
|
|
|
type_complexity = "allow"
|
|
|
|
|
2024-02-26 12:08:57 +03:00
|
|
|
[workspace.metadata.cargo-machete]
|
|
|
|
ignored = ["bindgen", "cbindgen", "prost_build", "serde"]
|