@@ -17,6 +17,7 @@ package org.domaframework.doma.intellij.formatter.processor
1717
1818import com.intellij.lang.injection.InjectedLanguageManager
1919import com.intellij.openapi.command.WriteCommandAction
20+ import com.intellij.openapi.editor.Document
2021import com.intellij.openapi.fileTypes.FileTypeManager
2122import com.intellij.openapi.project.Project
2223import com.intellij.psi.PsiDocumentManager
@@ -76,10 +77,8 @@ class InjectionSqlFormatter(
7677 removeSpace : (String ) -> String ,
7778 ) {
7879 val result = SqlFormatPreProcessor ().updateDocument(sqlFile, sqlFile.textRange)
79- val formattedText = result.document?.text ? : return
80-
81- val tmpFormatted = formatAsTemporarySqlFile(formattedText)
82- val document = documentManager.getDocument(sqlFile) ? : return
80+ val document = result.document ? : return
81+ val tmpFormatted = formatAsTemporarySqlFile(document)
8382 document.replaceString(
8483 sqlFile.textRange.startOffset,
8584 sqlFile.textRange.endOffset,
@@ -105,6 +104,23 @@ class InjectionSqlFormatter(
105104 * Formats SQL text by creating a temporary SQL file and applying code style.
106105 * Returns original text if formatting fails.
107106 */
107+ private fun formatAsTemporarySqlFile (document : Document ): String =
108+ runCatching {
109+ val tempFileName = " ${TEMP_FILE_PREFIX }${SQL_FILE_EXTENSION } "
110+ val fileType = fileTypeManager.getFileTypeByExtension(" sql" )
111+ val tempSqlFile =
112+ PsiFileFactory
113+ .getInstance(project)
114+ .createFileFromText(tempFileName, fileType, document.text)
115+
116+ document.setText(tempSqlFile.text)
117+ documentManager.commitDocument(document)
118+ val psiFile = documentManager.getPsiFile(document) ? : return @runCatching tempSqlFile.text
119+
120+ codeStyleManager.reformatText(psiFile, 0 , tempSqlFile.textLength)
121+ psiFile.text
122+ }.getOrDefault(document.text)
123+
108124 private fun formatAsTemporarySqlFile (sqlText : String ): String =
109125 runCatching {
110126 val tempFileName = " ${TEMP_FILE_PREFIX }${SQL_FILE_EXTENSION } "
0 commit comments