kak-tree-sitter 3.2.1

Server between Kakoune and tree-sitter
use std::{fmt, io, path::PathBuf};

use kak_tree_sitter_config::error::ConfigError;
use log::SetLoggerError;
use mio::Token;
use thiserror::Error;

use crate::kakoune::buffer::BufferId;

#[derive(Debug, Error)]
pub enum OhNo {
  #[error("nothing to do; please either use --server or --request")]
  NothingToDo,

  #[error("no runtime directory")]
  NoRuntimeDir,

  #[error("cannot initialize logging: {err}")]
  LoggerInit {
    #[from]
    err: SetLoggerError,
  },

  #[error("configuration error: {err}")]
  ConfigError {
    #[from]
    err: ConfigError,
  },

  #[error("cannot create directory {dir}: {err}")]
  CannotCreateDir { dir: PathBuf, err: io::Error },

  #[error("cannot create file {file}: {err}")]
  CannotCreateFile { file: PathBuf, err: io::Error },

  #[error("cannot write to file {file}: {err}")]
  CannotWriteFile { file: PathBuf, err: io::Error },

  #[error("cannot start daemon: {err}")]
  CannotStartDaemon { err: String },

  #[error("cannot set SIGINT handler: {err}")]
  SigIntHandlerError {
    #[from]
    err: ctrlc::Error,
  },

  #[error("cannot create FIFO: {err}")]
  CannotCreateFifo { err: String },

  #[error("cannot open non-blocking FIFO: {err}")]
  CannotOpenFifo { err: io::Error },

  #[error("cannot read FIFO: {err}")]
  CannotReadFifo { err: io::Error },

  #[error("poll error: {err}")]
  PollError { err: io::Error },

  #[error("cannot start server: {err}")]
  CannotStartServer { err: io::Error },

  #[error("cannot load grammar for language {lang}: {err}")]
  CannotLoadGrammar2 { lang: String, err: String },

  #[error("cannot load queries for language {lang}: {err}")]
  CannotLoadQueries { lang: String, err: String },

  #[error("cannot parse queries: {err}")]
  LangConfig {
    #[from]
    err: tree_house_bindings::query::ParseError,
  },

  #[error("error while operating on tree-sitter tree: {err}")]
  TreeHouse { err: String },

  #[cfg(feature = "direct-unix-socket")]
  #[error("Kakoune Unix socket error: {err:?}")]
  KakouneUnixSocketError { err: io::Error },

  #[error("Unix socket connection error: {err:?}")]
  UnixSocketConnectionError { err: io::Error },

  #[error("Unix socket read error: {err:?}")]
  UnixSocketReadError { err: io::Error },

  #[error("invalid request {req}: {err}")]
  InvalidRequest { req: String, err: String },

  #[error("cannot connect to server; is it running?: {err}")]
  CannotConnectToServer { err: io::Error },

  #[error("cannot send request: {err}")]
  CannotSendRequest { err: String },

  #[error("cannot send command")]
  CannotSendCommand,

  #[error("unknown language: {lang}")]
  UnknownLang { lang: String },

  #[error("language already failed to load: {lang}")]
  TriedLoadingOnceLang { lang: String },

  #[error("unknown buffer: {id:?}")]
  UnknownBuffer { id: BufferId },

  #[error("unknown buffer token: {tkn:?}")]
  UnknownToken { tkn: Token },

  #[error("text-objects not supported")]
  UnsupportedTextObjects,
  //
  #[error("no such {pattern} text-object query")]
  UnknownTextObjectQuery { pattern: String },

  #[error("face initialization error: {err}")]
  FaceInit { err: fmt::Error },

  #[error("response serialization error: {err}")]
  ResponseSerialization { err: fmt::Error },
}