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 b272fbd..fe61f5a 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
@@ -2,6 +2,7 @@
* 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
+ *
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v05.html
*
@@ -23,15 +24,8 @@ import net.sourceforge.phpdt.core.compiler.ITerminalSymbols;
import net.sourceforge.phpdt.core.compiler.InvalidInputException;
import net.sourceforge.phpdt.internal.compiler.ConfigurableOption;
import net.sourceforge.phpdt.internal.compiler.parser.Scanner;
-import net.sourceforge.phpdt.internal.corext.codemanipulation.StubUtility;
-import net.sourceforge.phpdt.internal.corext.util.Strings;
import net.sourceforge.phpdt.internal.formatter.impl.FormatterOptions;
import net.sourceforge.phpdt.internal.formatter.impl.SplitLine;
-import net.sourceforge.phpdt.internal.ui.preferences.CodeFormatterPreferencePage;
-
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.formatter.IContentFormatterExtension;
-import org.eclipse.jface.text.formatter.IFormattingContext;
/**
*
How to format a piece of code ?
@@ -166,15 +160,17 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
, false /* nls */
, false /* assert */
, true, /* tokenizeStrings */
- null, null); // regular scanner for forming lines
+ null, null, true /*taskCaseSensitive*/); // regular scanner for forming lines
scanner.recordLineSeparator = true;
+ scanner.ignorePHPOneLiner = true;
// to remind of the position of the beginning of the line.
splitScanner = new Scanner(true /* comment */
, true /* whitespace */
, false /* nls */
, false /* assert */
, true, /* tokenizeStrings */
- null, null);
+ null, null, true /*taskCaseSensitive*/);
+ splitScanner.ignorePHPOneLiner = true;
// secondary scanner to split long lines formed by primary scanning
// initialize current line buffer
currentLineBuffer = new StringBuffer();
@@ -370,11 +366,23 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
}
token = 0;
}
- if (token == Scanner.TokenNameEOF)
+ if (token == Scanner.TokenNameEOF) {
break;
- if (token == Scanner.TokenNameHEREDOC || token == Scanner.TokenNameINLINE_HTML) {
+ } else if (token == Scanner.TokenNameHEREDOC) {
+ // no indentation for heredocs and HTML !
+ outputCurrentTokenWithoutIndent(Scanner.TokenNameHEREDOC, 0);
+ continue;
+ } else if (token == Scanner.TokenNameINLINE_HTML) {
// no indentation for heredocs and HTML !
- outputCurrentTokenWithoutIndent(Scanner.TokenNameHEREDOC);
+ int newLineCount = 1;
+ if (scanner.startPosition==0) {
+ newLineCount = 0;
+ }
+ outputCurrentTokenWithoutIndent(Scanner.TokenNameINLINE_HTML, newLineCount);
+ int srcLen = scanner.source.length;
+ if (scanner.currentPosition < srcLen-1) {
+ newLine(1);
+ }
continue;
}
/*
@@ -1449,8 +1457,8 @@ public class CodeFormatter implements ITerminalSymbols, ICodeFormatter {
}
}
- private void outputCurrentTokenWithoutIndent(int token) {
- newLine(0);
+ private void outputCurrentTokenWithoutIndent(int token, int newLineCount) {
+ newLine(newLineCount);
formattedSource.append(scanner.source, scanner.startPosition, scanner.currentPosition - scanner.startPosition);
}