Skip to main content

checkSpelling

This function checks spelling or fixes other text errors in the current paragraph.

Prompts

  • Check spelling

Function registration

let func = new RegisteredFunction();
func.name = "checkSpelling";
func.params = [
];

func.description = "Use this function if you asked to check spelling for current paragraph or fix other type of text errors in the current paragraph."

func.examples = [
"if you need to check spelling for the current paragraph, respond with:\n" +
"[functionCalling (checkSpelling)]: {}"
];

Function execution

func.call = async function(params) {

let text = await Asc.Editor.callCommand(function(){
let par = Api.GetDocument().GetCurrentParagraph();
if (!par)
return "";
par.Select();
return par.GetText();
});

let argPromt = "Check spelling and grammar for text:" + ":\n" + text + "\n Answer with only the new corrected text, no need of any explanations.";

let isTrackChanges = await Asc.Editor.callCommand(function(){
let isOn = Api.GetDocument().IsTrackRevisions();
if (isOn)
Api.GetDocument().SetTrackRevisions(false);
return isOn;
});

let requestEngine = AI.Request.create(AI.ActionType.Chat);
if (!requestEngine)
return;

await Asc.Editor.callMethod("StartAction", ["GroupActions"]);

await Asc.Editor.callMethod("StartAction", ["Block", "AI (" + requestEngine.modelUI.name + ")"]);

let isSendedEndLongAction = false;
async function checkEndAction() {
if (!isSendedEndLongAction) {
await Asc.Editor.callMethod("EndAction", ["Block", "AI (" + requestEngine.modelUI.name + ")"]);
isSendedEndLongAction = true
}
}

let resultText = "";

let result = await requestEngine.chatRequest(argPromt, false, async function(data) {
if (!data)
return;
await checkEndAction();

resultText += data;

await Asc.Editor.callMethod("EndAction", ["GroupActions", "", "cancel"]);
await Asc.Editor.callMethod("StartAction", ["GroupActions"]);

Asc.scope.text = resultText;
await Asc.Editor.callCommand(function(){
let par = Api.GetDocument().GetCurrentParagraph();
if (!par)
return "";
par.Select();
Api.ReplaceTextSmart([Asc.scope.text]);
});
});

await checkEndAction();

await Asc.Editor.callMethod("EndAction", ["GroupActions", "", "cancel"]);
await Asc.Editor.callMethod("StartAction", ["GroupActions"]);

Asc.scope.modelName = requestEngine.modelUI.name;
await Asc.Editor.callCommand(function(){
return Api.GetDocument().SetAssistantTrackRevisions(true, Asc.scope.modelName);
});

Asc.scope.text = resultText;
await Asc.Editor.callCommand(function(){
let par = Api.GetDocument().GetCurrentParagraph();
if (!par)
return "";
par.Select();
Api.ReplaceTextSmart([Asc.scope.text]);
});

await Asc.Editor.callCommand(function(){
return Api.GetDocument().SetAssistantTrackRevisions(false);
});

if (isTrackChanges)
{
await Asc.Editor.callCommand(function(){
Api.GetDocument().SetTrackRevisions(true);
});
}

await Asc.Editor.callMethod("EndAction", ["GroupActions"]);
};

return func;

Methods used: GetDocument, GetCurrentParagraph, Select, GetText, IsTrackRevisions, SetTrackRevisions, ReplaceTextSmart, SetAssistantTrackRevisions, EndAction, StartAction, Asc.scope object

Result

checkSpelling checkSpelling