diff --git a/line.h b/line.h
index ba0443b..b76ea21 100644
--- a/line.h
+++ b/line.h
@@ -5,6 +5,7 @@
 // External includes: 
 // - <readline/readline.h>
 // - <readline/history.h>
+// - <glob.h>
 
 // MIT License: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction.
 
@@ -12,13 +13,14 @@
 #include <readline/history.h>
 #include <string.h>
 #include <stdbool.h>
+#include <glob.h>
 
 #define HISTORY_FILE ".r_history"
 
 bool line_initialized = false;
 
 char* line_command_generator(const char* text, int state) {
-    static int list_index, len;
+    static int list_index, len = 0;
     const char* commands[] = {"help", "exit", "list", "review", "refactor", "obfuscate", NULL};
 
     if (!state) {
@@ -36,8 +38,33 @@ char* line_command_generator(const char* text, int state) {
     return NULL;
 }
 
+char* line_file_generator(const char* text, int state) {
+    static int list_index;
+    glob_t glob_result;
+    char pattern[1024];
+
+    if (!state) {
+        list_index = 0;
+        snprintf(pattern, sizeof(pattern), "%s*", text); // Create a pattern for glob
+        glob(pattern, GLOB_NOSORT, NULL, &glob_result);
+    }
+
+    if (list_index < glob_result.gl_pathc) {
+        return strdup(glob_result.gl_pathv[list_index++]);
+    }
+
+    globfree(&glob_result);
+    return NULL;
+}
+
 char** line_command_completion(const char* text, int start, int end) {
     rl_attempted_completion_over = 1;
+
+    // Check if the input is a file path
+    if (start > 0 && text[0] != ' ') {
+        return rl_completion_matches(text, line_file_generator);
+    }
+
     return rl_completion_matches(text, line_command_generator);
 }
 
@@ -61,4 +88,4 @@ char* line_read(char* prefix) {
 void line_add_history(char* data) {
     add_history(data);
     write_history(HISTORY_FILE);
-}
\ No newline at end of file
+}