diff --git a/inc/lektor/database.h b/inc/lektor/database.h
index 0cddeaa1a7b2af6f4ae662664f9f25469c0e276d..aa2b4aab2257433c7c05e25045b290539f91ada9 100644
--- a/inc/lektor/database.h
+++ b/inc/lektor/database.h
@@ -114,6 +114,7 @@ bool database_search_iter(struct lkt_search *item);
 /* Next and prev operation on the queue. */
 bool database_queue_next(volatile sqlite3 *db, char filepath[PATH_MAX]);
 bool database_queue_prev(volatile sqlite3 *db, char filepath[PATH_MAX]);
+bool database_queue_skip_current(volatile sqlite3 *db, char filepath[PATH_MAX]);
 
 /* Set a value in the config table */
 bool database_config_set     (volatile sqlite3 *db, const char *section, const char *key, const char *value);
diff --git a/src/database/queue.c b/src/database/queue.c
index 8ff68e8410714f2e5dc0c04859ca77b7832760b5..29d275d8caf4a9a4b4d389dcb55004ec905139c4 100644
--- a/src/database/queue.c
+++ b/src/database/queue.c
@@ -321,6 +321,19 @@ error:
     return status;
 }
 
+bool
+database_queue_skip_current(volatile sqlite3 *db, char filepath[PATH_MAX])
+{
+    if (database_queue_next(db, filepath))
+        return true;
+    else if (database_queue_prev(db, filepath))
+        return true;
+    else {
+        database_queue_stop(db);
+        return false;
+    }
+}
+
 bool
 database_queue_toggle_pause(volatile sqlite3 *db)
 {