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 fe61f5a..434287e 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() {
@@ -271,7 +271,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
outputLine(currentString, false, currentLineIndentationLevel, 0, -1, null, 0);
}
int scannerSourceLength = scanner.source.length;
- if (scannerSourceLength > 2) {
+ if ((scannerSourceLength > 2) && (scanner.startPosition < scannerSourceLength)) {
if (scanner.source[scannerSourceLength - 1] == '\n' && scanner.source[scannerSourceLength - 2] == '\r') {
formattedSource.append(options.lineSeparatorSequence);
increaseGlobalDelta(options.lineSeparatorSequence.length - 2);
@@ -332,6 +332,8 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
currentLineIndentationLevel += constructionsCount;
// An InvalidInputException exception might cause the termination of this
// loop.
+ int arrayDeclarationCount=0;
+ int[] arrayDeclarationParenthesis=new int[10];
try {
while (true) {
// Get the next token. Catch invalid input and output it
@@ -675,9 +677,26 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
else
openParenthesis[0]++;
pendingSpace = false;
+ // recognize array declaration for nice output
+ if (previousCompilableToken == TokenNamearray) {
+ arrayDeclarationCount++;
+ arrayDeclarationParenthesis[arrayDeclarationCount]=openParenthesis[openParenthesisCount];
+ indentationLevel++;
+ pendingNewLines=1;
+ }
//S }
break;
case TokenNameRPAREN:
+ // check for closing array declaration
+ if (arrayDeclarationCount>0) {
+ if (arrayDeclarationParenthesis[arrayDeclarationCount]==openParenthesis[openParenthesisCount]) {
+ newLine(1);
+ indentationLevel--;
+ currentLineIndentationLevel = indentationLevel;
+ pendingNewLines = 0;
+ arrayDeclarationCount--;
+ }
+ }
// Decrease the parenthesis count
// if there is no more unclosed parenthesis,
// a new line and indent may be append (depending on the next
@@ -766,6 +785,11 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
pendingSpace = false;
break;
case TokenNameCOMMA:
+ pendingSpace = false;
+ if (arrayDeclarationCount>0) {
+ pendingNewLines=1;
+ }
+ break;
case TokenNameDOT:
pendingSpace = false;
break;
@@ -790,7 +814,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
case TokenNameMINUS_MINUS:
// Do not put a space between a post-increment/decrement
// and the identifier being modified.
- if (previousToken == TokenNameIdentifier || previousToken == TokenNameRBRACKET) {
+ if (previousToken == TokenNameIdentifier || previousToken == TokenNameRBRACKET || previousToken == TokenNameVariable) {
pendingSpace = false;
}
break;
@@ -927,7 +951,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) {
@@ -940,7 +964,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
@@ -954,7 +978,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
@@ -987,7 +1011,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.
@@ -998,7 +1022,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) {
@@ -1050,7 +1074,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) {
@@ -1079,7 +1103,7 @@ 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.
*/
@@ -1090,7 +1114,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
/**
* 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
@@ -1273,7 +1297,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
*/
@@ -1344,7 +1368,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$
@@ -1573,7 +1597,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
*
token
.token
from the stack.
- *
+ *
* @param token
* the token to be left as the top of the stack
*/
@@ -1853,7 +1877,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
/**
* Pops elements until the stack is empty or the top element is token
.token
from the stack too.
- *
+ *
* @param token
* the token to remove from the stack
*/
@@ -1932,11 +1956,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) {
@@ -1957,7 +1981,7 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
/**
* Splits stringToSplit
on the top level token stringToSplit
on the top level token