diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/Protobuf.xtext b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/Protobuf.xtext
index 1f4073b..62b0d98 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/Protobuf.xtext
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/Protobuf.xtext
@@ -34,8 +34,14 @@
   '.'? Name ('.' Name)*;
 
 Option:
+  BuiltInOption | CustomOption;
+  
+BuiltInOption:  
   'option' name=Name '=' value=ValueRef ';';
 
+CustomOption:  
+  'option' '(' name=QualifiedName ')' '=' value=ValueRef ';';
+
 Type:
   Message | Enum;
 
@@ -74,8 +80,14 @@
   ('[' fieldOptions+=FieldOption (',' fieldOptions+=FieldOption)* ']')? ';';
 
 FieldOption:
+  BuiltInFieldOption | CustomFieldOption;
+    
+BuiltInFieldOption:  
   name=Name '=' value=ValueRef;
 
+CustomFieldOption:  
+  '(' name=QualifiedName ')' '=' value=ValueRef;
+
 enum Modifier:
   required
   | optional
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtoDescriptor.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtoDescriptor.java
index d1b15ef..a4eb463 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtoDescriptor.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtoDescriptor.java
@@ -206,7 +206,7 @@
    * @param option the given option.
    * @return the enum type of the given option or {@code null} if the type of the given option is not enum.
    */
-  public Enum enumTypeOf(Option option) {
+  public Enum enumTypeOf(BuiltInOption option) {
     String name = option.getName();
     return enumTypeOf(lookupOption(name));
   }
@@ -218,7 +218,7 @@
    * @param option the given option.
    * @return the enum type of the given option or {@code null} if the type of the given option is not enum.
    */
-  public Enum enumTypeOf(FieldOption option) {
+  public Enum enumTypeOf(BuiltInFieldOption option) {
     String name = option.getName();
     return enumTypeOf(lookupFieldOption(name));
   }
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider.java
index a3ebdab..4ca87be 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider.java
@@ -182,9 +182,11 @@
 
   private Enum enumTypeOfOption(EObject mayBeOption) {
     ProtoDescriptor descriptor = descriptorProvider.get();
-    if (mayBeOption instanceof Option) return descriptor.enumTypeOf((Option) mayBeOption);
-    if (mayBeOption instanceof FieldOption) {
-      FieldOption option = (FieldOption) mayBeOption;
+    if (mayBeOption instanceof BuiltInOption) {
+      return descriptor.enumTypeOf((BuiltInOption) mayBeOption);
+    }
+    if (mayBeOption instanceof BuiltInFieldOption) {
+      BuiltInFieldOption option = (BuiltInFieldOption) mayBeOption;
       if (fieldOptions.isDefaultValueOption(option)) {
         Property property = (Property) option.eContainer();
         return finder.enumTypeOf(property);
