Commit Graph

744 Commits

Author SHA1 Message Date
Piotr Osiewicz
f8e248286e Merge branch 'main' into debugger 2025-02-17 11:04:44 +01:00
Dino
e0fc767c11 Display case-sensitive keybindings for vim commands (#24322)
This Pull Request tackles the issue outline in #14287 by changing the
way `KeyBinding`s for vim mode are displayed in the command palette.
It's worth pointing out that this whole thing was pretty much
implemented by Conrad Irwin during a pairing session, I just tried to
clean up some other changes introduced for a different issue, while
improving some comments.

Here's a quick list of the changes introduced:

- Update `KeyBinding` with a new `vim_mode` field to determine whether
the keybinding should be displayed in vim mode.
- Update the way `KeyBinding` is rendered, so as to detect if the
keybinding is for vim mode, if it is, only display keys in uppercase if
they require the shift key.
- Introduce a new global state – `VimStyle(bool)` - use to determine
whether `vim_mode` should be enabled or disabled when creating a new
`KeyBinding` struct. This global state is automatically set by the `vim`
crate whenever vim mode is enabled or disabled.
- Since the app's context is now required when building a `KeyBinding` ,
update a lot of callers to correctly pass this context.

And before and after screenshots, for comparison:

| before | after |
|--------|-------|
| <img width="1050" alt="SCR-20250205-tyeq"
src="https://github.com/user-attachments/assets/e577206d-2a3d-4e06-a96f-a98899cc15c0"
/> | <img width="1050" alt="SCR-20250205-tylh"
src="https://github.com/user-attachments/assets/ebbf70a9-e838-4d32-aee5-0ffde94d65fb"
/> |

Closes #14287 

Release Notes:

- Fix rendering of vim commands to preserve case sensitivity

---------

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
2025-02-14 22:03:59 -07:00
Kirill Bulatov
bd105a5fc7 Continue improving font adjustment settings (#24908)
Follow-up of https://github.com/zed-industries/zed/pull/24857

Based on the feedback,

* made non-persisting font size change as a default in Zed keymaps
JetBrains IDEs seem to persist font size changes by default, hence left
to do so in Zed keymaps too

* fixed a bug with holding a binding to change the font size caused
flickering

Release Notes:

- N/A
2025-02-14 21:00:56 +00:00
Piotr Osiewicz
be80dedd8c Merge branch 'main' into debugger 2025-02-14 16:43:04 +01:00
Kirill Bulatov
3b91de8003 Adds a way to toggle font size without settings adjustments (#24857)
Closes https://github.com/zed-industries/zed/issues/23505

Now `zed::IncreaseBufferFontSize` (and all the same UI- and
Buffer-related settings) action is parameterized with `{ "persist": true
}` (default).
Using `"persist": false` brings back resizing behavior prior to
https://github.com/zed-industries/zed/pull/23265


Release Notes:

- Added a way to toggle font size without settings adjustments
2025-02-14 13:27:48 +02:00
Mikayla Maki
5d26ce14d7 Centralize the CopyPath and CopyRelativePath actions to zed_actions (#24836)
I spent an hour with @marcospb19 this morning debugging an issue with
adding `Copy Path` and `Copy Relative Path` actions to the editor
context menu. Turned out that the problem was using
`workspace::CopyPath` in the menu and `editor::CopyPath` in the action
handler.

This is an easy mistake to make, so let's fix it for everyone.

Release Notes:

- N/A
2025-02-13 23:30:44 +00:00
Agus Zubiaga
c3afeda80b Make edit prediction bindings backwards compatible with existing user keymaps (#24802)
Release Notes:

- N/A

---------

Co-authored-by: Antonio <antonio@zed.dev>
2025-02-13 14:22:08 +00:00
Piotr Osiewicz
661e5b0335 Merge branch 'main' into debugger 2025-02-13 11:28:20 +01:00
Mikayla Maki
b014afa938 Add an undo button to the git panel (#24593)
Also prep infrastructure for pushing a commit

Release Notes:

- N/A

---------

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Co-authored-by: Conrad <conrad@zed.dev>
Co-authored-by: Nate Butler <iamnbutler@gmail.com>
2025-02-12 15:57:08 -07:00
Michael Sloan
12163c9b45 Add Editor && to accept edit contexts in vim keymap (#24684)
Without this, these default vim bindings were taking precedence over
user keybindings

Release Notes:

- N/A
2025-02-11 19:42:43 +00:00
Bennet Bo Fenner
8c349057e5 edit prediction: Fix zeta: Rate completions action not working when using keybinding (#24569)
Release Notes:

- N/A
2025-02-11 12:14:42 +01:00
Michael Sloan
a1d4bd94c9 Make alt-l the default linux/windows binding for AcceptEditPrediction (#24630)
Release Notes:

- N/A
2025-02-11 08:34:32 +00:00
Michael Sloan
9e178f128d Revert "Make ctrl-l the default vim binding for AcceptEditPrediction (#24599) (#24614)
Didn't realize that the base keymap binds this to `editor::SelectLine`.

This reverts commit c5fe5f1139.

Release Notes:

- N/A
2025-02-11 07:14:16 +00:00
Michael Sloan
c5fe5f1139 Make ctrl-l the default vim binding for AcceptEditPrediction (#24599)
Release Notes:

- N/A
2025-02-11 03:03:53 +00:00
Michael Sloan
a9de9e3cb4 Remove alt-tab / alt-enter binds in vim keymap, as they are in base (#24598)
Was unnecessary to include these in #24596 as they will be available
from the base keymap.

Release Notes:

- N/A

Co-authored-by: Conrad <conrad@zed.dev>
2025-02-11 02:41:09 +00:00
Michael Sloan
4c881b6a12 Use editor::AcceptEditPrediction in vim keymap (#24596)
* Overrides the action handler to switch to insert mode after jumps.

* Returns `vim::Tab` to its behavior from before #24418

Release Notes:

- N/A

Co-authored-by: Conrad <conrad@zed.dev>
2025-02-10 19:20:13 -07:00
Michael Sloan
7fe331f83d Remove old keymap comments about AcceptEditPrediction modifier changes (#24592)
This was fixed in #24442

Release Notes:

- N/A
2025-02-10 17:58:08 -07:00
Piotr Osiewicz
39d4d624fb Merge branch 'main' into debugger 2025-02-10 02:10:39 +01:00
roycrippen4
d9183c7669 vim: Escape to normal mode when visual surround operation pending (#24484)
Closes #24382

Release Notes:
Added a default keymap that returns the user to `normal` mode after
pressing escape during a pending `visual-surround` operation.

- N/A

---------

Co-authored-by: roy.crippen4 <roy.crippen4@archarithms.com>
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
2025-02-07 20:23:10 -07:00
Danilo Leal
c4bcff1e87 edit predictions: Add binding to the prediction toggle (#24468)
This PR primary goal is to add a keybinding to the (ephemeral)
prediction toggle. In doing that, we also standardized the keybinding to
open the status bar menu with it.

Release Notes:

- N/A

---------

Co-authored-by: Bennet Bo Fenner <53836821+bennetbo@users.noreply.github.com>
2025-02-07 18:01:39 -03:00
Conrad Irwin
3be8066415 Newlines in commit editor (#24465)
Release Notes:

- N/A
2025-02-07 12:31:12 -07:00
smit
44c6a54f95 pane: Improve close active item to better handle pinned tabs (#23488)
Closes #22247

- [x] Do not close pinned tab on keyboard shortcuts like `ctrl+w` or
`alt+f4`
- [x] Close pinned tab on context menu action, menu bar action, or vim
bang
- [x] While closing pinned tab via shortcut (where it won't close),
instead activate any other non-pinned tab in same pane
- [x] Else, if any other pane contains non-pinned tab, activate that
- [x] Tests

Co-authored-by: uncenter <47499684+uncenter@users.noreply.github.com>

Release Notes:

- Pinned tab now stay open when using close shortcuts, auto focuses to
any other non-pinned tab instead.
2025-02-07 22:54:57 +05:30
smit
00c2a30059 Migrate keymap and settings + edit predictions rename (#23834)
- [x] snake case keymap properties
- [x] flatten actions
- [x] keymap migration + notfication
- [x] settings migration + notification
- [x] inline completions -> edit predictions 

### future: 
- keymap notification doesn't show up on start up, only on keymap save.
this is existing bug in zed, will be addressed in seperate PR.

Release Notes:

- Added a notification for deprecated settings and keymaps, allowing you
to migrate them with a single click. A backup of your existing keymap
and settings will be created in your home directory.
- Modified some keymap actions and settings for consistency.

---------

Co-authored-by: Piotr Osiewicz <piotr@zed.dev>
Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
2025-02-07 21:17:07 +05:30
Conrad Irwin
1f9d02607b Fixes to commit button in Git Panel (#24425)
Git Panel updates:

* Fixes commit/commit all button to work (and be disabled correctly in
merge conflict status)
* Updates keyboard shortcuts and sets focus on the button (enter now
does the same as click; tab cycles between editor and change list)


Closes #ISSUE

Release Notes:

- N/A *or* Added/Fixed/Improved ...

---------

Co-authored-by: Cole Miller <cole@zed.dev>
2025-02-07 00:21:28 -07:00
Michael Sloan
a42e040660 Remove use of use_key_equivalents from linux keymap as it does nothing (#24422)
`use_key_equivalents` does nothing on linux, as key equivalents are only
supported on mac. While it could be sensible to anticipate support,
right now it is only used in these few spots, so removing it.

Release Notes:

- N/A
2025-02-07 03:46:15 +00:00
Conrad Irwin
8646d37c0c vim: Replace with Register (#24326)
Closes #18813

Release Notes:

- vim: Add `gr` for [replace with
register](https://github.com/vim-scripts/ReplaceWithRegister)
2025-02-06 20:24:41 -07:00
Agus Zubiaga
13089d7ec6 edit predictions: Polish up ⌥ preview experience (#24380)
- Do not accept with just `tab` in `when_holding_modifer` mode
- Fix fake cursor for jumps when destination row is outside viewport
- Use current preview state for deciding whether to show modifiers in
popovers
- Stay in preview state if ⌥ isn't released after accepting a jump

Release Notes:

- N/A
2025-02-06 16:13:21 +00:00
Agus Zubiaga
6ec4adffe7 Accept edit predictions with alt-tab in addition to tab (#24272)
When you have an edit prediction available, you can now also accept it
with `alt-tab` (or `alt-enter` on Linux) even if you don't have an LSP
completions menu open. This is meant to lower the mental load when going
from one mode to another.

Release Notes:

- N/A
2025-02-05 19:24:09 +01:00
Agus Zubiaga
c252b5db16 Accept edit predictions with alt-tab in addition to tab (#24272)
When you have an edit prediction available, you can now also accept it
with `alt-tab` (or `alt-enter` on Linux) even if you don't have an LSP
completions menu open. This is meant to lower the mental load when going
from one mode to another.

Release Notes:

- N/A
2025-02-05 11:06:12 -03:00
Remco Smits
aa268d1379 Merge branch 'main' into debugger 2025-02-05 11:24:31 +01:00
João Marcos
22b7042b9e Avoid suggesting 'find' key for linux shortcuts (#24252)
this key isn't present in most keyboards, and so, other key combinations
should be preferred over this one

Release Notes:

- N/A
2025-02-05 05:52:25 +00:00
Conrad Irwin
66d0cdfd91 vim: Add ctrl-w a (#24162)
Closes #ISSUE

Release Notes:

- vim: Add `ctrl-w a` to close all items in the current pane
2025-02-04 03:26:37 +00:00
Saurabh
3d3ac2c470 vim: Fix ctrl-w ctrl-q and ctrl-w ctrl-c to close active pane instead of all panes (#24018)
According to vim `ctrl-w ctrl-q` should close the active tab or pane
similar to :q


![Screenshot_20250131_163139](https://github.com/user-attachments/assets/c6a0d3a0-8dcf-4152-b2bf-835472d4f870)

Release Notes:

- vim: fix `ctrl-w ctrl-q` to close active pane instead of all panes
2025-02-03 20:10:03 -07:00
Piotr Osiewicz
dcde289f94 Merge branch 'main' into debugger 2025-02-04 02:21:09 +01:00
Agus Zubiaga
4c29e1ff07 zeta: Improve UX for simultaneous LSP and prediction completions (#24024)
Release Notes:

- N/A

---------

Co-authored-by: Michael Sloan <michael@zed.dev>
Co-authored-by: Danilo <danilo@zed.dev>
Co-authored-by: Richard <richard@zed.dev>
2025-02-03 21:47:11 -03:00
Remco Smits
e81a7e1e06 Merge branch 'main' into debugger 2025-02-03 10:11:12 +01:00
Conrad Irwin
a3c7dc3321 vim: Add textobject e for entire file (#24039)
Co-Authored-By: Thomas Heartman <zed@thomasheartman.com>

Release Notes:

- vim: Add `e` for entire file object. `yae` to copy entire file

Co-authored-by: Thomas Heartman <zed@thomasheartman.com>
2025-01-31 21:38:19 -07:00
Conrad Irwin
f2b3f3a9ab Allow buffer search in project search (#23819)
Closes #13437
Closes #19993

Release Notes:

- Allow searching within the results of a project search
- vim: Fix `/`/`?`, `n`/`N`, `gn`/`gN`,`*`/`#` in project search results

---------

Co-authored-by: Nico <nico.lehmann@gmail.com>
2025-01-31 00:13:46 -07:00
Agus Zubiaga
e23e03592b zeta: Onboarding and title bar banner (#23797)
Release Notes:

- N/A

---------

Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Co-authored-by: Danilo <danilo@zed.dev>
Co-authored-by: João Marcos <joao@zed.dev>
2025-01-30 16:55:32 -03:00
curiouslad
e584586cb0 terminal: Fix alt-f and alt-b behavior (#23741)
Fixes alt+f and alt+b (word forward and word backward) behavior in
terminal

Release Notes:

- N/A
2025-01-29 14:01:25 -08:00
Kirill Bulatov
07161d65d0 Bind editor::OpenSelectionsInMultibuffer in full editors only (#23832)
Follow-up of https://github.com/zed-industries/zed/pull/23648

Binding `alt-enter` to all editors breaks
46f45464be/assets/keymaps/default-macos.json (L281)
key binding for buffer search, and it's impossible to select all search
matches anymore.

Release Notes:

- N/A
2025-01-29 12:06:27 +00:00
Anthony Eid
a2e0b6778b Merge branch 'main' into debugger 2025-01-29 04:13:19 -05:00
Anthony Eid
78865820d8 Transition to gpui3 (#103)
Update debugger's branch gpui version to 3

Co-authored-by: Remco Smits djsmits12@gmail.com
2025-01-29 03:46:37 -05:00
Jason Lee
6d4ccb0eb1 Fix project_panel::NewDirectory in TextMate keymap (#23825)
Release Notes:

- Fixed incorrect action names in TextMate keymap.
2025-01-29 08:37:45 +00:00
Osvaldo
9e31b1019e vim: Add any brackets to support motions like ab and ib to work with any type of brackets (#23679)
# Add AnyBrackets text object for Vim mode

## Overview
This PR introduces a new text object `AnyBrackets` that allows
operations on the closest matching pair of brackets, regardless of the
bracket type. This enhances the editing experience by reducing the need
to identify specific bracket types before performing text operations.

By default, this feature is NOT mapped to any key in vim.json. However,
it can be enabled manually, and the recommended key for mapping is b:

If you want to add it to your zed keymap config you need to add the
following config:
```json
{
	"context": "vim_operator == a || vim_operator == i || vim_operator == cs",
	"bindings": {
		"b": "vim::AnyBrackets"
	}
}
```

## Features
- New text object that works with parentheses `()`, square brackets
`[]`, curly braces `{}`, they are also know as round brackets, square
brackets and curly brackets in english.
- Automatically finds the closest matching pair of any bracket type
- Works with all standard Vim operators (delete, change, yank)
- Supports both "inside" and "around" variants (`i` and `a`)

## Usage Examples
```vim
# Delete inside the closest brackets
di(  # Works on (), [] or {} depending on which is closest

# Change around the closest brackets
ca[  # Works on (), [] or {}  depending on which is closest

# Visual select inside the closest brackets
vi{  # Works on (), [] or {}  depending on which is closest
```

# References:
- Based on the popular plugin https://github.com/echasnovski/mini.ai

# Important Notes
This PR also fixes a bug with nested quotes on AnyQuotes, now it works
fine with any type of quotes or brackets.
Please take a look at the new tests to understand the expected behavior.

Release Notes:

- vim: Add `ab`/`ib` "AnyBrackets" text objects that are the smallest of
`a(`, `a[` or `a{` or `i(`, `i[` or `i{`
- vim: Fix aq/iq "AnyQuotes" text objects when they are nested
2025-01-28 20:23:17 -07:00
Cole Miller
27d57ba3b6 git: First stab at adding Linux and Vim keybindings (#23738)
Release Notes:

- N/A
2025-01-27 16:58:09 -05:00
Joseph T. Lyons
21b4a0d50e Adjust editor: open excerpts split key binding (#23646)
The pattern in Zed and in other editors is to use `cmd` to modify some
file-opening action to open it in a split rather than in the current
pane.

- In the project pane, a `click` opens a file, and a `cmd-click` opens
it in a split
- In the file finder, `enter` opens the file, and a `cmd-enter` opens it
in a split

It makes sense to me that if `alt-enter` opens a file from the excerpt,
that `cmd-alt-enter` opens it in a split, following the pattern above.

Note: I'm not auto-merging this, as others might disagree.
Note: I didn't touch the Vim binding.

Release Notes:

- Breaking Change: Changed `editor: open excerpts split` key binding to
`cmd-alt-enter` on macOS and `ctrl-alt-enter` on Linux.
2025-01-25 17:06:53 -05:00
Joseph T. Lyons
7c0a39daa6 Add key binding for editor: open selections in multibuffer (#23648)
Follow-up to: https://github.com/zed-industries/zed/pull/23644

- Existing: `alt-enter` to open files from multi-buffer selections
- New: `alt-enter` to open multi-buffer from file selections

I updated the original PR changelog line.

Release Notes:

- N/A
2025-01-25 10:27:14 +00:00
Max Brunsfeld
d2c55cbe3d Rework diff rendering to allow putting the cursor into deleted text, soft-wrapping and scrolling deleted text correctly (#22994)
Closes #12553

* [x] Fix `diff_hunk_before`
* [x] Fix failure to show deleted text when expanding hunk w/ cursor on
second line of the hunk
* [x] Failure to expand diff hunk below the cursor.
* [x] Delete the whole file, and expand the diff. Backspace over the
deleted hunk, panic!
* [x] Go-to-line now counts the diff hunks, but it should not
* [x] backspace at the beginning of a deleted hunk deletes too much text
* [x] Indent guides are rendered incorrectly 
* [ ] Fix randomized multi buffer tests

Maybe:
* [ ] Buffer search should include deleted text (in vim mode it turns
out I use `/x` all the time to jump to the next x I can see).
* [ ] vim: should refuse to switch into insert mode if selection is
fully within a diff.
* [ ] vim `o` command when cursor is on last line of deleted hunk.
* [ ] vim `shift-o` on first line of deleted hunk moves cursor but
doesn't insert line
* [x] `enter` at end of diff hunk inserts a new line but doesn't move
cursor
* [x] (`shift-enter` at start of diff hunk does nothing)
* [ ] Inserting a line just before an expanded hunk collapses it

Release Notes:


- Improved diff rendering, allowing you to navigate with your cursor
inside of deleted text in diff hunks.

---------

Co-authored-by: Conrad <conrad@zed.dev>
Co-authored-by: Cole <cole@zed.dev>
Co-authored-by: Mikayla <mikayla@zed.dev>
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Co-authored-by: Michael <michael@zed.dev>
Co-authored-by: Agus <agus@zed.dev>
Co-authored-by: João <joao@zed.dev>
2025-01-24 14:18:22 -07:00
Nate Butler
d5c7e0b1e3 git_ui: Add keybinding for focusing the git panel (#23613)
Adds a keybinding for opening/toggling focus to the git panel

Release Notes:

- N/A
2025-01-24 17:20:26 +00:00