  	static struct entry lastentry;
 
  	if (!force && !memcmp(&lastentry, &pdents[cur], sizeof(struct entry)))
-@@ -5912,7 +5944,7 @@ static void send_to_explorer(int *presel)
-		if (fd > 1)
-			close(fd);
-	} else
+@@ -5910,7 +5942,7 @@ static void send_to_explorer(int *presel)
+ 		if (fd > 1)
+ 			close(fd);
+ 	} else
 -		notify_fifo(TRUE); /* Send opened path to NNN_FIFO */
 +		notify_fifo(TRUE, FALSE); /* Send opened path to NNN_FIFO */
  }
  #endif
 
-@@ -5945,7 +5977,7 @@ static void move_cursor(int target, int ignore_scrolloff)
+@@ -5943,7 +5975,7 @@ static void move_cursor(int target, int ignore_scrolloff)
 
  #ifndef NOFIFO
  	if (!g_state.fifomode)

 #ifdef DEBUG
 	disabledbg();
 #endif
@@ -8786,7 +8840,7 @@ int main(int argc, char *argv[])

 #ifndef NOFIFO
 	if (!g_state.fifomode)

 				if (cfg.filtermode) {
 					presel = FILTER;
 					clearfilter();
@@ -7291,8 +7330,14 @@ nochange:
 				copycurname();
 				goto nochange;
 			case SEL_EDIT:
+				if (g_state.previewer)
+					notify_fifo(FALSE, TRUE);
 				if (!g_state.picker)
 					spawn(editor, newpath, NULL, NULL, F_CLI);
+				if (g_state.previewer) {
+					pkey = previewkey;
+					goto run_plugin;
