Cross-platform flexible autocomplete library for your CLI applications
- Cross-platform:
MacOS,Linux,Windows - Write your own autocomplete rules
- Setup your own highlight colors
single headerversion of the librarystaticanddynamicversions of the library
- After
gitmay follow:config,init,clone - After
configmay follow:--global,user.name,user.email - After
--globalmay follow:user.name,user.email - After
user.namemay follow optional value:"[name]" ...
git
config
--global
user.name
"[name]"
user.email
"[email]"
user.name
"[name]"
user.email
"[email]"
init
[repository_name]
clone
[url]
More complex example with:
color settings,handling optional valuesandline title configurationyou will find here
#include <stdio.h> #include "../include/autocomplete.h" int main() { // Parsing the configuration file Tree* rules = tree_create("../example.config"); fprintf( stderr, "Attention! Please run the executable file only\n" " through the command line!\n\n" "- To switch the prompts press UP or DOWN arrow.\n" "- To move cursor press LEFT or RIGHT arrow.\n" "- To edit input press DELETE or BACKSPACE key.\n" "- To apply current prompt press TAB key.\n\n" ); // Listening process while (1) { // Get user input char* str = input(rules); printf("\n%s\n", str); // Stop listening if user need if (strcmp(str, "") == 0) { free(str); break; } // Free user input string free(str); } // Free rules tree_free(rules); return 0; }
git clone https://github.com/DieTime/CLI-AutoComplete.git cd CLI-AutoComplete/ cmake -DCMAKE_BUILD_TYPE=Release -S . -B ./cmake-build cmake --build ./cmake-build --config Release ----------------------- RUN EXAMPLE --------------------- # Unix cd builds/examples/unix/Release ./custom_example # MinGW cd builds/examples/mingw/Release custom_example.exe # MSVC cd builds/examples/msvc/Release custom_example.exe
Linking a shared library [Releases]
gcc -o <executable> <paths/of/source/files> -L<path/to/shared/lib/folder> -I<path/to/include/folder> -lcliac -Wl,-rpath,<path/to/shared/lib/folder>
cl /EHsc <paths/of/source/files> /Fe<executable>.exe /I<path/to/include/folder> /link <path/to/shared/lib/file(.lib)>
gcc -o <executable>.exe <paths/of/source/files> -L<path/to/shared/lib/folder> -I<path/to/include/folder> -lcliac
Linking a static library [Releases]
gcc -o <executable> <paths/of/source/files> -L<path/to/static/lib/folder> -I<path/to/include/folder> -lcliac
cl /EHsc <paths/of/source/files> /Fe<executable>.exe /I<path/to/include/folder> /link <path/to/static/lib/file(.lib)>
gcc -o <executable>.exe <paths/of/source/files> -L<path/to/static/lib/folder> -I<path/to/include/folder> -lcliac
A detailed description of the changes can be found in CHANGELOG.md
You can support me so that there will be more good open source projects in the future