Skip to content
This repository was archived by the owner on May 31, 2022. It is now read-only.

Commit b94481d

Browse files
author
Allen Webster
committed
team project feature
1 parent 3ca23cb commit b94481d

File tree

3 files changed

+90
-54
lines changed

3 files changed

+90
-54
lines changed

custom/4coder_project_commands.cpp

Lines changed: 48 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ prj_stringize_project(Application_Links *app, Arena *arena, Variable_Handle proj
205205
String_ID cursor_at_end_id = vars_save_string_lit("cursor_at_end");
206206

207207
String_ID fkey_command_id = vars_save_string_lit("fkey_command");
208+
String_ID fkey_command_override_id = vars_save_string_lit("fkey_command_override");
208209

209210
String8 os_strings[] = { str8_lit("win"), str8_lit("linux"), str8_lit("mac"), };
210211
local_const i32 os_string_count = ArrayCount(os_strings);
@@ -272,9 +273,7 @@ prj_stringize_project(Application_Links *app, Arena *arena, Variable_Handle proj
272273
string_list_push(arena, out, str8_lit("},\n"));
273274
}
274275
}
275-
string_list_push(arena, out, str8_lit("};\n"));
276-
277-
string_list_push(arena, out, str8_lit("\n"));
276+
string_list_push(arena, out, str8_lit("};\n\n"));
278277
}
279278

280279

@@ -312,9 +311,7 @@ prj_stringize_project(Application_Links *app, Arena *arena, Variable_Handle proj
312311
string_list_pushf(arena, out, ".cursor_at_end = %s,\n", (cursor_at_end?"true":"false"));
313312
string_list_push(arena, out, str8_lit("},\n"));
314313
}
315-
string_list_push(arena, out, str8_lit("};\n"));
316-
317-
string_list_push(arena, out, str8_lit("\n"));
314+
string_list_push(arena, out, str8_lit("};\n\n"));
318315
}
319316

320317

@@ -325,11 +322,29 @@ prj_stringize_project(Application_Links *app, Arena *arena, Variable_Handle proj
325322
for (Vars_Children(child, fkey_commands)){
326323
String8 key = vars_key_from_var(scratch, child);
327324
String8 name = vars_string_from_var(scratch, child);
328-
string_list_pushf(arena, out, ".%.*s = \"%.*s\",\n", string_expand(key), string_expand(name));
325+
string_list_pushf(arena, out, ".%.*s = \"%.*s\",\n",
326+
string_expand(key), string_expand(name));
329327
}
330-
string_list_push(arena, out, str8_lit("};\n"));
331-
332-
string_list_push(arena, out, str8_lit("\n"));
328+
string_list_push(arena, out, str8_lit("};\n\n"));
329+
}
330+
331+
332+
// NOTE(allen): FKey Command Override
333+
Variable_Handle fkey_commands_overide = vars_read_key(project, fkey_command_override_id);
334+
if (!vars_is_nil(fkey_commands_overide)){
335+
string_list_push(arena, out, str8_lit("fkey_command_override = {\n"));
336+
for (Vars_Children(user_child, fkey_commands_overide)){
337+
String8 user_key = vars_key_from_var(scratch, user_child);
338+
string_list_pushf(arena, out, ".%.*s = {\n", string_expand(user_key));
339+
for (Vars_Children(child, user_child)){
340+
String8 key = vars_key_from_var(scratch, child);
341+
String8 name = vars_string_from_var(scratch, child);
342+
string_list_pushf(arena, out, ".%.*s = \"%.*s\",\n",
343+
string_expand(key), string_expand(name));
344+
}
345+
string_list_pushf(arena, out, "},\n");
346+
}
347+
string_list_push(arena, out, str8_lit("};\n\n"));
333348
}
334349
}
335350

@@ -733,14 +748,32 @@ prj_exec_command_name(Application_Links *app, String8 cmd_name){
733748

734749
function void
735750
prj_exec_command_fkey_index(Application_Links *app, i32 fkey_index){
736-
// TODO(allen): ideally if one fkey_command is missing this index the fallback
737-
// can be continued.
738-
Variable_Handle fkeys = def_get_config_var(vars_save_string_lit("fkey_command"));
739-
751+
// setup fkey string
740752
Scratch_Block scratch(app);
741753
String8 fkey_index_str = push_stringf(scratch, "F%d", fkey_index + 1);
742754
String_ID fkey_index_id = vars_save_string(fkey_index_str);
743-
Variable_Handle cmd_name_var = vars_read_key(fkeys, fkey_index_id);
755+
756+
// get command variable
757+
Variable_Handle cmd_name_var = vars_get_nil();
758+
759+
// try user override
760+
{
761+
Variable_Handle fkey_override =
762+
def_get_config_var(vars_save_string_lit("fkey_command_override"));
763+
if (!vars_is_nil(fkey_override)){
764+
String_Const_u8 name = def_get_config_string(scratch, vars_save_string_lit("user_name"));
765+
String_ID user_name_id = vars_save_string(name);
766+
Variable_Handle user_var = vars_read_key(fkey_override, user_name_id);
767+
cmd_name_var = vars_read_key(user_var, fkey_index_id);
768+
}
769+
}
770+
771+
// try defaults
772+
if (vars_is_nil(cmd_name_var)){
773+
Variable_Handle fkeys = def_get_config_var(vars_save_string_lit("fkey_command"));
774+
cmd_name_var = vars_read_key(fkeys, fkey_index_id);
775+
}
776+
744777
String8 cmd_name = vars_string_from_var(scratch, cmd_name_var);
745778
prj_exec_command_name(app, cmd_name);
746779
}

0 commit comments

Comments
 (0)