Skip to content

Commit

Permalink
chore(fmt): cleanup text_document_completion (#4837)
Browse files Browse the repository at this point in the history
* lil cleanup of text_document_completion.rs

* clippy
  • Loading branch information
Druue authored Jul 10, 2024
1 parent c41dd5b commit 3aad0d1
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 19 deletions.
27 changes: 8 additions & 19 deletions prisma-fmt/src/text_document_completion.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,16 @@ use lsp_types::*;
use psl::{
diagnostics::Span,
error_tolerant_parse_configuration,
parser_database::{ast, ParserDatabase, ReferentialAction, SourceFile},
parser_database::{ast, ParserDatabase, SourceFile},
schema_ast::ast::AttributePosition,
Diagnostics, PreviewFeature,
};

use crate::LSPContext;

mod datasource;
mod multi_schema;
mod referential_actions;

pub(super) type CompletionContext<'a> = LSPContext<'a, CompletionParams>;

Expand Down Expand Up @@ -88,16 +90,6 @@ fn push_ast_completions(ctx: CompletionContext<'_>, completion_list: &mut Comple

let find_at_position = ctx.db.ast(ctx.initiating_file_id).find_at_position(position);

fn push_referential_action(completion_list: &mut CompletionList, referential_action: ReferentialAction) {
completion_list.items.push(CompletionItem {
label: referential_action.as_str().to_owned(),
kind: Some(CompletionItemKind::ENUM),
// what is the difference between detail and documentation?
detail: Some(referential_action.documentation().to_owned()),
..Default::default()
});
}

match find_at_position {
ast::SchemaPosition::Model(
_model_id,
Expand All @@ -107,7 +99,7 @@ fn push_ast_completions(ctx: CompletionContext<'_>, completion_list: &mut Comple
),
) if attr_name == "onDelete" || attr_name == "onUpdate" => {
for referential_action in ctx.connector().referential_actions(&relation_mode).iter() {
push_referential_action(completion_list, referential_action);
referential_actions::referential_action_completion(completion_list, referential_action);
}
}

Expand All @@ -124,7 +116,9 @@ fn push_ast_completions(ctx: CompletionContext<'_>, completion_list: &mut Comple
.referential_actions(&relation_mode)
.iter()
.filter(|ref_action| ref_action.to_string().starts_with(&value))
.for_each(|ref_action| push_referential_action(completion_list, ref_action));
.for_each(|referential_action| {
referential_actions::referential_action_completion(completion_list, referential_action)
});
}
}
}
Expand Down Expand Up @@ -216,12 +210,7 @@ fn push_namespaces(ctx: CompletionContext<'_>, completion_list: &mut CompletionL
namespace.to_string()
};

completion_list.items.push(CompletionItem {
label: String::from(namespace),
insert_text: Some(insert_text),
kind: Some(CompletionItemKind::PROPERTY),
..Default::default()
})
multi_schema::schema_namespace_completion(completion_list, namespace, insert_text);
}
}

Expand Down
14 changes: 14 additions & 0 deletions prisma-fmt/src/text_document_completion/multi_schema.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
use lsp_types::{CompletionItem, CompletionItemKind, CompletionList};

pub(super) fn schema_namespace_completion(
completion_list: &mut CompletionList,
namespace: &String,
insert_text: String,
) {
completion_list.items.push(CompletionItem {
label: String::from(namespace),
insert_text: Some(insert_text),
kind: Some(CompletionItemKind::PROPERTY),
..Default::default()
})
}
15 changes: 15 additions & 0 deletions prisma-fmt/src/text_document_completion/referential_actions.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
use lsp_types::{CompletionItem, CompletionItemKind, CompletionList};
use psl::parser_database::ReferentialAction;

pub(super) fn referential_action_completion(
completion_list: &mut CompletionList,
referential_action: ReferentialAction,
) {
completion_list.items.push(CompletionItem {
label: referential_action.as_str().to_owned(),
kind: Some(CompletionItemKind::ENUM),
// ? (@tomhoule) what is the difference between detail and documentation?
detail: Some(referential_action.documentation().to_owned()),
..Default::default()
})
}

0 comments on commit 3aad0d1

Please sign in to comment.