Commit Graph
17619 Commits
Author SHA1 Message Date
Marshall Bowers 9f9bef4175 Prevent GitHub from displaying comments within JSON files as errors (#7043)
This PR adds a `.gitattributes` rule to prevent GitHub from displaying
comments within JSON files as errors.

We have a number of JSON files (e.g., settings) that make use of
comments, and having a bunch of red in a diff is annoying.

Release Notes:

- N/A
2024-01-29 23:11:25 -05:00
Vishal Bhavsar 31e9526544 vim: Add support for moving to first, middle and last visible lines (H, L, M) (#6919)
This change implements the vim
[motion](https://github.com/vim/vim/blob/master/runtime/doc/motion.txt)
commands to move the cursor to the top, middle and bottom of the visible
view. This feature is requested in
https://github.com/zed-industries/zed/issues/4941.

This change takes inspiration from
[crates/vim/src/normal/scroll.rs](https://github.com/zed-industries/zed/blob/main/crates/vim/src/normal/scroll.rs).

A note on the behavior of these commands: Because
`NeovimBackedTestContext` requires compatibility with nvim, the current
implementation causes slightly non-standard behavior: it causes the
editor to scroll a few lines. The standard behavior causes no scrolling.
It is easy enough to account for the margin by adding
`VERTICAL_SCROLL_MARGIN`. However, doing so will cause test failures due
to the disparity between nvim and zed states. Perhaps
`NeovimBackedTestContext` should have a switch to be more tolerant for
such cases.

Release Notes:

- Added support for moving to top, middle and bottom of the screen in
vim mode (`H`, `M`, and `L`)
([#4941](https://github.com/zed-industries/zed/issues/4941)).
2024-01-29 20:58:24 -07:00
1ab49fdbe6 Use fallback BPE if the language model doesn't have one (#6848)
Release Notes:

- Added a fallback BPE if the language model doesn't have one.

---------

Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
2024-01-29 22:42:03 -05:00
Marshall Bowers 9cb5a84b8d Add support for loading user themes (#7027)
This PR adds support for loading user themes in Zed.

Themes are loaded from the `themes` directory under the Zed config:
`~/.config/zed/themes`. This directory should contain JSON files
containing a `ThemeFamilyContent`.

Here's an example of the general structure of a theme family file:

```jsonc
{
  "name": "Vitesse",
  "author": "Anthony Fu",
  "themes": [
    {
      "name": "Vitesse Dark Soft",
      "appearance": "dark",
      "style": {
        "border": "#252525",
        // ...
      }
    }
  ]
}
```

Themes placed in this directory will be loaded and available in the
theme selector.

Release Notes:

- Added support for loading user themes from `~/.config/zed/themes`.
2024-01-29 21:32:45 -05:00
d1y 5f4dd36a1a Add ability to expand/collapse directories using the project_panel::Open action (#6914)
#6910

I changed the `open_file` symbol to `open`, because this is more
consistent with the original intention

Release Notes:

- Added the ability to expand/collapse directories using the
`project_panel::Open` action.
2024-01-29 18:21:23 -08:00
Amin Yahyaabadi 2c834c24a3 Build media and live-kit in test-mode on non-MacOS (#6859)
Build media and live-kit in test-mode on non-MacOS (Related to
https://github.com/zed-industries/zed/issues/5391
https://github.com/zed-industries/zed/issues/5395
https://github.com/zed-industries/zed/issues/5394)

This makes it possible to build the media and live-kit crates on
non-MacOS

Release Notes:

- N/A
2024-01-29 18:04:15 -08:00
Marshall Bowers e69e6f5586 Add a newtype wrapper around the global ThemeRegistry (#7025)
This PR adds a newtype wrapper around the global `ThemeRegistry`.

This allows us to limit where the `ThemeRegistry` can be accessed
directly via `cx.global` et al., without going through the dedicated
methods on the `ThemeRegistry`.

Release Notes:

- N/A
2024-01-29 18:09:37 -05:00
Marshall Bowers 7656096814 Rework access to ThemeRegistry global (#7023)
This PR reworks how we access the `ThemeRegistry` global.

Previously we were making calls directly on the context, like
`cx.global::<ThemeRegistry>`. However, one problem with this is that it
spreads out the knowledge of exactly what type is stored in the global.

In order to make it easier to adjust the type we store in the context
(e.g., wrapping the `ThemeRegistry` in an `Arc`), we now call methods on
the `ThemeRegistry` itself for accessing the global.

It would also be interesting to see how we could prevent access to the
`ThemeRegistry` without going through one of these dedicated methods 🤔

Release Notes:

- N/A
2024-01-29 17:51:34 -05:00
Ben Hamment 2a2cf45e90 Improve file types list for Ruby syntax (#7022)
### Improved list of file types that require Ruby syntax highlighting

- `.ru` files: These are Rackup files and are used for configuring Rack
applications.
- `.thor` files: Used for defining Thor tasks. Thor is a toolkit for
building powerful command-line interfaces in Ruby.
- `.cap, .capfile, and Capfile`: These files are used for Capistrano
deployment configuration.
- `.jbuilder` files: Used for creating JSON responses in a Rails
application.
- `.rabl files`: RABL (Ruby API Builder Language) files are used for
defining JSON templates.
- `.rxml` files: RXML files are used for creating XML responses.
- `.builder` files: Builder templates, which are used for generating XML
and other formats.
- `.gemspec` files: These files define metadata for a RubyGem.
- `.rdoc` files: RDoc documentation files.
- `.thor` files: These files are used for defining Thor tasks.
- `.pryrc` files: Configuration files for the Pry REPL (Read-Eval-Print
Loop).
- `.simplecov`: Configuration file for SimpleCov, a code coverage
analysis tool.

#### Some examples
- <img width="393" alt="image"
src="https://github.com/zed-industries/zed/assets/7274458/4e30b03a-ae21-4bae-ab11-48aa46b4bd0b">
- <img width="501" alt="image"
src="https://github.com/zed-industries/zed/assets/7274458/07251529-bcde-42d2-8973-341679e5cbc4">
- <img width="365" alt="image"
src="https://github.com/zed-industries/zed/assets/7274458/8c9c116c-2b51-4062-b83b-83f60838d28a">
- <img width="396" alt="image"
src="https://github.com/zed-industries/zed/assets/7274458/02d591af-88df-41f0-ba52-b11fa370ba07">
- <img width="432" alt="image"
src="https://github.com/zed-industries/zed/assets/7274458/91cd760f-f56a-488a-9736-bc03a44b27cf">
- <img width="296" alt="image"
src="https://github.com/zed-industries/zed/assets/7274458/282c331e-8896-49d4-b3b6-b3edbf0c1cc5">
- <img width="316" alt="image"
src="https://github.com/zed-industries/zed/assets/7274458/a2ddfccf-43d4-4657-a764-9e8d62aa4467">
- <img width="536" alt="image"
src="https://github.com/zed-industries/zed/assets/7274458/b0fce8db-4a9e-4615-bf5d-0b6c523bcbc8">

- `path_suffixes` Also new lines the array for readability especially
for diffs.

Release Notes:

- Associated `.ru`, `.thor`, `.cap`, `.capfile`, `Capfile`, `.jbuilder`,
`.rabl`, `.rxml`, `.builder`, `.gemspec`, `.rdoc`, `.thor`, `.pryrc`,
and `.simplecov` files with Ruby.
2024-01-29 17:41:57 -05:00
Max Brunsfeld 3728da1165 collab 0.42.1 2024-01-29 13:46:45 -08:00
Conrad IrwinandMax c008c78e87 Fix slow query for fetching descendants of channels (#7008)
Release Notes:

- N/A

---------

Co-authored-by: Max <max@zed.dev>
2024-01-29 13:24:59 -08:00
Amin Yahyaabadi 1313402a6b Introduce cross-platform file-watching (#6855)
This adds cross-platform file-watching via the
[Notify](https://github.com/notify-rs/notify) crate. The previous
fs-events implementation is now only used on MacOS, and on other
platforms Notify is used. The watching function interface is the same.

Related to #5391 #5395 #5394.

Release Notes:

- N/A
2024-01-29 22:18:10 +02:00
Piotr Osiewicz b29f45ea68 Change underlying type of BufferId to NonZeroU64. 2024-01-29 20:00:47 +01:00
Piotr Osiewicz 5ab715aac9 text: Wrap BufferId into a newtype 2024-01-29 20:00:47 +01:00
Julia 941e838be9 Prevent z-index id shuffle when number of z-indicies in the scene change 2024-01-29 13:08:40 -05:00
JuliaandConrad Irwin 849a1324f7 Fix hovering over elements nested inside their parents
Co-Authored-By: Conrad Irwin <conrad@zed.dev>
2024-01-29 13:08:40 -05:00
Marshall Bowers d60ef81ede Setup Danger (#6994)
This PR sets up [Danger](https://danger.systems/js/) to help us codify
some of our PR rules.

As an initial rule, Danger will check to ensure that every PR has a
`Release Notes` section:

<img width="943" alt="Screenshot 2024-01-29 at 11 50 12 AM"
src="https://github.com/zed-industries/zed/assets/1486634/4d56e759-e72f-4bc0-8e74-42c55e2e6888">

Release Notes:

- N/A
2024-01-29 11:58:24 -05:00
Pseudomata d694017d05 Add Haskell file type icon (#6995)
Small change to add the Haskell logo as a file icon. Screenshot below
shows what this looks like.

![CleanShot 2024-01-29 at 11 21
30@2x](https://github.com/zed-industries/zed/assets/132238190/b484c679-965a-4e73-88dc-ebb670a0f390)
2024-01-29 11:32:35 -05:00
Marshall Bowers d1a6003033 Use Git status color for icons in project panel (#6992)
This PR updates the icons in the file tree in the project panel to also
use the Git status color:

<img width="267" alt="Screenshot 2024-01-29 at 10 21 41 AM"
src="https://github.com/zed-industries/zed/assets/1486634/2f4f6e9e-8050-4f5b-851a-e407aec823a0">

Release Notes:

- Updated icons in project panel to reflect Git status
([#6991](https://github.com/zed-industries/zed/issues/6991)).
2024-01-29 10:26:30 -05:00
bestgopher d2968866b2 rust: Update rust-analyzer repo address (#6986)
I am so sorry that I closed the
https://github.com/zed-industries/zed/pull/6980 misoperationally. Here
is a new pr.
2024-01-29 09:55:31 -05:00
Abel Chalier a827d0dac6 fixed zig config on line_comments (#6979)
On a .zig files , the `CMD-/` keybinding don't work,
In the language config its the only language with '//' type comment that
is written in singular without array.
This fixed the problem, so i assume it was just a typo

![image](https://github.com/zed-industries/zed/assets/6186996/d7f2381a-8b21-4f50-8910-6685b81a5aec)

Release notes:
- Fixed line comment continuations and Editor::ToggleComments for Zig, Haskell and PureScript.
2024-01-29 13:34:26 +01:00
liruifengv 843919dd14 docs: Update configuring_zed__key_bindings.md (#6974)
Release notes: N/A
2024-01-29 14:08:12 +02:00
d1y 8263da02bd Make .jsonc icon use storage icon (#6972)
Jsonc is a simplified json format which allows comments and unquoted
values delimited by whitespace. A jsonc formatted file can be
unambiguously transformed to a json file. Comments will be stripped out
and quotes added.

Release Notes:

- Added an icon for .jsonc files
2024-01-29 13:47:23 +02:00
George Munyoro 49542757fd Correctly check existence of target directory in copy_recursive function (#6875)
Fixes https://github.com/zed-industries/zed/issues/6778

Release Notes:

- Fixed issue where copy-paste for folders was not working in the
project panel
([#6778](https://github.com/zed-industries/zed/issues/6778)).
2024-01-29 12:06:02 +02:00
Piotr Osiewicz 9ef830e9bb update: Add arch and os to release query parameters. (#6976)
This is no-op right now, but we need it for multi-platform support and
(potentially) to split the Universal Binary on mac into two
non-universal targets.
Related to: #6837 
Release Notes:
- N/A
2024-01-29 10:48:54 +01:00
Piotr Osiewicz 8fbc88b708 Load embedded fonts directly from .rdata instead of cloning (#6932)
The fonts we embed in Zed binary (Zed Sans & Zed Mono) weigh about 30Mb in total and we are cloning them several times during startup and loading of embedded assets (once explicitly in Zed and then under the hood in font-kit). Moreover, after loading we have at least 2 copies of each font in our program; one in .rdata and the other on the heap for use by font-kit.
This commit does away with that distinction (we're no longer allocating the font data) and slightly relaxes the interface of `TextSystem::add_fonts` by expecting one to pass `Cow<[u8]>` instead of `Arc<Vec<u8>>`. Additionally, `AssetSource::get` now returns `Cow<'static, [u8]>` instead of `Cow<'self, [u8]>`; all existing implementations conform with that change.

Note that this optimization takes effect only in Release builds, as the library we use for asset embedding - rust-embed - embeds the assets only in Release mode and in Dev builds it simply loads data from disk. Thus it returns `Cow<[u8]>` in it's interface. Therefore, we still copy that memory around in Dev builds, but that's not really an issue. 
This patch makes no assumptions about the build profile we're running under, that's just an intrinsic property of rust-embed.

Tl;dr: this should shave off about 30Mb of memory usage and a fair chunk (~30ms) of startup time.

Release Notes:
- Improved startup time and memory usage.
2024-01-29 10:06:57 +01:00
Joseph T. Lyons e22ffb6740 Run weekly update each day 2024-01-29 02:47:25 -05:00
Kieran Gill 00a6ac6141 docs: Consistent shortcut style (#6961)
Hey all. This is a follow-up to my last PR
https://github.com/zed-industries/zed/pull/6821. I went through and
applied the same style changes to more pages so your docs are more
consistent.

<img width="1330" alt="image"
src="https://github.com/zed-industries/zed/assets/18583882/b9adbb38-b98d-47c6-b585-7e298ffae854">


Note that some pages from your old docs repo haven't been ported to
`zed-industries/zed` yet.

Release Notes:

- Improved documentation consistency.
2024-01-28 22:33:07 -05:00
Brian Ginsburg 6cd306e4c9 docs: Add initial language settings documentation (#6957)
This pull request implements the following documentation changes:

- [x] Copy existing language settings docs from old docs repo
- [x] Add new pages for Zig, Haskell, Gleam, Deno and PureScript
- [x] Add `rust-analyzer` target directory section to Rust language page

Release Notes:

- Added initial language settings documentation
([#4264](https://github.com/zed-industries/zed/issues/4264)).
2024-01-28 22:07:27 -05:00
Marshall Bowers 5d0c144ce7 theme_importer: Define more colors in VsCodeTheme (#6960)
This PR extends the `VsCodeTheme` struct with more of the colors
available on a VS Code theme.

Release Notes:

- N/A
2024-01-28 21:55:40 -05:00
Conrad Irwin 331b6e7e6e Support "dtx" vim key combination when "x" is immediately to the right of the cursor (#6830)
Closes #4358

The bug originates on this line:
https://github.com/zed-industries/zed/blob/5db7e8f89ee4f5d9801a2eab88adc1db3fda0f46/crates/vim/src/motion.rs#L451

- When running "dtx" on "ˇabcx", the range to delete is 0 -> 2 ("abc")
- When running "dtx" on "abˇcx", the range to delete is 2 -> 2 ("c"), so
`new_point == point` and the function incorrectly returns `None` and "c"
is not deleted
- We need to disambiguate between the "not found" case and the "found
immediately to the right" case
- This bug does not apply to the backwards case ("dTx")

Release Notes:
- Fixed "dtx" vim key combination when "x" is immediately to the right
of the cursor (#4358)
2024-01-28 19:46:14 -07:00
Conrad Irwin 4ab1d8af62 Add support for u and U in vim visual mode (#6948)
This pull request adds support for upper / lower casing a visual
selection with `u` or `U` respectively, and resolves #6901.

I took an approach to split out the logic of the existing `ChangeCase`
action into something that could be reused for the two new actions. One
area that I could use feedback on is whether or not vim binding updates
make sense. Judging purely from the way things work from a clean install
of Vim / Neovim, I'm pretty sure that it's a bug that `u` applies an
undo in visual mode, so I think it's safe to make this change, but it
changes a behavior that some users may be used to by now in Zed.

Release Notes:

- Added support for `u` and `U` in Vim visual mode
([#6901](https://github.com/zed-industries/zed/issues/6901)).
2024-01-28 19:37:46 -07:00
Joseph T. Lyons 7c93f6244d Reinstate requirements.txt 2024-01-28 18:30:47 -05:00
Joseph T. Lyons 92911def96 Update top ranking issues script to take in a day interval (#6951)
Switch to `poetry`
Update script to take in a `query-day-interval` argument, so we can make
a report from all issues or just n last days.

Release Notes:

- N/A
2024-01-28 18:26:01 -05:00
Joseph T. Lyons 80cdd60d4c Add a weekly report 2024-01-28 18:22:39 -05:00
Joseph T. Lyons 6305761064 Update top ranking issues script to take in a day interval 2024-01-28 18:09:11 -05:00
Iván Molina Rebolledo db68fc5130 Add PureScript LSP/Highlighting support (#6911)
This PR adds basic support for the language using the
`purescript-language-server`.

Release Notes:

- Added support for PureScript.
2024-01-28 17:44:50 -05:00
Kirill Bulatov 7767062c09 Add missing workspace edit capabilities (#6950)
Closes https://github.com/zed-industries/zed/issues/6916

Specification:
https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#workspaceEdit
Adds a safe minimum of the capabilities that Zed supports already,
allowing rust-analyzer to send file edits on rename.

Release Notes:

- Fixed rust module rename from editor not renaming the FS entries
([6916](https://github.com/zed-industries/zed/issues/6916))
2024-01-28 23:46:10 +02:00
Marshall Bowers 444f918e51 Retrieve credentials for saved conversations (#6949)
This PR fixes an issue where credentials for saved conversations weren't
being fully retrieved, which was preventing continuing a conversation
with the assistant in a saved conversation.

Release Notes:

- Fixed continuing a saved conversation with the Zed assistant.
2024-01-28 15:25:57 -05:00
Brooks Swinnerton 52f7f2d770 Update name of function to match other implementation 2024-01-28 15:20:50 -05:00
Brooks Swinnerton c0c0abae56 Add support for u and U in vim visual mode 2024-01-28 15:13:09 -05:00
Julia 8e523d812f Fix #4628: npm install to a wrong location (#6742)
By default `npm install` will walk up the folder tree checking for a
folder that contains either a package.json file, or a node_modules
folder. If such a thing is found, then that is treated as the effective
"current directory" for the purpose of running npm commands.
This caused npm dependencies for language servers sometimes to be
installed in the wrong folder, described in #4628.
Adding `--prefix ./` to `npm install` forces
node_runtime.npm_install_packages to install packages in provided path
even if node_modules dir exists somewhere up the filesystem tree from
installation path.
2024-01-28 14:10:10 -05:00
Marshall Bowers 1f82a2aca1 Remove obviated comment in zed-licenses.toml (#6946)
This PR removes a comment from `zed-licenses.toml`, as it no longer
applies now that we don't have `buildLicenses.ts` anymore.

Release Notes:

- N/A
2024-01-28 14:07:53 -05:00
Ikko Eltociear Ashimine b213458803 Fix typo in copilot.rs (#6933)
specifcially -> specifically

Release Notes:

- N/A
2024-01-28 19:56:50 +02:00
d1y 4fc01163da Add Vue file icon (#6930)
https://github.com/vuejs/art/blob/master/white-on-dark-logo.svg
<img width="222" alt="image"
src="https://github.com/zed-industries/zed/assets/45585937/2839dd7e-ea25-4f9b-aac9-2437f1c3df23">

Release Notes:

- Added icon for `.vue` files.
2024-01-28 12:32:43 -05:00
ge 42e605a766 fix: adding prefix arg to npm subcommands 2024-01-28 19:09:50 +02:00
Marshall Bowers 027f055841 Update casing of "OpenAI" in identifiers to match Rust conventions (#6940)
This PR updates the casing of "OpenAI" when used in Rust identifiers to
match the [Rust naming
guidelines](https://rust-lang.github.io/api-guidelines/naming.html):

> In `UpperCamelCase`, acronyms and contractions of compound words count
as one word: use `Uuid` rather than `UUID`, `Usize` rather than `USize`
or `Stdin` rather than `StdIn`.

Release Notes:

- N/A
2024-01-28 12:01:10 -05:00
Marshall Bowers e8bf06fc42 Style crate names in CONTRIBUTING.md (#6939)
This PR styles the crate names in `CONTRIBUTING.md` using inline code.

Release Notes:

- N/A
2024-01-28 11:07:37 -05:00
Marshall Bowers 5dec9f7163 Link to the Zed roadmap in CONTRIBUTING.md (#6937)
This PR updates `CONTRIBUTING.md` to link to the public Zed roadmap.

Release Notes:

- N/A
2024-01-28 10:48:38 -05:00
Piotr Osiewicz f7b6bfefe6 chore: Remove rerun-if-changed clause that might cause spurious rebuilds (#4193)
Something is stomping over the timestamp of generated scene.h right
after the build script finishes:
`Dirty gpui v0.1.0 (/Users/someonetoignore/work/zed/zed/crates/gpui):
the file target/debug/build/gpui-ca04eedfe8d0e13c/out/scene.h has
changed (1705922004.637000680s, 1s after last build at
1705922003.507431315s)`
^ That's an output of `-v` flag added to either `cargo run` or `cargo
build`.
This comes up when you do `cargo build` followed by `cargo run` or
another `cargo build`; the artifact is not getting reused, even though
it should be possible?
Release Notes:
- N/A
2024-01-28 15:35:53 +01:00