1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 03:47:35 +00:00

Shell: Tab completion for paths

If the cursor is in front of a token that is not the first token, we try
to split it on the last slash. If there is a slash, the first part is
the directory to search and the second part is the token to complete.
If there is no slash, we search the current directory and use the entire
token for completion.
If we find a single match and it's a directory, we add a slash. If it's
a normal file, we add a space, unless there already is one.

Also renamed cut_mismatching_chars() parameters to be more appropriate.
This commit is contained in:
William McPherson 2019-12-10 23:14:45 +11:00 committed by Andreas Kling
parent 4ae8d929b4
commit 61f2704d58
2 changed files with 68 additions and 5 deletions

View file

@ -1,6 +1,7 @@
#pragma once
#include <AK/BinarySearch.h>
#include <AK/FileSystemPath.h>
#include <AK/QuickSort.h>
#include <AK/String.h>
#include <AK/Vector.h>
@ -23,8 +24,9 @@ private:
void clear_line();
void insert(const String&);
void insert(const char);
void cut_mismatching_chars(String& completion, const String& program, size_t token_length);
void cut_mismatching_chars(String& completion, const String& other, size_t start_compare);
void tab_complete_first_token(const String&);
void tab_complete_other_token(String&);
void vt_save_cursor();
void vt_restore_cursor();
void vt_clear_to_end_of_line();