From: Jan P. <jp...@us...> - 2008-05-01 20:34:38
|
Update of /cvsroot/e-p-i-c/org.epic.perleditor/src/org/epic/perleditor/editors/util In directory sc8-pr-cvs17.sourceforge.net:/tmp/cvs-serv23981/src/org/epic/perleditor/editors/util Modified Files: Tag: stable SourceFormatter.java Added Files: Tag: stable SourceFormatterException.java Log Message: Merged in the fix for bug [ 1102327 ] Perltidy - wrong option causes Error from 'testing'. --- NEW FILE: SourceFormatterException.java --- package org.epic.perleditor.editors.util; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IStatus; public class SourceFormatterException extends CoreException { public final String output; SourceFormatterException(IStatus status) { super(status); this.output = null; } SourceFormatterException(IStatus status, String output) { super(status); this.output = output; } } Index: SourceFormatter.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.perleditor/src/org/epic/perleditor/editors/util/SourceFormatter.java,v retrieving revision 1.17.2.3 retrieving revision 1.17.2.4 diff -u -d -r1.17.2.3 -r1.17.2.4 --- SourceFormatter.java 10 Feb 2008 22:09:39 -0000 1.17.2.3 +++ SourceFormatter.java 1 May 2008 20:34:29 -0000 1.17.2.4 @@ -1,12 +1,10 @@ package org.epic.perleditor.editors.util; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.ILog; +import org.eclipse.core.runtime.*; import org.eclipse.jface.preference.IPreferenceStore; -import org.epic.core.util.CommandLineTokenizer; -import org.epic.core.util.ScriptExecutor; +import org.epic.core.util.*; import org.epic.perleditor.PerlEditorPlugin; import org.epic.perleditor.preferences.PreferenceConstants; @@ -15,7 +13,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.StringTokenizer; /** @@ -44,6 +41,7 @@ * formatted */ public static String format(String toFormat, ILog log) + throws CoreException { return format(toFormat, Collections.EMPTY_LIST, log); } @@ -59,18 +57,37 @@ * formatted */ public static String format(String toFormat, List additionalArgs, ILog log) + throws CoreException { - try + ProcessOutput out = new SourceFormatter(log).run(toFormat, additionalArgs); + + if (out.stdout.startsWith("skipping file: ")) { - return new SourceFormatter(log).run(toFormat, additionalArgs).stdout; + String error = truncateString(out.stdout, 160); + throw new SourceFormatterException(new Status( + IStatus.ERROR, + PerlEditorPlugin.getPluginId(), + IStatus.OK, + "perltidy returned unexpected output via stdout, " + + "possibly due to invalid options in Source Formatter " + + "preferences:\n\n" + error, + null), + out.stdout); } - catch (CoreException e) + else if (out.stderr.length() != 0) { - log.log(e.getStatus()); - - // return the original text being formatted - return toFormat; + String error = truncateString(out.stderr, 320); + throw new SourceFormatterException(new Status( + IStatus.ERROR, + PerlEditorPlugin.getPluginId(), + IStatus.OK, + "perltidy returned unexpected output via stderr, " + + "possibly due to invalid options in Source Formatter " + + "preferences:\n\n" + error, + null), + out.stdout); } + else return out.stdout; } protected String getCharsetName() @@ -168,4 +185,11 @@ return "perlutils/perltidy"; } + private static String truncateString(String str, int maxLen) + { + if (maxLen < str.length()) + return str.substring(0, Math.min(str.length(), maxLen)) + "..."; + else + return str; +} } |