diff --git a/com.google.eclipse.protobuf.ui/plugin.xml b/com.google.eclipse.protobuf.ui/plugin.xml
index 1d7833d..8552b8b 100644
--- a/com.google.eclipse.protobuf.ui/plugin.xml
+++ b/com.google.eclipse.protobuf.ui/plugin.xml
@@ -5,7 +5,7 @@
 
   <extension point="org.eclipse.ui.editors">
     <editor class="com.google.eclipse.protobuf.ui.ProtobufExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
-      contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor" default="true" extensions="proto"
+      contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor" default="true" extensions="proto,protodevel"
       icon="icons/pb.gif" id="com.google.eclipse.protobuf.Protobuf" name="%editor.name">
     </editor>
   </extension>
@@ -120,6 +120,20 @@
     </resourceServiceProvider>
   </extension>
 
+  <extension
+    point="org.eclipse.emf.ecore.extension_parser">
+    <parser
+      class="com.google.eclipse.protobuf.ui.ProtobufExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+      type="protodevel">
+    </parser>
+  </extension>
+  <extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="com.google.eclipse.protobuf.ui.ProtobufExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="protodevel">
+        </resourceServiceProvider>
+    </extension>
+
   <!-- Quick Outline -->
   <extension point="org.eclipse.ui.handlers">
     <handler
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/paths/PathsPreferencePage.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/paths/PathsPreferencePage.java
index 4228a67..4370e07 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/paths/PathsPreferencePage.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/pages/paths/PathsPreferencePage.java
@@ -8,6 +8,7 @@
  */
 package com.google.eclipse.protobuf.ui.preferences.pages.paths;
 
+import static com.google.eclipse.protobuf.ui.ProtobufUiModule.PLUGIN_ID;
 import static com.google.eclipse.protobuf.ui.preferences.EventListeners.addSelectionListener;
 import static com.google.eclipse.protobuf.ui.preferences.binding.BindingToButtonSelection.bindSelectionOf;
 import static com.google.eclipse.protobuf.ui.preferences.pages.paths.Messages.*;
@@ -18,8 +19,11 @@
 import static org.eclipse.core.runtime.jobs.Job.BUILD;
 import static org.eclipse.xtext.util.Strings.*;
 
-import java.util.*;
-import java.util.List;
+import com.google.eclipse.protobuf.ui.preferences.*;
+import com.google.eclipse.protobuf.ui.preferences.binding.*;
+import com.google.eclipse.protobuf.ui.preferences.pages.PreferenceAndPropertyPage;
+import com.google.eclipse.protobuf.ui.validation.ValidationTrigger;
+import com.google.inject.Inject;
 
 import org.apache.log4j.Logger;
 import org.eclipse.core.runtime.*;
@@ -31,11 +35,8 @@
 import org.eclipse.swt.widgets.*;
 import org.eclipse.xtext.ui.PluginImageHelper;
 
-import com.google.eclipse.protobuf.ui.preferences.*;
-import com.google.eclipse.protobuf.ui.preferences.binding.*;
-import com.google.eclipse.protobuf.ui.preferences.pages.PreferenceAndPropertyPage;
-import com.google.eclipse.protobuf.ui.validation.ValidationTrigger;
-import com.google.inject.Inject;
+import java.util.*;
+import java.util.List;
 
 /**
  * Preference page for import paths.
@@ -199,7 +200,7 @@
           project().build(FULL_BUILD, monitor);
         } catch (CoreException e) {
           logger.error(e.getMessage(), e);
-          return new Status(ERROR, "unknown", ERROR, e.getMessage(), e); //$NON-NLS-1$
+          return new Status(ERROR, PLUGIN_ID, ERROR, e.getMessage(), e); //$NON-NLS-1$
         }
         return OK_STATUS;
       }
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/validation/Validation.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/validation/Validation.java
index a5b1205..b536bb7 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/validation/Validation.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/validation/Validation.java
@@ -63,6 +63,7 @@
     document.readOnly(new IUnitOfWork<Void, XtextResource>() {
       public java.lang.Void exec(XtextResource resource) throws Exception {
         EObject root = resource.getParseResult().getRootASTElement();
+        if (root == null) return null;
         resetImports(root);
         resource.getLinker().linkModel(root, new ListBasedDiagnosticConsumer());
         ((XtextDocument) document).checkAndUpdateAnnotations();
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/GenerateProtobuf.mwe2 b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/GenerateProtobuf.mwe2
index c2c5711..492f4f0 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/GenerateProtobuf.mwe2
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/GenerateProtobuf.mwe2
@@ -15,7 +15,7 @@
 import org.eclipse.xtext.ui.generator.*
 
 var grammarURI = "classpath:/com/google/eclipse/protobuf/Protobuf.xtext"
-var file.extensions = "proto"
+var file.extensions = "proto, protodevel"
 var projectName = "com.google.eclipse.protobuf"
 var runtimeProject = "../${projectName}"
 
