702393a
Use proper key for Linux rust cache
Kirill Bulatov created
702393a
Use proper key for Linux rust cache
Kirill Bulatov created
901279a
Implement terminal text dimming (#7600)
Dims text by a certain factor - this respects theme opacity. The amount is documented in the code. As far as I can tell, all other terminals also dim text using this same method. Dim only affects the foreground. <img width="755" alt="SCR-20240209-mfls" src="https://github.com/zed-industries/zed/assets/52195359/c32f2aff-1142-4333-a05d-6aca425cb235"> Release Notes: - Added terminal text dimming (fixes #7497)
Robert Clover created
0cebf68
Introduce a new `ToggleGraphicsProfiler` command (#7607)
On macOS, this will enable or disable the Metal HUD at runtime. Note that this only works when Zed is bundled because it requires to set the `MetalHudEnabled` key in the Info.plist. Release Notes: - Added a new `ToggleGraphicsProfiler` command that can be used as an action (or via the `Help -> Toggle Graphics Profiler` menu) to investigate graphics performance.
Antonio Scandurra created
04e1641
Properly handle backspace when in dead key state (#7494)
Previously we wouldn't handle Backspace in dead key state correctly: instead of removing what was typed, we'd insert the text that was in the dead key state. Example: on a US English layout, press `opt-u` to end up in a dead key state with `ยจ` waiting for the next character to be typed. Type `backspace`. The `ยจ` should be removed, but it's not. With this change, the `backspace` is interpreted instead of being ignored. Release Notes: - Fixed backspace not working for dead keys (i.e. when typing accents or umlauts) --------- Co-authored-by: Antonio <antonio@zed.dev> Co-authored-by: Conrad <conrad@zed.dev>
Thorsten Ball , Antonio , and Conrad created
f4d7b3e
chore: Bump Rust version to 1.76 (#7592)
Release Notes: - N/A
Piotr Osiewicz created
67d280b
Linux: Experiment with CosmicText based Text System (#7539)
This is a rebase of @gabydds text_system updates. with some small cleanups. Currently cannot test this as build is not working in linux. Im just putting it up here before I forget about it. --------- Co-authored-by: gabydd <gabydinnerdavid@gmail.com> Co-authored-by: Mikayla Maki <mikayla@zed.dev>
h3mosphere , gabydd , and Mikayla Maki created
0ab1094
linux: quit after the last window is closed (#7602)
Release Notes: - N/A
Dzmitry Malyshau created
91c699a
Revert "Debug build (#7176)" (#7577)
This reverts commit aaba98d8ecba934369d15f55d55688d569ca8fbe. Release Notes: - N/A
Conrad Irwin created
07891b4
gpui: Set window title on Linux (#7589)
Release Notes: - N/A Hello everyone, glad to be contributing to this awesome project! This just fixes a simple todo!(linux) in gpui. I also considered setting the window title in the hello world example, let me know if I should add it in this PR as well. Best Regards, Christian Bergschneider
Christian Bergschneider created
ed54665
Cleanup logic for registering languages and grammars (#7593)
This is a refactor, follow-up to the work we've been doing on loading WASM language extensions. Release Notes: - N/A --------- Co-authored-by: Marshall <marshall@zed.dev>
Max Brunsfeld and Marshall created
1da5241
Try to buf harder (#7591)
Release Notes: - N/A
Conrad Irwin created
ad88e97
Add Linux build CI (#7581)
Release Notes: - N/A
Mikayla Maki created
e7fcddf
Parse version from GitHub tag name instead of release name (#7423)
If we not change this, some release will parse error.
https://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28
```json
{
"name": {
"type": [
"string",
"null"
]
}
}
```
<img width="1188" alt="image"
src="https://github.com/zed-industries/zed/assets/5518/bd53dbc4-ae2c-4f19-afd7-58e70b4f87d8">
---------
Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
Jason Lee and Marshall Bowers created
bde509f
Expose Python docstrings for syntax highlighting (#7587)
This PR extends our Tree-sitter highlights for Python to allow highlighting docstrings differently from other strings. Docstrings in Python will now use `string.doc` instead of just `string`, which will allow for them to be styled independently of other strings. If no `string.doc` is present in the theme, then it will fall back to using the `string` styles. <img width="272" alt="Screenshot 2024-02-08 at 1 52 21โฏPM" src="https://github.com/zed-industries/zed/assets/1486634/034cffa0-91c0-4924-8ccc-3a385cf31126"> This is slightly different than the approach I took in #7585 in that we are still treating docstrings as strings by default (which appears to be the more common behavior), but allowing theme authors to hook in and style them separately, if desired. Release Notes: - Added ability add custom styles for Python docstrings using `string.doc` ([#7346](https://github.com/zed-industries/zed/issues/7346)).
Marshall Bowers created
67b96b2
Replace `CADisplayLink` with `CVDisplayLink` (#7583)
Release Notes: - Fixed a bug that caused Zed to render at 60fps even on ProMotion displays. - Fixed a bug that could saturate the main thread event loop in certain circumstances. --------- Co-authored-by: Thorsten <thorsten@zed.dev> Co-authored-by: Nathan <nathan@zed.dev> Co-authored-by: Max <max@zed.dev>
Antonio Scandurra , Thorsten , Nathan , and Max created
9e538e7
Support Terraform Variable Definitions as separate language (#7524)
With https://github.com/zed-industries/zed/pull/6882 basic syntax
highlighting support for Terraform has arrived in Zed. To fully support
all features of the language server (when it lands), it's necessary to
handle `*.tfvars` slightly differently.
TL;DR: [terraform-ls](https://github.com/hashicorp/terraform-ls) expects
`terraform` as language id for `*.tf` files and `terraform-vars` as
language id for `*.tfvars` files because the allowed configuration
inside the files is different. Duplicating the Terraform language
configuration was the only way I could see to achieve this.
---
In the
[LSP](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocumentItem),
text documents have a language identifier to identify a document on the
server side to avoid reinterpreting the file extension.
The Terraform language server currently uses two different language
identifiers:
* `terraform` - for `*.tf` files
* `terraform-vars` - for `*.tfvars` files
Both file types contain HCL and can be highlighted using the same
grammar and tree-sitter configuration files. The difference in the file
content is that `*.tfvars` files only allow top-level attributes and no
blocks. [_So you could argue that `*.tfvars` can use a stripped down
version of the grammar_]. To set the right context (which affects
completion, hover, validation...) for each file, we need to send a
different language id.
The only way I could see to achieve this with the current architecture
was to copy the Terraform language configuration with a different `name`
and different `path_suffixes`. Everything else is the same.
A Terraform LSP adapter implementation would then map the language
configurations to their specific language ids:
```rust
fn language_ids(&self) -> HashMap<String, String> {
HashMap::from_iter([
("Terraform".into(), "terraform".into()),
("Terraform Vars".into(), "terraform-vars".into()),
])
}
```
I think it might be helpful in the future to have another way to map
file extensions to specific language ids without having to create a new
language configuration.
### UX Before

### UX After

Release Notes:
- N/A
---
* Part of https://github.com/zed-industries/zed/issues/5098
Daniel Banck created
d4be15b
Suppress related warnings, fix nanoid, and get the build green (#7579)
This is in preparation for adding a Linux build step to our CI. Release Notes: - N/A
Mikayla Maki created
8f7d786
Fix text in terminal showing as bold when dimmed (#7491)
Fixes text in the terminal displaying as bold when it's actually just dim. I think it was just a simple oversight because the original code `|`'s together the BOLD and DIM_BOLD flags, which is the same as DIM_BOLD, which is wrong because it should only be BOLD :p Release Notes: - Fixed #4464 Co-authored-by: Mikayla Maki <mikayla@zed.dev>
Robert Clover and Mikayla Maki created
1ba42f6
Update `.mailmap` (#7578)
This PR updates the `.mailmap` file to merge some commit authors using multiple emails. Release Notes: - N/A
Marshall Bowers created
b77d452
Remove unneeded `maybe!` (#7576)
This PR removes an unneeded `maybe!` from `get_permalink_to_line`. As this is a `Result`-returning function, we don't need the inner level of wrapping. Release Notes: - N/A
Marshall Bowers created
b250443
Add `open permalink to line` action (#7562)
Release Notes: - Added `open permalink to line` action. --------- Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
Daniel Schmidt and Marshall Bowers created
17c203f
Translate notify::Event to fsevent::Event on linux (#7545)
This isn't exactly a great solution, but it's a step in the right direction, and it's simple allowing us to quickly unblock linux. Without this (or an equivalent) PR linux builds are broken. I spent a bunch of time investigating using notify on macos, and have a branch with that working and FakeFs updated to use notify events. unfortunately I think this would come with some drawbacks. Primarily that files that don't yet exist yet aren't handled as well as with using events directly leading to some less than ideal tradeoffs. This PR is very much a placeholder for a better cross platform solution. Most problematically, it only fills in the portion of fsevent::Event that is currently used, despite there being a lot more information in the ones collected from macos. At the very least a followup PR should hide those implementation details behind a cross platform Event type so that if people try and access data that hasn't been translated, they find out about it. Release Notes: - N/A
gmorenz created
006e7a7
Linux: Fix some crashes from new functions having unimplemented!() (#7567)
Release Notes: - N/A
h3mosphere created
4048dbf
Linux: Disable PureScript grammar to avoid linking error (#7543)
Release Notes: - N/A
h3mosphere created
9f4ce7f
Remove unneeded type annotations where inference will do (#7573)
This PR removes some unneeded type annotations where we're able to infer the type accurately. Release Notes: - N/A
Marshall Bowers created
bd390aa
Fix mis-description in default settings (#7564)
Change word from "Stable" to "Dev" of option `dev` Release Notes: - N/A
White Choco created
a0b2614
Add unique lines command (#7526)
Changes `Editor::manipulate_lines` to allow line adding and removal through callback function. - Added `editor::UniqueLinesCaseSensitive` and `editor::UniqueLinesCaseInsensitive` commands ([#4831](https://github.com/zed-industries/zed/issues/4831))
dalton-oliveira created
89b1e76
Fix gopls langserver downloads (#7571)
Fixes https://github.com/zed-industries/zed/issues/7534 by not requiring assets for gopls and vscode-eslint langservers โ those two are the only ones in Zed that do not use assets directly when determining langserver version and retrieving those. All other servers deal with assets, hence require those to be present. The problem with https://github.com/tamasfe/taplo/releases is that they host multiple binary releases in the same release list, so for now the code works because only the langserver has assets โ but as soon as another release there gets assets, it will break again. We could filter out those by names also, but they also tend to change (and can be edited manually), so keeping it as is for now. Release Notes: - Fixed gopls language server downloads ([7534](https://github.com/zed-industries/zed/issues/7534))
Kirill Bulatov created
f734365
Avoid another confirmation when submitting/discarding feedback (#7569)
Fixes https://github.com/zed-industries/zed/issues/7515 Release Notes: - Fixed feedback modal spawning extra confirmations on cancel and submit ([7515](https://github.com/zed-industries/zed/issues/7515))
Kirill Bulatov created
d457eef
blade: fix path rasterization (#7546)
There were mistakes in the blending mode, primitive topology, and the equation.  Release Notes: - N/A
Dzmitry Malyshau created
00024b7
Uprev blade to 26bc5e8 (#7556)
Picks up https://github.com/kvark/blade/pull/73 to make it possible to start experimenting with GLES backend. Release Notes: - N/A
Dzmitry Malyshau created
73498f3
Recognize More Multimedia Filetypes (#7557)
This PR recognizes the following filetypes and provides them with appropriate icons: `.avi .heic .j2k .jfif .jp2 .jxl .m4a .m4v .mkv .mka .mov .opus .qoi .wma .wmv .wv`. It also corrects `.ogg` to display an audio icon, not a video icon. Though the container supports video, `.ogg` files are most commonly found containing audio-only bitstreams likely due to the popularity of the Vorbis audio codec. VSCode recognizes OGG files as audio. Here is an exhaustive list of the file formats this PR aims to recognize, with a subjective commonality rating attached to each: - `.avi`: Audio Video Interleave. Multimedia container format for video and audio data. **Rating: 7/10** - `.heic`: High Efficiency Image Format. The same thing as `.heif`, which is currently recognized. **Rating: 6/10** - `.j2k`: JPEG 2000. Bitmap image format for lossy or lossless compression. **Rating: 3/10** - `.jfif`: JPEG File Interchange Format. Alternative JPEG extension that sometimes pops up on the Web. **Rating: 5/10** - `.jp2`: JPEG 2000 again, same rating. - `.jxl`: JPEG XL. Modern, versatile image format growing in popularity. **Rating: 5/10** - `.m4a`: MPEG-4 Audio. Audio file format using AAC (lossy) or ALAC (lossless) codecs. **Rating: 8/10** - `.m4v`: MPEG-4 Video. Video container format developed by Apple similar to MP4. **Rating: 4/10** - `.mkv`: Matroska Video. Multimedia container format for video, audio, and subtitle tracks. **Rating: 8/10** - `.mka`: Matroska Audio. Audio file format supporting several types of audio compression algorithms. **Rating: 3/10** - `.mov`: QuickTime Movie. Multimedia container format developed by Apple. **Rating: 8/10** - `.opus`: Opus Audio. Audio coding format for efficient real-time audio streaming. **Rating: 7/10** - `.qoi`: Quite OK Image. Modern lossless image format for fast encoding & decoding. **Rating: 1/10** - `.wma`: Windows Media Audio. Audio file format developed by Microsoft. **Rating: 6/10** - `.wmv`: Windows Media Video. Video file format developed by Microsoft. **Rating: 7/10** - `.wv`: WavPack. Free, open-source lossless audio compression format similar to FLAC. **Rating: 2/10** Again note that the commonality rating is subjective and may vary based on the specific use cases users have for Zed and their software environments. I hope some of these will be considered, as having flexible filetype recognition greatly adds to the feeling of completeness in an editor at what appears to be very little cost. Thank you! Release Notes: - Adds icon associations for more multimedia types [#7551](https://github.com/zed-industries/zed/issues/7551).
Gianni Rosato created
61b8d36
markdown_preview: Improved markdown rendering support (#7345)
This PR improves support for rendering markdown documents. ## After the updates https://github.com/zed-industries/zed/assets/18583882/48315901-563d-44c6-8265-8390e8eed942 ## Before the updates https://github.com/zed-industries/zed/assets/18583882/6d7ddb55-41f7-492e-af12-6ab54559f612 ## New features - @SomeoneToIgnore's [scrolling feature request](https://github.com/zed-industries/zed/pull/6958#pullrequestreview-1850458632). - Checkboxes (`- [ ]` and `- [x]`) - Inline code blocks. - Ordered and unordered lists at an arbitrary depth. - Block quotes that render nested content, like code blocks. - Lists that render nested content, like code blocks. - Block quotes that support variable heading sizes and the other markdown features added [here](https://github.com/zed-industries/zed/pull/6958). - Users can see and click internal links (`[See the docs](./docs.md)`). ## Notable changes - Removed dependency on `rich_text`. - Added a new method for parsing markdown into renderable structs. This method uses recursive descent so it can easily support more complex markdown documents. - Parsing does not happen for every call to `MarkdownPreviewView::render` anymore. ## TODO - [ ] Typing should move the markdown preview cursor. ## Future work under consideration - If a title exists for a link, show it on hover. - Images. - Since this PR brings the most support for markdown, we can consolidate `languages/markdown` and `rich_text` to use this new renderer. Note that the updated inline text rendering method in this PR originated from `langauges/markdown`. - Syntax highlighting in code blocks. - Footnote references. - Inline HTML. - Strikethrough support. - Scrolling improvements: - Handle automatic preview scrolling when multiple cursors are used in the editor. - > great to see that the render now respects editor's scrolls, but can we also support the vice-versa (as syntax tree does it in Zed) โ when scrolling the render, it would be good to scroll the editor too - > sometimes it's hard to understand where the "caret" on the render is, so I wonder if we could go even further with its placement and place it inside the text, as a regular caret? Maybe even support the selections? - > switching to another markdown tab does not change the rendered contents and when I call the render command again, the screen gets another split โ I would rather prefer to have Zed's syntax tree behavior: there's always a single panel that renders things for whatever tab is active now. At least we should not split if there's already a split, rather adding the new rendered tab there. - > plaintext URLs could get a highlight and the click action ## Release Notes - Improved support for markdown rendering.
Kieran Gill created
cbe7a12
Add information to Copilot sign-in UI when disabled (#7496)
I'd love to take on fixing this but: 1. I don't think this is the right solution - it would be really nice to have something actionable that I could do when presented with this message. 2. Should signing in to Copilot be independent from whether it's enabled? You can only access the sign-in modal when `features.copilot` isn't disabled, but when `show_copilot_suggestions` is `false` the server is disabled but you can't sign in. So I guess another solution might be to just not show the UI if copilot suggestions are disabled? 3. I don't know what other circumstances could trigger the empty modal. I see `Status::Error` and that seems like it might be important to surface gracefully? Would love some thoughts on this Release Notes: - Improved UX for enabling Copilot when it's disabled in settings
Robert Clover created
ccc6d76
Clean up `util::paths` (#7536)
This PR cleans up the path definitions in `util::paths` following the Linux merge. We were using a bunch of target-specific compilation that made these declarations kind of messy, when really we can limit the conditional compilation to just the base directories that we use as the basis for the other directories. Release Notes: - N/A
Marshall Bowers created
7b03e97
Reload grammars in extensions when they are updated on disk (#7531)
Release Notes: - N/A --------- Co-authored-by: Marshall Bowers <elliott.codes@gmail.com> Co-authored-by: Marshall <marshall@zed.dev>
Max Brunsfeld , Marshall Bowers , and Marshall created
f2a4dba
Fix typo in `mark_language_loaded` doc comment (#7533)
This PR fixes a small typo in the `mark_language_loaded` doc comment. Release Notes: - N/A
Marshall Bowers created
219ec91
Fix compile errors on Linux (#7527)
Added some missing trait functions and `unimplemented` markings Release Notes: - N/A
Antar created
6cdd779
terminal: strikethrough text (#7507)
#7363 added support for rendering strikethrough text, so now we can handle this case in the terminal. Should close: #7434 Before:  After:  Release Notes: - Fixed rendering strikethrough text inside the terminal #7434
Bennet Bo Fenner created
f55aba5
Fix panic! caused by bad utf16 clipping (#7530)
Release Notes: - Fixed a panic in diagnostics with emojis **or** - N/A
Conrad Irwin created
374c8a4
Reload theme using `ThemeSettings::reload_current_theme` (#7522)
This PR updates the various spots where we reload the theme to use `ThemeSettings::reload_current_theme` instead of duplicating the code each time. Release Notes: - N/A
Marshall Bowers created
45cf36e
theme_importer: Add `--output` flag for outputting the theme to a file (#7486)
```bash cargo run -p theme_importer -- dark-plus-syntax-color-theme.json --output output.json ``` Release Notes: - N/A --------- Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
d1y and Marshall Bowers created
e6dad23
chat: closing reply preview with action (#7517)
This is a follow up to #7170. Closing the reply to preview overlay is now configurable with an action (keybinding set escape in the default keymap). https://github.com/zed-industries/zed/assets/53836821/d679e734-f90b-4490-8e79-7dfe5407988a Release Notes: - N/A
Joseph T. Lyons created
2f4bb79
Reload themes defined in extensions (#7520)
This PR extends the extension directory watcher to also watch and reload themes defined in extensions. Release Notes: - N/A Co-authored-by: Max <max@zed.dev>
Marshall Bowers and Max created
31d9edf
Fix Terraform syntax highlighting (#7518)
https://github.com/zed-industries/zed/pull/7467 introduced a new `grammar` field in the language configuration files. The underlying tree-sitter grammar for Terraform should be `hcl` instead of `terraform`. This PR fixes that typo. Release Notes: - N/A
Daniel Banck created
eaadf56
Testing buf breaking (#7475)
Release Notes: - N/A
Conrad Irwin created
5ded865
[official] Linux port via Blade (#7343)
## Motivation
I :heart: Zed! It's lightning fast and has great UX. I want it to run as
well on all major platforms. I'm currently using Linux most actively.
[Blade](https://github.com/kvark/blade) is a good candidate for
providing GPU access: it supports Vulkan, Metal, and GLES/WebGL. Its
abstraction is extremely thin, while having one of the nicest GPU APIs.
Codebase is also tiny. Checkout [the meetup
recording](https://www.youtube.com/watch?v=63dnzjw4azI&t=623s) from a
year ago.
I believe these projects make a good match :rocket: !
### Why this is a bad idea
If Zed team wants to use off-the-shelf components from Rust ecosystem,
then Blade is certainly at disadvantage here, since it's not widely
used. It would rely on Zed team adding necessary features in a branch,
then maybe upstreaming some of them. That is to say, it's unclear if
this can be avoided with more popular alternatives - being flexible with
any local changes is a good ability.
### Why it's not too bad
Blade uses [WGSL](https://www.w3.org/TR/WGSL) shaders, similar to `wgpu`
and `arcana`, but without the binding decorations. So this aspect of the
product is nicely portable.
## Progress
- [ ] Platforms
- [x] X11 (via xcb)
- [ ] input handling
- [ ] get proper content size
- [ ] Windows
- [ ] Replace the existing Metal backend
- [ ] Text System
- [ ] shaping
- [ ] glyph rasterization
- [x] Texture atlas
- [ ] Rendering
- [x] basic primitives
- [x] path rendering
- [x] sprite rendering
- [ ] media surfaces
- [ ] CI
## Current status
Zed starts up but crashes on text-system related checks.

Mikayla Maki created
3a53db6
Merge branch 'main' into kvark-linux
Mikayla created
6edeea7
Add logic for managing language and theme extensions (#7467)
This PR adds the initial support for loading extensions in Zed.
### Extensions Directory
Extensions are loaded from the extensions directory.
The extensions directory has the following structure:
```
extensions/
installed/
extension-a/
grammars/
languages/
extension-b/
themes/
manifest.json
```
The `manifest.json` file is used internally by Zed to keep track of
which extensions are installed. This file should be maintained
automatically, and shouldn't require any direct interaction with it.
Extensions can provide Tree-sitter grammars, languages, and themes.
Release Notes:
- N/A
---------
Co-authored-by: Marshall <marshall@zed.dev>
Max Brunsfeld and Marshall created
ef8cab6
allow closing reply to preview with action
Co-Authored-By: Remco Smits <62463826+RemcoSmitsDev@users.noreply.github.com>
Bennet Bo Fenner and Remco Smits created