in src/main/kotlin/org/jetbrains/mcpserverplugin/general/textTools.kt [213:252]
override fun handle(project: Project, args: ReplaceSpecificTextArgs): Response {
val projectDir = project.guessProjectDir()?.toNioPathOrNull()
?: return Response(error = "project dir not found")
var document: Document? = null
val readResult = runReadAction {
val file: VirtualFile = LocalFileSystem.getInstance()
.refreshAndFindFileByNioFile(projectDir.resolveRel(args.pathInProject))
?: return@runReadAction "file not found"
if (!GlobalSearchScope.allScope(project).contains(file)) {
return@runReadAction "file not found"
}
document = FileDocumentManager.getInstance().getDocument(file)
if (document == null) {
return@runReadAction "could not get document"
}
return@runReadAction "ok"
}
if (readResult != "ok") {
return Response(error = readResult)
}
val text = document!!.text
if (!text.contains(args.oldText)) {
return Response(error = "no occurrences found")
}
val newText = text.replace(args.oldText, args.newText, true)
WriteCommandAction.runWriteCommandAction(project) {
document!!.setText(newText)
FileDocumentManager.getInstance().saveDocument(document!!)
}
return Response("ok")
}