0d90c6d
Improve syntax highlighting and outline view for Elixir (#2582)
Click to expand commit body
Fixes
https://linear.app/zed-industries/issue/Z-2208/outline-view-doesnt-differentiate-between-overloaded-functions
Fixes
https://linear.app/zed-industries/issue/Z-2205/elixir-syntax-highlighting-not-working-properly-for-doc-attributes-and
This PR improves syntax highlighting and outline view in Elixir. It's
common to overload elixir functions, with many different versions of the
function for different patterns of parameters, so I updated the outline
view to show functions' parameters in Elixir. But if we showed functions
the same way in the *breadcrumbs*, it would take up too much space.
So I added a new capture in languages' `outline` queries called
`@context.extra`, which is included in the outline view, but not in
breadcrumbs.
Release Notes:
- Improved syntax highlighting of doc attributes and special macros in
Elixir
- Updated the outline view in Elixir to display function parameters, to
allow differentiating between function overloads.
Max Brunsfeld
created
4b9a3c6
Show function parameters in elixir outline view
Click to expand commit body
Introduce a new capture in the outline query called 'context.extra', which
causes text to appear in the outline, but not in the breadcrumbs.
Max Brunsfeld
created
7aeaa84
Fix the order of some patterns in elixir highlight query
6737ee1
Avoid panic when failing to load a language's queries
Max Brunsfeld
created
cc63d3d
chore: add targets to rust-toolchain.toml (#2581)
Piotr Osiewicz
created
a9f865d
Don't apply the 'literal' color to entire markdown code blocks (#2579)
Click to expand commit body
### Before

### After

Release Notes:
* Improved the syntax highlighting of fenced code blocks in markdown.
Max Brunsfeld
created
dfd7277
chore: bump MSRV to 1.70, add rust-toolchain (#2580)
Click to expand commit body
This time I've added a `components` section to rust-toolchain.toml file
to explicitly require a rustfmt component. Fingers crossed.
Piotr Osiewicz
created
3fc2e07
Don't apply the 'literal' color to entire markdown code blocks
Max Brunsfeld
created
bdd3e77
Live-reload tree-sitter queries in development (#2578)
Click to expand commit body
This PR adds live reloading of Tree-sitter queries when running in debug
mode, similar to what we do for the themes. This way, you can change a
highlighting query or an outline query, and immediately see the result
in the app.
Release Notes:
- N/A
Max Brunsfeld
created
7bfb51e
Live-reload tree-sitter queries in development
Per conversation with Antonio, I've suggested enabling full LTO; right
now we use a crate-local ThinLTO, which does not inline function calls
across crates.
| Configuration | Current main (788f97e) | Thin LTO | Full LTO |
|------------------|------------------------|-----------|-----------|
| Size in bytes | 158806721 | 155868753 | 111115553 |
| % of `main` size | 100% | 98.14% | 69.96% |
| Size in bytes (no debug info) | 129186657 | 127942929 | 108281345 |
Previously, all static assets were embedded into Zed using a single
`RustEmbed` struct called `Assets`, which was in a crate of its own,
also called `assets`. Many crates depended on this crate. The problem
with this situation was that changing *any* static asset file caused
almost every crate in the codebase to need recompilation (because of
recursive dependencies on `assets`).
Now, most of the assets are embedded only into the top-level `zed`
crate. A few assets (such as settings JSON files and AI prompts) are
needed in lower-level crates such as `settings` and `ai`. For these,
I've created separate `RustEmbed` structs in those specific crates,
which embed those specific sub-folders of `assets`.
The result is that now, when you change a theme file, the only crate
that needs to recompile is `zed`.
Release Notes:
- N/A
53906fd
Add an application menu item for creating/opening a project-specific settings file (#2572)
Click to expand commit body
Previously, project-specific settings were not discoverable. This PR
adds a `Zed > Preferences > Local Settings` application menu command
that creates a `.zed/settings.json` at the root of your current
worktree. This command works in both local and remote projects.
Limitations:
* Currently, if you have an empty project open, the command just shows a
notification that there are no folders open.
* The JSON-schema-based autocomplete is the same in local settings files
as in your main settings, even though not all settings can be locally
customized.
Release Notes:
- Added an application menu command - `Zed > Preferences > Local
Settings` for creating a folder-specific settings file.
Max Brunsfeld
created
ac71780
Include message headers in copied assistant text
Click to expand commit body
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Antonio Scandurra
and
Nathan Sobo
created
cfcfc3b
Show notification when attempting to open local settings in a project w/ no folders
7b066df
Tighten up spacing in the project panel (#2574)
Click to expand commit body
Following https://github.com/zed-industries/zed/pull/2559 the project
panel entries become pretty wide again. This PR tries to mitigate that
and just make some general improvements to visual density in the project
panel.
- Reduces padding around items
- Removes top margin
- Slightly reduces the height of each item
- Fixes an issue where ignored files had the wrong color chevron
Release Notes:
- Improved density of the project panel and tidied up some visual
issues.
Nate Butler
created
a0e2e5d
project panel/styles: Align child's chevron with parent path (#2559)
Click to expand commit body
Z-1012
Release notes:
- Adjust indent of files in subdirectories.
Piotr Osiewicz
created
2b1aeb0
Show error message when requests to OpenAI fail
Click to expand commit body
Co-Authored-By: Julia Risley <julia@zed.dev>
Antonio Scandurra
and
Julia Risley
created
9c59146
Set assistant editor's title based on the first question/answer pair
Click to expand commit body
Co-Authored-By: Julia Risley <julia@zed.dev>
Antonio Scandurra
and
Julia Risley
created
69b8267
Show the current model and allow clicking on it to change it
Antonio Scandurra
created
ada2220
Insert a user reply when hitting `cmd-enter` in an assistant message
Antonio Scandurra
created
f4f0606
Add assertion to pinpoint how deletion works across excerpts
Antonio Scandurra
created
337dda8
Only remove excerpts when an edit touches them
Antonio Scandurra
created
8032324
Prevent moving across excerpts on `Editor::delete`
Antonio Scandurra
created
e46d154
Retain selection's head (as opposed to its end) on insertion
Click to expand commit body
This makes a difference when an edit spans two excerpts and the selection
start won't necessarily be the same as the selection end after the edit.
Antonio Scandurra
created
23836eb
Not working yet: Remove empty messages unless they contain the cursor
Click to expand commit body
Problem is, I'm trying to trust the excerpt id of the selection head,
but it's a sentinel value and not the actual excerpt id of the message.
I think we probably need to resolve to offsets instead.
Nathan Sobo
created
296a0bf
Populate created local settings file with an empty JSON object and comments
Max Brunsfeld
created
cb975f1
Add Zed > Preferences > Local Settings to application menu
Max Brunsfeld
created
0949ee8
:art: Move OpenSettings action back to the zed crate
Max Brunsfeld
created
a2d5806
Improve test generation and implement status propogation
398b0f3
Apply bounds to all windows when using start-local-collaboration script (#2570)
Click to expand commit body
The `start-local-collaboration` script opens two instances of Zed, each
logged in as a different user, and each one taking up half of the
screen. But previously, when joining a remote project as one of the
collaborators, that newly-opened window would be full screen.
Now, each instance of Zed keeps *all* of its windows on its half of the
screen. This is implemented by respecting the `ZED_WINDOW_{SIZE,BOUNDS}`
env vars, even when joining *remote* projects.
Release Notes:
- N/A
Max Brunsfeld
created
3d1ba1b
Apply bounds to all windows when using start-local-collaboration script
Max Brunsfeld
created
5711511
Fix copilot state corruption when there are multiple buffers with the same remote id in different projects (#2569)
Click to expand commit body
Fixes
https://linear.app/zed-industries/issue/Z-1511/thread-main-panicked-at-assertion-failed-left-==-right-left-local-0-1
Previously, when exchanging messages about buffers with a copilot
language server, we identified buffers using their **remote id**. This
caused problems when there were multiple projects open, where one or
more were remote, because buffers' remote ids are only unique within a
given project.
When you have multiple projects open, and one or more of the projects is
remote, it's pretty easy to have two buffers open with the same remote
id. In my testing, when this happened, copilot would stop working in
both buffers. But I believe that depending on the editing patterns that
occur in the two buffers, it could cause the crash reported in the
Linear issue above.
This PR changes our copilot logic to use buffers' local handle ids for
identifying them. This fixed the problems I was able to reproduce when
using copilot in both remote and local projects.
Release Notes:
- Fixed a crash that would sometimes occur when editing buffers after
having collaborated on a remote project.
Max Brunsfeld
created
12dd91c
Use local ids, not remote ids, to identify buffers to copilot
Max Brunsfeld
created
5e4da64
Add file and line number information to logs (#2568)
Click to expand commit body
This PR adds codegen from rustc to track the file and line number of
calls to `log_err()`. I haven't noticed much longer compile times on my
machine, and looking at the
[implementation](https://rustc-dev-guide.rust-lang.org/backend/implicit-caller-location.html)
it essentially adds an extra argument and secret reference pass.
However, this will show a lot more data in our logs on user machines.
Requesting review from @ForLoveOfCats, who usually knows a bunch about
this kind of thing :)
Mikayla Maki
created
624467e
Add file and line number information to logs