Skip to content

Commit

Permalink
Merge #5782
Browse files Browse the repository at this point in the history
5782: Fix StatusNotification r=matklad a=vsrs

This PR fixes the following:

As per specification `params` property in [NotificationMessage ](https://microsoft.github.io/language-server-protocol/specifications/specification-current/#notificationMessage) should be `array | object` while RA uses `"loading" | "ready" | "invalid" | "needsReload"`.

Co-authored-by: vsrs <vit@conrlab.com>
  • Loading branch information
bors[bot] and vsrs authored Aug 17, 2020
2 parents 64bbdb5 + 1eed036 commit 6826dd0
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 5 deletions.
7 changes: 6 additions & 1 deletion crates/rust-analyzer/src/lsp_ext.rs
Original file line number Diff line number Diff line change
Expand Up @@ -237,8 +237,13 @@ pub enum Status {
Invalid,
}

#[derive(Deserialize, Serialize)]
pub struct StatusParams {
pub status: Status,
}

impl Notification for StatusNotification {
type Params = Status;
type Params = StatusParams;
const METHOD: &'static str = "rust-analyzer/status";
}

Expand Down
5 changes: 4 additions & 1 deletion crates/rust-analyzer/src/reload.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ use crate::{
lsp_ext,
main_loop::Task,
};
use lsp_ext::StatusParams;

impl GlobalState {
pub(crate) fn update_configuration(&mut self, config: Config) {
Expand Down Expand Up @@ -85,7 +86,9 @@ impl GlobalState {
Status::Invalid => lsp_ext::Status::Invalid,
Status::NeedsReload => lsp_ext::Status::NeedsReload,
};
self.send_notification::<lsp_ext::StatusNotification>(lsp_status);
self.send_notification::<lsp_ext::StatusNotification>(StatusParams {
status: lsp_status,
});
}
}
pub(crate) fn fetch_workspaces(&mut self) {
Expand Down
8 changes: 7 additions & 1 deletion docs/dev/lsp-extensions.md
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,13 @@ Reloads project information (that is, re-executes `cargo metadata`).

**Method:** `rust-analyzer/status`

**Notification:** `"loading" | "ready" | "invalid" | "needsReload"`
**Notification:**

```typescript
interface StatusParams {
status: "loading" | "ready" | "invalid" | "needsReload",
}
```

This notification is sent from server to client.
The client can use it to display persistent status to the user (in modline).
Expand Down
2 changes: 1 addition & 1 deletion editors/code/src/ctx.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ export class Ctx {

res.pushCleanup(client.start());
await client.onReady();
client.onNotification(ra.status, (status) => res.setStatus(status));
client.onNotification(ra.status, (params) => res.setStatus(params.status));
return res;
}

Expand Down
5 changes: 4 additions & 1 deletion editors/code/src/lsp_ext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ export const analyzerStatus = new lc.RequestType<null, string, void>("rust-analy
export const memoryUsage = new lc.RequestType<null, string, void>("rust-analyzer/memoryUsage");

export type Status = "loading" | "ready" | "invalid" | "needsReload";
export const status = new lc.NotificationType<Status>("rust-analyzer/status");
export interface StatusParams {
status: Status;
}
export const status = new lc.NotificationType<StatusParams>("rust-analyzer/status");

export const reloadWorkspace = new lc.RequestType<null, null, void>("rust-analyzer/reloadWorkspace");

Expand Down

0 comments on commit 6826dd0

Please sign in to comment.