From 380820ad69b2da09d9c785c57df6e488fda91f73 Mon Sep 17 00:00:00 2001 From: serge-rider Date: Thu, 14 Jun 2018 00:56:34 +0300 Subject: [PATCH] #3631 SQL formatter: brackets formatting fix Former-commit-id: b458e2dc9834289e412926186d8e482ec9b9e3bb --- .../model/sql/format/tokenized/SQLFormatterTokenized.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/sql/format/tokenized/SQLFormatterTokenized.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/sql/format/tokenized/SQLFormatterTokenized.java index f4106bd458..2e6aafb53c 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/sql/format/tokenized/SQLFormatterTokenized.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/sql/format/tokenized/SQLFormatterTokenized.java @@ -161,6 +161,7 @@ public class SQLFormatterTokenized implements SQLFormatter { final List bracketIndent = new ArrayList<>(); FormatterToken prev = new FormatterToken(TokenType.SPACE, " "); //$NON-NLS-1$ boolean encounterBetween = false; + int bracketsDepth = 0; for (int index = 0; index < argList.size(); index++) { token = argList.get(index); String tokenString = token.getString().toUpperCase(Locale.ENGLISH); @@ -168,6 +169,7 @@ public class SQLFormatterTokenized implements SQLFormatter { if (tokenString.equals("(")) { //$NON-NLS-1$ functionBracket.add(formatterCfg.isFunction(prev.getString()) ? Boolean.TRUE : Boolean.FALSE); bracketIndent.add(indent); + bracketsDepth++; // Adding indent after ( makes result too verbose and too multiline // if (!isCompact) { // indent++; @@ -179,9 +181,12 @@ public class SQLFormatterTokenized implements SQLFormatter { // index += insertReturnAndIndent(argList, index, indent); // } functionBracket.remove(functionBracket.size() - 1); + bracketsDepth--; } else if (tokenString.equals(",")) { //$NON-NLS-1$ if (!isCompact) { - index += insertReturnAndIndent(argList, index + 1, indent); + if (bracketsDepth <= 0) { + index += insertReturnAndIndent(argList, index + 1, indent); + } } } else if (statementDelimiters.contains(tokenString)) { //$NON-NLS-1$ indent = 0; -- GitLab