尝试兼容 vhdl

This commit is contained in:
锦恢 2024-09-30 01:02:08 +08:00
parent c3e88d63f9
commit 963f389c9d
8 changed files with 38 additions and 15 deletions

View File

@ -762,7 +762,6 @@ pub struct GenericScope {
pub def_type: DefinitionType, pub def_type: DefinitionType,
pub defs: Vec<Box<dyn Definition>>, pub defs: Vec<Box<dyn Definition>>,
pub scopes: Vec<Box<dyn Scope>>, pub scopes: Vec<Box<dyn Scope>>,
} }
impl GenericScope { impl GenericScope {

View File

@ -55,18 +55,6 @@ impl LSPServer {
))) )))
} }
pub fn document_symbol(&self, params: DocumentSymbolParams) -> Option<DocumentSymbolResponse> {
let uri = params.text_document.uri;
let file_id = self.srcs.get_id(&uri).to_owned();
self.srcs.wait_parse_ready(file_id, false);
let file = self.srcs.get_file(file_id)?;
let file = file.read().ok()?;
let scope_tree = self.srcs.scope_tree.read().ok()?;
Some(DocumentSymbolResponse::Nested(
scope_tree.as_ref()?.document_symbols(&uri, &file.text),
))
}
pub fn document_highlight( pub fn document_highlight(
&self, &self,
params: DocumentHighlightParams, params: DocumentHighlightParams,

View File

@ -0,0 +1,22 @@
use tower_lsp::lsp_types::*;
use crate::{definition::Scope, server::LSPServer};
pub mod vhdl;
impl LSPServer {
pub fn document_symbol(&self, params: DocumentSymbolParams) -> Option<DocumentSymbolResponse> {
let uri = params.text_document.uri;
let file_id = self.srcs.get_id(&uri).to_owned();
self.srcs.wait_parse_ready(file_id, false);
let file = self.srcs.get_file(file_id)?;
let file = file.read().ok()?;
let scope_tree = self.srcs.scope_tree.read().ok()?;
Some(DocumentSymbolResponse::Nested(
scope_tree.as_ref()?.document_symbols(&uri, &file.text),
))
}
}

View File

@ -0,0 +1,6 @@
use tower_lsp::lsp_types::*;
use crate::server::LSPServer;
// pub fn vhdl_document_symbol(server: &LSPServer, param: &DocumentSymbolParams) -> Option<DocumentSymbolResponse> {
// }

View File

@ -12,6 +12,9 @@ pub mod definition;
// 悬停提示 // 悬停提示
pub mod hover; pub mod hover;
// 大纲
pub mod document_symbol;
// 诊断 // 诊断
pub mod diagnostics; pub mod diagnostics;

View File

@ -11,6 +11,7 @@ mod core;
mod completion; mod completion;
mod definition; mod definition;
mod hover; mod hover;
mod document_symbol;
mod utils; mod utils;
mod diagnostics; mod diagnostics;
mod format; mod format;

View File

@ -244,12 +244,16 @@ impl Sources {
info!("do parse in {:?}", uri.to_string()); info!("do parse in {:?}", uri.to_string());
let syntax_tree = recovery_sv_parse(&text, uri, range, &inc_dirs.read().unwrap()); let syntax_tree = recovery_sv_parse(&text, uri, range, &inc_dirs.read().unwrap());
let mut scope_tree = match &syntax_tree { let mut scope_tree = match &syntax_tree {
Some(tree) => get_scopes(tree, uri), Some(tree) => get_scopes(tree, uri),
None => None, None => None,
}; };
info!("finish parse {:?}", uri.to_string()); info!("finish parse {:?}", uri.to_string());
// 计算 fast // 计算 fast