Skip to content

Commit cc0dc59

Browse files
committed
support autoRequireSeperator option
1 parent 7c3d6c3 commit cc0dc59

File tree

3 files changed

+22
-2
lines changed

3 files changed

+22
-2
lines changed

crates/emmylua_code_analysis/resources/schema.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
"autoRequire": true,
2525
"autoRequireFunction": "require",
2626
"autoRequireNamingConvention": "keep",
27+
"autoRequireSeparator": ".",
2728
"callSnippet": false,
2829
"enable": true,
2930
"postfix": "@"
@@ -556,8 +557,12 @@
556557
}
557558
]
558559
},
559-
"callSnippet": {
560+
"autoRequireSeparator": {
560561
"description": "Whether to use call snippets in completions.",
562+
"default": ".",
563+
"type": "string"
564+
},
565+
"callSnippet": {
561566
"default": false,
562567
"type": "boolean"
563568
},

crates/emmylua_code_analysis/src/config/configs/completion.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ pub struct EmmyrcCompletion {
2020
#[serde(default)]
2121
pub auto_require_naming_convention: EmmyrcFilenameConvention,
2222
/// Whether to use call snippets in completions.
23+
#[serde(default = "default_auto_require_separator")]
24+
pub auto_require_separator: String,
2325
#[serde(default)]
2426
#[serde_as(deserialize_as = "DefaultOnError")]
2527
pub call_snippet: bool,
@@ -36,6 +38,7 @@ impl Default for EmmyrcCompletion {
3638
auto_require_function: default_require_function(),
3739
auto_require_naming_convention: Default::default(),
3840
call_snippet: false,
41+
auto_require_separator: default_auto_require_separator(),
3942
postfix: default_postfix(),
4043
}
4144
}
@@ -53,6 +56,10 @@ fn default_postfix() -> String {
5356
"@".to_string()
5457
}
5558

59+
fn default_auto_require_separator() -> String {
60+
".".to_string()
61+
}
62+
5663
#[derive(Serialize, Deserialize, Debug, JsonSchema, Clone, Copy)]
5764
#[serde(rename_all = "kebab-case")]
5865
pub enum EmmyrcFilenameConvention {

crates/emmylua_ls/src/handlers/command/commands/emmy_auto_require.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,17 @@ impl CommandSpec for AutoRequireCommand {
3333
let auto_require_func = emmyrc.completion.auto_require_function.clone();
3434
let file_conversion = emmyrc.completion.auto_require_naming_convention;
3535
let local_name = module_name_convert(&module_info.name, file_conversion);
36+
let require_separator = emmyrc.completion.auto_require_separator.clone();
37+
let full_module_path = match require_separator.as_str() {
38+
"." | "" => module_info.full_module_name.clone(),
39+
_ => module_info
40+
.full_module_name
41+
.replace(".", &require_separator),
42+
};
43+
3644
let require_str = format!(
3745
"local {} = {}(\"{}\")",
38-
local_name, auto_require_func, module_info.full_module_name
46+
local_name, auto_require_func, full_module_path
3947
);
4048
let document = semantic_model.get_document();
4149
let offset = document.get_offset(position.line as usize, position.character as usize)?;

0 commit comments

Comments
 (0)