@@ -30,7 +30,6 @@ import org.domaframework.doma.intellij.common.util.InjectionSqlUtil.isInjectedSq
3030import org.domaframework.doma.intellij.common.util.PluginLoggerUtil
3131import org.domaframework.doma.intellij.common.util.StringUtil.LINE_SEPARATE
3232import org.domaframework.doma.intellij.common.util.StringUtil.SINGLE_SPACE
33- import org.domaframework.doma.intellij.formatter.util.CreateQueryType
3433import org.domaframework.doma.intellij.formatter.util.SqlKeywordUtil
3534import org.domaframework.doma.intellij.formatter.visitor.SqlFormatVisitor
3635import org.domaframework.doma.intellij.psi.SqlTypes
@@ -80,7 +79,6 @@ class SqlFormatPreProcessor : PreFormatProcessor {
8079 var keywordIndex = replaceKeywordList.size
8180
8281 visitor.replaces.asReversed().forEach {
83- val createQueryType = getCreateQueryGroup(keywordList, index)
8482 val textRangeStart = it.startOffset
8583 val textRangeEnd = textRangeStart + it.text.length
8684 if (it.elementType != TokenType .WHITE_SPACE ) {
@@ -102,26 +100,17 @@ class SqlFormatPreProcessor : PreFormatProcessor {
102100 getRightPatternNewText(it)
103101 }
104102
105- SqlTypes .WORD -> {
106- newKeyword = getWordNewText(it, newKeyword, createQueryType )
103+ SqlTypes .WORD , SqlTypes . FUNCTION_NAME -> {
104+ newKeyword = getWordNewText(it, newKeyword)
107105 }
108106
109107 SqlTypes .COMMA , SqlTypes .OTHER -> {
110108 newKeyword = getNewLineString(it.prevSibling, getUpperText(it))
111109 }
112110
113111 SqlTypes .BLOCK_COMMENT_START -> {
114- val lastKeyword =
115- if (keywordIndex > 0 ) {
116- replaceKeywordList[keywordIndex - 1 ]
117- } else {
118- null
119- }
120-
121- if (lastKeyword != null && lastKeyword.text.lowercase() == " values" ) {
122- newKeyword =
123- getNewLineString(PsiTreeUtil .prevLeaf(it), getUpperText(it))
124- }
112+ newKeyword =
113+ getNewLineString(PsiTreeUtil .prevLeaf(it), getUpperText(it))
125114 }
126115 }
127116 document.deleteString(textRangeStart, textRangeEnd)
@@ -144,9 +133,10 @@ class SqlFormatPreProcessor : PreFormatProcessor {
144133 val originalText = document.getText(range)
145134 val nextElement = element.nextSibling
146135 val nextElementText = nextElement?.let { document.getText(it.textRange) } ? : " "
136+ val preElement = element.prevSibling
147137
148138 var newText = " "
149- if (! targetElementTypes.contains(nextElement?.elementType)) {
139+ if (! targetElementTypes.contains(nextElement?.elementType) && preElement?.elementType != SqlTypes . BLOCK_COMMENT ) {
150140 newText = originalText.replace(originalText, SINGLE_SPACE )
151141 } else {
152142 newText =
@@ -186,7 +176,7 @@ class SqlFormatPreProcessor : PreFormatProcessor {
186176 val keywordText = element.text.lowercase()
187177 val upperText = getUpperText(element)
188178 return if (SqlKeywordUtil .getIndentType(keywordText).isNewLineGroup()) {
189- val prevElement = PsiTreeUtil .prevLeaf( element)
179+ val prevElement = element.prevSibling
190180 getNewLineString(prevElement, upperText)
191181 } else {
192182 upperText
@@ -201,15 +191,13 @@ class SqlFormatPreProcessor : PreFormatProcessor {
201191 private fun getWordNewText (
202192 element : PsiElement ,
203193 newKeyword : String ,
204- createQueryType : CreateQueryType ,
205194 ): String {
206195 newKeyword
207196 var prev = element.prevSibling
208197 var isColumnName = true
209198 while (prev != null && prev.elementType != SqlTypes .LEFT_PAREN && prev.elementType != SqlTypes .COMMA ) {
210199 if (prev !is PsiWhiteSpace &&
211- prev.elementType != SqlTypes .LINE_COMMENT &&
212- prev.elementType != SqlTypes .BLOCK_COMMENT
200+ prev.elementType != SqlTypes .LINE_COMMENT
213201 ) {
214202 isColumnName =
215203 prev.elementType == SqlTypes .COMMA ||
@@ -219,45 +207,22 @@ class SqlFormatPreProcessor : PreFormatProcessor {
219207 prev = prev.prevSibling
220208 }
221209
222- return if (createQueryType == CreateQueryType . TABLE && isColumnName ) {
210+ return if (prev.elementType == SqlTypes . BLOCK_COMMENT ) {
223211 getNewLineString(element.prevSibling, getUpperText(element))
224212 } else {
225213 getUpperText(element)
226214 }
227215 }
228216
229- private fun getCreateQueryGroup (
230- keywordList : List <PsiElement >,
231- index : Int ,
232- ): CreateQueryType {
233- var topLastKeyWord: PsiElement ? = null
234- var attachmentKeywordType = CreateQueryType .NONE
235- keywordList
236- .dropLast(keywordList.size.minus(index))
237- .filter {
238- it.elementType == SqlTypes .KEYWORD
239- }.asReversed()
240- .forEach { key ->
241- if (SqlKeywordUtil .Companion .isTopKeyword(key.text)) {
242- topLastKeyWord = key
243- return @forEach
244- }
245- if (SqlKeywordUtil .Companion .isAttachedKeyword(key.text)) {
246- attachmentKeywordType = CreateQueryType .Companion .getCreateTableType(key.text)
247- }
248- }
249- val prevKeywordText = topLastKeyWord?.text?.lowercase()
250- val isCreateGroup = prevKeywordText == " create"
251- if (! isCreateGroup) return CreateQueryType .NONE
252- return attachmentKeywordType
253- }
254-
255217 private fun getNewLineString (
256218 prevElement : PsiElement ? ,
257219 text : String ,
258220 ): String =
259- if (prevElement?.text?.contains(LINE_SEPARATE ) == false &&
260- PsiTreeUtil .prevLeaf(prevElement) != null
221+ if (prevElement?.elementType == SqlTypes .BLOCK_COMMENT ||
222+ (
223+ prevElement?.text?.contains(LINE_SEPARATE ) == false &&
224+ prevElement.prevSibling != null
225+ )
261226 ) {
262227 " $LINE_SEPARATE$text "
263228 } else {
0 commit comments