X-Git-Url: http://secure.phpeclipse.com
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/formatter/CodeFormatter.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/formatter/CodeFormatter.java
index 30e0110..f5d3ea3 100644
--- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/formatter/CodeFormatter.java
+++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/formatter/CodeFormatter.java
@@ -1,11 +1,11 @@
/*******************************************************************************
* Copyright (c) 2000, 2001, 2002 International Business Machines Corp. and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v0.5
+ *
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v05.html
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
******************************************************************************/
@@ -129,7 +129,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
/**
* Creates a new instance of Code Formatter using the given settings.
- *
+ *
* @deprecated backport 1.0 internal functionality
*/
public CodeFormatter(ConfigurableOption[] settings) {
@@ -138,7 +138,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
/**
* Creates a new instance of Code Formatter using the FormattingOptions object given as argument
- *
+ *
* @deprecated Use CodeFormatter(ConfigurableOption[]) instead
*/
public CodeFormatter() {
@@ -511,14 +511,24 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
pendingSpace = false;
}
}
+ // don't linebreak empty array declarations
+ if (token == TokenNameRPAREN && arrayDeclarationCount > 0) {
+ if (previousCompilableToken == TokenNameLPAREN) {
+ pendingNewLines = 0;
+ }
+ }
// Add pending new lines to the formatted source string.
// Note: pending new lines are not added if the current token
// is a single line comment or whitespace.
// if the comment is between parenthesis, there is no blank line
// preservation
// (if it's a one-line comment, a blank line is added after it).
- if (((pendingNewLines > 0 && (!isComment(token)))
- || (newLinesInWhitespace > 0 && (openParenthesisCount <= 1 && isComment(token))) || (previousCompilableToken == TokenNameLBRACE && token == TokenNameRBRACE))
+ if ((
+ (pendingNewLines > 0 && (!isComment(token)))
+ || (newLinesInWhitespace > 0 && (openParenthesisCount <= 1 && isComment(token)))
+ || (previousCompilableToken == TokenNameLBRACE && token == TokenNameRBRACE)
+ || (newLinesInWhitespace > 0 && previousCompilableToken == TokenNameDOT)
+ )
&& token != Scanner.TokenNameWHITESPACE) {
// Do not add newline & indent between an adjoining close brace and
// close paren. Anonymous inner classes may use this form.
@@ -690,7 +700,9 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
// check for closing array declaration
if (arrayDeclarationCount>0) {
if (arrayDeclarationParenthesis[arrayDeclarationCount]==openParenthesis[openParenthesisCount]) {
- newLine(1);
+ if (previousCompilableToken != TokenNameLPAREN) {
+ newLine(1);
+ }
indentationLevel--;
currentLineIndentationLevel = indentationLevel;
pendingNewLines = 0;
@@ -728,6 +740,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
// Add new line and increase indentation level after open brace.
pendingNewLines = 1;
indentationLevel += pushBlock();
+ inAssignment = false;
}
}
break;
@@ -791,6 +804,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
}
break;
case TokenNameDOT:
+ space();
pendingSpace = false;
break;
case TokenNameSEMICOLON:
@@ -951,7 +965,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
/**
* Formats the char array sourceString
, and returns a string containing the formatted version.
- *
+ *
* @return the formatted ouput.
*/
public String formatSourceString(String sourceString) {
@@ -964,7 +978,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
/**
* Formats the char array sourceString
, and returns a string containing the formatted version.
- *
+ *
* @param string
* the string to format
* @param indentationLevel
@@ -978,7 +992,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
/**
* Formats the char array sourceString
, and returns a string containing the formatted version. The positions array
* is modified to contain the mapped positions.
- *
+ *
* @param string
* the string to format
* @param indentationLevel
@@ -1011,7 +1025,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
/**
* Formats the char array sourceString
, and returns a string containing the formatted version. The initial
* indentation level is 0.
- *
+ *
* @param string
* the string to format
* @return the formatted ouput.
@@ -1022,7 +1036,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
/**
* Formats a given source string, starting indenting it at a particular depth and using the given options
- *
+ *
* @deprecated backport 1.0 internal functionality
*/
public static String format(String sourceString, int initialIndentationLevel, ConfigurableOption[] options) {
@@ -1074,7 +1088,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
/**
* Returns an array of descriptions for the configurable options. The descriptions may be changed and passed back to a different
* compiler.
- *
+ *
* @deprecated backport 1.0 internal functionality
*/
public static ConfigurableOption[] getDefaultOptions(Locale locale) {
@@ -1103,18 +1117,25 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
/**
* Returns the array of mapped positions. Returns null is no positions have been set.
- *
+ *
* @return int[]
* @deprecated There is no need to retrieve the mapped positions anymore.
*/
public int[] getMappedPositions() {
+ if (null!=mappedPositions) {
+ for (int i=0;i=formattedSource.length()) {
+ mappedPositions[i]=formattedSource.length()-1;
+ }
+ }
+ }
return mappedPositions;
}
/**
* Returns the priority of the token given as argument
* The most prioritary the token is, the smallest the return value is.
- *
+ *
* @return the priority of token
* @param token
* the token of which the priority is requested
@@ -1252,7 +1273,6 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
case TokenNameLPAREN:
case TokenNameNOT:
case TokenNameTWIDDLE:
- case TokenNameDOT:
case 0:
// no token
case TokenNameWHITESPACE:
@@ -1297,7 +1317,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
/**
* If the length of oneLineBuffer
exceeds maxLineLength
, it is split and the result is dumped in
* formattedSource
- *
+ *
* @param newLineCount
* the number of new lines to append
*/
@@ -1368,7 +1388,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
return "==="; //$NON-NLS-1$
case TokenNameEQUAL_GREATER:
// -= (15.25.2)
- return "=>"; //$NON-NLS-1$
+ return "=>"; //$NON-NLS-1$
case TokenNameNOT_EQUAL:
// != (15.20, 15.20.1, 15.20.2, 15.20.3)
return "!="; //$NON-NLS-1$
@@ -1597,7 +1617,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
* If its length is < maxLineLength, output
* Otherwise it is split.
*
- *
+ *
* @param currentString
* string to output
* @param preIndented
@@ -1757,7 +1777,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
String currentResult = result[i];
if (currentResult.length() != 0 || splitOperators[i] != 0) {
int newDepth = (currentResult.startsWith("/*") //$NON-NLS-1$
- || currentResult.startsWith("//")) //$NON-NLS-1$
+ || currentResult.startsWith("//")) //$NON-NLS-1$
? indentationLevel - 1 : depth;
outputLine(currentResult, i == 0 || (i == 1 && emptyFirstSubString) ? preIndented : false,
i == 0 ? newDepth : newDepth + 1, splitOperators[i], i, splitLine.startSubstringsIndexes, currentString
@@ -1829,7 +1849,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
/**
* Pops elements until the stack is empty or the top element is token
.
* Does not remove token
from the stack.
- *
+ *
* @param token
* the token to be left as the top of the stack
*/
@@ -1877,7 +1897,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
/**
* Pops elements until the stack is empty or the top element is token
.
* Removes token
from the stack too.
- *
+ *
* @param token
* the token to remove from the stack
*/
@@ -1956,11 +1976,11 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
/**
* Set the positions to map. The mapped positions should be retrieved using the getMappedPositions() method.
- *
+ *
* @param positions
* int[]
* @deprecated Set the positions to map using the format(String, int, int[]) method.
- *
+ *
* @see #getMappedPositions()
*/
public void setPositionsToMap(int[] positions) {
@@ -1981,7 +2001,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
/**
* Splits stringToSplit
on the top level token
* If there are several identical token at the same level, the string is cut into many pieces.
- *
+ *
* @return an object containing the operator and all the substrings or null if the string cannot be split
*/
public SplitLine split(String stringToSplit) {
@@ -1991,7 +2011,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
/**
* Splits stringToSplit
on the top level token
* If there are several identical token at the same level, the string is cut into many pieces.
- *
+ *
* @return an object containing the operator and all the substrings or null if the string cannot be split
*/
public SplitLine split(String stringToSplit, int offsetInGlobalLine) {
@@ -2527,10 +2547,10 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
/**
* Sets the initial indentation level
- *
+ *
* @param indentationLevel
* new indentation level
- *
+ *
* @deprecated
*/
public void setInitialIndentationLevel(int newIndentationLevel) {