glua_ls 1.0.27

Language server for Garry's Mod Lua (GLua).
Documentation
mod build_gmod_scripted_classes;
mod gmod_scripted_classes_request;

use tokio_util::sync::CancellationToken;

use crate::context::ServerContextSnapshot;

use self::build_gmod_scripted_classes::build_gmod_scripted_classes;
pub use gmod_scripted_classes_request::*;

pub async fn on_gmod_scripted_classes_handler(
    context: ServerContextSnapshot,
    _params: GmodScriptedClassesParams,
    cancel_token: CancellationToken,
) -> Option<Vec<LegacyGmodScriptedClassEntry>> {
    let analysis = context.read_analysis(&cancel_token).await?;
    let db = analysis.compilation.get_db();
    build_gmod_scripted_classes(db, &cancel_token).map(|result| {
        result
            .entries
            .into_iter()
            .map(|entry| LegacyGmodScriptedClassEntry {
                uri: entry.uri,
                class_type: entry.class_type,
                class_name: entry.class_name,
                range: entry.range,
            })
            .collect()
    })
}

pub async fn on_gmod_scripted_classes_v2_handler(
    context: ServerContextSnapshot,
    _params: GmodScriptedClassesParams,
    cancel_token: CancellationToken,
) -> Option<GmodScriptedClassesResult> {
    let analysis = context.read_analysis(&cancel_token).await?;
    let db = analysis.compilation.get_db();
    build_gmod_scripted_classes(db, &cancel_token)
}