Start to split out initialization and registration (#21787)
Still TODO: * [x] Factor out `start_language_server` so we can call it on register (instead of on detect language) * [x] Only call register in singleton editors (or when editing/go-to-definition etc. in a multibuffer?) * [x] Refcount on register so we can unregister when no buffer remain * [ ] (maybe) Stop language servers that are no longer needed after some time Release Notes: - Fixed language servers starting when doing project search - Fixed high CPU usage when ignoring warnings in the diagnostics view --------- Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com> Co-authored-by: Cole <cole@zed.dev>
This commit is contained in:
parent
de89f8cf83
commit
13a81e454a
19 changed files with 2200 additions and 1848 deletions
|
@ -89,6 +89,7 @@ pub enum Event {
|
|||
},
|
||||
Edited {
|
||||
singleton_buffer_edited: bool,
|
||||
edited_buffer: Option<Model<Buffer>>,
|
||||
},
|
||||
TransactionUndone {
|
||||
transaction_id: TransactionId,
|
||||
|
@ -1485,6 +1486,7 @@ impl MultiBuffer {
|
|||
}]);
|
||||
cx.emit(Event::Edited {
|
||||
singleton_buffer_edited: false,
|
||||
edited_buffer: None,
|
||||
});
|
||||
cx.emit(Event::ExcerptsAdded {
|
||||
buffer,
|
||||
|
@ -1512,6 +1514,7 @@ impl MultiBuffer {
|
|||
}]);
|
||||
cx.emit(Event::Edited {
|
||||
singleton_buffer_edited: false,
|
||||
edited_buffer: None,
|
||||
});
|
||||
cx.emit(Event::ExcerptsRemoved { ids });
|
||||
cx.notify();
|
||||
|
@ -1753,6 +1756,7 @@ impl MultiBuffer {
|
|||
self.subscriptions.publish_mut(edits);
|
||||
cx.emit(Event::Edited {
|
||||
singleton_buffer_edited: false,
|
||||
edited_buffer: None,
|
||||
});
|
||||
cx.emit(Event::ExcerptsRemoved { ids });
|
||||
cx.notify();
|
||||
|
@ -1816,6 +1820,7 @@ impl MultiBuffer {
|
|||
cx.emit(match event {
|
||||
language::BufferEvent::Edited => Event::Edited {
|
||||
singleton_buffer_edited: true,
|
||||
edited_buffer: Some(buffer.clone()),
|
||||
},
|
||||
language::BufferEvent::DirtyChanged => Event::DirtyChanged,
|
||||
language::BufferEvent::Saved => Event::Saved,
|
||||
|
@ -1979,6 +1984,7 @@ impl MultiBuffer {
|
|||
self.subscriptions.publish_mut(edits);
|
||||
cx.emit(Event::Edited {
|
||||
singleton_buffer_edited: false,
|
||||
edited_buffer: None,
|
||||
});
|
||||
cx.emit(Event::ExcerptsExpanded { ids: vec![id] });
|
||||
cx.notify();
|
||||
|
@ -2076,6 +2082,7 @@ impl MultiBuffer {
|
|||
self.subscriptions.publish_mut(edits);
|
||||
cx.emit(Event::Edited {
|
||||
singleton_buffer_edited: false,
|
||||
edited_buffer: None,
|
||||
});
|
||||
cx.emit(Event::ExcerptsExpanded { ids });
|
||||
cx.notify();
|
||||
|
@ -5363,13 +5370,16 @@ mod tests {
|
|||
events.read().as_slice(),
|
||||
&[
|
||||
Event::Edited {
|
||||
singleton_buffer_edited: false
|
||||
singleton_buffer_edited: false,
|
||||
edited_buffer: None,
|
||||
},
|
||||
Event::Edited {
|
||||
singleton_buffer_edited: false
|
||||
singleton_buffer_edited: false,
|
||||
edited_buffer: None,
|
||||
},
|
||||
Event::Edited {
|
||||
singleton_buffer_edited: false
|
||||
singleton_buffer_edited: false,
|
||||
edited_buffer: None,
|
||||
}
|
||||
]
|
||||
);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue