完成 fast 的 notification
This commit is contained in:
parent
0c56fc4ae9
commit
30cd26cab9
13
Cargo.lock
generated
13
Cargo.lock
generated
@ -205,6 +205,7 @@ version = "0.0.1"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"flexi_logger",
|
||||
"futures",
|
||||
"log",
|
||||
"once_cell",
|
||||
"path-clean",
|
||||
@ -284,6 +285,7 @@ checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40"
|
||||
dependencies = [
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-executor",
|
||||
"futures-io",
|
||||
"futures-sink",
|
||||
"futures-task",
|
||||
@ -306,6 +308,17 @@ version = "0.3.28"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c"
|
||||
|
||||
[[package]]
|
||||
name = "futures-executor"
|
||||
version = "0.3.28"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-task",
|
||||
"futures-util",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "futures-io"
|
||||
version = "0.3.28"
|
||||
|
@ -7,6 +7,7 @@ edition = "2018"
|
||||
[dependencies]
|
||||
sv-parser = { version = "0.13.3", path = "sv-parser/sv-parser"}
|
||||
once_cell = "1.8"
|
||||
futures = "0.3"
|
||||
log = "0.4.19"
|
||||
tower-lsp = "0.20.0"
|
||||
flexi_logger = "0.29.0"
|
||||
|
@ -3,6 +3,7 @@ use std::io::BufRead;
|
||||
use std::{collections::HashMap, io::BufReader};
|
||||
use std::path::PathBuf;
|
||||
use anyhow::Error;
|
||||
use log::info;
|
||||
use sv_parser::{parse_sv, unwrap_node, ConstantMintypmaxExpression, GateInstantiation, ListOfParameterAssignments, ListOfPortConnections, Locate, PackedDimensionRange, RefNode, SyntaxTree};
|
||||
|
||||
use super::fast_hdlparam::{FastHdlparam, Macro};
|
||||
|
@ -131,9 +131,22 @@ pub fn do_fast(path: String) -> Result<FastHdlparam> {
|
||||
|
||||
|
||||
// 下面是服务端发送给客户端的
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub struct StringNotification {
|
||||
pub content: String
|
||||
}
|
||||
|
||||
impl Notification for StringNotification {
|
||||
const METHOD: &'static str = "update/string";
|
||||
type Params = Self;
|
||||
}
|
||||
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub struct UpdateFastNotification {
|
||||
pub fast: FastHdlparam
|
||||
pub fast: FastHdlparam,
|
||||
pub path: String
|
||||
}
|
||||
|
||||
impl Notification for UpdateFastNotification {
|
||||
@ -141,8 +154,16 @@ impl Notification for UpdateFastNotification {
|
||||
type Params = Self;
|
||||
}
|
||||
|
||||
pub fn update_fast_to_client(fast: FastHdlparam) {
|
||||
|
||||
pub async fn update_fast_to_client(fast: FastHdlparam, path: &PathBuf) {
|
||||
// info!("send fast to foreend {:?}", fast);
|
||||
|
||||
info!("send fast to foreend");
|
||||
let backend = GLOBAL_BACKEND.get().unwrap();
|
||||
let params = UpdateFastNotification { fast };
|
||||
backend.client.send_notification::<UpdateFastNotification>(params);
|
||||
let path = path.to_str().unwrap_or("").to_string();
|
||||
|
||||
let params = UpdateFastNotification { fast, path };
|
||||
info!("backend client: {:?}", backend.client);
|
||||
|
||||
backend.client.send_notification::<UpdateFastNotification>(params).await;
|
||||
}
|
@ -1,3 +1,4 @@
|
||||
use crate::custom_request::StringNotification;
|
||||
use crate::sources::*;
|
||||
use crate::completion::keyword::*;
|
||||
use flexi_logger::LoggerHandle;
|
||||
@ -299,6 +300,7 @@ impl LanguageServer for Backend {
|
||||
.log_message(MessageType::INFO, "digital lsp initialized!")
|
||||
.await;
|
||||
|
||||
// self.client.send_notification::<StringNotification>(StringNotification { content: "hello from lsp server".to_string() }).await;
|
||||
}
|
||||
|
||||
async fn shutdown(&self) -> Result<()> {
|
||||
|
@ -1,11 +1,12 @@
|
||||
use crate::core::sv_parser::make_fast_from_syntaxtree;
|
||||
use crate::custom_request::update_fast_to_client;
|
||||
use crate::custom_request::UpdateFastNotification;
|
||||
use crate::definition::def_types::*;
|
||||
use crate::definition::get_scopes;
|
||||
use crate::diagnostics::{get_diagnostics, is_hidden};
|
||||
use crate::server::Backend;
|
||||
use crate::server::LSPServer;
|
||||
use futures::executor::block_on;
|
||||
use log::info;
|
||||
use log::{debug, error};
|
||||
use pathdiff::diff_paths;
|
||||
use ropey::{Rope, RopeSlice};
|
||||
@ -13,6 +14,7 @@ use std::cmp::min;
|
||||
use std::collections::HashMap;
|
||||
use std::env::current_dir;
|
||||
use std::fs;
|
||||
use std::ops::Deref;
|
||||
use std::ops::Range as StdRange;
|
||||
use std::path::PathBuf;
|
||||
use std::sync::{Arc, Condvar, Mutex, RwLock};
|
||||
@ -253,7 +255,9 @@ impl Sources {
|
||||
}
|
||||
};
|
||||
// update_fast_to_client(backend.clone(), fast);
|
||||
update_fast_to_client(fast);
|
||||
block_on(async {
|
||||
update_fast_to_client(fast, &path).await;
|
||||
});
|
||||
}
|
||||
|
||||
let mut file = source_handle.write().unwrap();
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit af11f5ff1ef091562d2b17cdf4de3614aedf2286
|
||||
Subproject commit 4960ea3fb7c848462ce6e78dbae454ffc775803f
|
Loading…
x
Reference in New Issue
Block a user