25 lines
638 B
Rust
25 lines
638 B
Rust
use tower_lsp::lsp_types::*;
|
|
|
|
use crate::{server::LspServer, utils::get_language_id_by_uri};
|
|
|
|
mod sv;
|
|
mod vhdl;
|
|
|
|
impl LspServer {
|
|
pub fn document_symbol(&self, params: DocumentSymbolParams) -> Option<DocumentSymbolResponse> {
|
|
let uri = ¶ms.text_document.uri;
|
|
let language_id = get_language_id_by_uri(uri);
|
|
match language_id.as_str() {
|
|
"vhdl" => vhdl::document_symbol(
|
|
self,
|
|
¶ms
|
|
),
|
|
"verilog" | "systemverilog" => sv::document_symbol(
|
|
self,
|
|
¶ms
|
|
),
|
|
_ => None
|
|
}
|
|
}
|
|
}
|