# sidebar: Make project reordering key-bindable \(\#62695\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/90eb566f3263cb9406a339b11ae1023f9d51f173)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: 90eb566f3263cb9406a339b11ae1023f9d51f173

Requested commit: 90eb566f3263cb9406a339b11ae1023f9d51f173

Commit: 90eb566f3263cb9406a339b11ae1023f9d51f173

Tree: 676fcbc32123292fc965080cf0c2e3dd4e9f40eb

Author: Akihiro Okuno

Committer: GitHub

## Message

```
sidebar: Make project reordering key-bindable (#62695)

# Objective

- The sidebar already supports moving project groups through its **Move
Up** and **Move Down** context-menu entries, but those entries use
callbacks that cannot be referenced from `keymap.json`. Moving a project
several positions therefore requires reopening the menu for every step.
- Follow-up to #57448. Related to #61647.

## Solution

- Add `multi_workspace::MoveProjectUp` and
`multi_workspace::MoveProjectDown` actions. The handlers resolve the
active project group and delegate to the existing `MultiWorkspace`
reordering methods, keeping ordering and persistence behavior unchanged.
- Associate the actions with the existing context-menu entries so
configured shortcuts are shown alongside the menu commands. The menu
callbacks still operate on the project that was clicked.

## Testing

- Added a GPUI test that dispatches both actions and verifies that the
active project group moves in the expected direction and remains
unchanged at list boundaries:
- `cargo test -p workspace test_move_active_project_group_actions --
--nocapture`
- Manually verified on macOS with an isolated Zed user-data directory
and three project folders:
  - Assigned custom shortcuts to both actions in `keymap.json`.
  - Confirmed that the active project moves up and down in the sidebar.
- Ran formatting, compilation, and lint checks:
  - `cargo fmt --all -- --check`
  - `cargo check -p sidebar`
- `./script/clippy -p workspace -p sidebar -p gpui_platform --features
gpui_platform/runtime_shaders`

## Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content adheres to Zed's UI standards
([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
and
[icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md)
guidelines)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

## Showcase

<details>
  <summary>Move projects with custom keybindings</summary>


https://github.com/user-attachments/assets/09432817-318b-484e-b630-a6012e9599cd

</details>

---

Release Notes:

- Sidebar: Added key-bindable actions for moving projects up and down.
```

## Parents

- [511ac170363776319b38cc0e9c047a06aa2e7541](https://git.cafe/gitcafe/zed/commit/511ac170363776319b38cc0e9c047a06aa2e7541?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/90eb566f3263cb9406a339b11ae1023f9d51f173?format=markdown)
