emmylua_ls 0.4.2

A language server for emmylua.
mod commands;

use commands::get_commands_list;
use lsp_types::{
    ClientCapabilities, ExecuteCommandOptions, ExecuteCommandParams, ServerCapabilities,
};
use serde_json::Value;
use tokio_util::sync::CancellationToken;
use crate::context::ServerContextSnapshot;
#[allow(unused)]
pub use commands::*;

pub async fn on_execute_command_handler(
    context: ServerContextSnapshot,
    params: ExecuteCommandParams,
    _: CancellationToken,
) -> Option<Value> {
    let args = params.arguments;
    let command_name = params.command.as_str();
    commands::dispatch_command(context, command_name, args).await;
    Some(Value::Null)
}

pub fn register_capabilities(
    server_capabilities: &mut ServerCapabilities,
    _: &ClientCapabilities,
) -> Option<()> {
    server_capabilities.execute_command_provider = Some(ExecuteCommandOptions {
        commands: get_commands_list(),
        ..Default::default()
    });
    Some(())
}