Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(41)

Unified Diff: editor/tools/plugins/com.google.dart.tools.ui.web/src/com/google/dart/tools/ui/web/yaml/YamlAutoIndentStrategy.java

Issue 11783009: Big merge from experimental to bleeding edge. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: editor/tools/plugins/com.google.dart.tools.ui.web/src/com/google/dart/tools/ui/web/yaml/YamlAutoIndentStrategy.java
diff --git a/editor/tools/plugins/com.google.dart.tools.ui.web/src/com/google/dart/tools/ui/web/yaml/YamlAutoIndentStrategy.java b/editor/tools/plugins/com.google.dart.tools.ui.web/src/com/google/dart/tools/ui/web/yaml/YamlAutoIndentStrategy.java
index a36adc7f467a154ade1ce100c684cc3908976c09..993d590ca53ce9369e0345c46632faebea7fa288 100644
--- a/editor/tools/plugins/com.google.dart.tools.ui.web/src/com/google/dart/tools/ui/web/yaml/YamlAutoIndentStrategy.java
+++ b/editor/tools/plugins/com.google.dart.tools.ui.web/src/com/google/dart/tools/ui/web/yaml/YamlAutoIndentStrategy.java
@@ -14,51 +14,64 @@
package com.google.dart.tools.ui.web.yaml;
-import com.google.dart.tools.ui.web.utils.WebEditorAutoIndentStrategy;
-
import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.DefaultIndentLineAutoEditStrategy;
import org.eclipse.jface.text.DocumentCommand;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.TextUtilities;
/**
* An indent strategy for yaml.
*/
-class YamlAutoIndentStrategy extends WebEditorAutoIndentStrategy {
+public class YamlAutoIndentStrategy extends DefaultIndentLineAutoEditStrategy {
public YamlAutoIndentStrategy() {
}
@Override
- protected void doAutoIndentAfterNewLine(IDocument document, DocumentCommand command) {
- if (command.offset == -1 || document.getLength() == 0) {
+ public void customizeDocumentCommand(IDocument d, DocumentCommand c) {
+ if (c.length == 0 && c.text != null
+ && TextUtilities.endsWith(d.getLegalLineDelimiters(), c.text) != -1) {
+ autoIndentAfterNewLine(d, c);
+ }
+ }
+
+ /**
+ * Copies the indentation of the previous line.
+ *
+ * @param d the document to work on
+ * @param c the command to deal with
+ */
+ private void autoIndentAfterNewLine(IDocument d, DocumentCommand c) {
+ if (c.offset == -1 || d.getLength() == 0) {
return;
}
try {
// find start of line
- int location = (command.offset == document.getLength() ? command.offset - 1 : command.offset);
- IRegion lineInfo = document.getLineInformationOfOffset(location);
- int start = lineInfo.getOffset();
+ int p = (c.offset == d.getLength() ? c.offset - 1 : c.offset);
+ IRegion info = d.getLineInformationOfOffset(p);
+ int start = info.getOffset();
- boolean endsInColon = (document.getChar(command.offset - 1) == ':');
+ boolean endsInColon = (d.getChar(c.offset - 1) == ':');
// find white spaces
- int end = findEndOfWhiteSpace(document, start, command.offset);
+ int end = findEndOfWhiteSpace(d, start, c.offset);
- StringBuffer buf = new StringBuffer(command.text);
+ StringBuffer buf = new StringBuffer(c.text);
if (end > start) {
// append to input
- buf.append(document.get(start, end - start));
+ buf.append(d.get(start, end - start));
}
if (endsInColon) {
buf.append(" ");
}
- command.text = buf.toString();
+ c.text = buf.toString();
} catch (BadLocationException excp) {
// stop work
}

Powered by Google App Engine
This is Rietveld 408576698