save
This commit is contained in:
parent
2298e7d252
commit
0040a4eb28
@ -28,7 +28,7 @@ pub mod server;
|
||||
pub mod sources;
|
||||
|
||||
// 自定义发送请求
|
||||
pub mod custom_request;
|
||||
pub mod request;
|
||||
|
||||
// 测试模块
|
||||
pub mod test;
|
13
src/main.rs
13
src/main.rs
@ -1,9 +1,10 @@
|
||||
#![recursion_limit = "256"]
|
||||
|
||||
use custom_request::{ CustomParamRequest, CustomRequest, DoFastApi };
|
||||
use request::{ CustomParamRequest, CustomRequest, DoFastApi };
|
||||
|
||||
use digital_lsp::server::GLOBAL_FAST_MAP;
|
||||
use log::info;
|
||||
use std::sync::Arc;
|
||||
use std::{collections::HashMap, sync::{Arc, RwLock}};
|
||||
use structopt::StructOpt;
|
||||
use tower_lsp::{LspService, Server};
|
||||
|
||||
@ -16,7 +17,7 @@ mod diagnostics;
|
||||
mod format;
|
||||
mod server;
|
||||
mod sources;
|
||||
mod custom_request;
|
||||
mod request;
|
||||
|
||||
use server::{Backend, GLOBAL_BACKEND};
|
||||
|
||||
@ -36,11 +37,13 @@ async fn main() {
|
||||
let stdin = tokio::io::stdin();
|
||||
let stdout = tokio::io::stdout();
|
||||
|
||||
// let (service, socket) = LspService::new(|client| Arc::new(Backend::new(client, log_handle)));
|
||||
|
||||
let (service, socket) = LspService::build(|client| {
|
||||
let backend = Arc::new(Backend::new(client, log_handle));
|
||||
|
||||
// 初始化全局变量
|
||||
let _ = GLOBAL_BACKEND.set(backend.clone());
|
||||
let _ = GLOBAL_FAST_MAP.set(RwLock::new(HashMap::new()));
|
||||
|
||||
backend
|
||||
})
|
||||
.custom_method("custom/request", CustomRequest)
|
||||
|
@ -13,7 +13,7 @@ use crate::core::fast_hdlparam::FastHdlparam;
|
||||
use crate::core::sv_parser::make_fast_from_syntaxtree;
|
||||
|
||||
use crate::utils::*;
|
||||
use crate::server::{Backend, GLOBAL_BACKEND};
|
||||
use crate::server::{update_global_fast, Backend, GLOBAL_BACKEND, GLOBAL_FAST_MAP};
|
||||
use crate::sources::recovery_sv_parse;
|
||||
|
||||
|
||||
@ -108,7 +108,6 @@ pub fn do_fast(path: String) -> Result<FastHdlparam> {
|
||||
// fast 解析不需要 include
|
||||
let includes: Vec<PathBuf> = Vec::new();
|
||||
|
||||
|
||||
let parse_result = recovery_sv_parse(
|
||||
&text,
|
||||
&uri,
|
||||
@ -116,8 +115,11 @@ pub fn do_fast(path: String) -> Result<FastHdlparam> {
|
||||
&includes
|
||||
);
|
||||
|
||||
|
||||
|
||||
if let Some(syntax_tree) = parse_result {
|
||||
if let Ok(hdlparam) = make_fast_from_syntaxtree(&syntax_tree, &path_buf) {
|
||||
update_global_fast(&hdlparam);
|
||||
return Ok(hdlparam);
|
||||
}
|
||||
}
|
@ -1,3 +1,4 @@
|
||||
use crate::core::fast_hdlparam::FastHdlparam;
|
||||
use crate::sources::*;
|
||||
use crate::completion::keyword::*;
|
||||
use flexi_logger::LoggerHandle;
|
||||
@ -5,6 +6,7 @@ use flexi_logger::LoggerHandle;
|
||||
use log::{debug, info, warn};
|
||||
use once_cell::sync::OnceCell;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::collections::HashMap;
|
||||
use std::string::ToString;
|
||||
use std::sync::{Arc, Mutex, RwLock};
|
||||
use tower_lsp::jsonrpc::Result;
|
||||
@ -12,6 +14,7 @@ use tower_lsp::lsp_types::*;
|
||||
use tower_lsp::{Client, LanguageServer};
|
||||
|
||||
pub static GLOBAL_BACKEND: OnceCell<Arc<Backend>> = OnceCell::new();
|
||||
pub static GLOBAL_FAST_MAP: OnceCell<RwLock<HashMap<String, FastHdlparam>>> = OnceCell::new();
|
||||
|
||||
pub struct LSPServer {
|
||||
pub srcs: Sources,
|
||||
@ -299,26 +302,5 @@ impl LanguageServer for Backend {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_config() {
|
||||
let config = r#"
|
||||
auto_search_workdir: false
|
||||
format: true
|
||||
verible:
|
||||
syntax:
|
||||
enabled: true
|
||||
path: "verible-verilog-syntax"
|
||||
format:
|
||||
args:
|
||||
- --net_variable_alignment=align
|
||||
log_level: Info
|
||||
"#;
|
||||
let config = serde_yaml::from_str::<ProjectConfig>(config);
|
||||
dbg!(&config);
|
||||
assert!(config.is_ok());
|
||||
}
|
||||
pub fn update_global_fast(fast: &FastHdlparam) {
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user