From c0a1ffa27abe63719647f46f012c26cd24106010 Mon Sep 17 00:00:00 2001 From: Federico Fissore Date: Mon, 27 Apr 2015 18:17:53 +0200 Subject: [PATCH] Fixed failing PdeKeywords test Autoformat was not saving caret position any more. Fixed --- .../cc/arduino/packages/formatter/AStyle.java | 50 ++++++++++++++----- .../app/syntax/PdeKeywordsTest.java | 8 +-- 2 files changed, 42 insertions(+), 16 deletions(-) diff --git a/app/src/cc/arduino/packages/formatter/AStyle.java b/app/src/cc/arduino/packages/formatter/AStyle.java index ae99886e8..7533e761f 100644 --- a/app/src/cc/arduino/packages/formatter/AStyle.java +++ b/app/src/cc/arduino/packages/formatter/AStyle.java @@ -31,19 +31,18 @@ package cc.arduino.packages.formatter; -import static processing.app.I18n._; - -import java.io.File; -import java.io.IOException; - -import javax.swing.text.BadLocationException; - import processing.app.Base; import processing.app.Editor; import processing.app.helpers.FileUtils; import processing.app.syntax.SketchTextArea; import processing.app.tools.Tool; +import javax.swing.text.BadLocationException; +import java.io.File; +import java.io.IOException; + +import static processing.app.I18n._; + public class AStyle implements Tool { private static final String FORMATTER_CONF = "formatter.conf"; @@ -89,18 +88,45 @@ public class AStyle implements Tool { } SketchTextArea textArea = editor.getTextArea(); + + int line = getLineOfOffset(textArea); + int lineOffset = getLineOffset(textArea, line); + editor.setText(formattedText); editor.getSketch().setModified(true); - + + if (line != -1 && lineOffset != -1) { + setCaretPosition(textArea, line, lineOffset); + } + + // mark as finished + editor.statusNotice(_("Auto Format finished.")); + } + + private void setCaretPosition(SketchTextArea textArea, int line, int lineOffset) { try { - int line = textArea.getLineOfOffset(textArea.getCaretPosition()); - int lineOffset = textArea.getCaretPosition() - textArea.getLineStartOffset(line); textArea.setCaretPosition(Math.min(textArea.getLineStartOffset(line) + lineOffset, textArea.getLineEndOffset(line) - 1)); } catch (BadLocationException e) { e.printStackTrace(); } - // mark as finished - editor.statusNotice(_("Auto Format finished.")); + } + + private int getLineOffset(SketchTextArea textArea, int line) { + try { + return textArea.getCaretPosition() - textArea.getLineStartOffset(line); + } catch (BadLocationException e) { + e.printStackTrace(); + } + return -1; + } + + private int getLineOfOffset(SketchTextArea textArea) { + try { + return textArea.getLineOfOffset(textArea.getCaretPosition()); + } catch (BadLocationException e) { + e.printStackTrace(); + } + return -1; } @Override diff --git a/app/test/processing/app/syntax/PdeKeywordsTest.java b/app/test/processing/app/syntax/PdeKeywordsTest.java index 7942b595e..1ae7f3335 100644 --- a/app/test/processing/app/syntax/PdeKeywordsTest.java +++ b/app/test/processing/app/syntax/PdeKeywordsTest.java @@ -16,15 +16,15 @@ public class PdeKeywordsTest extends AbstractWithPreferencesTest { pdeKeywords.reload(); assertEquals("Constants", pdeKeywords.getReference("HIGH")); - assertEquals("IDENTIFIER", pdeKeywords.getTokenTypeAsString("HIGH")); - assertEquals(TokenTypes.IDENTIFIER, pdeKeywords.getTokenType("HIGH".toCharArray(), 0, 3)); + assertEquals("RESERVED_WORD_2", pdeKeywords.getTokenTypeAsString("HIGH")); + assertEquals(TokenTypes.RESERVED_WORD_2, pdeKeywords.getTokenType("HIGH".toCharArray(), 0, 3)); assertEquals("IncrementCompound", pdeKeywords.getReference("+=")); assertNull(pdeKeywords.getTokenTypeAsString("+=")); assertNull(pdeKeywords.getReference("Mouse")); - assertEquals("VARIABLE", pdeKeywords.getTokenTypeAsString("Mouse")); - assertEquals(TokenTypes.VARIABLE, pdeKeywords.getTokenType("Mouse".toCharArray(), 0, 4)); + assertEquals("DATA_TYPE", pdeKeywords.getTokenTypeAsString("Mouse")); + assertEquals(TokenTypes.DATA_TYPE, pdeKeywords.getTokenType("Mouse".toCharArray(), 0, 4)); } }