aboutsummaryrefslogtreecommitdiff
path: root/helix-core/src
diff options
context:
space:
mode:
authorBlaž Hrastnik2021-06-04 01:50:03 +0000
committerBlaž Hrastnik2021-06-04 02:03:40 +0000
commit06d8d3f55fbf02bb4d938ecbc479cd60309a0a5d (patch)
treec47d95747397d3b5e00a8b57717b3fc5093646df /helix-core/src
parent8afd4e1bc21c244a4ed241630a0e845f4ab81f74 (diff)
Try to detect language when document file path is set
Fixes #91
Diffstat (limited to 'helix-core/src')
-rw-r--r--helix-core/src/indent.rs35
-rw-r--r--helix-core/src/syntax.rs8
2 files changed, 26 insertions, 17 deletions
diff --git a/helix-core/src/indent.rs b/helix-core/src/indent.rs
index fc253f91..7ab810fd 100644
--- a/helix-core/src/indent.rs
+++ b/helix-core/src/indent.rs
@@ -251,22 +251,25 @@ where
Configuration, IndentationConfiguration, Lang, LanguageConfiguration, Loader,
};
use once_cell::sync::OnceCell;
- let loader = Loader::new(Configuration {
- language: vec![LanguageConfiguration {
- scope: "source.rust".to_string(),
- file_types: vec!["rs".to_string()],
- language_id: Lang::Rust,
- highlight_config: OnceCell::new(),
- //
- roots: vec![],
- language_server: None,
- indent: Some(IndentationConfiguration {
- tab_width: 4,
- unit: String::from(" "),
- }),
- indent_query: OnceCell::new(),
- }],
- });
+ let loader = Loader::new(
+ Configuration {
+ language: vec![LanguageConfiguration {
+ scope: "source.rust".to_string(),
+ file_types: vec!["rs".to_string()],
+ language_id: Lang::Rust,
+ highlight_config: OnceCell::new(),
+ //
+ roots: vec![],
+ language_server: None,
+ indent: Some(IndentationConfiguration {
+ tab_width: 4,
+ unit: String::from(" "),
+ }),
+ indent_query: OnceCell::new(),
+ }],
+ },
+ Vec::new(),
+ );
// set runtime path so we can find the queries
let mut runtime = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR"));
diff --git a/helix-core/src/syntax.rs b/helix-core/src/syntax.rs
index febbf821..ec95708b 100644
--- a/helix-core/src/syntax.rs
+++ b/helix-core/src/syntax.rs
@@ -166,13 +166,15 @@ pub struct Loader {
// highlight_names ?
language_configs: Vec<Arc<LanguageConfiguration>>,
language_config_ids_by_file_type: HashMap<String, usize>, // Vec<usize>
+ scopes: Vec<String>,
}
impl Loader {
- pub fn new(config: Configuration) -> Self {
+ pub fn new(config: Configuration, scopes: Vec<String>) -> Self {
let mut loader = Self {
language_configs: Vec::new(),
language_config_ids_by_file_type: HashMap::new(),
+ scopes,
};
for config in config.language {
@@ -192,6 +194,10 @@ impl Loader {
loader
}
+ pub fn scopes(&self) -> &[String] {
+ &self.scopes
+ }
+
pub fn language_config_for_file_name(&self, path: &Path) -> Option<Arc<LanguageConfiguration>> {
// Find all the language configurations that match this file name
// or a suffix of the file name.