Commit graph

306 commits

Author SHA1 Message Date
Conrad Irwin
ba1c350dad vim: Add ZZ and ZQ
The major change here is a refactoring to allow controling the save
behaviour when closing items, which is pre-work needed for vim command
palette.

For zed-industries/community#1868
2023-09-08 16:25:20 -06:00
Conrad Irwin
8e2e00e003 add vim-specific J (with repeatability) 2023-09-07 11:08:07 -06:00
Conrad Irwin
48bb2a3321 TEMP 2023-09-07 10:51:18 -06:00
Conrad Irwin
1b1d7f22cc Add visual area repeating 2023-09-07 10:45:38 -06:00
Conrad Irwin
20f98e4d17 vim . to replay
Co-Authored-By: maxbrunsfeld@gmail.com
2023-09-06 13:49:55 -06:00
Conrad Irwin
c2c04616b4
vim S (#2929)
Release Notes:
- vim: Add `S` to substitute line ([#1897](https://github.com/zed-industries/community/issues/1897)).
2023-09-05 09:39:08 -06:00
Conrad Irwin
56db21d54b Split ContextMenu actions
This should have no user-visible impact.

For vim `.` to repeat it's important that actions are replayable.
Currently editor::MoveDown *sometimes* moves the cursor down, and
*sometimes* selects the next completion.

For replay we need to be able to separate the two.
2023-09-02 21:04:19 -06:00
Conrad Irwin
af12977d17 vim: Add S to substitute line
For zed-industries/community#1897
2023-09-01 13:13:59 -06:00
Kirill Bulatov
af665cc3d2 Use ctrl-: instead of ctrl-shift-: for inlay hints toggling
The latter is not posible to press in Zed, since `:` is typed as
`shift-;` with typical US keyboard layouts.

In the end, it's the same buttons you have to press to toggle the inlay
hints, but working this time.
2023-08-31 10:43:29 +03:00
Antonio Scandurra
ea17d1638e
Introduce code generation (#2901)
![CleanShot 2023-08-28 at 12 24
36@2x](https://github.com/zed-industries/zed/assets/482957/f97cb399-1ac2-4fa9-94a7-137d1eec711c)


Release Notes:

- Added a new "Inline Assist" feature that lets you transform a
selection or generate new code at the cursor location by hitting
`ctrl-enter`.
2023-08-30 14:58:22 +02:00
Conrad Irwin
dd577074f2
vim: Fix relative motions (#2888)
This changes vim motions to be relative to fold lines, not display
lines, to match the behaviour of vim.

This is necessary for relative line numbers to make sense (as the most
important thing is you can do `3j` to get th e line that is numbered 3).


Release Notes:

- vim: Fix handling of motions when `soft_wrap` is enabled in zed. Like
in vim `j,k,up,down,$,^,0,home,end` will all now navigate in file
coordinates not display coordinates.
- vim: Add `g {j,k,up,down,$,^,0,home,end}` to navigate in display
coordinates.
- vim: Add `z o` and `z c` to open and close folds.
- vim: Add `z f` in visual mode to fold selection.

Note: this may be a jarring change if you're grown used to the current
behaviour of `j` and `k`. You can make the issue less acute by setting
`"soft_wrap":"none"` in your settings; or you can manually copy the
bindings for `g j` to the binding for `j` (etc.) in your keymap.json to
preserve the existing behaviour.
2023-08-29 11:19:37 -07:00
Kirill Bulatov
bbb222b6fc Add a default binding for toggling inlay hints 2023-08-29 20:56:26 +03:00
Conrad Irwin
20aa2a4c54 vim: Fix relative line motion
Before this change up and down were in display co-ordinates, after this
change they are in fold coordinates (which matches the vim behaviour).

To make this work without causing usabliity problems, a bunch of extra
keyboard shortcuts now work:

- vim: `z {o,c}` to open,close a fold
- vim: `z f` to fold current visual selection
- vim: `g {j,k,up,down}` to move up/down a display line
- vim: `g {0,^,$,home,end}` to get to start/end of a display line

Fixes: zed-industries/community#1562
2023-08-25 14:40:04 -06:00
Antonio Scandurra
27c90f12f6 Merge remote-tracking branch 'origin/main' into ai-refactoring 2023-08-25 13:37:32 +02:00
Antonio Scandurra
c1bd035875 Rework inline assistant 2023-08-25 11:39:27 +02:00
Joseph T. Lyons
b77e661c9f Update textmate.json 2023-08-23 01:31:01 -04:00
Conrad Irwin
b0815bd13e
vim: Rewrite paste (#2878)
A complete overhaul of the way vim did paste. This ended up being more
involved than I expected because of the variety of different behaviors
that vim exhibits when copying/pasting between various modes.

Release Notes:

- vim: support P for paste before
([#1869](https://github.com/zed-industries/community/issues/1869)).
- vim: support P in visual modes for paste without overriding clipboard
- vim: fix position when using `p` on text copied outside zed
([#469](https://github.com/zed-industries/community/issues/469)).
- vim: fix indentation when using `p` on text copied from zed
([#1015](https://github.com/zed-industries/community/issues/1015)).
- all: Separate copied multi-selections by `\n`
2023-08-22 20:21:58 -06:00
Conrad Irwin
ef077796f8 vim: Dismiss menu in insert mode with escape 2023-08-22 13:28:50 -06:00
Conrad Irwin
33d7fe02ee Rewrite paste
- vim: support P for paste before
- vim: support P in visual mode for paste without overriding clipboard
- vim: fix position when using `p` on text copied outside zed
- vim: fix indentation when using `p` on text copied from zed
2023-08-22 13:27:57 -06:00
Joseph T. Lyons
ebcb395f1f Add default bindings for new file and directory 2023-08-22 11:33:40 -04:00
Conrad Irwin
5029587e3b Add ctrl-q as an alias for ctrl-v
Fixes: zed-industries/community#871
2023-08-18 11:39:48 -06:00
Conrad Irwin
d1aa82bb48
vim visual block (#2849)
Release notes:

- vim: add Visual Block mode
([#984](https://github.com/zed-industries/community/issues/984)),
([#1415](https://github.com/zed-industries/community/issues/1415)).
- vim: add support for `a<object>` and `i<object>` in visual modes
- vim: fix scroll shortcuts (`ctrl-{f,b,d,u,e,y}`) in visual modes
- allow `shift-enter` to type a newline.
2023-08-18 09:55:40 -06:00
Conrad Irwin
b0ba0f8851 Fix visual objects
Adds 'a'/'i' in visual mode
2023-08-17 17:13:23 -06:00
Conrad Irwin
243d1664e5 shift-enter should also give a newline
(reported as vim feedback, but really true of the editor too)
2023-08-17 16:01:19 -06:00
Conrad Irwin
3c483d85f7 Scrolling should work in visual mode 2023-08-17 15:58:10 -06:00
Conrad Irwin
d308c91020 Add I and A in visual block mode 2023-08-17 11:21:58 -06:00
Mikayla
afebe3faf8
Merge branch 'main' into project_search_design 2023-08-17 01:56:05 -07:00
KCaverly
d727ba18f2 Merge branch 'main' of github.com:zed-industries/zed into project_search_design 2023-08-16 12:43:04 +01:00
Conrad Irwin
1b4dd49b1d Vim visual block mode
This isn't quite an exact emulation, as instead of using one selection
that is magically in "column mode", we emulate it with a bunch of zed
multi-selections (one per line).

I think this is better, as it requires fewer changes to the codebase,
and lets you see the impact of any changes immediately on all lines.

Fixes: zed-industries/community#984
2023-08-15 16:00:50 -06:00
Max Brunsfeld
fafc10d57c Merge branch 'main' into collab-panel 2023-08-15 09:09:50 -07:00
Conrad Irwin
404b1aa65a
Fix vim selection to include entire range (#2787)
Update vim mode to have vim selection and editor selections match.
Before this we had to adjust between vim selections and real selections
when making changes; now we have to adjust when making selections.

Release Notes:

- vim: Ensure editor selection matches the vim selection
([#1796](https://github.com/zed-industries/community/issues/1796)).
- vim: Fix `s` in visual line mode
- vim: Add `o` and `shift-o` to toggle direction of visual selection
- vim: Fix `v` and `shift-v` to toggle back to normal mode
- vim: Fix block selections like `vi}` to contain correct whitespace
2023-08-15 08:36:17 -06:00
Conrad Irwin
1af7425059 Fix vim escape in normal mode
Fixes: zed-industries/community#1857
2023-08-14 16:05:41 -06:00
Conrad Irwin
fb90eada70 Merge branch 'main' into vim-visual-selection 2023-08-14 15:29:33 -06:00
Piotr Osiewicz
c58cf396d3 Add cycle mode command for buffer search 2023-08-09 18:02:21 +02:00
Mikayla
bbe4a9b388
Position and style the channel editor correctly
Fix a bug where some channel updates would be lost
Add channel name sanitization before storing in the database
2023-08-08 14:06:29 -07:00
Piotr Osiewicz
0ca29e56c2 Update keybinds to use new names 2023-08-08 14:33:51 +02:00
Mikayla
f1957b1737
Push focus and fix keybindings 2023-08-07 13:31:58 -07:00
Max Brunsfeld
87b2d599c1 Flesh out channel member management
Co-authored-by: Mikayla <mikayla@zed.dev>
2023-08-04 14:12:08 -07:00
Piotr Osiewicz
8831e03eba Remove reference to pane from a toolbar.
Co-authored-by: Kyle <kyle@zed.dev>
2023-08-03 16:09:26 +02:00
KCaverly
a125e318fe catch up with main 2023-08-02 16:48:11 -04:00
KCaverly
71bbd5f2f6 update keymaps for cycle search mode and toggle filters 2023-08-02 15:08:54 -04:00
Max Brunsfeld
a555fa1ada Merge branch 'main' into collab-panel 2023-08-02 09:08:50 -07:00
Kirill Bulatov
634baeedb4 Add project search history 2023-08-01 01:31:28 +03:00
Kirill Bulatov
646dabe113 Add buffer search history 2023-08-01 01:31:28 +03:00
Conrad Irwin
0c15ef7305 Merge VisualChange -> Substitute
They both are supposed to work the same.
2023-07-28 15:32:02 -06:00
Conrad Irwin
e3788cc6e6 Add o/O for flipping selection 2023-07-28 15:26:40 -06:00
Conrad Irwin
5edcb74760 Add support for visual ranges ending with a newline
These primarily happen when first entering visual mode, but can also
be created with objects like `vi{`.

Along the way fix the way ranges like `vi{` are selected to be more
similar to nvim.
2023-07-28 15:26:40 -06:00
Conrad Irwin
b53fb8633e Fix vim selection to include entire range
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2023-07-28 15:26:40 -06:00
Mikayla Maki
7f9df6dd24
Move channels panel into collab and rename to collab panel
remove contacts popover and add to collab panel
2023-07-28 13:24:42 -07:00
Mikayla Maki
e945b3c0e1
feat(workspace): add action for closing inactive editors on all panes (#2771)
using zed more and more to develop zed itself I'm finding some small qol
features missing, this is one of them
I'm very used to open two or three splits, and sometimes I want to close
everything except for the active editor, but that wasn't supported, as
the `pane::CloseInactiveItems` action only closes inactive items on the
active pane

so I've implemented it really quick, although I'm not sure it's the
right way to do this

note: I really don't like the default keybinding I've set it to, I have
this action bound to `cmd-shift-w` on all editors, but in zed is taken,
so I chose something that's free but without thinking too much about it

Release Notes:

- Added action for closing inactive editors from all panes
2023-07-27 18:11:11 -07:00