Skip to content

Commit ae61381

Browse files
committed
add more config
1 parent 23d6f31 commit ae61381

File tree

11 files changed

+82
-9
lines changed

11 files changed

+82
-9
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ use serde::{Deserialize, Serialize};
44
#[serde(rename_all = "camelCase")]
55
/// Configuration for EmmyLua code completion.
66
pub struct EmmyrcCompletion {
7+
/// Whether to enable code completion.
8+
#[serde(default = "default_true")]
9+
pub enable: bool,
710
/// Whether to automatically require modules.
811
#[serde(default = "default_true")]
912
pub auto_require: bool,
@@ -24,6 +27,7 @@ pub struct EmmyrcCompletion {
2427
impl Default for EmmyrcCompletion {
2528
fn default() -> Self {
2629
Self {
30+
enable: default_true(),
2731
auto_require: default_true(),
2832
auto_require_function: default_require_function(),
2933
auto_require_naming_convention: Default::default(),
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
use schemars::JsonSchema;
2+
use serde::{Deserialize, Serialize};
3+
4+
#[derive(Serialize, Deserialize, Debug, JsonSchema)]
5+
#[serde(rename_all = "camelCase")]
6+
pub struct EmmyrcHover {
7+
#[serde(default = "default_true")]
8+
pub enable: bool,
9+
}
10+
11+
impl Default for EmmyrcHover {
12+
fn default() -> Self {
13+
Self {
14+
enable: default_true(),
15+
}
16+
}
17+
}
18+
19+
fn default_true() -> bool {
20+
true
21+
}

crates/code_analysis/src/config/configs/inlayhint.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ use serde::{Deserialize, Serialize};
44
#[derive(Serialize, Deserialize, Debug, JsonSchema)]
55
#[serde(rename_all = "camelCase")]
66
pub struct EmmyrcInlayHint {
7+
#[serde(default = "default_true")]
8+
pub enable: bool,
79
#[serde(default = "default_true")]
810
pub param_hint: bool,
911
#[serde(default = "default_true")]
@@ -17,6 +19,7 @@ pub struct EmmyrcInlayHint {
1719
impl Default for EmmyrcInlayHint {
1820
fn default() -> Self {
1921
Self {
22+
enable: default_true(),
2023
param_hint: default_true(),
2124
index_hint: default_true(),
2225
local_hint: default_true(),

crates/code_analysis/src/config/configs/mod.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ mod resource;
88
mod codelen;
99
mod strict;
1010
mod semantictoken;
11+
mod references;
12+
mod hover;
1113

1214

1315
pub use completion::{EmmyrcCompletion, EmmyrcFilenameConvention};
@@ -19,4 +21,6 @@ pub use workspace::EmmyrcWorkspace;
1921
pub use resource::EmmyrcResource;
2022
pub use codelen::EmmyrcCodeLen;
2123
pub use strict::EmmyrcStrict;
22-
pub use semantictoken::EmmyrcSemanticToken;
24+
pub use semantictoken::EmmyrcSemanticToken;
25+
pub use references::EmmyrcReference;
26+
pub use hover::EmmyrcHover;
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
use schemars::JsonSchema;
2+
use serde::{Deserialize, Serialize};
3+
4+
#[derive(Serialize, Deserialize, Debug, JsonSchema)]
5+
#[serde(rename_all = "camelCase")]
6+
pub struct EmmyrcReference {
7+
/// Whether to enable reference search.
8+
#[serde(default="default_true")]
9+
pub enable: bool,
10+
/// Determines whether to enable fuzzy searching for fields where references cannot be found.
11+
#[serde(default = "default_true")]
12+
pub fuzzy_search: bool,
13+
}
14+
15+
impl Default for EmmyrcReference {
16+
fn default() -> Self {
17+
Self {
18+
enable: default_true(),
19+
fuzzy_search: default_true(),
20+
}
21+
}
22+
}
23+
24+
fn default_true() -> bool {
25+
true
26+
}

crates/code_analysis/src/config/flatten_config/mod.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,11 @@ use std::collections::HashMap;
44

55
use serde_json::Value;
66

7-
#[allow(unused)]
87
#[derive(Debug, Clone)]
98
pub struct FlattenConfigObject {
109
config: HashMap<String, Value>
1110
}
1211

13-
#[allow(unused)]
1412
impl FlattenConfigObject {
1513
pub fn parse(luals_json: Value) -> Self {
1614
let mut config = HashMap::new();

crates/code_analysis/src/config/mod.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,13 @@ use crate::{semantic::LuaInferConfig, FileId};
88
pub use config_loader::load_configs;
99
pub use configs::EmmyrcFilenameConvention;
1010
use configs::{
11-
EmmyrcCodeLen, EmmyrcCompletion, EmmyrcDiagnostic, EmmyrcInlayHint, EmmyrcLuaVersion,
12-
EmmyrcResource, EmmyrcRuntime, EmmyrcSemanticToken, EmmyrcSignature, EmmyrcStrict,
13-
EmmyrcWorkspace,
11+
EmmyrcCodeLen, EmmyrcCompletion, EmmyrcDiagnostic, EmmyrcHover, EmmyrcInlayHint, EmmyrcLuaVersion, EmmyrcReference, EmmyrcResource, EmmyrcRuntime, EmmyrcSemanticToken, EmmyrcSignature, EmmyrcStrict, EmmyrcWorkspace
1412
};
1513
use emmylua_parser::{LuaLanguageLevel, ParserConfig};
1614
use rowan::NodeCache;
1715
use schemars::JsonSchema;
1816
use serde::{Deserialize, Serialize};
1917

20-
2118
#[derive(Serialize, Deserialize, Debug, JsonSchema, Default)]
2219
#[serde(rename_all = "camelCase")]
2320
pub struct Emmyrc {
@@ -44,6 +41,10 @@ pub struct Emmyrc {
4441
pub strict: EmmyrcStrict,
4542
#[serde(default)]
4643
pub semantic_tokens: EmmyrcSemanticToken,
44+
#[serde(default)]
45+
pub references: EmmyrcReference,
46+
#[serde(default)]
47+
pub hover: EmmyrcHover
4748
}
4849

4950
impl Emmyrc {

crates/emmylua_ls/src/handlers/code_lens/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ pub async fn on_code_lens_handler(
2222
let file_id = analysis.get_file_id(&uri)?;
2323
let mut semantic_model = analysis.compilation.get_semantic_model(file_id)?;
2424

25+
if !semantic_model.get_emmyrc().code_lens.enable {
26+
return None;
27+
}
28+
2529
build_code_lens(&mut semantic_model)
2630
}
2731

crates/emmylua_ls/src/handlers/completion/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ pub async fn on_completion_handler(
2929
let analysis = context.analysis.read().await;
3030
let file_id = analysis.get_file_id(&uri)?;
3131
let semantic_model = analysis.compilation.get_semantic_model(file_id)?;
32+
if !semantic_model.get_emmyrc().completion.enable {
33+
return None;
34+
}
35+
3236
let root = semantic_model.get_root();
3337
let position_offset = {
3438
let document = semantic_model.get_document();

crates/emmylua_ls/src/handlers/hover/mod.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,21 @@ use tokio_util::sync::CancellationToken;
1414

1515
use crate::context::ServerContextSnapshot;
1616

17-
#[allow(unused_variables)]
1817
pub async fn on_hover(
1918
context: ServerContextSnapshot,
2019
params: HoverParams,
21-
cancel_token: CancellationToken,
20+
_: CancellationToken,
2221
) -> Option<Hover> {
2322
let uri = params.text_document_position_params.text_document.uri;
2423
let position = params.text_document_position_params.position;
2524
let analysis = context.analysis.read().await;
2625
let file_id = analysis.get_file_id(&uri)?;
2726
let mut semantic_model = analysis.compilation.get_semantic_model(file_id)?;
2827

28+
if !semantic_model.get_emmyrc().hover.enable {
29+
return None;
30+
}
31+
2932
let root = semantic_model.get_root();
3033
let position_offset = {
3134
let document = semantic_model.get_document();

0 commit comments

Comments
 (0)