 edit.module        |   15 ++++++++++++++-
 includes/pages.inc |   20 ++++++++++++++++++--
 2 files changed, 32 insertions(+), 3 deletions(-)

diff --git a/edit.module b/edit.module
index c800fca..74a5fb3 100644
--- a/edit.module
+++ b/edit.module
@@ -422,6 +422,11 @@ function edit_preprocess_field(&$variables) {
  */
 function edit_preprocess_views_view_field(&$variables) {
   if (user_access('access in-place editing')) {
+    // Early-return if output is empty.
+    if (empty($variables['output'])) {
+      return;
+    }
+
     $views_field = $variables['field'];
 
     // If this Views Field is hidden from display, then don't alter its output.
@@ -432,13 +437,21 @@ function edit_preprocess_views_view_field(&$variables) {
     if (!empty($variables['row']) && !empty($variables['row']->_field_data)) {
       $entity_info = end($variables['row']->_field_data);
 
+      // Field API metadata.
       $entity_type = $entity_info['entity_type'];
       $entity = $entity_info['entity'];
       $field_name = $views_field->field;
       $language = !empty($entity->language) ? $entity->language : LANGUAGE_NONE;
       list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
 
-      $edit_id = "$entity_type/$id/$field_name/$language/_custom_views";
+      // Views metadata.
+      $view_name = $variables['view']->name;
+      $view_display = $variables['view']->current_display;
+      $view_row = $variables['view']->row_index;
+
+      // Build edit ID; the view mode is now a hybrid that contains the
+      // necessary metadata for Views.
+      $edit_id = "$entity_type/$id/$field_name/$language/views-$view_name-$view_display-$view_row";
 
       $variables['output'] = edit_wrap_pseudofield($variables['output'], $edit_id, _edit_is_extra_field($entity_type, $field_name));
     }
diff --git a/includes/pages.inc b/includes/pages.inc
index 7086325..2904ec8 100644
--- a/includes/pages.inc
+++ b/includes/pages.inc
@@ -139,8 +139,24 @@ function edit_field_edit($entity_type, $entity_id, $field_name, $langcode = NULL
       // updated view of the field.
       $entities = entity_load($entity_type, array($id), TRUE);
       $entity = reset($entities);
-      $field = field_view_field($entity_type, $entity, $field_name, $view_mode, $langcode);
-      $rerendered_field = drupal_render($field);
+
+      // If the view mode doesn't contain a dash, then it is a Field API view
+      // mode.
+      if (strstr($view_mode, '-') === FALSE) {
+        $field = field_view_field($entity_type, $entity, $field_name, $view_mode, $langcode);
+        $rerendered_field = drupal_render($field);
+      }
+      else {
+        list($module, $view_name, $view_display, $view_row) = explode('-', $view_mode);
+        // @todo Change this into a hook.
+        if ($module === 'views') {
+          $view = views_get_view($view_name);
+          $view->set_display($view_display);
+          $view->init_handlers();
+          $view->preview($view_display);
+          $rerendered_field = $view->style_plugin->get_field($view_row, $field_name);
+        }
+      }
     }
     else {
       $rerender_callback = edit_extra_field_info($entity_type, $field_name, 'rerender callback');
