diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/ImportHyperlink.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/ImportHyperlink.java
index 7ea01d6..ffcd9c4 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/ImportHyperlink.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/editor/ImportHyperlink.java
@@ -6,7 +6,6 @@
  *
  * http://www.eclipse.org/legal/epl-v10.html
  */
-
 package com.google.eclipse.protobuf.ui.editor;
 
 import org.eclipse.core.filesystem.EFS;
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/CompilerPreferencePage.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/CompilerPreferencePage.java
index e953366..6630528 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/CompilerPreferencePage.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/CompilerPreferencePage.java
@@ -18,13 +18,16 @@
 
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
-import org.eclipse.swt.layout.*;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.*;
 import org.eclipse.xtext.ui.PluginImageHelper;
 import org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreAccess;
 
-import com.google.eclipse.protobuf.ui.preferences.*;
+import com.google.eclipse.protobuf.ui.preferences.DataChangedListener;
+import com.google.eclipse.protobuf.ui.preferences.PreferenceAndPropertyPage;
 import com.google.inject.Inject;
 
 /**
@@ -194,6 +197,17 @@
   }
 
   private void checkState() {
+    boolean atLeastOneEnabled = false;
+    for (CodeGeneration option : codeGenerationEditor.codeGenerationOptions()) {
+      if (option.isEnabled()) {
+        atLeastOneEnabled = true;
+        break;
+      }
+    }
+    if (!atLeastOneEnabled) {
+      pageIsNowInvalid(errorNoLanguageEnabled);
+      return;
+    }
     if (!customPathOptionSelectedAndEnabled()) {
       pageIsNowValid();
       return;
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/Messages.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/Messages.java
index a0bc9b7..7b1b423 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/Messages.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/Messages.java
@@ -23,6 +23,7 @@
   public static String enabled;
   public static String errorEnterDirectoryName;
   public static String errorInvalidProtoc;
+  public static String errorNoLanguageEnabled;
   public static String errorNoOutputFolderName;
   public static String errorNoSelection;
   public static String generateCpp;
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/Messages.properties b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/Messages.properties
index 0ab80ca..c4a7c60 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/Messages.properties
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/preferences/compiler/Messages.properties
@@ -6,6 +6,7 @@
 enabled=Enabled
 errorEnterDirectoryName=Enter the name of the output directory
 errorInvalidProtoc=The selected file is not protoc
+errorNoLanguageEnabled=Enable at least one language
 errorNoSelection=Select the path of protoc
 errorNoOutputFolderName=Enter the name of the output folder
 generateCode=Generated Code
