This commit is contained in:
锦恢 2024-09-25 12:12:39 +08:00
parent f343a76992
commit 10d8e91b6c
4 changed files with 20 additions and 17 deletions

View File

@ -239,7 +239,7 @@ endmodule
text: text.to_owned(),
},
};
server.did_open(open_params, None);
server.did_open(open_params);
let fid = server.srcs.get_id(&uri);
server.srcs.wait_parse_ready(fid, true);
@ -357,7 +357,7 @@ endmodule
text: text.to_owned(),
},
};
server.did_open(open_params, None);
server.did_open(open_params);
let fid = server.srcs.get_id(&uri);
server.srcs.wait_parse_ready(fid, true);
@ -477,7 +477,7 @@ endmodule
text: text.to_owned(),
},
};
server.did_open(open_params, None);
server.did_open(open_params);
let fid = server.srcs.get_id(&uri);
server.srcs.wait_parse_ready(fid, true);
let file = server.srcs.get_file(fid).unwrap();
@ -566,7 +566,7 @@ endmodule
text: text.to_owned(),
},
};
server.did_open(open_params, None);
server.did_open(open_params);
let fid = server.srcs.get_id(&uri);
server.srcs.wait_parse_ready(fid, true);
let file = server.srcs.get_file(fid).unwrap();
@ -738,8 +738,8 @@ endinterface"#;
text: text2.to_owned(),
},
};
server.did_open(open_params, None);
server.did_open(open_params2, None);
server.did_open(open_params);
server.did_open(open_params2);
let fid = server.srcs.get_id(&uri);
let fid2 = server.srcs.get_id(&uri2);
server.srcs.wait_parse_ready(fid, true);

View File

@ -9,6 +9,7 @@ use sv_parser::{parse_sv, unwrap_node, Locate, RefNode, SyntaxTree};
use super::fast_hdlparam::{FastHdlparam, Macro};
#[allow(unused)]
pub fn sv_parser(path: &str) -> Option<FastHdlparam> {
// The path of SystemVerilog source file
let path = PathBuf::from(path);

View File

@ -1,7 +1,7 @@
use crate::custom_request::StringNotification;
use crate::sources::*;
use crate::completion::keyword::*;
use flexi_logger::LoggerHandle;
#[allow(unused)]
use log::{debug, info, warn};
use once_cell::sync::OnceCell;
use path_clean::PathClean;
@ -255,7 +255,7 @@ impl LanguageServer for Backend {
drop(inc_dirs);
drop(src_dirs);
// parse all source files found from walking source dirs and include dirs
self.server.srcs.init(Some(&self));
self.server.srcs.init();
Ok(InitializeResult {
server_info: None,
capabilities: ServerCapabilities {
@ -308,7 +308,7 @@ impl LanguageServer for Backend {
}
async fn did_open(&self, params: DidOpenTextDocumentParams) {
let diagnostics = self.server.did_open(params, Some(&self));
let diagnostics = self.server.did_open(params);
self.client
.publish_diagnostics(
diagnostics.uri,

View File

@ -3,9 +3,9 @@ use crate::custom_request::update_fast_to_client;
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;
#[allow(unused)]
use log::info;
use log::{debug, error};
use pathdiff::diff_paths;
@ -14,6 +14,7 @@ use std::cmp::min;
use std::collections::HashMap;
use std::env::current_dir;
use std::fs;
#[allow(unused)]
use std::ops::Deref;
use std::ops::Range as StdRange;
use std::path::PathBuf;
@ -34,7 +35,7 @@ macro_rules! unwrap_result {
}
impl LSPServer {
pub fn did_open(&self, params: DidOpenTextDocumentParams, backend: Option<&Backend>) -> PublishDiagnosticsParams {
pub fn did_open(&self, params: DidOpenTextDocumentParams) -> PublishDiagnosticsParams {
let document: TextDocumentItem = params.text_document;
let uri = document.uri.clone();
@ -50,7 +51,7 @@ impl LSPServer {
}],
});
} else {
self.srcs.add(document, backend);
self.srcs.add(document);
}
// diagnostics
let urls = self.srcs.names.read().unwrap().keys().cloned().collect();
@ -114,6 +115,7 @@ pub struct Source {
pub struct SourceMeta {
pub id: usize,
pub valid_parse: Arc<(Mutex<bool>, Condvar)>,
#[allow(unused)]
pub parse_handle: JoinHandle<()>,
}
@ -175,7 +177,7 @@ impl Sources {
source_dirs: Arc::new(RwLock::new(Vec::new())),
}
}
pub fn init(&self, backend: Option<&Backend>) {
pub fn init(&self) {
let mut paths: Vec<PathBuf> = Vec::new();
for path in &*self.include_dirs.read().unwrap() {
paths.push(path.clone());
@ -195,12 +197,12 @@ impl Sources {
-1,
text,
);
self.add(doc, backend);
self.add(doc);
}
}
/// 增加一个 hdl 文件,并为该文件添加单独的解析线程
pub fn add(&self, doc: TextDocumentItem, backend: Option<&Backend>) {
pub fn add(&self, doc: TextDocumentItem) {
// use a condvar to synchronize the parse thread
// the valid bool decides whether or not the file
// needs to be re-parsed
@ -582,7 +584,7 @@ endmodule"#;
text: text.to_owned(),
},
};
server.did_open(open_params, None);
server.did_open(open_params);
let fid = server.srcs.get_id(&uri);
let file = server.srcs.get_file(fid).unwrap();
let file = file.read().unwrap();
@ -635,7 +637,7 @@ endmodule"#;
text: text.to_owned(),
},
};
server.did_open(open_params, None);
server.did_open(open_params);
let fid = server.srcs.get_id(&uri);
server.srcs.wait_parse_ready(fid, true);