save
This commit is contained in:
parent
f343a76992
commit
10d8e91b6c
@ -239,7 +239,7 @@ endmodule
|
|||||||
text: text.to_owned(),
|
text: text.to_owned(),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
server.did_open(open_params, None);
|
server.did_open(open_params);
|
||||||
let fid = server.srcs.get_id(&uri);
|
let fid = server.srcs.get_id(&uri);
|
||||||
server.srcs.wait_parse_ready(fid, true);
|
server.srcs.wait_parse_ready(fid, true);
|
||||||
|
|
||||||
@ -357,7 +357,7 @@ endmodule
|
|||||||
text: text.to_owned(),
|
text: text.to_owned(),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
server.did_open(open_params, None);
|
server.did_open(open_params);
|
||||||
let fid = server.srcs.get_id(&uri);
|
let fid = server.srcs.get_id(&uri);
|
||||||
server.srcs.wait_parse_ready(fid, true);
|
server.srcs.wait_parse_ready(fid, true);
|
||||||
|
|
||||||
@ -477,7 +477,7 @@ endmodule
|
|||||||
text: text.to_owned(),
|
text: text.to_owned(),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
server.did_open(open_params, None);
|
server.did_open(open_params);
|
||||||
let fid = server.srcs.get_id(&uri);
|
let fid = server.srcs.get_id(&uri);
|
||||||
server.srcs.wait_parse_ready(fid, true);
|
server.srcs.wait_parse_ready(fid, true);
|
||||||
let file = server.srcs.get_file(fid).unwrap();
|
let file = server.srcs.get_file(fid).unwrap();
|
||||||
@ -566,7 +566,7 @@ endmodule
|
|||||||
text: text.to_owned(),
|
text: text.to_owned(),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
server.did_open(open_params, None);
|
server.did_open(open_params);
|
||||||
let fid = server.srcs.get_id(&uri);
|
let fid = server.srcs.get_id(&uri);
|
||||||
server.srcs.wait_parse_ready(fid, true);
|
server.srcs.wait_parse_ready(fid, true);
|
||||||
let file = server.srcs.get_file(fid).unwrap();
|
let file = server.srcs.get_file(fid).unwrap();
|
||||||
@ -738,8 +738,8 @@ endinterface"#;
|
|||||||
text: text2.to_owned(),
|
text: text2.to_owned(),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
server.did_open(open_params, None);
|
server.did_open(open_params);
|
||||||
server.did_open(open_params2, None);
|
server.did_open(open_params2);
|
||||||
let fid = server.srcs.get_id(&uri);
|
let fid = server.srcs.get_id(&uri);
|
||||||
let fid2 = server.srcs.get_id(&uri2);
|
let fid2 = server.srcs.get_id(&uri2);
|
||||||
server.srcs.wait_parse_ready(fid, true);
|
server.srcs.wait_parse_ready(fid, true);
|
||||||
|
@ -9,6 +9,7 @@ use sv_parser::{parse_sv, unwrap_node, Locate, RefNode, SyntaxTree};
|
|||||||
|
|
||||||
use super::fast_hdlparam::{FastHdlparam, Macro};
|
use super::fast_hdlparam::{FastHdlparam, Macro};
|
||||||
|
|
||||||
|
#[allow(unused)]
|
||||||
pub fn sv_parser(path: &str) -> Option<FastHdlparam> {
|
pub fn sv_parser(path: &str) -> Option<FastHdlparam> {
|
||||||
// The path of SystemVerilog source file
|
// The path of SystemVerilog source file
|
||||||
let path = PathBuf::from(path);
|
let path = PathBuf::from(path);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
use crate::custom_request::StringNotification;
|
|
||||||
use crate::sources::*;
|
use crate::sources::*;
|
||||||
use crate::completion::keyword::*;
|
use crate::completion::keyword::*;
|
||||||
use flexi_logger::LoggerHandle;
|
use flexi_logger::LoggerHandle;
|
||||||
|
#[allow(unused)]
|
||||||
use log::{debug, info, warn};
|
use log::{debug, info, warn};
|
||||||
use once_cell::sync::OnceCell;
|
use once_cell::sync::OnceCell;
|
||||||
use path_clean::PathClean;
|
use path_clean::PathClean;
|
||||||
@ -255,7 +255,7 @@ impl LanguageServer for Backend {
|
|||||||
drop(inc_dirs);
|
drop(inc_dirs);
|
||||||
drop(src_dirs);
|
drop(src_dirs);
|
||||||
// parse all source files found from walking source dirs and include 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 {
|
Ok(InitializeResult {
|
||||||
server_info: None,
|
server_info: None,
|
||||||
capabilities: ServerCapabilities {
|
capabilities: ServerCapabilities {
|
||||||
@ -308,7 +308,7 @@ impl LanguageServer for Backend {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async fn did_open(&self, params: DidOpenTextDocumentParams) {
|
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
|
self.client
|
||||||
.publish_diagnostics(
|
.publish_diagnostics(
|
||||||
diagnostics.uri,
|
diagnostics.uri,
|
||||||
|
@ -3,9 +3,9 @@ use crate::custom_request::update_fast_to_client;
|
|||||||
use crate::definition::def_types::*;
|
use crate::definition::def_types::*;
|
||||||
use crate::definition::get_scopes;
|
use crate::definition::get_scopes;
|
||||||
use crate::diagnostics::{get_diagnostics, is_hidden};
|
use crate::diagnostics::{get_diagnostics, is_hidden};
|
||||||
use crate::server::Backend;
|
|
||||||
use crate::server::LSPServer;
|
use crate::server::LSPServer;
|
||||||
use futures::executor::block_on;
|
use futures::executor::block_on;
|
||||||
|
#[allow(unused)]
|
||||||
use log::info;
|
use log::info;
|
||||||
use log::{debug, error};
|
use log::{debug, error};
|
||||||
use pathdiff::diff_paths;
|
use pathdiff::diff_paths;
|
||||||
@ -14,6 +14,7 @@ use std::cmp::min;
|
|||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::env::current_dir;
|
use std::env::current_dir;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
|
#[allow(unused)]
|
||||||
use std::ops::Deref;
|
use std::ops::Deref;
|
||||||
use std::ops::Range as StdRange;
|
use std::ops::Range as StdRange;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
@ -34,7 +35,7 @@ macro_rules! unwrap_result {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl LSPServer {
|
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 document: TextDocumentItem = params.text_document;
|
||||||
let uri = document.uri.clone();
|
let uri = document.uri.clone();
|
||||||
|
|
||||||
@ -50,7 +51,7 @@ impl LSPServer {
|
|||||||
}],
|
}],
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
self.srcs.add(document, backend);
|
self.srcs.add(document);
|
||||||
}
|
}
|
||||||
// diagnostics
|
// diagnostics
|
||||||
let urls = self.srcs.names.read().unwrap().keys().cloned().collect();
|
let urls = self.srcs.names.read().unwrap().keys().cloned().collect();
|
||||||
@ -114,6 +115,7 @@ pub struct Source {
|
|||||||
pub struct SourceMeta {
|
pub struct SourceMeta {
|
||||||
pub id: usize,
|
pub id: usize,
|
||||||
pub valid_parse: Arc<(Mutex<bool>, Condvar)>,
|
pub valid_parse: Arc<(Mutex<bool>, Condvar)>,
|
||||||
|
#[allow(unused)]
|
||||||
pub parse_handle: JoinHandle<()>,
|
pub parse_handle: JoinHandle<()>,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -175,7 +177,7 @@ impl Sources {
|
|||||||
source_dirs: Arc::new(RwLock::new(Vec::new())),
|
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();
|
let mut paths: Vec<PathBuf> = Vec::new();
|
||||||
for path in &*self.include_dirs.read().unwrap() {
|
for path in &*self.include_dirs.read().unwrap() {
|
||||||
paths.push(path.clone());
|
paths.push(path.clone());
|
||||||
@ -195,12 +197,12 @@ impl Sources {
|
|||||||
-1,
|
-1,
|
||||||
text,
|
text,
|
||||||
);
|
);
|
||||||
self.add(doc, backend);
|
self.add(doc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 增加一个 hdl 文件,并为该文件添加单独的解析线程
|
/// 增加一个 hdl 文件,并为该文件添加单独的解析线程
|
||||||
pub fn add(&self, doc: TextDocumentItem, backend: Option<&Backend>) {
|
pub fn add(&self, doc: TextDocumentItem) {
|
||||||
// use a condvar to synchronize the parse thread
|
// use a condvar to synchronize the parse thread
|
||||||
// the valid bool decides whether or not the file
|
// the valid bool decides whether or not the file
|
||||||
// needs to be re-parsed
|
// needs to be re-parsed
|
||||||
@ -582,7 +584,7 @@ endmodule"#;
|
|||||||
text: text.to_owned(),
|
text: text.to_owned(),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
server.did_open(open_params, None);
|
server.did_open(open_params);
|
||||||
let fid = server.srcs.get_id(&uri);
|
let fid = server.srcs.get_id(&uri);
|
||||||
let file = server.srcs.get_file(fid).unwrap();
|
let file = server.srcs.get_file(fid).unwrap();
|
||||||
let file = file.read().unwrap();
|
let file = file.read().unwrap();
|
||||||
@ -635,7 +637,7 @@ endmodule"#;
|
|||||||
text: text.to_owned(),
|
text: text.to_owned(),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
server.did_open(open_params, None);
|
server.did_open(open_params);
|
||||||
let fid = server.srcs.get_id(&uri);
|
let fid = server.srcs.get_id(&uri);
|
||||||
|
|
||||||
server.srcs.wait_parse_ready(fid, true);
|
server.srcs.wait_parse_ready(fid, true);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user