Added support for files with extension .protodevel.
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}"