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 c693769..dfe06d3 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
@@ -92,7 +92,7 @@
           int offset = styledText.getCaretOffset();
           ContentAssistContext[] context = contextFactory.create(editor.getInternalSourceViewer(), offset, resource);
           for (ContentAssistContext c : context) {
-            if (nodes.isCommentOrString(c.getCurrentNode())) continue;
+            if (nodes.wasCreatedByAnyCommentOrString(c.getCurrentNode())) continue;
             EObject model = c.getCurrentModel();
             if (model instanceof Message || model instanceof Enum || model instanceof Protobuf) {
               // need to retry, parsing may not be finished yet.
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/spelling/ProtobufSpelling.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/spelling/ProtobufSpelling.java
index 2b482dd..70a12f4 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/spelling/ProtobufSpelling.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/spelling/ProtobufSpelling.java
@@ -8,11 +8,11 @@
  */
 package com.google.eclipse.protobuf.ui.editor.spelling;
 
-import static org.eclipse.xtext.nodemodel.util.NodeModelUtils.findLeafNodeAtOffset;
-import static org.eclipse.xtext.util.Strings.isEmpty;
+import static org.eclipse.xtext.nodemodel.util.NodeModelUtils.*;
 
 import java.util.Iterator;
 
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.jface.text.*;
 import org.eclipse.jface.text.source.*;
 import org.eclipse.ui.texteditor.spelling.*;
@@ -22,6 +22,7 @@
 import org.eclipse.xtext.ui.editor.model.XtextDocument;
 import org.eclipse.xtext.util.concurrent.IUnitOfWork;
 
+import com.google.eclipse.protobuf.protobuf.Import;
 import com.google.eclipse.protobuf.util.ModelNodes;
 
 /**
@@ -83,8 +84,11 @@
 
   private boolean shouldSpellCheck(INode node) {
     if (node == null) return false;
-    String text = node.getText();
-    if (isEmpty(text) || isEmpty(text.trim())) return false;
-    return nodes.isCommentOrString(node);
+    if (nodes.wasCreatedByAnyComment(node)) return true;
+    if (nodes.wasCreatedByString(node)) {
+      EObject o = findActualSemanticObjectFor(node);
+      return !(o instanceof Import);
+    }
+    return false;
   }
 }
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/util/ModelNodes.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/util/ModelNodes.java
index e8c5d31..6c8fb35 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/util/ModelNodes.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/util/ModelNodes.java
@@ -47,7 +47,7 @@
    * @return {@code true} if the given node was created by a string, or a single- or multi-line comment; {@code false}
    * otherwise.
    */
-  public boolean isCommentOrString(INode node) {
+  public boolean wasCreatedByAnyCommentOrString(INode node) {
     return wasCreatedByAnyComment(node) || wasCreatedByString(node);
   }
 
@@ -60,7 +60,12 @@
     return wasCreatedByRule(node, SINGLE_LINE_COMMENT_RULE_NAME, "ML_COMMENT");
   }
 
-  private boolean wasCreatedByString(INode node) {
+  /**
+   * Indicates whether the given node was created by a string.
+   * @param node the node to check.
+   * @return {@code true} if the given node was created by a string; {@code false} otherwise.
+   */
+  public boolean wasCreatedByString(INode node) {
     EObject grammarElement = node.getGrammarElement();
     if (!(grammarElement instanceof RuleCall)) return false;
     AbstractRule rule = ((RuleCall) grammarElement).getRule();
