cvar autocompletion
adds auto-completion (press tab) to the following cvar
commands:
set, seta, reset, toggle - lists all cvars that starts with whatever you entered
setu, setau - lists all userinfo cvars
sets, setas - lists all serverinfo cvars
patch:
http://drop.st/5FnKtv
set, seta, reset, toggle - lists all cvars that starts with whatever you entered
setu, setau - lists all userinfo cvars
sets, setas - lists all serverinfo cvars
patch:
http://drop.st/5FnKtv
--- D:/Warsow/0.7B3/sdk_vanilla/source/qcommon/cvar.c Sat Jun 25 15:04:16 2011
+++ D:/Warsow/0.7B3/sdk/source/qcommon/cvar.c Sat Jul 21 16:27:00 2012
@@ -797,6 +797,38 @@
return buf;
}
+
+/*
+CVar_CompleteBuildList
+*/
+char **Cvar_CompleteBuildListWithFlag( const char *partial, cvar_flag_t flag )
+{
+ struct trie_dump_s *dump;
+ char **buf;
+ unsigned int i;
+
+ assert( cvar_trie );
+ Trie_DumpIf( cvar_trie, partial, TRIE_DUMP_VALUES, Cvar_HasFlags, &flag, &dump );
+ buf = (char **) Mem_TempMalloc( sizeof( char * ) * ( dump->size + 1 ) );
+ for( i = 0; i < dump->size; ++i )
+ buf = ( (cvar_t *) ( dump->key_value_vector.value ) )->name;
+ buf[dump->size] = NULL;
+ Trie_FreeDump( dump );
+ return buf;
+}
+
+
+char **Cvar_CompleteBuildListUser( const char *partial )
+{
+ return Cvar_CompleteBuildListWithFlag( partial, CVAR_USERINFO );
+}
+
+
+char **Cvar_CompleteBuildListServer( const char *partial )
+{
+ return Cvar_CompleteBuildListWithFlag( partial, CVAR_SERVERINFO );
+}
+
/*
* Cvar_PreInit
*/
@@ -833,6 +865,16 @@
Cmd_AddCommand( "reset", Cvar_Reset_f );
Cmd_AddCommand( "toggle", Cvar_Toggle_f );
Cmd_AddCommand( "cvarlist", Cvar_List_f );
+
+ Cmd_SetCompletionFunc( "set", Cvar_CompleteBuildList );
+ Cmd_SetCompletionFunc( "seta", Cvar_CompleteBuildList );
+ Cmd_SetCompletionFunc( "reset", Cvar_CompleteBuildList );
+ Cmd_SetCompletionFunc( "toggle", Cvar_CompleteBuildList );
+ Cmd_SetCompletionFunc( "setau", Cvar_CompleteBuildListUser );
+ Cmd_SetCompletionFunc( "setas", Cvar_CompleteBuildListServer );
+ Cmd_SetCompletionFunc( "setu", Cvar_CompleteBuildListUser );
+ Cmd_SetCompletionFunc( "sets", Cvar_CompleteBuildListServer );
+
#ifndef PUBLIC_BUILD
Cmd_AddCommand( "cvararchivelist", Cvar_ArchiveList_f );
#endif

