diff options
Diffstat (limited to 'helix-core')
-rw-r--r-- | helix-core/Cargo.toml | 1 | ||||
-rw-r--r-- | helix-core/src/indent.rs | 1 | ||||
-rw-r--r-- | helix-core/src/lib.rs | 2 | ||||
-rw-r--r-- | helix-core/src/syntax.rs | 42 |
4 files changed, 45 insertions, 1 deletions
diff --git a/helix-core/Cargo.toml b/helix-core/Cargo.toml index 34cbba9f..27adceb2 100644 --- a/helix-core/Cargo.toml +++ b/helix-core/Cargo.toml @@ -14,6 +14,7 @@ include = ["src/**/*", "README.md"] [dependencies] helix-syntax = { version = "0.4", path = "../helix-syntax" } +helix-dap = { version = "0.4", path = "../helix-dap" } ropey = "1.3" smallvec = "1.7" diff --git a/helix-core/src/indent.rs b/helix-core/src/indent.rs index d9a0155f..1f32d038 100644 --- a/helix-core/src/indent.rs +++ b/helix-core/src/indent.rs @@ -464,6 +464,7 @@ where unit: String::from(" "), }), indent_query: OnceCell::new(), + debugger: None, }], }); diff --git a/helix-core/src/lib.rs b/helix-core/src/lib.rs index d971464a..0854eb04 100644 --- a/helix-core/src/lib.rs +++ b/helix-core/src/lib.rs @@ -195,7 +195,7 @@ pub use {regex, tree_sitter}; pub use graphemes::RopeGraphemes; pub use position::{coords_at_pos, pos_at_coords, Position}; pub use selection::{Range, Selection}; -pub use smallvec::SmallVec; +pub use smallvec::{smallvec, SmallVec}; pub use syntax::Syntax; pub use diagnostic::Diagnostic; diff --git a/helix-core/src/syntax.rs b/helix-core/src/syntax.rs index 547b2572..996823ce 100644 --- a/helix-core/src/syntax.rs +++ b/helix-core/src/syntax.rs @@ -5,6 +5,7 @@ use crate::{ Rope, RopeSlice, Tendril, }; +use helix_dap::DebuggerQuirks; pub use helix_syntax::get_language; use arc_swap::ArcSwap; @@ -65,6 +66,8 @@ pub struct LanguageConfiguration { #[serde(skip)] pub(crate) indent_query: OnceCell<Option<IndentQuery>>, + #[serde(skip_serializing_if = "Option::is_none")] + pub debugger: Option<DebugAdapterConfig>, } #[derive(Debug, Serialize, Deserialize)] @@ -76,6 +79,45 @@ pub struct LanguageServerConfiguration { pub args: Vec<String>, } +#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)] +#[serde(rename_all = "kebab-case")] +pub struct AdvancedCompletion { + pub name: Option<String>, + pub completion: Option<String>, + pub default: Option<String>, +} + +#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)] +#[serde(rename_all = "kebab-case", untagged)] +pub enum DebugConfigCompletion { + Named(String), + Advanced(AdvancedCompletion), +} + +#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)] +#[serde(rename_all = "kebab-case")] +pub struct DebugTemplate { + pub name: String, + pub request: String, + pub completion: Vec<DebugConfigCompletion>, + pub args: HashMap<String, String>, +} + +#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)] +#[serde(rename_all = "kebab-case")] +pub struct DebugAdapterConfig { + pub name: String, + pub transport: String, + #[serde(default)] + pub command: String, + #[serde(default)] + pub args: Vec<String>, + pub port_arg: Option<String>, + pub templates: Vec<DebugTemplate>, + #[serde(default)] + pub quirks: DebuggerQuirks, +} + #[derive(Debug, Serialize, Deserialize)] #[serde(rename_all = "kebab-case")] pub struct IndentationConfiguration { |