Progress towards profile inspector
This commit is contained in:
parent
0fd91c8aaf
commit
a6e582add0
|
@ -18,6 +18,7 @@ custom_layer_init(Application_Links *app){
|
|||
Thread_Context *tctx = get_thread_context(app);
|
||||
mapping_init(tctx, &framework_mapping);
|
||||
setup_default_mapping(&framework_mapping);
|
||||
profile_history_init();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -22,7 +22,9 @@
|
|||
#include "4coder_base_types.cpp"
|
||||
#include "4coder_stringf.cpp"
|
||||
#include "4coder_app_links_allocator.cpp"
|
||||
#include "4coder_system_allocator.cpp"
|
||||
|
||||
#include "4coder_profile.h"
|
||||
#include "4coder_table.h"
|
||||
#include "4coder_token.h"
|
||||
#include "generated/lexer_cpp.h"
|
||||
|
@ -62,6 +64,7 @@
|
|||
#include "4coder_table.cpp"
|
||||
#include "4coder_string_match.cpp"
|
||||
#include "4coder_buffer_seek_constructors.cpp"
|
||||
#include "4coder_profile.cpp"
|
||||
|
||||
#include "4coder_token.cpp"
|
||||
#include "generated/lexer_cpp.cpp"
|
||||
|
@ -93,6 +96,7 @@
|
|||
#include "4coder_scope_commands.cpp"
|
||||
#include "4coder_combined_write_commands.cpp"
|
||||
#include "4coder_miblo_numbers.cpp"
|
||||
#include "4coder_profile_inspect.cpp"
|
||||
|
||||
#include "4coder_default_hooks.cpp"
|
||||
|
||||
|
|
|
@ -208,8 +208,9 @@ draw_fancy_string(Application_Links *app, Face_ID font_id, Fancy_String *string,
|
|||
|
||||
f32 adv = get_string_advance(app, use_font_id, string->value);
|
||||
|
||||
// TODO(casey): need to fill the background here, but I don't know the line height,
|
||||
// and I can't actually render filled shapes, so, like, I can't properly do dP :(
|
||||
// TODO(casey): need to fill the background here, but I don't know the line
|
||||
// height, and I can't actually render filled shapes, so, like, I can't
|
||||
// properly do dP :(
|
||||
|
||||
Face_Metrics metrics = get_face_metrics(app, font_id);
|
||||
|
||||
|
@ -221,8 +222,8 @@ draw_fancy_string(Application_Links *app, Face_ID font_id, Fancy_String *string,
|
|||
}
|
||||
|
||||
static Vec2_f32
|
||||
draw_fancy_string(Application_Links *app, Face_ID font_id, Fancy_String *string, Vec2 P,
|
||||
int_color fore, int_color back){
|
||||
draw_fancy_string(Application_Links *app, Face_ID font_id, Fancy_String *string,
|
||||
Vec2_f32 P, int_color fore, int_color back){
|
||||
return(draw_fancy_string(app, font_id, string, P, fore, back, 0, V2(1.f, 0.f)));
|
||||
}
|
||||
|
||||
|
|
|
@ -646,6 +646,7 @@ lister_run(Application_Links *app, View_ID view, Lister *lister){
|
|||
}
|
||||
|
||||
if (!handled){
|
||||
// TODO(allen): dedup this stuff.
|
||||
Mapping *mapping = lister->mapping;
|
||||
Command_Map *map = lister->map;
|
||||
if (mapping != 0 && map != 0){
|
||||
|
|
|
@ -0,0 +1,143 @@
|
|||
/*
|
||||
* 4coder_profile.cpp - Built in self profiling report.
|
||||
*/
|
||||
|
||||
// TOP
|
||||
|
||||
function Profile_Group*
|
||||
make_profile_group__inner(u32 slot_count, u32 stack_size, char *source_location){
|
||||
Arena arena = make_arena_system(KB(4));
|
||||
Profile_Group *group = push_array(&arena, Profile_Group, 1);
|
||||
group->arena = arena;
|
||||
group->thread_id = system_thread_get_id();
|
||||
group->source_location = SCu8(source_location);
|
||||
group->slot_names = push_array_zero(&group->arena, String_Const_u8, slot_count);
|
||||
group->timer_stack = push_array_zero(&group->arena, Profile_Slot, stack_size);
|
||||
group->slot_count = slot_count;
|
||||
group->stack_size = stack_size;
|
||||
group->stack_top = 0;
|
||||
group->first = 0;
|
||||
group->last = 0;
|
||||
return(group);
|
||||
}
|
||||
|
||||
#define make_profile_group(L,T) make_profile_group__inner((L),(T), file_name_line_number)
|
||||
|
||||
function void
|
||||
profile_define(Profile_Group *group, u32 slot_index, char *name){
|
||||
if (slot_index < group->slot_count){
|
||||
group->slot_names[slot_index] = SCu8(name);
|
||||
}
|
||||
}
|
||||
|
||||
function void
|
||||
profile__record(Profile_Group *group, u32 slot_index, u64 time){
|
||||
Profile_Record *record = push_array(&group->arena, Profile_Record, 1);
|
||||
record->slot_index = slot_index;
|
||||
record->time = time;
|
||||
sll_queue_push(group->first, group->last, record);
|
||||
}
|
||||
|
||||
function void
|
||||
profile_begin_range(Profile_Group *group, u32 slot_index){
|
||||
Assert(group->stack_top < group->stack_size);
|
||||
Profile_Slot *slot = &group->timer_stack[group->stack_top];
|
||||
Profile_Slot *prev = 0;
|
||||
if (group->stack_top > 0){
|
||||
prev = &group->timer_stack[group->stack_top - 1];
|
||||
}
|
||||
slot->slot_index = slot_index;
|
||||
group->stack_top += 1;
|
||||
slot->accumulated_time = 0;
|
||||
u64 time = system_now_time();
|
||||
slot->start_time = time;
|
||||
if (prev != 0){
|
||||
prev->accumulated_time += time - prev->start_time;
|
||||
}
|
||||
}
|
||||
|
||||
function void
|
||||
profile_end_range(Profile_Group *group){
|
||||
u64 time = system_now_time();
|
||||
Assert(group->stack_top > 0);
|
||||
group->stack_top -= 1;
|
||||
if (group->stack_top > 0){
|
||||
Profile_Slot *prev = &group->timer_stack[group->stack_top - 1];
|
||||
prev->start_time = time;
|
||||
}
|
||||
Profile_Slot *slot = &group->timer_stack[group->stack_top];
|
||||
u64 accumulated = time - slot->start_time + slot->accumulated_time;
|
||||
profile__record(group, slot->slot_index, accumulated);
|
||||
}
|
||||
|
||||
function void
|
||||
profile_add_note(Profile_Group *group, u32 slot_index){
|
||||
profile__record(group, slot_index, 0);
|
||||
}
|
||||
|
||||
function void
|
||||
profile_group_post(Profile_Group *group){
|
||||
Assert(group->stack_top == 0);
|
||||
system_mutex_acquire(profile_history.mutex);
|
||||
if (profile_history.disable_bits == 0){
|
||||
sll_queue_push(profile_history.first, profile_history.last, group);
|
||||
}
|
||||
else{
|
||||
Arena *arena = &group->arena;
|
||||
linalloc_clear(arena);
|
||||
}
|
||||
system_mutex_release(profile_history.mutex);
|
||||
}
|
||||
|
||||
function void
|
||||
profile_history_set_enabled(b32 value, Profile_Enable_Flag flag){
|
||||
system_mutex_acquire(profile_history.mutex);
|
||||
if (value){
|
||||
RemFlag(profile_history.disable_bits, flag);
|
||||
}
|
||||
else{
|
||||
AddFlag(profile_history.disable_bits, flag);
|
||||
}
|
||||
system_mutex_release(profile_history.mutex);
|
||||
}
|
||||
|
||||
function void
|
||||
profile_history_clear(void){
|
||||
system_mutex_acquire(profile_history.mutex);
|
||||
for (Profile_Group *node = profile_history.first, *next = 0;
|
||||
node != 0;
|
||||
node = next){
|
||||
next = node->next;
|
||||
Arena *arena = &node->arena;
|
||||
linalloc_clear(arena);
|
||||
}
|
||||
system_mutex_release(profile_history.mutex);
|
||||
}
|
||||
|
||||
function void
|
||||
profile_history_init(void){
|
||||
profile_history.mutex = system_mutex_make();
|
||||
profile_history.disable_bits = 0;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
CUSTOM_COMMAND_SIG(profile_enable)
|
||||
CUSTOM_DOC("Allow 4coder's self profiler to gather new profiling information.")
|
||||
{
|
||||
profile_history_set_enabled(true, ProfileEnable_UserBit);
|
||||
}
|
||||
|
||||
CUSTOM_COMMAND_SIG(profile_disable)
|
||||
CUSTOM_DOC("Prevent 4coder's self profiler from gathering new profiling information.")
|
||||
{
|
||||
profile_history_set_enabled(false, ProfileEnable_UserBit);
|
||||
}
|
||||
|
||||
CUSTOM_COMMAND_SIG(profile_clear)
|
||||
CUSTOM_DOC("Clear all profiling information from 4coder's self profiler.")
|
||||
{
|
||||
profile_history_clear();
|
||||
}
|
||||
|
||||
// BOTTOM
|
|
@ -0,0 +1,60 @@
|
|||
/*
|
||||
* 4coder_profile.h - Types for built in self profiling report.
|
||||
*/
|
||||
|
||||
// TOP
|
||||
|
||||
#if !defined(FCODER_PROFILE_H)
|
||||
#define FCODER_PROFILE_H
|
||||
|
||||
struct Profile_Slot{
|
||||
u64 start_time;
|
||||
u64 accumulated_time;
|
||||
u32 slot_index;
|
||||
};
|
||||
|
||||
struct Profile_Record{
|
||||
Profile_Record *next;
|
||||
struct Profile_Group *group;
|
||||
u64 time;
|
||||
u32 slot_index;
|
||||
};
|
||||
|
||||
struct Profile_Group{
|
||||
Profile_Group *next;
|
||||
|
||||
Arena arena;
|
||||
|
||||
i32 thread_id;
|
||||
String_Const_u8 source_location;
|
||||
String_Const_u8 *slot_names;
|
||||
Profile_Slot *timer_stack;
|
||||
u32 slot_count;
|
||||
u32 stack_size;
|
||||
u32 stack_top;
|
||||
|
||||
Profile_Record *first;
|
||||
Profile_Record *last;
|
||||
};
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
typedef u32 Profile_Enable_Flag;
|
||||
enum{
|
||||
ProfileEnable_UserBit = 0x1,
|
||||
ProfileEnable_InspectBit = 0x2
|
||||
};
|
||||
|
||||
struct Profile_History{
|
||||
System_Mutex mutex;
|
||||
Profile_Enable_Flag disable_bits;
|
||||
Profile_Group *first;
|
||||
Profile_Group *last;
|
||||
};
|
||||
|
||||
global Profile_History profile_history = {};
|
||||
|
||||
#endif
|
||||
|
||||
// BOTTOM
|
||||
|
|
@ -0,0 +1,277 @@
|
|||
/*
|
||||
* 4coder_profile.cpp - Built in self profiling UI.
|
||||
*/
|
||||
|
||||
// TOP
|
||||
|
||||
struct Profile_Group_Ptr{
|
||||
Profile_Group_Ptr *next;
|
||||
Profile_Group *group;
|
||||
};
|
||||
|
||||
struct Profile_Universal_Slot{
|
||||
Profile_Universal_Slot *next;
|
||||
|
||||
String_Const_u8 source_location;
|
||||
u32 slot_index;
|
||||
|
||||
String_Const_u8 name;
|
||||
|
||||
u32 count;
|
||||
u64 total_time;
|
||||
};
|
||||
|
||||
struct Profile_Thread{
|
||||
Profile_Thread *next;
|
||||
i32 thread_id;
|
||||
|
||||
Profile_Group_Ptr *first_group;
|
||||
Profile_Group_Ptr *last_group;
|
||||
|
||||
Profile_Universal_Slot *first_slot;
|
||||
Profile_Universal_Slot *last_slot;
|
||||
i32 slot_count;
|
||||
|
||||
Profile_Universal_Slot **sorted_slots;
|
||||
};
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
function Profile_Thread*
|
||||
get_column_from_thread_id(Profile_Thread *first, i32 thread_id){
|
||||
Profile_Thread *result = 0;
|
||||
for (Profile_Thread *node = first;
|
||||
node != 0;
|
||||
node = node->next){
|
||||
if (node->thread_id == thread_id){
|
||||
result = node;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
function Profile_Universal_Slot*
|
||||
get_universal_slot(Profile_Thread *column, String_Const_u8 source_location,
|
||||
u32 slot_index){
|
||||
Profile_Universal_Slot *result = 0;
|
||||
for (Profile_Universal_Slot *node = column->first_slot;
|
||||
node != 0;
|
||||
node = node->next){
|
||||
if (node->slot_index == slot_index &&
|
||||
string_match(node->source_location, source_location)){
|
||||
result = node;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
function void
|
||||
sort_universal_slots(Profile_Universal_Slot **slots, i32 first, i32 one_past_last){
|
||||
if (first + 1 < one_past_last){
|
||||
i32 pivot = one_past_last - 1;
|
||||
Profile_Universal_Slot *pivot_slot = &slots[pivot];
|
||||
i32 j = first;
|
||||
for (i32 i = first; i < pivot; i += 1){
|
||||
Profile_Universal_Slot *slot = &slots[i];
|
||||
b32 is_less = false;
|
||||
if (slot->total_time < pivot_slot->total_time){
|
||||
is_less = true;
|
||||
}
|
||||
else if (slot->total_time == pivot_slot->total_time){
|
||||
if (slot->count < pivot_slot->count){
|
||||
is_less = true;
|
||||
}
|
||||
else if (slot->count == pivot_slot->count){
|
||||
i32 comp = string_compare(slot->source_location,
|
||||
pivot_slot->source_location);
|
||||
if (comp < 0){
|
||||
is_less = true;
|
||||
}
|
||||
else if (comp == 0){
|
||||
if (slot->slot_index < pivot_slot->slot_index){
|
||||
is_less = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (is_less){
|
||||
Swap(Profile_Universal_Slot*, slots[i], slots[j]);
|
||||
j += 1;
|
||||
}
|
||||
}
|
||||
Swap(Profile_Universal_Slot*, slots[j], slots[pivot]);
|
||||
sort_universal_slots(slots, first, pivot);
|
||||
sort_universal_slots(slots, pivot + 1, one_past_last);
|
||||
}
|
||||
}
|
||||
|
||||
function void
|
||||
profile_render(Application_Links *app, Frame_Info frame_info, View_ID view){
|
||||
Scratch_Block scratch(app);
|
||||
|
||||
Rect_f32 region = draw_background_and_margin(app, view);
|
||||
Rect_f32 prev_clip = draw_set_clip(app, region);
|
||||
|
||||
Face_ID face_id = get_face_id(app, 0);
|
||||
Face_Metrics metrics = get_face_metrics(app, face_id);
|
||||
f32 line_height = metrics.line_height;
|
||||
|
||||
system_mutex_acquire(profile_history.mutex);
|
||||
|
||||
// TODO(allen): cache this result!
|
||||
Profile_Thread *thread_first = 0;
|
||||
Profile_Thread *thread_last = 0;
|
||||
i32 thread_count = 0;
|
||||
for (Profile_Group *node = profile_history.first;
|
||||
node != 0;
|
||||
node = node->next){
|
||||
i32 thread_id = node->thread_id;
|
||||
Profile_Thread *column = get_column_from_thread_id(thread_first, thread_id);
|
||||
if (column == 0){
|
||||
column = push_array(scratch, Profile_Thread, 1);
|
||||
sll_queue_push(thread_first, thread_last, column);
|
||||
thread_count += 1;
|
||||
column->thread_id = thread_id;
|
||||
column->first_group = 0;
|
||||
column->last_group = 0;
|
||||
}
|
||||
|
||||
Profile_Group_Ptr *ptr = push_array(scratch, Profile_Group_Ptr, 1);
|
||||
sll_queue_push(column->first_group, column->last_group, ptr);
|
||||
ptr->group = node;
|
||||
|
||||
String_Const_u8 source_location = node->source_location;
|
||||
for (Profile_Record *record = node->first;
|
||||
record != 0;
|
||||
record = record->next){
|
||||
Profile_Universal_Slot *univ_slot =
|
||||
get_universal_slot(column, source_location, record->slot_index);
|
||||
if (univ_slot == 0){
|
||||
univ_slot = push_array(scratch, Profile_Universal_Slot, 1);
|
||||
sll_queue_push(column->first_slot, column->last_slot, univ_slot);
|
||||
column->slot_count += 1;
|
||||
univ_slot->source_location = source_location;
|
||||
univ_slot->slot_index = record->slot_index;
|
||||
univ_slot->name = node->slot_names[univ_slot->slot_index];
|
||||
univ_slot->count = 0;
|
||||
univ_slot->total_time = 0;
|
||||
}
|
||||
univ_slot->count += 1;
|
||||
univ_slot->total_time += record->time;
|
||||
}
|
||||
}
|
||||
|
||||
for (Profile_Thread *column = thread_first;
|
||||
column != 0;
|
||||
column = column->next){
|
||||
i32 count = column->slot_count;
|
||||
Profile_Universal_Slot **slots = push_array(scratch, Profile_Universal_Slot*, count);
|
||||
column->sorted_slots = slots;
|
||||
sort_universal_slots(slots, 0, count);
|
||||
}
|
||||
|
||||
f32 column_width = rect_width(region)/(f32)thread_count;
|
||||
|
||||
Rect_f32_Pair header_body = rect_split_top_bottom(region, line_height*2.f);
|
||||
|
||||
Range_f32 full_y = rect_range_y(region);
|
||||
Range_f32 header_y = rect_range_y(header_body.min);
|
||||
Range_f32 body_y = rect_range_y(header_body.max);
|
||||
|
||||
f32 pos_x = region.x0;
|
||||
for (Profile_Thread *column = thread_first;
|
||||
column != 0;
|
||||
column = column->next){
|
||||
Range_f32 column_x = If32_size(pos_x, column_width);
|
||||
|
||||
// NOTE(allen): header
|
||||
{
|
||||
Rect_f32 box = Rf32(column_x, header_y);
|
||||
draw_rectangle_outline(app, box, 6.f, 3.f, Stag_Margin_Active);
|
||||
}
|
||||
|
||||
Range_f32 text_x = If32(column_x.min + 6.f, column_x.max - 6.f);
|
||||
draw_set_clip(app, Rf32(text_x, full_y));
|
||||
|
||||
// NOTE(allen): header text
|
||||
{
|
||||
Fancy_String_List list = {};
|
||||
push_fancy_stringf(scratch, &list, fancy_id(Stag_Keyword),
|
||||
"%d", column->thread_id);
|
||||
f32 y = (header_y.min + header_y.max - line_height)*0.5f;
|
||||
draw_fancy_string(app, face_id, list.first,
|
||||
V2f32(text_x.min, y),
|
||||
Stag_Default, 0);
|
||||
}
|
||||
|
||||
pos_x = column_x.max;
|
||||
}
|
||||
|
||||
system_mutex_release(profile_history.mutex);
|
||||
|
||||
draw_set_clip(app, prev_clip);
|
||||
}
|
||||
|
||||
CUSTOM_COMMAND_SIG(profile_inspect)
|
||||
CUSTOM_DOC("Inspect all currently collected profiling information in 4coder's self profiler.")
|
||||
{
|
||||
View_ID view = get_active_view(app, Access_Always);
|
||||
View_Context ctx = view_current_context(app, view);
|
||||
ctx.render_caller = profile_render;
|
||||
ctx.hides_buffer = true;
|
||||
view_push_context(app, view, &ctx);
|
||||
|
||||
profile_history_set_enabled(false, ProfileEnable_InspectBit);
|
||||
|
||||
for (;;){
|
||||
User_Input in = get_next_input(app, EventPropertyGroup_Any, EventProperty_Escape);
|
||||
if (in.abort){
|
||||
break;
|
||||
}
|
||||
|
||||
#if 0
|
||||
b32 handled = true;
|
||||
switch (in.event.kind){
|
||||
default:
|
||||
{
|
||||
handled = false;
|
||||
}break;
|
||||
}
|
||||
#else
|
||||
b32 handled = false;
|
||||
#endif
|
||||
|
||||
if (!handled){
|
||||
// TODO(allen): dedup this stuff.
|
||||
// TODO(allen): get mapping and map from a more flexible source.
|
||||
Mapping *mapping = &framework_mapping;
|
||||
Command_Map *map = mapping_get_map(mapping, mapid_global);
|
||||
if (mapping != 0 && map != 0){
|
||||
Command_Binding binding =
|
||||
map_get_binding_recursive(mapping, map, &in.event);
|
||||
if (binding.custom != 0){
|
||||
i64 old_num = get_current_input_sequence_number(app);
|
||||
binding.custom(app);
|
||||
i64 num = get_current_input_sequence_number(app);
|
||||
if (old_num < num){
|
||||
break;
|
||||
}
|
||||
}
|
||||
else{
|
||||
leave_current_input_unhandled(app);
|
||||
}
|
||||
}
|
||||
else{
|
||||
leave_current_input_unhandled(app);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
profile_history_set_enabled(true, ProfileEnable_InspectBit);
|
||||
|
||||
view_pop_context(app, view);
|
||||
}
|
||||
|
||||
// BOTTOM
|
|
@ -385,12 +385,32 @@ CUSTOM_DOC("Iteratively tries completing the word to the left of the cursor with
|
|||
View_ID view = get_active_view(app, Access_ReadWriteVisible);
|
||||
Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible);
|
||||
if (buffer != 0){
|
||||
enum{
|
||||
Prof_WordComplete,
|
||||
Prof_FirstCompletion,
|
||||
Prof_ReserveArena,
|
||||
Prof_NeedleRange,
|
||||
Prof_GetState,
|
||||
Prof_Apply,
|
||||
Prof_COUNT,
|
||||
};
|
||||
Profile_Group *profile = make_profile_group(Prof_COUNT, Prof_COUNT);
|
||||
profile_define(profile, Prof_WordComplete, "word complete");
|
||||
profile_define(profile, Prof_FirstCompletion, "first completion");
|
||||
profile_define(profile, Prof_ReserveArena, "reserve arena");
|
||||
profile_define(profile, Prof_NeedleRange, "needle range");
|
||||
profile_define(profile, Prof_GetState, "get state");
|
||||
profile_define(profile, Prof_Apply, "apply");
|
||||
|
||||
profile_begin_range(profile, Prof_WordComplete);
|
||||
|
||||
Managed_Scope scope = view_get_managed_scope(app, view);
|
||||
|
||||
b32 first_completion = false;
|
||||
Rewrite_Type *rewrite = scope_attachment(app, scope, view_rewrite_loc, Rewrite_Type);
|
||||
if (*rewrite != Rewrite_WordComplete){
|
||||
first_completion = true;
|
||||
profile_add_note(profile, Prof_FirstCompletion);
|
||||
}
|
||||
|
||||
Rewrite_Type *next_rewrite = scope_attachment(app, scope, view_next_rewrite_loc, Rewrite_Type);
|
||||
|
@ -399,6 +419,7 @@ CUSTOM_DOC("Iteratively tries completing the word to the left of the cursor with
|
|||
local_persist Arena *completion_arena = {};
|
||||
if (completion_arena == 0){
|
||||
completion_arena = reserve_arena(app);
|
||||
profile_add_note(profile, Prof_ReserveArena);
|
||||
}
|
||||
local_persist Word_Complete_State state = {};
|
||||
|
||||
|
@ -407,13 +428,22 @@ CUSTOM_DOC("Iteratively tries completing the word to the left of the cursor with
|
|||
linalloc_clear(completion_arena);
|
||||
|
||||
i64 pos = view_get_cursor_pos(app, view);
|
||||
|
||||
profile_begin_range(profile, Prof_NeedleRange);
|
||||
Range_i64 needle_range = get_word_complete_needle_range(app, buffer, pos);
|
||||
profile_end_range(profile);
|
||||
|
||||
if (range_size(needle_range) > 0){
|
||||
state = get_word_complete_state(app, completion_arena, buffer, needle_range);
|
||||
profile_begin_range(profile, Prof_GetState);
|
||||
state = get_word_complete_state(app, completion_arena, buffer,
|
||||
needle_range);
|
||||
profile_end_range(profile);
|
||||
}
|
||||
}
|
||||
|
||||
if (state.initialized){
|
||||
profile_begin_range(profile, Prof_Apply);
|
||||
|
||||
if (state.iterator == 0){
|
||||
state.iterator = state.list.first;
|
||||
}
|
||||
|
@ -432,7 +462,12 @@ CUSTOM_DOC("Iteratively tries completing the word to the left of the cursor with
|
|||
buffer_replace_range(app, buffer, state.range, str);
|
||||
state.range.max = state.range.min + str.size;
|
||||
view_set_cursor_and_preferred_x(app, view, seek_pos(state.range.max));
|
||||
|
||||
profile_end_range(profile);
|
||||
}
|
||||
|
||||
profile_end_range(profile);
|
||||
profile_group_post(profile);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define command_id(c) (fcoder_metacmd_ID_##c)
|
||||
#define command_metadata(c) (&fcoder_metacmd_table[command_id(c)])
|
||||
#define command_metadata_by_id(id) (&fcoder_metacmd_table[id])
|
||||
#define command_one_past_last_id 207
|
||||
#define command_one_past_last_id 211
|
||||
#if defined(CUSTOM_COMMAND_SIG)
|
||||
#define PROC_LINKS(x,y) x
|
||||
#else
|
||||
|
@ -10,6 +10,9 @@
|
|||
#endif
|
||||
#if defined(CUSTOM_COMMAND_SIG)
|
||||
CUSTOM_COMMAND_SIG(default_view_input_handler);
|
||||
CUSTOM_COMMAND_SIG(profile_enable);
|
||||
CUSTOM_COMMAND_SIG(profile_disable);
|
||||
CUSTOM_COMMAND_SIG(profile_clear);
|
||||
CUSTOM_COMMAND_SIG(seek_beginning_of_textual_line);
|
||||
CUSTOM_COMMAND_SIG(seek_end_of_textual_line);
|
||||
CUSTOM_COMMAND_SIG(seek_beginning_of_line);
|
||||
|
@ -214,6 +217,7 @@ CUSTOM_COMMAND_SIG(miblo_increment_time_stamp);
|
|||
CUSTOM_COMMAND_SIG(miblo_decrement_time_stamp);
|
||||
CUSTOM_COMMAND_SIG(miblo_increment_time_stamp_minute);
|
||||
CUSTOM_COMMAND_SIG(miblo_decrement_time_stamp_minute);
|
||||
CUSTOM_COMMAND_SIG(profile_inspect);
|
||||
CUSTOM_COMMAND_SIG(default_startup);
|
||||
CUSTOM_COMMAND_SIG(default_try_exit);
|
||||
#endif
|
||||
|
@ -227,8 +231,11 @@ char *source_name;
|
|||
i32 source_name_len;
|
||||
i32 line_number;
|
||||
};
|
||||
static Command_Metadata fcoder_metacmd_table[207] = {
|
||||
static Command_Metadata fcoder_metacmd_table[211] = {
|
||||
{ PROC_LINKS(default_view_input_handler, 0), "default_view_input_handler", 26, "Input consumption loop for default view behavior", 48, "w:\\4ed\\code\\custom\\4coder_default_hooks.cpp", 43, 56 },
|
||||
{ PROC_LINKS(profile_enable, 0), "profile_enable", 14, "Allow 4coder's self profiler to gather new profiling information.", 65, "w:\\4ed\\code\\custom\\4coder_profile.cpp", 37, 125 },
|
||||
{ PROC_LINKS(profile_disable, 0), "profile_disable", 15, "Prevent 4coder's self profiler from gathering new profiling information.", 72, "w:\\4ed\\code\\custom\\4coder_profile.cpp", 37, 131 },
|
||||
{ PROC_LINKS(profile_clear, 0), "profile_clear", 13, "Clear all profiling information from 4coder's self profiler.", 60, "w:\\4ed\\code\\custom\\4coder_profile.cpp", 37, 137 },
|
||||
{ PROC_LINKS(seek_beginning_of_textual_line, 0), "seek_beginning_of_textual_line", 30, "Seeks the cursor to the beginning of the line across all text.", 62, "w:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2095 },
|
||||
{ PROC_LINKS(seek_end_of_textual_line, 0), "seek_end_of_textual_line", 24, "Seeks the cursor to the end of the line across all text.", 56, "w:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2101 },
|
||||
{ PROC_LINKS(seek_beginning_of_line, 0), "seek_beginning_of_line", 22, "Seeks the cursor to the beginning of the visual line.", 53, "w:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2107 },
|
||||
|
@ -433,214 +440,219 @@ static Command_Metadata fcoder_metacmd_table[207] = {
|
|||
{ PROC_LINKS(miblo_decrement_time_stamp, 0), "miblo_decrement_time_stamp", 26, "Decrement a time stamp under the cursor by one second. (format [m]m:ss or h:mm:ss", 81, "w:\\4ed\\code\\custom\\4coder_miblo_numbers.cpp", 43, 237 },
|
||||
{ PROC_LINKS(miblo_increment_time_stamp_minute, 0), "miblo_increment_time_stamp_minute", 33, "Increment a time stamp under the cursor by one minute. (format [m]m:ss or h:mm:ss", 81, "w:\\4ed\\code\\custom\\4coder_miblo_numbers.cpp", 43, 243 },
|
||||
{ PROC_LINKS(miblo_decrement_time_stamp_minute, 0), "miblo_decrement_time_stamp_minute", 33, "Decrement a time stamp under the cursor by one minute. (format [m]m:ss or h:mm:ss", 81, "w:\\4ed\\code\\custom\\4coder_miblo_numbers.cpp", 43, 249 },
|
||||
{ PROC_LINKS(profile_inspect, 0), "profile_inspect", 15, "Inspect all currently collected profiling information in 4coder's self profiler.", 80, "w:\\4ed\\code\\custom\\4coder_profile_inspect.cpp", 45, 164 },
|
||||
{ PROC_LINKS(default_startup, 0), "default_startup", 15, "Default command for responding to a startup event", 49, "w:\\4ed\\code\\custom\\4coder_default_hooks.cpp", 43, 7 },
|
||||
{ PROC_LINKS(default_try_exit, 0), "default_try_exit", 16, "Default command for responding to a try-exit event", 50, "w:\\4ed\\code\\custom\\4coder_default_hooks.cpp", 43, 21 },
|
||||
};
|
||||
static i32 fcoder_metacmd_ID_default_view_input_handler = 0;
|
||||
static i32 fcoder_metacmd_ID_seek_beginning_of_textual_line = 1;
|
||||
static i32 fcoder_metacmd_ID_seek_end_of_textual_line = 2;
|
||||
static i32 fcoder_metacmd_ID_seek_beginning_of_line = 3;
|
||||
static i32 fcoder_metacmd_ID_seek_end_of_line = 4;
|
||||
static i32 fcoder_metacmd_ID_goto_beginning_of_file = 5;
|
||||
static i32 fcoder_metacmd_ID_goto_end_of_file = 6;
|
||||
static i32 fcoder_metacmd_ID_change_active_panel = 7;
|
||||
static i32 fcoder_metacmd_ID_change_active_panel_backwards = 8;
|
||||
static i32 fcoder_metacmd_ID_open_panel_vsplit = 9;
|
||||
static i32 fcoder_metacmd_ID_open_panel_hsplit = 10;
|
||||
static i32 fcoder_metacmd_ID_suppress_mouse = 11;
|
||||
static i32 fcoder_metacmd_ID_allow_mouse = 12;
|
||||
static i32 fcoder_metacmd_ID_toggle_mouse = 13;
|
||||
static i32 fcoder_metacmd_ID_set_mode_to_original = 14;
|
||||
static i32 fcoder_metacmd_ID_set_mode_to_notepad_like = 15;
|
||||
static i32 fcoder_metacmd_ID_toggle_highlight_line_at_cursor = 16;
|
||||
static i32 fcoder_metacmd_ID_toggle_highlight_enclosing_scopes = 17;
|
||||
static i32 fcoder_metacmd_ID_toggle_paren_matching_helper = 18;
|
||||
static i32 fcoder_metacmd_ID_toggle_fullscreen = 19;
|
||||
static i32 fcoder_metacmd_ID_write_text_input = 20;
|
||||
static i32 fcoder_metacmd_ID_write_space = 21;
|
||||
static i32 fcoder_metacmd_ID_write_underscore = 22;
|
||||
static i32 fcoder_metacmd_ID_delete_char = 23;
|
||||
static i32 fcoder_metacmd_ID_backspace_char = 24;
|
||||
static i32 fcoder_metacmd_ID_set_mark = 25;
|
||||
static i32 fcoder_metacmd_ID_cursor_mark_swap = 26;
|
||||
static i32 fcoder_metacmd_ID_delete_range = 27;
|
||||
static i32 fcoder_metacmd_ID_backspace_alpha_numeric_boundary = 28;
|
||||
static i32 fcoder_metacmd_ID_delete_alpha_numeric_boundary = 29;
|
||||
static i32 fcoder_metacmd_ID_snipe_backward_whitespace_or_token_boundary = 30;
|
||||
static i32 fcoder_metacmd_ID_snipe_forward_whitespace_or_token_boundary = 31;
|
||||
static i32 fcoder_metacmd_ID_center_view = 32;
|
||||
static i32 fcoder_metacmd_ID_left_adjust_view = 33;
|
||||
static i32 fcoder_metacmd_ID_click_set_cursor_and_mark = 34;
|
||||
static i32 fcoder_metacmd_ID_click_set_cursor = 35;
|
||||
static i32 fcoder_metacmd_ID_click_set_cursor_if_lbutton = 36;
|
||||
static i32 fcoder_metacmd_ID_click_set_mark = 37;
|
||||
static i32 fcoder_metacmd_ID_mouse_wheel_scroll = 38;
|
||||
static i32 fcoder_metacmd_ID_move_up = 39;
|
||||
static i32 fcoder_metacmd_ID_move_down = 40;
|
||||
static i32 fcoder_metacmd_ID_move_up_10 = 41;
|
||||
static i32 fcoder_metacmd_ID_move_down_10 = 42;
|
||||
static i32 fcoder_metacmd_ID_move_down_textual = 43;
|
||||
static i32 fcoder_metacmd_ID_page_up = 44;
|
||||
static i32 fcoder_metacmd_ID_page_down = 45;
|
||||
static i32 fcoder_metacmd_ID_move_up_to_blank_line = 46;
|
||||
static i32 fcoder_metacmd_ID_move_down_to_blank_line = 47;
|
||||
static i32 fcoder_metacmd_ID_move_up_to_blank_line_skip_whitespace = 48;
|
||||
static i32 fcoder_metacmd_ID_move_down_to_blank_line_skip_whitespace = 49;
|
||||
static i32 fcoder_metacmd_ID_move_up_to_blank_line_end = 50;
|
||||
static i32 fcoder_metacmd_ID_move_down_to_blank_line_end = 51;
|
||||
static i32 fcoder_metacmd_ID_move_left = 52;
|
||||
static i32 fcoder_metacmd_ID_move_right = 53;
|
||||
static i32 fcoder_metacmd_ID_move_right_whitespace_boundary = 54;
|
||||
static i32 fcoder_metacmd_ID_move_left_whitespace_boundary = 55;
|
||||
static i32 fcoder_metacmd_ID_move_right_token_boundary = 56;
|
||||
static i32 fcoder_metacmd_ID_move_left_token_boundary = 57;
|
||||
static i32 fcoder_metacmd_ID_move_right_whitespace_or_token_boundary = 58;
|
||||
static i32 fcoder_metacmd_ID_move_left_whitespace_or_token_boundary = 59;
|
||||
static i32 fcoder_metacmd_ID_move_right_alpha_numeric_boundary = 60;
|
||||
static i32 fcoder_metacmd_ID_move_left_alpha_numeric_boundary = 61;
|
||||
static i32 fcoder_metacmd_ID_move_right_alpha_numeric_or_camel_boundary = 62;
|
||||
static i32 fcoder_metacmd_ID_move_left_alpha_numeric_or_camel_boundary = 63;
|
||||
static i32 fcoder_metacmd_ID_select_all = 64;
|
||||
static i32 fcoder_metacmd_ID_to_uppercase = 65;
|
||||
static i32 fcoder_metacmd_ID_to_lowercase = 66;
|
||||
static i32 fcoder_metacmd_ID_clean_all_lines = 67;
|
||||
static i32 fcoder_metacmd_ID_basic_change_active_panel = 68;
|
||||
static i32 fcoder_metacmd_ID_close_panel = 69;
|
||||
static i32 fcoder_metacmd_ID_show_scrollbar = 70;
|
||||
static i32 fcoder_metacmd_ID_hide_scrollbar = 71;
|
||||
static i32 fcoder_metacmd_ID_show_filebar = 72;
|
||||
static i32 fcoder_metacmd_ID_hide_filebar = 73;
|
||||
static i32 fcoder_metacmd_ID_toggle_filebar = 74;
|
||||
static i32 fcoder_metacmd_ID_toggle_fps_meter = 75;
|
||||
static i32 fcoder_metacmd_ID_increase_face_size = 76;
|
||||
static i32 fcoder_metacmd_ID_decrease_face_size = 77;
|
||||
static i32 fcoder_metacmd_ID_mouse_wheel_change_face_size = 78;
|
||||
static i32 fcoder_metacmd_ID_toggle_virtual_whitespace = 79;
|
||||
static i32 fcoder_metacmd_ID_toggle_show_whitespace = 80;
|
||||
static i32 fcoder_metacmd_ID_toggle_line_numbers = 81;
|
||||
static i32 fcoder_metacmd_ID_exit_4coder = 82;
|
||||
static i32 fcoder_metacmd_ID_goto_line = 83;
|
||||
static i32 fcoder_metacmd_ID_search = 84;
|
||||
static i32 fcoder_metacmd_ID_reverse_search = 85;
|
||||
static i32 fcoder_metacmd_ID_search_identifier = 86;
|
||||
static i32 fcoder_metacmd_ID_reverse_search_identifier = 87;
|
||||
static i32 fcoder_metacmd_ID_replace_in_range = 88;
|
||||
static i32 fcoder_metacmd_ID_replace_in_buffer = 89;
|
||||
static i32 fcoder_metacmd_ID_replace_in_all_buffers = 90;
|
||||
static i32 fcoder_metacmd_ID_query_replace = 91;
|
||||
static i32 fcoder_metacmd_ID_query_replace_identifier = 92;
|
||||
static i32 fcoder_metacmd_ID_query_replace_selection = 93;
|
||||
static i32 fcoder_metacmd_ID_save_all_dirty_buffers = 94;
|
||||
static i32 fcoder_metacmd_ID_delete_file_query = 95;
|
||||
static i32 fcoder_metacmd_ID_save_to_query = 96;
|
||||
static i32 fcoder_metacmd_ID_rename_file_query = 97;
|
||||
static i32 fcoder_metacmd_ID_make_directory_query = 98;
|
||||
static i32 fcoder_metacmd_ID_move_line_up = 99;
|
||||
static i32 fcoder_metacmd_ID_move_line_down = 100;
|
||||
static i32 fcoder_metacmd_ID_duplicate_line = 101;
|
||||
static i32 fcoder_metacmd_ID_delete_line = 102;
|
||||
static i32 fcoder_metacmd_ID_open_file_in_quotes = 103;
|
||||
static i32 fcoder_metacmd_ID_open_matching_file_cpp = 104;
|
||||
static i32 fcoder_metacmd_ID_view_buffer_other_panel = 105;
|
||||
static i32 fcoder_metacmd_ID_swap_buffers_between_panels = 106;
|
||||
static i32 fcoder_metacmd_ID_kill_buffer = 107;
|
||||
static i32 fcoder_metacmd_ID_save = 108;
|
||||
static i32 fcoder_metacmd_ID_reopen = 109;
|
||||
static i32 fcoder_metacmd_ID_undo = 110;
|
||||
static i32 fcoder_metacmd_ID_redo = 111;
|
||||
static i32 fcoder_metacmd_ID_undo_all_buffers = 112;
|
||||
static i32 fcoder_metacmd_ID_redo_all_buffers = 113;
|
||||
static i32 fcoder_metacmd_ID_open_in_other = 114;
|
||||
static i32 fcoder_metacmd_ID_default_file_externally_modified = 115;
|
||||
static i32 fcoder_metacmd_ID_set_eol_mode_to_crlf = 116;
|
||||
static i32 fcoder_metacmd_ID_set_eol_mode_to_lf = 117;
|
||||
static i32 fcoder_metacmd_ID_set_eol_mode_to_binary = 118;
|
||||
static i32 fcoder_metacmd_ID_set_eol_mode_from_contents = 119;
|
||||
static i32 fcoder_metacmd_ID_interactive_switch_buffer = 120;
|
||||
static i32 fcoder_metacmd_ID_interactive_kill_buffer = 121;
|
||||
static i32 fcoder_metacmd_ID_interactive_open_or_new = 122;
|
||||
static i32 fcoder_metacmd_ID_interactive_new = 123;
|
||||
static i32 fcoder_metacmd_ID_interactive_open = 124;
|
||||
static i32 fcoder_metacmd_ID_command_lister = 125;
|
||||
static i32 fcoder_metacmd_ID_auto_indent_whole_file = 126;
|
||||
static i32 fcoder_metacmd_ID_auto_indent_line_at_cursor = 127;
|
||||
static i32 fcoder_metacmd_ID_auto_indent_range = 128;
|
||||
static i32 fcoder_metacmd_ID_write_text_and_auto_indent = 129;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations = 130;
|
||||
static i32 fcoder_metacmd_ID_list_all_substring_locations = 131;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_case_insensitive = 132;
|
||||
static i32 fcoder_metacmd_ID_list_all_substring_locations_case_insensitive = 133;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_identifier = 134;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_identifier_case_insensitive = 135;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_selection = 136;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_selection_case_insensitive = 137;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_type_definition = 138;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_type_definition_of_identifier = 139;
|
||||
static i32 fcoder_metacmd_ID_word_complete = 140;
|
||||
static i32 fcoder_metacmd_ID_goto_jump_at_cursor = 141;
|
||||
static i32 fcoder_metacmd_ID_goto_jump_at_cursor_same_panel = 142;
|
||||
static i32 fcoder_metacmd_ID_goto_next_jump = 143;
|
||||
static i32 fcoder_metacmd_ID_goto_prev_jump = 144;
|
||||
static i32 fcoder_metacmd_ID_goto_next_jump_no_skips = 145;
|
||||
static i32 fcoder_metacmd_ID_goto_prev_jump_no_skips = 146;
|
||||
static i32 fcoder_metacmd_ID_goto_first_jump = 147;
|
||||
static i32 fcoder_metacmd_ID_goto_first_jump_same_panel_sticky = 148;
|
||||
static i32 fcoder_metacmd_ID_if_read_only_goto_position = 149;
|
||||
static i32 fcoder_metacmd_ID_if_read_only_goto_position_same_panel = 150;
|
||||
static i32 fcoder_metacmd_ID_view_jump_list_with_lister = 151;
|
||||
static i32 fcoder_metacmd_ID_show_the_log_graph = 152;
|
||||
static i32 fcoder_metacmd_ID_copy = 153;
|
||||
static i32 fcoder_metacmd_ID_cut = 154;
|
||||
static i32 fcoder_metacmd_ID_paste = 155;
|
||||
static i32 fcoder_metacmd_ID_paste_next = 156;
|
||||
static i32 fcoder_metacmd_ID_paste_and_indent = 157;
|
||||
static i32 fcoder_metacmd_ID_paste_next_and_indent = 158;
|
||||
static i32 fcoder_metacmd_ID_execute_previous_cli = 159;
|
||||
static i32 fcoder_metacmd_ID_execute_any_cli = 160;
|
||||
static i32 fcoder_metacmd_ID_build_search = 161;
|
||||
static i32 fcoder_metacmd_ID_build_in_build_panel = 162;
|
||||
static i32 fcoder_metacmd_ID_close_build_panel = 163;
|
||||
static i32 fcoder_metacmd_ID_change_to_build_panel = 164;
|
||||
static i32 fcoder_metacmd_ID_close_all_code = 165;
|
||||
static i32 fcoder_metacmd_ID_open_all_code = 166;
|
||||
static i32 fcoder_metacmd_ID_open_all_code_recursive = 167;
|
||||
static i32 fcoder_metacmd_ID_load_project = 168;
|
||||
static i32 fcoder_metacmd_ID_project_fkey_command = 169;
|
||||
static i32 fcoder_metacmd_ID_project_go_to_root_directory = 170;
|
||||
static i32 fcoder_metacmd_ID_setup_new_project = 171;
|
||||
static i32 fcoder_metacmd_ID_setup_build_bat = 172;
|
||||
static i32 fcoder_metacmd_ID_setup_build_sh = 173;
|
||||
static i32 fcoder_metacmd_ID_setup_build_bat_and_sh = 174;
|
||||
static i32 fcoder_metacmd_ID_project_command_lister = 175;
|
||||
static i32 fcoder_metacmd_ID_list_all_functions_current_buffer = 176;
|
||||
static i32 fcoder_metacmd_ID_list_all_functions_current_buffer_lister = 177;
|
||||
static i32 fcoder_metacmd_ID_list_all_functions_all_buffers = 178;
|
||||
static i32 fcoder_metacmd_ID_list_all_functions_all_buffers_lister = 179;
|
||||
static i32 fcoder_metacmd_ID_select_surrounding_scope = 180;
|
||||
static i32 fcoder_metacmd_ID_select_next_scope_absolute = 181;
|
||||
static i32 fcoder_metacmd_ID_select_next_scope_after_current = 182;
|
||||
static i32 fcoder_metacmd_ID_select_prev_scope_absolute = 183;
|
||||
static i32 fcoder_metacmd_ID_place_in_scope = 184;
|
||||
static i32 fcoder_metacmd_ID_delete_current_scope = 185;
|
||||
static i32 fcoder_metacmd_ID_open_long_braces = 186;
|
||||
static i32 fcoder_metacmd_ID_open_long_braces_semicolon = 187;
|
||||
static i32 fcoder_metacmd_ID_open_long_braces_break = 188;
|
||||
static i32 fcoder_metacmd_ID_if0_off = 189;
|
||||
static i32 fcoder_metacmd_ID_write_todo = 190;
|
||||
static i32 fcoder_metacmd_ID_write_hack = 191;
|
||||
static i32 fcoder_metacmd_ID_write_note = 192;
|
||||
static i32 fcoder_metacmd_ID_write_block = 193;
|
||||
static i32 fcoder_metacmd_ID_write_zero_struct = 194;
|
||||
static i32 fcoder_metacmd_ID_comment_line = 195;
|
||||
static i32 fcoder_metacmd_ID_uncomment_line = 196;
|
||||
static i32 fcoder_metacmd_ID_comment_line_toggle = 197;
|
||||
static i32 fcoder_metacmd_ID_snippet_lister = 198;
|
||||
static i32 fcoder_metacmd_ID_miblo_increment_basic = 199;
|
||||
static i32 fcoder_metacmd_ID_miblo_decrement_basic = 200;
|
||||
static i32 fcoder_metacmd_ID_miblo_increment_time_stamp = 201;
|
||||
static i32 fcoder_metacmd_ID_miblo_decrement_time_stamp = 202;
|
||||
static i32 fcoder_metacmd_ID_miblo_increment_time_stamp_minute = 203;
|
||||
static i32 fcoder_metacmd_ID_miblo_decrement_time_stamp_minute = 204;
|
||||
static i32 fcoder_metacmd_ID_default_startup = 205;
|
||||
static i32 fcoder_metacmd_ID_default_try_exit = 206;
|
||||
static i32 fcoder_metacmd_ID_profile_enable = 1;
|
||||
static i32 fcoder_metacmd_ID_profile_disable = 2;
|
||||
static i32 fcoder_metacmd_ID_profile_clear = 3;
|
||||
static i32 fcoder_metacmd_ID_seek_beginning_of_textual_line = 4;
|
||||
static i32 fcoder_metacmd_ID_seek_end_of_textual_line = 5;
|
||||
static i32 fcoder_metacmd_ID_seek_beginning_of_line = 6;
|
||||
static i32 fcoder_metacmd_ID_seek_end_of_line = 7;
|
||||
static i32 fcoder_metacmd_ID_goto_beginning_of_file = 8;
|
||||
static i32 fcoder_metacmd_ID_goto_end_of_file = 9;
|
||||
static i32 fcoder_metacmd_ID_change_active_panel = 10;
|
||||
static i32 fcoder_metacmd_ID_change_active_panel_backwards = 11;
|
||||
static i32 fcoder_metacmd_ID_open_panel_vsplit = 12;
|
||||
static i32 fcoder_metacmd_ID_open_panel_hsplit = 13;
|
||||
static i32 fcoder_metacmd_ID_suppress_mouse = 14;
|
||||
static i32 fcoder_metacmd_ID_allow_mouse = 15;
|
||||
static i32 fcoder_metacmd_ID_toggle_mouse = 16;
|
||||
static i32 fcoder_metacmd_ID_set_mode_to_original = 17;
|
||||
static i32 fcoder_metacmd_ID_set_mode_to_notepad_like = 18;
|
||||
static i32 fcoder_metacmd_ID_toggle_highlight_line_at_cursor = 19;
|
||||
static i32 fcoder_metacmd_ID_toggle_highlight_enclosing_scopes = 20;
|
||||
static i32 fcoder_metacmd_ID_toggle_paren_matching_helper = 21;
|
||||
static i32 fcoder_metacmd_ID_toggle_fullscreen = 22;
|
||||
static i32 fcoder_metacmd_ID_write_text_input = 23;
|
||||
static i32 fcoder_metacmd_ID_write_space = 24;
|
||||
static i32 fcoder_metacmd_ID_write_underscore = 25;
|
||||
static i32 fcoder_metacmd_ID_delete_char = 26;
|
||||
static i32 fcoder_metacmd_ID_backspace_char = 27;
|
||||
static i32 fcoder_metacmd_ID_set_mark = 28;
|
||||
static i32 fcoder_metacmd_ID_cursor_mark_swap = 29;
|
||||
static i32 fcoder_metacmd_ID_delete_range = 30;
|
||||
static i32 fcoder_metacmd_ID_backspace_alpha_numeric_boundary = 31;
|
||||
static i32 fcoder_metacmd_ID_delete_alpha_numeric_boundary = 32;
|
||||
static i32 fcoder_metacmd_ID_snipe_backward_whitespace_or_token_boundary = 33;
|
||||
static i32 fcoder_metacmd_ID_snipe_forward_whitespace_or_token_boundary = 34;
|
||||
static i32 fcoder_metacmd_ID_center_view = 35;
|
||||
static i32 fcoder_metacmd_ID_left_adjust_view = 36;
|
||||
static i32 fcoder_metacmd_ID_click_set_cursor_and_mark = 37;
|
||||
static i32 fcoder_metacmd_ID_click_set_cursor = 38;
|
||||
static i32 fcoder_metacmd_ID_click_set_cursor_if_lbutton = 39;
|
||||
static i32 fcoder_metacmd_ID_click_set_mark = 40;
|
||||
static i32 fcoder_metacmd_ID_mouse_wheel_scroll = 41;
|
||||
static i32 fcoder_metacmd_ID_move_up = 42;
|
||||
static i32 fcoder_metacmd_ID_move_down = 43;
|
||||
static i32 fcoder_metacmd_ID_move_up_10 = 44;
|
||||
static i32 fcoder_metacmd_ID_move_down_10 = 45;
|
||||
static i32 fcoder_metacmd_ID_move_down_textual = 46;
|
||||
static i32 fcoder_metacmd_ID_page_up = 47;
|
||||
static i32 fcoder_metacmd_ID_page_down = 48;
|
||||
static i32 fcoder_metacmd_ID_move_up_to_blank_line = 49;
|
||||
static i32 fcoder_metacmd_ID_move_down_to_blank_line = 50;
|
||||
static i32 fcoder_metacmd_ID_move_up_to_blank_line_skip_whitespace = 51;
|
||||
static i32 fcoder_metacmd_ID_move_down_to_blank_line_skip_whitespace = 52;
|
||||
static i32 fcoder_metacmd_ID_move_up_to_blank_line_end = 53;
|
||||
static i32 fcoder_metacmd_ID_move_down_to_blank_line_end = 54;
|
||||
static i32 fcoder_metacmd_ID_move_left = 55;
|
||||
static i32 fcoder_metacmd_ID_move_right = 56;
|
||||
static i32 fcoder_metacmd_ID_move_right_whitespace_boundary = 57;
|
||||
static i32 fcoder_metacmd_ID_move_left_whitespace_boundary = 58;
|
||||
static i32 fcoder_metacmd_ID_move_right_token_boundary = 59;
|
||||
static i32 fcoder_metacmd_ID_move_left_token_boundary = 60;
|
||||
static i32 fcoder_metacmd_ID_move_right_whitespace_or_token_boundary = 61;
|
||||
static i32 fcoder_metacmd_ID_move_left_whitespace_or_token_boundary = 62;
|
||||
static i32 fcoder_metacmd_ID_move_right_alpha_numeric_boundary = 63;
|
||||
static i32 fcoder_metacmd_ID_move_left_alpha_numeric_boundary = 64;
|
||||
static i32 fcoder_metacmd_ID_move_right_alpha_numeric_or_camel_boundary = 65;
|
||||
static i32 fcoder_metacmd_ID_move_left_alpha_numeric_or_camel_boundary = 66;
|
||||
static i32 fcoder_metacmd_ID_select_all = 67;
|
||||
static i32 fcoder_metacmd_ID_to_uppercase = 68;
|
||||
static i32 fcoder_metacmd_ID_to_lowercase = 69;
|
||||
static i32 fcoder_metacmd_ID_clean_all_lines = 70;
|
||||
static i32 fcoder_metacmd_ID_basic_change_active_panel = 71;
|
||||
static i32 fcoder_metacmd_ID_close_panel = 72;
|
||||
static i32 fcoder_metacmd_ID_show_scrollbar = 73;
|
||||
static i32 fcoder_metacmd_ID_hide_scrollbar = 74;
|
||||
static i32 fcoder_metacmd_ID_show_filebar = 75;
|
||||
static i32 fcoder_metacmd_ID_hide_filebar = 76;
|
||||
static i32 fcoder_metacmd_ID_toggle_filebar = 77;
|
||||
static i32 fcoder_metacmd_ID_toggle_fps_meter = 78;
|
||||
static i32 fcoder_metacmd_ID_increase_face_size = 79;
|
||||
static i32 fcoder_metacmd_ID_decrease_face_size = 80;
|
||||
static i32 fcoder_metacmd_ID_mouse_wheel_change_face_size = 81;
|
||||
static i32 fcoder_metacmd_ID_toggle_virtual_whitespace = 82;
|
||||
static i32 fcoder_metacmd_ID_toggle_show_whitespace = 83;
|
||||
static i32 fcoder_metacmd_ID_toggle_line_numbers = 84;
|
||||
static i32 fcoder_metacmd_ID_exit_4coder = 85;
|
||||
static i32 fcoder_metacmd_ID_goto_line = 86;
|
||||
static i32 fcoder_metacmd_ID_search = 87;
|
||||
static i32 fcoder_metacmd_ID_reverse_search = 88;
|
||||
static i32 fcoder_metacmd_ID_search_identifier = 89;
|
||||
static i32 fcoder_metacmd_ID_reverse_search_identifier = 90;
|
||||
static i32 fcoder_metacmd_ID_replace_in_range = 91;
|
||||
static i32 fcoder_metacmd_ID_replace_in_buffer = 92;
|
||||
static i32 fcoder_metacmd_ID_replace_in_all_buffers = 93;
|
||||
static i32 fcoder_metacmd_ID_query_replace = 94;
|
||||
static i32 fcoder_metacmd_ID_query_replace_identifier = 95;
|
||||
static i32 fcoder_metacmd_ID_query_replace_selection = 96;
|
||||
static i32 fcoder_metacmd_ID_save_all_dirty_buffers = 97;
|
||||
static i32 fcoder_metacmd_ID_delete_file_query = 98;
|
||||
static i32 fcoder_metacmd_ID_save_to_query = 99;
|
||||
static i32 fcoder_metacmd_ID_rename_file_query = 100;
|
||||
static i32 fcoder_metacmd_ID_make_directory_query = 101;
|
||||
static i32 fcoder_metacmd_ID_move_line_up = 102;
|
||||
static i32 fcoder_metacmd_ID_move_line_down = 103;
|
||||
static i32 fcoder_metacmd_ID_duplicate_line = 104;
|
||||
static i32 fcoder_metacmd_ID_delete_line = 105;
|
||||
static i32 fcoder_metacmd_ID_open_file_in_quotes = 106;
|
||||
static i32 fcoder_metacmd_ID_open_matching_file_cpp = 107;
|
||||
static i32 fcoder_metacmd_ID_view_buffer_other_panel = 108;
|
||||
static i32 fcoder_metacmd_ID_swap_buffers_between_panels = 109;
|
||||
static i32 fcoder_metacmd_ID_kill_buffer = 110;
|
||||
static i32 fcoder_metacmd_ID_save = 111;
|
||||
static i32 fcoder_metacmd_ID_reopen = 112;
|
||||
static i32 fcoder_metacmd_ID_undo = 113;
|
||||
static i32 fcoder_metacmd_ID_redo = 114;
|
||||
static i32 fcoder_metacmd_ID_undo_all_buffers = 115;
|
||||
static i32 fcoder_metacmd_ID_redo_all_buffers = 116;
|
||||
static i32 fcoder_metacmd_ID_open_in_other = 117;
|
||||
static i32 fcoder_metacmd_ID_default_file_externally_modified = 118;
|
||||
static i32 fcoder_metacmd_ID_set_eol_mode_to_crlf = 119;
|
||||
static i32 fcoder_metacmd_ID_set_eol_mode_to_lf = 120;
|
||||
static i32 fcoder_metacmd_ID_set_eol_mode_to_binary = 121;
|
||||
static i32 fcoder_metacmd_ID_set_eol_mode_from_contents = 122;
|
||||
static i32 fcoder_metacmd_ID_interactive_switch_buffer = 123;
|
||||
static i32 fcoder_metacmd_ID_interactive_kill_buffer = 124;
|
||||
static i32 fcoder_metacmd_ID_interactive_open_or_new = 125;
|
||||
static i32 fcoder_metacmd_ID_interactive_new = 126;
|
||||
static i32 fcoder_metacmd_ID_interactive_open = 127;
|
||||
static i32 fcoder_metacmd_ID_command_lister = 128;
|
||||
static i32 fcoder_metacmd_ID_auto_indent_whole_file = 129;
|
||||
static i32 fcoder_metacmd_ID_auto_indent_line_at_cursor = 130;
|
||||
static i32 fcoder_metacmd_ID_auto_indent_range = 131;
|
||||
static i32 fcoder_metacmd_ID_write_text_and_auto_indent = 132;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations = 133;
|
||||
static i32 fcoder_metacmd_ID_list_all_substring_locations = 134;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_case_insensitive = 135;
|
||||
static i32 fcoder_metacmd_ID_list_all_substring_locations_case_insensitive = 136;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_identifier = 137;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_identifier_case_insensitive = 138;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_selection = 139;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_selection_case_insensitive = 140;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_type_definition = 141;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_type_definition_of_identifier = 142;
|
||||
static i32 fcoder_metacmd_ID_word_complete = 143;
|
||||
static i32 fcoder_metacmd_ID_goto_jump_at_cursor = 144;
|
||||
static i32 fcoder_metacmd_ID_goto_jump_at_cursor_same_panel = 145;
|
||||
static i32 fcoder_metacmd_ID_goto_next_jump = 146;
|
||||
static i32 fcoder_metacmd_ID_goto_prev_jump = 147;
|
||||
static i32 fcoder_metacmd_ID_goto_next_jump_no_skips = 148;
|
||||
static i32 fcoder_metacmd_ID_goto_prev_jump_no_skips = 149;
|
||||
static i32 fcoder_metacmd_ID_goto_first_jump = 150;
|
||||
static i32 fcoder_metacmd_ID_goto_first_jump_same_panel_sticky = 151;
|
||||
static i32 fcoder_metacmd_ID_if_read_only_goto_position = 152;
|
||||
static i32 fcoder_metacmd_ID_if_read_only_goto_position_same_panel = 153;
|
||||
static i32 fcoder_metacmd_ID_view_jump_list_with_lister = 154;
|
||||
static i32 fcoder_metacmd_ID_show_the_log_graph = 155;
|
||||
static i32 fcoder_metacmd_ID_copy = 156;
|
||||
static i32 fcoder_metacmd_ID_cut = 157;
|
||||
static i32 fcoder_metacmd_ID_paste = 158;
|
||||
static i32 fcoder_metacmd_ID_paste_next = 159;
|
||||
static i32 fcoder_metacmd_ID_paste_and_indent = 160;
|
||||
static i32 fcoder_metacmd_ID_paste_next_and_indent = 161;
|
||||
static i32 fcoder_metacmd_ID_execute_previous_cli = 162;
|
||||
static i32 fcoder_metacmd_ID_execute_any_cli = 163;
|
||||
static i32 fcoder_metacmd_ID_build_search = 164;
|
||||
static i32 fcoder_metacmd_ID_build_in_build_panel = 165;
|
||||
static i32 fcoder_metacmd_ID_close_build_panel = 166;
|
||||
static i32 fcoder_metacmd_ID_change_to_build_panel = 167;
|
||||
static i32 fcoder_metacmd_ID_close_all_code = 168;
|
||||
static i32 fcoder_metacmd_ID_open_all_code = 169;
|
||||
static i32 fcoder_metacmd_ID_open_all_code_recursive = 170;
|
||||
static i32 fcoder_metacmd_ID_load_project = 171;
|
||||
static i32 fcoder_metacmd_ID_project_fkey_command = 172;
|
||||
static i32 fcoder_metacmd_ID_project_go_to_root_directory = 173;
|
||||
static i32 fcoder_metacmd_ID_setup_new_project = 174;
|
||||
static i32 fcoder_metacmd_ID_setup_build_bat = 175;
|
||||
static i32 fcoder_metacmd_ID_setup_build_sh = 176;
|
||||
static i32 fcoder_metacmd_ID_setup_build_bat_and_sh = 177;
|
||||
static i32 fcoder_metacmd_ID_project_command_lister = 178;
|
||||
static i32 fcoder_metacmd_ID_list_all_functions_current_buffer = 179;
|
||||
static i32 fcoder_metacmd_ID_list_all_functions_current_buffer_lister = 180;
|
||||
static i32 fcoder_metacmd_ID_list_all_functions_all_buffers = 181;
|
||||
static i32 fcoder_metacmd_ID_list_all_functions_all_buffers_lister = 182;
|
||||
static i32 fcoder_metacmd_ID_select_surrounding_scope = 183;
|
||||
static i32 fcoder_metacmd_ID_select_next_scope_absolute = 184;
|
||||
static i32 fcoder_metacmd_ID_select_next_scope_after_current = 185;
|
||||
static i32 fcoder_metacmd_ID_select_prev_scope_absolute = 186;
|
||||
static i32 fcoder_metacmd_ID_place_in_scope = 187;
|
||||
static i32 fcoder_metacmd_ID_delete_current_scope = 188;
|
||||
static i32 fcoder_metacmd_ID_open_long_braces = 189;
|
||||
static i32 fcoder_metacmd_ID_open_long_braces_semicolon = 190;
|
||||
static i32 fcoder_metacmd_ID_open_long_braces_break = 191;
|
||||
static i32 fcoder_metacmd_ID_if0_off = 192;
|
||||
static i32 fcoder_metacmd_ID_write_todo = 193;
|
||||
static i32 fcoder_metacmd_ID_write_hack = 194;
|
||||
static i32 fcoder_metacmd_ID_write_note = 195;
|
||||
static i32 fcoder_metacmd_ID_write_block = 196;
|
||||
static i32 fcoder_metacmd_ID_write_zero_struct = 197;
|
||||
static i32 fcoder_metacmd_ID_comment_line = 198;
|
||||
static i32 fcoder_metacmd_ID_uncomment_line = 199;
|
||||
static i32 fcoder_metacmd_ID_comment_line_toggle = 200;
|
||||
static i32 fcoder_metacmd_ID_snippet_lister = 201;
|
||||
static i32 fcoder_metacmd_ID_miblo_increment_basic = 202;
|
||||
static i32 fcoder_metacmd_ID_miblo_decrement_basic = 203;
|
||||
static i32 fcoder_metacmd_ID_miblo_increment_time_stamp = 204;
|
||||
static i32 fcoder_metacmd_ID_miblo_decrement_time_stamp = 205;
|
||||
static i32 fcoder_metacmd_ID_miblo_increment_time_stamp_minute = 206;
|
||||
static i32 fcoder_metacmd_ID_miblo_decrement_time_stamp_minute = 207;
|
||||
static i32 fcoder_metacmd_ID_profile_inspect = 208;
|
||||
static i32 fcoder_metacmd_ID_default_startup = 209;
|
||||
static i32 fcoder_metacmd_ID_default_try_exit = 210;
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue