Code cleanup.
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/commands/SmartSemicolonHandler.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/commands/SmartSemicolonHandler.java
index aa74640..184f4b5 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/commands/SmartSemicolonHandler.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/commands/SmartSemicolonHandler.java
@@ -49,57 +49,60 @@
     int offsetAtLine = styledText.getOffsetAtLine(lineAtOffset);
     String line = styledText.getLine(lineAtOffset);
     if (line.endsWith(semicolon)) {
-      behaveLikeRegularEditing(originalCaretOffset, styledText);
+      behaveLikeRegularEditing(styledText, originalCaretOffset);
       return;
     }
     int endOfLineOffset = offsetAtLine + line.length();
     styledText.setCaretOffset(endOfLineOffset);
-    String contentToInsert = contentToInsert(line, editor, originalCaretOffset);
-    styledText.insert(contentToInsert);
-    styledText.setCaretOffset(endOfLineOffset + contentToInsert.length());
+    String content = contentToInsert(editor, originalCaretOffset);
+    insert(styledText, content, endOfLineOffset);
   }
 
-  private void behaveLikeRegularEditing(int caretOffset, StyledText styledText) {
-    styledText.insert(semicolon);
-    styledText.setCaretOffset(caretOffset + semicolon.length());
+  private void behaveLikeRegularEditing(StyledText styledText, int caretOffset) {
+    insert(styledText, semicolon, caretOffset);
   }
 
-  private String contentToInsert(final String line, final XtextEditor editor, final int offset) {
-    return editor.getDocument().readOnly(new IUnitOfWork<String, XtextResource>() {
+  private void insert(StyledText styledText, String content, int caretOffset) {
+    styledText.insert(content);
+    styledText.setCaretOffset(caretOffset + content.length());
+  }
+
+  private String contentToInsert(final XtextEditor editor, final int offset) {
+    return editor.getDocument().modify(new IUnitOfWork<String, XtextResource>() {
       public String exec(XtextResource state) {
         ContentAssistContext[] context = contextFactory.create(editor.getInternalSourceViewer(), offset, state);
         if (context == null || context.length == 0) return semicolon;
         for (ContentAssistContext c : context) {
           EObject model = c.getCurrentModel();
           if (model instanceof Literal)
-            return contentToInsert(line, (Literal) model);
+            return contentToInsert((Literal) model);
           if (model instanceof Property)
-            return contentToInsert(line, (Property) model);
+            return contentToInsert((Property) model);
         }
         return semicolon;
       }
     });
   }
 
-  private String contentToInsert(String line, Literal literal) {
+  private String contentToInsert(Literal literal) {
     INode indexNode = nodes.firstNodeForFeature(literal, LITERAL__INDEX);
     if (indexNode != null) return semicolon;
     int index = literals.calculateIndexOf(literal);
-    return defaultIndexAndSemicolonToInsert(line, index);
+    return defaultIndexAndSemicolonToInsert(index);
   }
 
-  private String contentToInsert(String line, Property property) {
+  private String contentToInsert(Property property) {
     INode indexNode = nodes.firstNodeForFeature(property, FIELD__INDEX);
     if (indexNode != null) return semicolon;
     int index = fields.calculateTagNumberOf(property);
-    return defaultIndexAndSemicolonToInsert(line, index);
+    return defaultIndexAndSemicolonToInsert(index);
   }
 
-  private String defaultIndexAndSemicolonToInsert(String line, int index) {
-    return indexAndSemicolonToInsert("= %d%s", line, index);
+  private String defaultIndexAndSemicolonToInsert(int index) {
+    return indexAndSemicolonToInsert("= %d%s", index);
   }
 
-  private String indexAndSemicolonToInsert(String format, String line, int index) {
+  private String indexAndSemicolonToInsert(String format, int index) {
     return String.format(format, index, semicolon);
   }
 }
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/documentation/SingleLineDocumentationProvider.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/documentation/SingleLineDocumentationProvider.java
index e74b45d..6cef273 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/documentation/SingleLineDocumentationProvider.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/documentation/SingleLineDocumentationProvider.java
@@ -16,8 +16,7 @@
 import org.eclipse.xtext.nodemodel.*;
 
 import com.google.eclipse.protobuf.protobuf.*;
-import com.google.eclipse.protobuf.scoping.ProtoDescriptor;
-import com.google.eclipse.protobuf.scoping.ProtoDescriptorProvider;
+import com.google.eclipse.protobuf.scoping.*;
 import com.google.inject.Inject;
 
 /**
@@ -27,6 +26,10 @@
  */
 public class SingleLineDocumentationProvider implements IEObjectDocumentationProvider {
 
+  private static final String COMMENT_START = "//\\s*"; // "//" plus any whitespace
+  private static final String WINDOWS_NEW_LINE = "\\r\\n";
+  private static final String UNIX_NEW_LINE = "\\n";
+
   @Inject private ProtoDescriptorProvider descriptorProvider;
 
   private static final String RULE_NAME = "SL_COMMENT";
@@ -72,6 +75,8 @@
   }
 
   private String cleanUp(String comment) {
-    return comment.replaceFirst("//\\s*", "").replaceAll("\\r\\n", " ").replaceAll("\\n", " ");
+    return comment.replaceFirst(COMMENT_START, "")
+                  .replaceAll(WINDOWS_NEW_LINE, " ")
+                  .replaceAll(UNIX_NEW_LINE, " ");
   }
 }