实现 did_close 事件

This commit is contained in:
锦恢 2024-12-17 19:14:56 +08:00
parent 826d62dfbd
commit 9119cfb0ed
2 changed files with 9 additions and 16 deletions

View File

@ -183,18 +183,6 @@ pub fn update_diagnostics_configuration(
} }
#[derive(Debug, Deserialize)]
#[derive(serde::Serialize)]
pub enum DigitalLinterMode {
/// 全局诊断,将所有设计源直接进行诊断,并报错,无论文件是否打开
FULL,
/// 单文件关闭时,对应报错去除,打开哪个文件就对哪个文件进行诊断
SINGLE,
/// 全局关闭,即整个工程都不进行工程报错
NONE
}
#[derive(Debug, Deserialize)] #[derive(Debug, Deserialize)]
#[derive(serde::Serialize)] #[derive(serde::Serialize)]
pub struct DigitalLinterConfiguration { pub struct DigitalLinterConfiguration {

View File

@ -1,6 +1,6 @@
use crate::completion::directives::provide_vlog_directives_completions; use crate::completion::directives::provide_vlog_directives_completions;
use crate::core::cache_storage::CacheManager; use crate::core::cache_storage::CacheManager;
use crate::diagnostics::{DigitalLinterConfiguration, DigitalLinterMode}; use crate::diagnostics::DigitalLinterConfiguration;
use crate::sources::*; use crate::sources::*;
use crate::completion::{keyword::*, provide_vlog_sys_tasks_completions}; use crate::completion::{keyword::*, provide_vlog_sys_tasks_completions};
use flexi_logger::LoggerHandle; use flexi_logger::LoggerHandle;
@ -97,8 +97,6 @@ pub struct LspConfiguration {
// 下方是和 linter 相关的配置 // 下方是和 linter 相关的配置
// 诊断模式
pub linter_mode: DigitalLinterMode,
// vlog 的诊断配置 // vlog 的诊断配置
pub vlog_linter_configuration: DigitalLinterConfiguration, pub vlog_linter_configuration: DigitalLinterConfiguration,
// vhdl 的诊断配置 // vhdl 的诊断配置
@ -118,7 +116,6 @@ impl Default for LspConfiguration {
auto_search_workdir: true, auto_search_workdir: true,
include_dirs: Vec::new(), include_dirs: Vec::new(),
source_dirs: Vec::new(), source_dirs: Vec::new(),
linter_mode: DigitalLinterMode::FULL,
vlog_linter_configuration: DigitalLinterConfiguration::new("verilog"), vlog_linter_configuration: DigitalLinterConfiguration::new("verilog"),
vhdl_linter_configuration: DigitalLinterConfiguration::new("vhdl"), vhdl_linter_configuration: DigitalLinterConfiguration::new("vhdl"),
svlog_linter_configuration: DigitalLinterConfiguration::new("systemverilog"), svlog_linter_configuration: DigitalLinterConfiguration::new("systemverilog"),
@ -254,6 +251,14 @@ impl LanguageServer for Backend {
// } // }
} }
async fn did_close(&self, params: DidCloseTextDocumentParams) {
// 获取诊断相关的配置信息,如果 mode 为 common则需要清空关闭文件的诊断信息
let linter_mode = self.server.srcs.get_lsp_configuration_string_value("digital-ide.function.lsp.linter.linter-mode").unwrap();
if linter_mode == "common" {
self.client.publish_diagnostics(params.text_document.uri, vec![], None).await;
}
}
async fn did_change(&self, params: DidChangeTextDocumentParams) { async fn did_change(&self, params: DidChangeTextDocumentParams) {
// // 如果文件太大则显示错误 // // 如果文件太大则显示错误
// if CacheManager::uri_is_big_file(&params.text_document.uri) { // if CacheManager::uri_is_big_file(&params.text_document.uri) {