Restructure git diff state management to allow viewing buffers with different diff bases (#21258)
This is a pure refactor of our Git diff state management. Buffers are no longer are associated with one single diff (the unstaged changes). Instead, there is an explicit project API for retrieving a buffer's unstaged changes, and the `Editor` view layer is responsible for choosing what diff to associate with a buffer. The reason for this change is that we'll soon want to add multiple "git diff views" to Zed, one of which will show the *uncommitted* changes for a buffer. But that view will need to co-exist with other views of the same buffer, which may want to show the unstaged changes. ### Todo * [x] Get git gutter and git hunks working with new structure * [x] Update editor tests to use new APIs * [x] Update buffer tests * [x] Restructure remoting/collab protocol * [x] Update assertions about staged text in `random_project_collaboration_tests` * [x] Move buffer tests for git diff management to a new spot, using the new APIs Release Notes: - N/A --------- Co-authored-by: Richard <richard@zed.dev> Co-authored-by: Cole <cole@zed.dev> Co-authored-by: Conrad <conrad@zed.dev>
This commit is contained in:
parent
31796171de
commit
a2115e7242
29 changed files with 1832 additions and 1651 deletions
|
@ -301,7 +301,10 @@ message Envelope {
|
|||
|
||||
SyncExtensions sync_extensions = 285;
|
||||
SyncExtensionsResponse sync_extensions_response = 286;
|
||||
InstallExtension install_extension = 287; // current max
|
||||
InstallExtension install_extension = 287;
|
||||
|
||||
GetStagedText get_staged_text = 288;
|
||||
GetStagedTextResponse get_staged_text_response = 289; // current max
|
||||
}
|
||||
|
||||
reserved 87 to 88;
|
||||
|
@ -1788,11 +1791,12 @@ message BufferState {
|
|||
uint64 id = 1;
|
||||
optional File file = 2;
|
||||
string base_text = 3;
|
||||
optional string diff_base = 4;
|
||||
LineEnding line_ending = 5;
|
||||
repeated VectorClockEntry saved_version = 6;
|
||||
reserved 7;
|
||||
Timestamp saved_mtime = 8;
|
||||
|
||||
reserved 7;
|
||||
reserved 4;
|
||||
}
|
||||
|
||||
message BufferChunk {
|
||||
|
@ -1983,7 +1987,16 @@ message WorktreeMetadata {
|
|||
message UpdateDiffBase {
|
||||
uint64 project_id = 1;
|
||||
uint64 buffer_id = 2;
|
||||
optional string diff_base = 3;
|
||||
optional string staged_text = 3;
|
||||
}
|
||||
|
||||
message GetStagedText {
|
||||
uint64 project_id = 1;
|
||||
uint64 buffer_id = 2;
|
||||
}
|
||||
|
||||
message GetStagedTextResponse {
|
||||
optional string staged_text = 1;
|
||||
}
|
||||
|
||||
message GetNotifications {
|
||||
|
|
|
@ -216,6 +216,8 @@ messages!(
|
|||
(GetImplementationResponse, Background),
|
||||
(GetLlmToken, Background),
|
||||
(GetLlmTokenResponse, Background),
|
||||
(GetStagedText, Foreground),
|
||||
(GetStagedTextResponse, Foreground),
|
||||
(GetUsers, Foreground),
|
||||
(Hello, Foreground),
|
||||
(IncomingCall, Foreground),
|
||||
|
@ -411,6 +413,7 @@ request_messages!(
|
|||
(GetProjectSymbols, GetProjectSymbolsResponse),
|
||||
(GetReferences, GetReferencesResponse),
|
||||
(GetSignatureHelp, GetSignatureHelpResponse),
|
||||
(GetStagedText, GetStagedTextResponse),
|
||||
(GetSupermavenApiKey, GetSupermavenApiKeyResponse),
|
||||
(GetTypeDefinition, GetTypeDefinitionResponse),
|
||||
(LinkedEditingRange, LinkedEditingRangeResponse),
|
||||
|
@ -525,6 +528,7 @@ entity_messages!(
|
|||
GetProjectSymbols,
|
||||
GetReferences,
|
||||
GetSignatureHelp,
|
||||
GetStagedText,
|
||||
GetTypeDefinition,
|
||||
InlayHints,
|
||||
JoinProject,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue