Removed custom/audio

This commit is contained in:
PS 2024-02-10 14:24:54 -08:00
parent 2a35691111
commit 80b780278a
9 changed files with 210 additions and 613 deletions

11
TODO.md
View File

@ -3,12 +3,15 @@
## Necessary ## Necessary
[] fix project creation - this should just work out of the box [] fix project creation - this should just work out of the box
[] remove automatic code layout for now [] remove automatic code layout for now
[] move my custom layer over
[] multi cursor editing
[] remove parser
[] fast enough to go read a node_modules folder and search on it
[] reload dirty files if there are no local edits to them automatically
## Nice to Have ## Nice to Have
[] remove audio [] remove audio (search @Remove)
[] 4coder projects should have a startup script - so you can do things like add cl to the path [] 4coder projects should have a startup script - so you can do things like add cl to the path
[] Look into removing *keyboard* buffer - seems like over long sessions, that could get out of hand
## Languages I Use
[] markdown - at the very least, this doesn't need to get any syntax highlighting (tho marks ie ## and * etc could)
# DONE # DONE

View File

@ -1,276 +0,0 @@
////////////////////////////////
// NOTE(allen): Default Mixer Helpers
// TODO(allen): intrinsics wrappers
#if OS_LINUX
#include <immintrin.h>
#define _InterlockedExchangeAdd __sync_fetch_and_add
#elif OS_MAC
#include <immintrin.h>
#define _InterlockedExchangeAdd __sync_fetch_and_add
#else
#include <intrin.h>
#endif
function u32
AtomicAddU32AndReturnOriginal(u32 volatile *Value, u32 Addend)
{
// NOTE(casey): Returns the original value _prior_ to adding
u32 Result = _InterlockedExchangeAdd((long volatile*)Value, (long)Addend);
return(Result);
}
function void
def_audio_begin_ticket_mutex(Audio_System *Crunky)
{
u32 Ticket = AtomicAddU32AndReturnOriginal(&Crunky->ticket, 1);
while(Ticket != Crunky->serving) {_mm_pause();}
}
function void
def_audio_end_ticket_mutex(Audio_System *Crunky)
{
AtomicAddU32AndReturnOriginal(&Crunky->serving, 1);
}
////////////////////////////////
// NOTE(allen): Default Mixer
global Audio_System def_audio_system = {};
function void
def_audio_init(void){
block_zero_struct(&def_audio_system);
system_set_source_mixer(&def_audio_system, def_audio_mix_sources);
system_set_destination_mixer(def_audio_mix_destination);
}
function void
def_audio_play_clip(Audio_Clip clip, Audio_Control *control){
clip.control = control;
Audio_System *Crunky = &def_audio_system;
def_audio_begin_ticket_mutex(Crunky);
if (Crunky->pending_clip_count < ArrayCount(Crunky->pending_clips))
{
Crunky->pending_clips[Crunky->pending_clip_count++] = clip;
}
def_audio_end_ticket_mutex(Crunky);
}
internal b32
def_audio_is_playing(Audio_Control *control){
Audio_System *Crunky = &def_audio_system;
b32 result = (Crunky->generation - control->generation < 2);
return(result);
}
internal void
def_audio_stop(Audio_Control *control){
Audio_System *Crunky = &def_audio_system;
def_audio_begin_ticket_mutex(Crunky);
Audio_Clip *clip = Crunky->playing_clips;
for(u32 i = 0;
i < ArrayCount(Crunky->playing_clips);
i += 1, clip += 1){
if (clip->control == control){
clip->at_sample_index = clip->sample_count;
clip->control = 0;
}
}
control->loop = false;
def_audio_end_ticket_mutex(Crunky);
}
function void
def_audio_mix_sources(void *ctx, f32 *mix_buffer, u32 sample_count){
Audio_System *Crunky = (Audio_System*)ctx;
def_audio_begin_ticket_mutex(Crunky);
// NOTE(casey): Move pending sounds into the playing list
{
Crunky->generation += 1;
u32 PendIndex = 0;
Audio_Clip *clip = Crunky->playing_clips;
for(u32 DestIndex = 0;
(DestIndex < ArrayCount(Crunky->playing_clips)) && (PendIndex < Crunky->pending_clip_count);
DestIndex += 1, clip += 1)
{
if (clip->at_sample_index == clip->sample_count)
{
Audio_Control *control = clip->control;
if (control == 0 || !control->loop){
*clip = Crunky->pending_clips[PendIndex++];
}
}
}
Crunky->pending_clip_count = 0;
}
def_audio_end_ticket_mutex(Crunky);
// NOTE(casey): Mix all sounds into the output buffer
{
Audio_Clip *clip = Crunky->playing_clips;
for(u32 SoundIndex = 0;
SoundIndex < ArrayCount(Crunky->playing_clips);
SoundIndex += 1, clip += 1)
{
// NOTE(allen): Determine starting point
Audio_Control *control = clip->control;
if (control != 0 && control->loop && clip->at_sample_index == clip->sample_count){
clip->at_sample_index = 0;
}
u32 base_sample_index = clip->at_sample_index;
// NOTE(casey): Determine how many samples are left to play in this
// sound (possible none)
u32 SamplesToMix = clamp_top((clip->sample_count - clip->at_sample_index), sample_count);
clip->at_sample_index += SamplesToMix;
// NOTE(casey): Load the volume out of the control if there is one,
// and if there is, update the generation and sample index so
// external controllers can take action
f32 LeftVol = clip->channel_volume[0];
f32 RightVol = clip->channel_volume[1];
if(SamplesToMix && control != 0)
{
LeftVol *= control->channel_volume[0];
RightVol *= control->channel_volume[1];
control->generation = Crunky->generation;
control->last_played_sample_index = clip->at_sample_index;
}
// NOTE(casey): Mix samples
for(u32 SampleIndex = 0;
SampleIndex < SamplesToMix;
++SampleIndex)
{
u32 src_index = 2*(base_sample_index + SampleIndex);
f32 Left = LeftVol *(f32)clip->samples[src_index + 0];
f32 Right = RightVol*(f32)clip->samples[src_index + 1];
u32 dst_index = 2*SampleIndex;
mix_buffer[dst_index + 0] += Left;
mix_buffer[dst_index + 1] += Right;
}
}
}
}
function void
def_audio_mix_destination(i16 *dst, f32 *src, u32 sample_count){
u32 opl = sample_count*2;
for(u32 i = 0; i < opl; i += 1){
f32 sample = src[i];
f32 sat_sample = clamp(-32768.f, sample, 32767.f);
dst[i] = (i16)sat_sample;
}
}
////////////////////////////////
// NOTE(allen): Loading Clip
#if !defined(FCODER_SKIP_WAV)
#define FCODER_SKIP_WAV
#pragma pack(push, 1)
struct wave_fmt_data
{
u16 wFormatTag;
u16 wChannels;
u32 dwSamplesPerSec;
u32 dwAvgBytesPerSec;
u16 wBlockAlign;
u16 wBitsPerSample;
};
struct riff_header
{
u32 ID;
u32 DataSize;
};
#pragma pack(pop)
#endif
function Audio_Clip
audio_clip_from_wav_data(String_Const_u8 data){
Audio_Clip Result = {};
if (data.size >= 4 && *(u32 *)data.str == *(u32 *)"RIFF"){
// NOTE(casey): This ROM is in WAV format
riff_header *RootHeader = (riff_header *)data.str;
wave_fmt_data *Format = 0;
u32 SampleDataSize = 0;
i16 *Samples = 0;
u32 At = sizeof(riff_header);
u32 LastAt = At + ((RootHeader->DataSize + 1) & ~1);
if ((*(u32 *)(data.str + At) == *(u32 *)"WAVE") &&
(LastAt <= data.size)){
At += sizeof(u32);
while (At < LastAt){
riff_header *Header = (riff_header *)(data.str + At);
u32 DataAt = At + sizeof(riff_header);
u32 EndAt = DataAt + ((Header->DataSize + 1) & ~1);
if(EndAt <= data.size)
{
void *Data = (data.str + DataAt);
if(Header->ID == *(u32 *)"fmt ")
{
Format = (wave_fmt_data *)Data;
}
else if(Header->ID == *(u32 *)"data")
{
SampleDataSize = Header->DataSize;
Samples = (i16 *)Data;
}
}
At = EndAt;
}
}
if (Format &&
Samples &&
(Format->wFormatTag == 1) &&
(Format->wChannels == 2) &&
(Format->wBitsPerSample == 16) &&
(Format->dwSamplesPerSec == 48000)){
for (u32 i = 0; i < 2; i += 1){
Result.channel_volume[i] = 1.f;
}
Result.sample_count = SampleDataSize / (Format->wChannels*Format->wBitsPerSample/8);
Result.samples = (i16 *)Samples;
}
else{
// TODO(casey): This is where you would output an error - to 4coder somehow?
}
}
else{
// TODO(casey): This is where you would output an error - to 4coder somehow?
}
return(Result);
}
function Audio_Clip
audio_clip_from_wav_FILE(Arena *arena, FILE *file){
String_Const_u8 data = data_from_file(arena, file);
Audio_Clip result = audio_clip_from_wav_data(data);
return(result);
}
function Audio_Clip
audio_clip_from_wav_file_name(Arena *arena, char *file_name){
Audio_Clip result = {};
String_Const_u8 data = {};
FILE *file = fopen(file_name, "rb");
if (file != 0){
result = audio_clip_from_wav_FILE(arena, file);
fclose(file);
}
return(result);
}

View File

@ -1,56 +0,0 @@
/* date = November 23rd 2020 1:18 pm */
#ifndef FCODER_AUDIO_H
#define FCODER_AUDIO_H
////////////////////////////////
// NOTE(allen): Default Mixer Types
struct Audio_Control{
volatile f32 channel_volume[2];
volatile u32 generation;
volatile u32 last_played_sample_index;
volatile b32 loop;
};
struct Audio_Clip{
i16 *samples;
Audio_Control *control;
f32 channel_volume[2];
u32 sample_count;
u32 at_sample_index;
};
struct Audio_System{
volatile u32 quit;
volatile u32 ticket;
volatile u32 serving;
volatile u32 generation;
Audio_Clip playing_clips[64];
// NOTE(casey): Requests to play sounds are written to a pending array to avoid long locking
volatile u32 pending_clip_count;
Audio_Clip pending_clips[64];
};
////////////////////////////////
// NOTE(allen): Default Mixer
function void def_audio_init(void);
function void def_audio_play_clip(Audio_Clip clip, Audio_Control *control);
function b32 def_audio_is_playing(Audio_Control *control);
function void def_audio_stop(Audio_Control *control);
function void def_audio_mix_sources(void *ctx, f32 *mix_buffer, u32 sample_count);
function void def_audio_mix_destination(i16 *dst, f32 *src, u32 sample_count);
////////////////////////////////
// NOTE(allen): Loading Clip
function Audio_Clip audio_clip_from_wav_data(String_Const_u8 data);
function Audio_Clip audio_clip_from_wav_FILE(Arena *arena, FILE *file);
function Audio_Clip audio_clip_from_wav_file_name(Arena *arena, char *file_name);
#endif //4CODER_AUDIO_H

View File

@ -18,11 +18,8 @@
void void
custom_layer_init(Application_Links *app){ custom_layer_init(Application_Links *app){
Thread_Context *tctx = get_thread_context(app); Thread_Context *tctx = get_thread_context(app);
// NOTE(allen): setup for default framework
default_framework_init(app); default_framework_init(app);
// NOTE(allen): default hooks and command maps
set_all_default_hooks(app); set_all_default_hooks(app);
mapping_init(tctx, &framework_mapping); mapping_init(tctx, &framework_mapping);
String_ID global_map_id = vars_save_string_lit("keys_global"); String_ID global_map_id = vars_save_string_lit("keys_global");

View File

@ -20,10 +20,6 @@ CUSTOM_DOC("Default command for responding to a startup event")
} }
} }
{
def_audio_init();
}
{ {
def_enable_virtual_whitespace = def_get_config_b32(vars_save_string_lit("enable_virtual_whitespace")); def_enable_virtual_whitespace = def_get_config_b32(vars_save_string_lit("enable_virtual_whitespace"));
clear_all_layouts(app); clear_all_layouts(app);

View File

@ -34,7 +34,6 @@
#include "generated/lexer_cpp.h" #include "generated/lexer_cpp.h"
#include "4coder_variables.h" #include "4coder_variables.h"
#include "4coder_audio.h"
#include "4coder_profile.h" #include "4coder_profile.h"
#include "4coder_async_tasks.h" #include "4coder_async_tasks.h"
#include "4coder_string_match.h" #include "4coder_string_match.h"
@ -139,7 +138,6 @@
#include "4coder_doc_commands.cpp" #include "4coder_doc_commands.cpp"
#include "4coder_docs.cpp" #include "4coder_docs.cpp"
#include "4coder_variables.cpp" #include "4coder_variables.cpp"
#include "4coder_audio.cpp"
#include "4coder_search_list.cpp" #include "4coder_search_list.cpp"
#include "4coder_examples.cpp" #include "4coder_examples.cpp"

View File

@ -208,61 +208,6 @@ CUSTOM_DOC("Example of query_user_string and query_user_number")
} }
} }
global Audio_Control the_music_control = {};
CUSTOM_COMMAND_SIG(music_start)
CUSTOM_DOC("Starts the music.")
{
local_persist Audio_Clip the_music_clip = {};
if (the_music_clip.sample_count == 0){
Scratch_Block scratch(app);
FILE *file = def_search_normal_fopen(scratch, "audio_test/chtulthu.wav", "rb");
if (file != 0){
the_music_clip = audio_clip_from_wav_FILE(&global_permanent_arena, file);
fclose(file);
}
}
if (!def_audio_is_playing(&the_music_control)){
the_music_control.loop = true;
the_music_control.channel_volume[0] = 1.f;
the_music_control.channel_volume[1] = 1.f;
def_audio_play_clip(the_music_clip, &the_music_control);
}
}
CUSTOM_COMMAND_SIG(music_stop)
CUSTOM_DOC("Stops the music.")
{
def_audio_stop(&the_music_control);
}
CUSTOM_COMMAND_SIG(hit_sfx)
CUSTOM_DOC("Play the hit sound effect")
{
local_persist Audio_Clip the_hit_clip = {};
if (the_hit_clip.sample_count == 0){
Scratch_Block scratch(app);
FILE *file = def_search_normal_fopen(scratch, "audio_test/hit.wav", "rb");
if (file != 0){
the_hit_clip = audio_clip_from_wav_FILE(&global_permanent_arena, file);
fclose(file);
}
}
local_persist u32 index = 0;
local_persist Audio_Control controls[8] = {};
Audio_Control *control = &controls[index%8];
if (!def_audio_is_playing(control)){
control->loop = false;
control->channel_volume[0] = 1.f;
control->channel_volume[1] = 1.f;
def_audio_play_clip(the_hit_clip, control);
index += 1;
}
}
// BOTTOM // BOTTOM

View File

@ -2,7 +2,7 @@
#define command_id(c) (fcoder_metacmd_ID_##c) #define command_id(c) (fcoder_metacmd_ID_##c)
#define command_metadata(c) (&fcoder_metacmd_table[command_id(c)]) #define command_metadata(c) (&fcoder_metacmd_table[command_id(c)])
#define command_metadata_by_id(id) (&fcoder_metacmd_table[id]) #define command_metadata_by_id(id) (&fcoder_metacmd_table[id])
#define command_one_past_last_id 268 #define command_one_past_last_id 265
#if defined(CUSTOM_COMMAND_SIG) #if defined(CUSTOM_COMMAND_SIG)
#define PROC_LINKS(x,y) x #define PROC_LINKS(x,y) x
#else #else
@ -75,7 +75,6 @@ CUSTOM_COMMAND_SIG(goto_prev_jump);
CUSTOM_COMMAND_SIG(goto_prev_jump_no_skips); CUSTOM_COMMAND_SIG(goto_prev_jump_no_skips);
CUSTOM_COMMAND_SIG(hide_filebar); CUSTOM_COMMAND_SIG(hide_filebar);
CUSTOM_COMMAND_SIG(hide_scrollbar); CUSTOM_COMMAND_SIG(hide_scrollbar);
CUSTOM_COMMAND_SIG(hit_sfx);
CUSTOM_COMMAND_SIG(hms_demo_tutorial); CUSTOM_COMMAND_SIG(hms_demo_tutorial);
CUSTOM_COMMAND_SIG(if0_off); CUSTOM_COMMAND_SIG(if0_off);
CUSTOM_COMMAND_SIG(if_read_only_goto_position); CUSTOM_COMMAND_SIG(if_read_only_goto_position);
@ -150,8 +149,6 @@ CUSTOM_COMMAND_SIG(move_up_to_blank_line_skip_whitespace);
CUSTOM_COMMAND_SIG(multi_paste); CUSTOM_COMMAND_SIG(multi_paste);
CUSTOM_COMMAND_SIG(multi_paste_interactive); CUSTOM_COMMAND_SIG(multi_paste_interactive);
CUSTOM_COMMAND_SIG(multi_paste_interactive_quick); CUSTOM_COMMAND_SIG(multi_paste_interactive_quick);
CUSTOM_COMMAND_SIG(music_start);
CUSTOM_COMMAND_SIG(music_stop);
CUSTOM_COMMAND_SIG(open_all_code); CUSTOM_COMMAND_SIG(open_all_code);
CUSTOM_COMMAND_SIG(open_all_code_recursive); CUSTOM_COMMAND_SIG(open_all_code_recursive);
CUSTOM_COMMAND_SIG(open_file_in_quotes); CUSTOM_COMMAND_SIG(open_file_in_quotes);
@ -289,7 +286,7 @@ char *source_name;
i32 source_name_len; i32 source_name_len;
i32 line_number; i32 line_number;
}; };
static Command_Metadata fcoder_metacmd_table[268] = { static Command_Metadata fcoder_metacmd_table[265] = {
{ PROC_LINKS(allow_mouse, 0), false, "allow_mouse", 11, "Shows the mouse and causes all mouse input to be processed normally.", 68, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_framework.cpp", 62, 481 }, { PROC_LINKS(allow_mouse, 0), false, "allow_mouse", 11, "Shows the mouse and causes all mouse input to be processed normally.", 68, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_framework.cpp", 62, 481 },
{ PROC_LINKS(auto_indent_line_at_cursor, 0), false, "auto_indent_line_at_cursor", 26, "Auto-indents the line on which the cursor sits.", 47, "C:\\projects\\4coder_gs\\code\\custom\\4coder_auto_indent.cpp", 56, 420 }, { PROC_LINKS(auto_indent_line_at_cursor, 0), false, "auto_indent_line_at_cursor", 26, "Auto-indents the line on which the cursor sits.", 47, "C:\\projects\\4coder_gs\\code\\custom\\4coder_auto_indent.cpp", 56, 420 },
{ PROC_LINKS(auto_indent_range, 0), false, "auto_indent_range", 17, "Auto-indents the range between the cursor and the mark.", 55, "C:\\projects\\4coder_gs\\code\\custom\\4coder_auto_indent.cpp", 56, 430 }, { PROC_LINKS(auto_indent_range, 0), false, "auto_indent_range", 17, "Auto-indents the range between the cursor and the mark.", 55, "C:\\projects\\4coder_gs\\code\\custom\\4coder_auto_indent.cpp", 56, 430 },
@ -327,8 +324,8 @@ static Command_Metadata fcoder_metacmd_table[268] = {
{ PROC_LINKS(decrease_face_size, 0), false, "decrease_face_size", 18, "Decrease the size of the face used by the current buffer.", 57, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 759 }, { PROC_LINKS(decrease_face_size, 0), false, "decrease_face_size", 18, "Decrease the size of the face used by the current buffer.", 57, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 759 },
{ PROC_LINKS(default_file_externally_modified, 0), false, "default_file_externally_modified", 32, "Notes the external modification of attached files by printing a message.", 72, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 2067 }, { PROC_LINKS(default_file_externally_modified, 0), false, "default_file_externally_modified", 32, "Notes the external modification of attached files by printing a message.", 72, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 2067 },
{ PROC_LINKS(default_startup, 0), false, "default_startup", 15, "Default command for responding to a startup event", 49, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_hooks.cpp", 58, 7 }, { PROC_LINKS(default_startup, 0), false, "default_startup", 15, "Default command for responding to a startup event", 49, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_hooks.cpp", 58, 7 },
{ PROC_LINKS(default_try_exit, 0), false, "default_try_exit", 16, "Default command for responding to a try-exit event", 50, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_hooks.cpp", 58, 33 }, { PROC_LINKS(default_try_exit, 0), false, "default_try_exit", 16, "Default command for responding to a try-exit event", 50, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_hooks.cpp", 58, 29 },
{ PROC_LINKS(default_view_input_handler, 0), false, "default_view_input_handler", 26, "Input consumption loop for default view behavior", 48, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_hooks.cpp", 58, 77 }, { PROC_LINKS(default_view_input_handler, 0), false, "default_view_input_handler", 26, "Input consumption loop for default view behavior", 48, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_hooks.cpp", 58, 73 },
{ PROC_LINKS(delete_alpha_numeric_boundary, 0), false, "delete_alpha_numeric_boundary", 29, "Delete characters between the cursor position and the first alphanumeric boundary to the right.", 95, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 162 }, { PROC_LINKS(delete_alpha_numeric_boundary, 0), false, "delete_alpha_numeric_boundary", 29, "Delete characters between the cursor position and the first alphanumeric boundary to the right.", 95, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 162 },
{ PROC_LINKS(delete_char, 0), false, "delete_char", 11, "Deletes the character to the right of the cursor.", 49, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 79 }, { PROC_LINKS(delete_char, 0), false, "delete_char", 11, "Deletes the character to the right of the cursor.", 49, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 79 },
{ PROC_LINKS(delete_current_scope, 0), false, "delete_current_scope", 20, "Deletes the braces surrounding the currently selected scope. Leaves the contents within the scope.", 99, "C:\\projects\\4coder_gs\\code\\custom\\4coder_scope_commands.cpp", 59, 112 }, { PROC_LINKS(delete_current_scope, 0), false, "delete_current_scope", 20, "Deletes the braces surrounding the currently selected scope. Leaves the contents within the scope.", 99, "C:\\projects\\4coder_gs\\code\\custom\\4coder_scope_commands.cpp", 59, 112 },
@ -356,7 +353,6 @@ static Command_Metadata fcoder_metacmd_table[268] = {
{ PROC_LINKS(goto_prev_jump_no_skips, 0), false, "goto_prev_jump_no_skips", 23, "If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, and does not skip sub jump locations.", 136, "C:\\projects\\4coder_gs\\code\\custom\\4coder_jump_sticky.cpp", 56, 511 }, { PROC_LINKS(goto_prev_jump_no_skips, 0), false, "goto_prev_jump_no_skips", 23, "If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, and does not skip sub jump locations.", 136, "C:\\projects\\4coder_gs\\code\\custom\\4coder_jump_sticky.cpp", 56, 511 },
{ PROC_LINKS(hide_filebar, 0), false, "hide_filebar", 12, "Sets the current view to hide it's filebar.", 43, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 706 }, { PROC_LINKS(hide_filebar, 0), false, "hide_filebar", 12, "Sets the current view to hide it's filebar.", 43, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 706 },
{ PROC_LINKS(hide_scrollbar, 0), false, "hide_scrollbar", 14, "Sets the current view to hide it's scrollbar.", 45, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 692 }, { PROC_LINKS(hide_scrollbar, 0), false, "hide_scrollbar", 14, "Sets the current view to hide it's scrollbar.", 45, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 692 },
{ PROC_LINKS(hit_sfx, 0), false, "hit_sfx", 7, "Play the hit sound effect", 25, "C:\\projects\\4coder_gs\\code\\custom\\4coder_examples.cpp", 53, 240 },
{ PROC_LINKS(hms_demo_tutorial, 0), false, "hms_demo_tutorial", 17, "Tutorial for built in 4coder bindings and features.", 51, "C:\\projects\\4coder_gs\\code\\custom\\4coder_tutorial.cpp", 53, 869 }, { PROC_LINKS(hms_demo_tutorial, 0), false, "hms_demo_tutorial", 17, "Tutorial for built in 4coder bindings and features.", 51, "C:\\projects\\4coder_gs\\code\\custom\\4coder_tutorial.cpp", 53, 869 },
{ PROC_LINKS(if0_off, 0), false, "if0_off", 7, "Surround the range between the cursor and mark with an '#if 0' and an '#endif'", 78, "C:\\projects\\4coder_gs\\code\\custom\\4coder_combined_write_commands.cpp", 68, 70 }, { PROC_LINKS(if0_off, 0), false, "if0_off", 7, "Surround the range between the cursor and mark with an '#if 0' and an '#endif'", 78, "C:\\projects\\4coder_gs\\code\\custom\\4coder_combined_write_commands.cpp", 68, 70 },
{ PROC_LINKS(if_read_only_goto_position, 0), false, "if_read_only_goto_position", 26, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor.", 106, "C:\\projects\\4coder_gs\\code\\custom\\4coder_jump_sticky.cpp", 56, 564 }, { PROC_LINKS(if_read_only_goto_position, 0), false, "if_read_only_goto_position", 26, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor.", 106, "C:\\projects\\4coder_gs\\code\\custom\\4coder_jump_sticky.cpp", 56, 564 },
@ -431,8 +427,6 @@ static Command_Metadata fcoder_metacmd_table[268] = {
{ PROC_LINKS(multi_paste, 0), false, "multi_paste", 11, "Paste multiple entries from the clipboard at once", 49, "C:\\projects\\4coder_gs\\code\\custom\\4coder_clipboard.cpp", 54, 229 }, { PROC_LINKS(multi_paste, 0), false, "multi_paste", 11, "Paste multiple entries from the clipboard at once", 49, "C:\\projects\\4coder_gs\\code\\custom\\4coder_clipboard.cpp", 54, 229 },
{ PROC_LINKS(multi_paste_interactive, 0), false, "multi_paste_interactive", 23, "Paste multiple lines from the clipboard history, controlled with arrow keys", 75, "C:\\projects\\4coder_gs\\code\\custom\\4coder_clipboard.cpp", 54, 371 }, { PROC_LINKS(multi_paste_interactive, 0), false, "multi_paste_interactive", 23, "Paste multiple lines from the clipboard history, controlled with arrow keys", 75, "C:\\projects\\4coder_gs\\code\\custom\\4coder_clipboard.cpp", 54, 371 },
{ PROC_LINKS(multi_paste_interactive_quick, 0), false, "multi_paste_interactive_quick", 29, "Paste multiple lines from the clipboard history, controlled by inputing the number of lines to paste", 100, "C:\\projects\\4coder_gs\\code\\custom\\4coder_clipboard.cpp", 54, 380 }, { PROC_LINKS(multi_paste_interactive_quick, 0), false, "multi_paste_interactive_quick", 29, "Paste multiple lines from the clipboard history, controlled by inputing the number of lines to paste", 100, "C:\\projects\\4coder_gs\\code\\custom\\4coder_clipboard.cpp", 54, 380 },
{ PROC_LINKS(music_start, 0), false, "music_start", 11, "Starts the music.", 17, "C:\\projects\\4coder_gs\\code\\custom\\4coder_examples.cpp", 53, 213 },
{ PROC_LINKS(music_stop, 0), false, "music_stop", 10, "Stops the music.", 16, "C:\\projects\\4coder_gs\\code\\custom\\4coder_examples.cpp", 53, 234 },
{ PROC_LINKS(open_all_code, 0), false, "open_all_code", 13, "Open all code in the current directory. File types are determined by extensions. An extension is considered code based on the extensions specified in 4coder.config.", 164, "C:\\projects\\4coder_gs\\code\\custom\\4coder_project_commands.cpp", 61, 838 }, { PROC_LINKS(open_all_code, 0), false, "open_all_code", 13, "Open all code in the current directory. File types are determined by extensions. An extension is considered code based on the extensions specified in 4coder.config.", 164, "C:\\projects\\4coder_gs\\code\\custom\\4coder_project_commands.cpp", 61, 838 },
{ PROC_LINKS(open_all_code_recursive, 0), false, "open_all_code_recursive", 23, "Works as open_all_code but also runs in all subdirectories.", 59, "C:\\projects\\4coder_gs\\code\\custom\\4coder_project_commands.cpp", 61, 847 }, { PROC_LINKS(open_all_code_recursive, 0), false, "open_all_code_recursive", 23, "Works as open_all_code but also runs in all subdirectories.", 59, "C:\\projects\\4coder_gs\\code\\custom\\4coder_project_commands.cpp", 61, 847 },
{ PROC_LINKS(open_file_in_quotes, 0), false, "open_file_in_quotes", 19, "Reads a filename from surrounding '\"' characters and attempts to open the corresponding file.", 94, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1578 }, { PROC_LINKS(open_file_in_quotes, 0), false, "open_file_in_quotes", 19, "Reads a filename from surrounding '\"' characters and attempts to open the corresponding file.", 94, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1578 },
@ -625,206 +619,203 @@ static i32 fcoder_metacmd_ID_goto_prev_jump = 62;
static i32 fcoder_metacmd_ID_goto_prev_jump_no_skips = 63; static i32 fcoder_metacmd_ID_goto_prev_jump_no_skips = 63;
static i32 fcoder_metacmd_ID_hide_filebar = 64; static i32 fcoder_metacmd_ID_hide_filebar = 64;
static i32 fcoder_metacmd_ID_hide_scrollbar = 65; static i32 fcoder_metacmd_ID_hide_scrollbar = 65;
static i32 fcoder_metacmd_ID_hit_sfx = 66; static i32 fcoder_metacmd_ID_hms_demo_tutorial = 66;
static i32 fcoder_metacmd_ID_hms_demo_tutorial = 67; static i32 fcoder_metacmd_ID_if0_off = 67;
static i32 fcoder_metacmd_ID_if0_off = 68; static i32 fcoder_metacmd_ID_if_read_only_goto_position = 68;
static i32 fcoder_metacmd_ID_if_read_only_goto_position = 69; static i32 fcoder_metacmd_ID_if_read_only_goto_position_same_panel = 69;
static i32 fcoder_metacmd_ID_if_read_only_goto_position_same_panel = 70; static i32 fcoder_metacmd_ID_increase_face_size = 70;
static i32 fcoder_metacmd_ID_increase_face_size = 71; static i32 fcoder_metacmd_ID_interactive_kill_buffer = 71;
static i32 fcoder_metacmd_ID_interactive_kill_buffer = 72; static i32 fcoder_metacmd_ID_interactive_new = 72;
static i32 fcoder_metacmd_ID_interactive_new = 73; static i32 fcoder_metacmd_ID_interactive_open = 73;
static i32 fcoder_metacmd_ID_interactive_open = 74; static i32 fcoder_metacmd_ID_interactive_open_or_new = 74;
static i32 fcoder_metacmd_ID_interactive_open_or_new = 75; static i32 fcoder_metacmd_ID_interactive_switch_buffer = 75;
static i32 fcoder_metacmd_ID_interactive_switch_buffer = 76; static i32 fcoder_metacmd_ID_jump_to_definition = 76;
static i32 fcoder_metacmd_ID_jump_to_definition = 77; static i32 fcoder_metacmd_ID_jump_to_definition_at_cursor = 77;
static i32 fcoder_metacmd_ID_jump_to_definition_at_cursor = 78; static i32 fcoder_metacmd_ID_jump_to_last_point = 78;
static i32 fcoder_metacmd_ID_jump_to_last_point = 79; static i32 fcoder_metacmd_ID_keyboard_macro_finish_recording = 79;
static i32 fcoder_metacmd_ID_keyboard_macro_finish_recording = 80; static i32 fcoder_metacmd_ID_keyboard_macro_replay = 80;
static i32 fcoder_metacmd_ID_keyboard_macro_replay = 81; static i32 fcoder_metacmd_ID_keyboard_macro_start_recording = 81;
static i32 fcoder_metacmd_ID_keyboard_macro_start_recording = 82; static i32 fcoder_metacmd_ID_kill_buffer = 82;
static i32 fcoder_metacmd_ID_kill_buffer = 83; static i32 fcoder_metacmd_ID_kill_tutorial = 83;
static i32 fcoder_metacmd_ID_kill_tutorial = 84; static i32 fcoder_metacmd_ID_left_adjust_view = 84;
static i32 fcoder_metacmd_ID_left_adjust_view = 85; static i32 fcoder_metacmd_ID_list_all_functions_all_buffers = 85;
static i32 fcoder_metacmd_ID_list_all_functions_all_buffers = 86; static i32 fcoder_metacmd_ID_list_all_functions_all_buffers_lister = 86;
static i32 fcoder_metacmd_ID_list_all_functions_all_buffers_lister = 87; static i32 fcoder_metacmd_ID_list_all_functions_current_buffer = 87;
static i32 fcoder_metacmd_ID_list_all_functions_current_buffer = 88; static i32 fcoder_metacmd_ID_list_all_functions_current_buffer_lister = 88;
static i32 fcoder_metacmd_ID_list_all_functions_current_buffer_lister = 89; static i32 fcoder_metacmd_ID_list_all_locations = 89;
static i32 fcoder_metacmd_ID_list_all_locations = 90; static i32 fcoder_metacmd_ID_list_all_locations_case_insensitive = 90;
static i32 fcoder_metacmd_ID_list_all_locations_case_insensitive = 91; static i32 fcoder_metacmd_ID_list_all_locations_of_identifier = 91;
static i32 fcoder_metacmd_ID_list_all_locations_of_identifier = 92; static i32 fcoder_metacmd_ID_list_all_locations_of_identifier_case_insensitive = 92;
static i32 fcoder_metacmd_ID_list_all_locations_of_identifier_case_insensitive = 93; static i32 fcoder_metacmd_ID_list_all_locations_of_selection = 93;
static i32 fcoder_metacmd_ID_list_all_locations_of_selection = 94; static i32 fcoder_metacmd_ID_list_all_locations_of_selection_case_insensitive = 94;
static i32 fcoder_metacmd_ID_list_all_locations_of_selection_case_insensitive = 95; static i32 fcoder_metacmd_ID_list_all_locations_of_type_definition = 95;
static i32 fcoder_metacmd_ID_list_all_locations_of_type_definition = 96; static i32 fcoder_metacmd_ID_list_all_locations_of_type_definition_of_identifier = 96;
static i32 fcoder_metacmd_ID_list_all_locations_of_type_definition_of_identifier = 97; static i32 fcoder_metacmd_ID_list_all_substring_locations = 97;
static i32 fcoder_metacmd_ID_list_all_substring_locations = 98; static i32 fcoder_metacmd_ID_list_all_substring_locations_case_insensitive = 98;
static i32 fcoder_metacmd_ID_list_all_substring_locations_case_insensitive = 99; static i32 fcoder_metacmd_ID_load_project = 99;
static i32 fcoder_metacmd_ID_load_project = 100; static i32 fcoder_metacmd_ID_load_theme_current_buffer = 100;
static i32 fcoder_metacmd_ID_load_theme_current_buffer = 101; static i32 fcoder_metacmd_ID_load_themes_default_folder = 101;
static i32 fcoder_metacmd_ID_load_themes_default_folder = 102; static i32 fcoder_metacmd_ID_load_themes_hot_directory = 102;
static i32 fcoder_metacmd_ID_load_themes_hot_directory = 103; static i32 fcoder_metacmd_ID_make_directory_query = 103;
static i32 fcoder_metacmd_ID_make_directory_query = 104; static i32 fcoder_metacmd_ID_miblo_decrement_basic = 104;
static i32 fcoder_metacmd_ID_miblo_decrement_basic = 105; static i32 fcoder_metacmd_ID_miblo_decrement_time_stamp = 105;
static i32 fcoder_metacmd_ID_miblo_decrement_time_stamp = 106; static i32 fcoder_metacmd_ID_miblo_decrement_time_stamp_minute = 106;
static i32 fcoder_metacmd_ID_miblo_decrement_time_stamp_minute = 107; static i32 fcoder_metacmd_ID_miblo_increment_basic = 107;
static i32 fcoder_metacmd_ID_miblo_increment_basic = 108; static i32 fcoder_metacmd_ID_miblo_increment_time_stamp = 108;
static i32 fcoder_metacmd_ID_miblo_increment_time_stamp = 109; static i32 fcoder_metacmd_ID_miblo_increment_time_stamp_minute = 109;
static i32 fcoder_metacmd_ID_miblo_increment_time_stamp_minute = 110; static i32 fcoder_metacmd_ID_mouse_wheel_change_face_size = 110;
static i32 fcoder_metacmd_ID_mouse_wheel_change_face_size = 111; static i32 fcoder_metacmd_ID_mouse_wheel_scroll = 111;
static i32 fcoder_metacmd_ID_mouse_wheel_scroll = 112; static i32 fcoder_metacmd_ID_move_down = 112;
static i32 fcoder_metacmd_ID_move_down = 113; static i32 fcoder_metacmd_ID_move_down_10 = 113;
static i32 fcoder_metacmd_ID_move_down_10 = 114; static i32 fcoder_metacmd_ID_move_down_textual = 114;
static i32 fcoder_metacmd_ID_move_down_textual = 115; static i32 fcoder_metacmd_ID_move_down_to_blank_line = 115;
static i32 fcoder_metacmd_ID_move_down_to_blank_line = 116; static i32 fcoder_metacmd_ID_move_down_to_blank_line_end = 116;
static i32 fcoder_metacmd_ID_move_down_to_blank_line_end = 117; static i32 fcoder_metacmd_ID_move_down_to_blank_line_skip_whitespace = 117;
static i32 fcoder_metacmd_ID_move_down_to_blank_line_skip_whitespace = 118; static i32 fcoder_metacmd_ID_move_left = 118;
static i32 fcoder_metacmd_ID_move_left = 119; static i32 fcoder_metacmd_ID_move_left_alpha_numeric_boundary = 119;
static i32 fcoder_metacmd_ID_move_left_alpha_numeric_boundary = 120; static i32 fcoder_metacmd_ID_move_left_alpha_numeric_or_camel_boundary = 120;
static i32 fcoder_metacmd_ID_move_left_alpha_numeric_or_camel_boundary = 121; static i32 fcoder_metacmd_ID_move_left_token_boundary = 121;
static i32 fcoder_metacmd_ID_move_left_token_boundary = 122; static i32 fcoder_metacmd_ID_move_left_whitespace_boundary = 122;
static i32 fcoder_metacmd_ID_move_left_whitespace_boundary = 123; static i32 fcoder_metacmd_ID_move_left_whitespace_or_token_boundary = 123;
static i32 fcoder_metacmd_ID_move_left_whitespace_or_token_boundary = 124; static i32 fcoder_metacmd_ID_move_line_down = 124;
static i32 fcoder_metacmd_ID_move_line_down = 125; static i32 fcoder_metacmd_ID_move_line_up = 125;
static i32 fcoder_metacmd_ID_move_line_up = 126; static i32 fcoder_metacmd_ID_move_right = 126;
static i32 fcoder_metacmd_ID_move_right = 127; static i32 fcoder_metacmd_ID_move_right_alpha_numeric_boundary = 127;
static i32 fcoder_metacmd_ID_move_right_alpha_numeric_boundary = 128; static i32 fcoder_metacmd_ID_move_right_alpha_numeric_or_camel_boundary = 128;
static i32 fcoder_metacmd_ID_move_right_alpha_numeric_or_camel_boundary = 129; static i32 fcoder_metacmd_ID_move_right_token_boundary = 129;
static i32 fcoder_metacmd_ID_move_right_token_boundary = 130; static i32 fcoder_metacmd_ID_move_right_whitespace_boundary = 130;
static i32 fcoder_metacmd_ID_move_right_whitespace_boundary = 131; static i32 fcoder_metacmd_ID_move_right_whitespace_or_token_boundary = 131;
static i32 fcoder_metacmd_ID_move_right_whitespace_or_token_boundary = 132; static i32 fcoder_metacmd_ID_move_up = 132;
static i32 fcoder_metacmd_ID_move_up = 133; static i32 fcoder_metacmd_ID_move_up_10 = 133;
static i32 fcoder_metacmd_ID_move_up_10 = 134; static i32 fcoder_metacmd_ID_move_up_to_blank_line = 134;
static i32 fcoder_metacmd_ID_move_up_to_blank_line = 135; static i32 fcoder_metacmd_ID_move_up_to_blank_line_end = 135;
static i32 fcoder_metacmd_ID_move_up_to_blank_line_end = 136; static i32 fcoder_metacmd_ID_move_up_to_blank_line_skip_whitespace = 136;
static i32 fcoder_metacmd_ID_move_up_to_blank_line_skip_whitespace = 137; static i32 fcoder_metacmd_ID_multi_paste = 137;
static i32 fcoder_metacmd_ID_multi_paste = 138; static i32 fcoder_metacmd_ID_multi_paste_interactive = 138;
static i32 fcoder_metacmd_ID_multi_paste_interactive = 139; static i32 fcoder_metacmd_ID_multi_paste_interactive_quick = 139;
static i32 fcoder_metacmd_ID_multi_paste_interactive_quick = 140; static i32 fcoder_metacmd_ID_open_all_code = 140;
static i32 fcoder_metacmd_ID_music_start = 141; static i32 fcoder_metacmd_ID_open_all_code_recursive = 141;
static i32 fcoder_metacmd_ID_music_stop = 142; static i32 fcoder_metacmd_ID_open_file_in_quotes = 142;
static i32 fcoder_metacmd_ID_open_all_code = 143; static i32 fcoder_metacmd_ID_open_in_other = 143;
static i32 fcoder_metacmd_ID_open_all_code_recursive = 144; static i32 fcoder_metacmd_ID_open_long_braces = 144;
static i32 fcoder_metacmd_ID_open_file_in_quotes = 145; static i32 fcoder_metacmd_ID_open_long_braces_break = 145;
static i32 fcoder_metacmd_ID_open_in_other = 146; static i32 fcoder_metacmd_ID_open_long_braces_semicolon = 146;
static i32 fcoder_metacmd_ID_open_long_braces = 147; static i32 fcoder_metacmd_ID_open_matching_file_cpp = 147;
static i32 fcoder_metacmd_ID_open_long_braces_break = 148; static i32 fcoder_metacmd_ID_open_panel_hsplit = 148;
static i32 fcoder_metacmd_ID_open_long_braces_semicolon = 149; static i32 fcoder_metacmd_ID_open_panel_vsplit = 149;
static i32 fcoder_metacmd_ID_open_matching_file_cpp = 150; static i32 fcoder_metacmd_ID_page_down = 150;
static i32 fcoder_metacmd_ID_open_panel_hsplit = 151; static i32 fcoder_metacmd_ID_page_up = 151;
static i32 fcoder_metacmd_ID_open_panel_vsplit = 152; static i32 fcoder_metacmd_ID_paste = 152;
static i32 fcoder_metacmd_ID_page_down = 153; static i32 fcoder_metacmd_ID_paste_and_indent = 153;
static i32 fcoder_metacmd_ID_page_up = 154; static i32 fcoder_metacmd_ID_paste_next = 154;
static i32 fcoder_metacmd_ID_paste = 155; static i32 fcoder_metacmd_ID_paste_next_and_indent = 155;
static i32 fcoder_metacmd_ID_paste_and_indent = 156; static i32 fcoder_metacmd_ID_place_in_scope = 156;
static i32 fcoder_metacmd_ID_paste_next = 157; static i32 fcoder_metacmd_ID_play_with_a_counter = 157;
static i32 fcoder_metacmd_ID_paste_next_and_indent = 158; static i32 fcoder_metacmd_ID_profile_clear = 158;
static i32 fcoder_metacmd_ID_place_in_scope = 159; static i32 fcoder_metacmd_ID_profile_disable = 159;
static i32 fcoder_metacmd_ID_play_with_a_counter = 160; static i32 fcoder_metacmd_ID_profile_enable = 160;
static i32 fcoder_metacmd_ID_profile_clear = 161; static i32 fcoder_metacmd_ID_profile_inspect = 161;
static i32 fcoder_metacmd_ID_profile_disable = 162; static i32 fcoder_metacmd_ID_project_command_F1 = 162;
static i32 fcoder_metacmd_ID_profile_enable = 163; static i32 fcoder_metacmd_ID_project_command_F10 = 163;
static i32 fcoder_metacmd_ID_profile_inspect = 164; static i32 fcoder_metacmd_ID_project_command_F11 = 164;
static i32 fcoder_metacmd_ID_project_command_F1 = 165; static i32 fcoder_metacmd_ID_project_command_F12 = 165;
static i32 fcoder_metacmd_ID_project_command_F10 = 166; static i32 fcoder_metacmd_ID_project_command_F13 = 166;
static i32 fcoder_metacmd_ID_project_command_F11 = 167; static i32 fcoder_metacmd_ID_project_command_F14 = 167;
static i32 fcoder_metacmd_ID_project_command_F12 = 168; static i32 fcoder_metacmd_ID_project_command_F15 = 168;
static i32 fcoder_metacmd_ID_project_command_F13 = 169; static i32 fcoder_metacmd_ID_project_command_F16 = 169;
static i32 fcoder_metacmd_ID_project_command_F14 = 170; static i32 fcoder_metacmd_ID_project_command_F2 = 170;
static i32 fcoder_metacmd_ID_project_command_F15 = 171; static i32 fcoder_metacmd_ID_project_command_F3 = 171;
static i32 fcoder_metacmd_ID_project_command_F16 = 172; static i32 fcoder_metacmd_ID_project_command_F4 = 172;
static i32 fcoder_metacmd_ID_project_command_F2 = 173; static i32 fcoder_metacmd_ID_project_command_F5 = 173;
static i32 fcoder_metacmd_ID_project_command_F3 = 174; static i32 fcoder_metacmd_ID_project_command_F6 = 174;
static i32 fcoder_metacmd_ID_project_command_F4 = 175; static i32 fcoder_metacmd_ID_project_command_F7 = 175;
static i32 fcoder_metacmd_ID_project_command_F5 = 176; static i32 fcoder_metacmd_ID_project_command_F8 = 176;
static i32 fcoder_metacmd_ID_project_command_F6 = 177; static i32 fcoder_metacmd_ID_project_command_F9 = 177;
static i32 fcoder_metacmd_ID_project_command_F7 = 178; static i32 fcoder_metacmd_ID_project_command_lister = 178;
static i32 fcoder_metacmd_ID_project_command_F8 = 179; static i32 fcoder_metacmd_ID_project_fkey_command = 179;
static i32 fcoder_metacmd_ID_project_command_F9 = 180; static i32 fcoder_metacmd_ID_project_go_to_root_directory = 180;
static i32 fcoder_metacmd_ID_project_command_lister = 181; static i32 fcoder_metacmd_ID_project_reprint = 181;
static i32 fcoder_metacmd_ID_project_fkey_command = 182; static i32 fcoder_metacmd_ID_query_replace = 182;
static i32 fcoder_metacmd_ID_project_go_to_root_directory = 183; static i32 fcoder_metacmd_ID_query_replace_identifier = 183;
static i32 fcoder_metacmd_ID_project_reprint = 184; static i32 fcoder_metacmd_ID_query_replace_selection = 184;
static i32 fcoder_metacmd_ID_query_replace = 185; static i32 fcoder_metacmd_ID_quick_swap_buffer = 185;
static i32 fcoder_metacmd_ID_query_replace_identifier = 186; static i32 fcoder_metacmd_ID_redo = 186;
static i32 fcoder_metacmd_ID_query_replace_selection = 187; static i32 fcoder_metacmd_ID_redo_all_buffers = 187;
static i32 fcoder_metacmd_ID_quick_swap_buffer = 188; static i32 fcoder_metacmd_ID_rename_file_query = 188;
static i32 fcoder_metacmd_ID_redo = 189; static i32 fcoder_metacmd_ID_reopen = 189;
static i32 fcoder_metacmd_ID_redo_all_buffers = 190; static i32 fcoder_metacmd_ID_replace_in_all_buffers = 190;
static i32 fcoder_metacmd_ID_rename_file_query = 191; static i32 fcoder_metacmd_ID_replace_in_buffer = 191;
static i32 fcoder_metacmd_ID_reopen = 192; static i32 fcoder_metacmd_ID_replace_in_range = 192;
static i32 fcoder_metacmd_ID_replace_in_all_buffers = 193; static i32 fcoder_metacmd_ID_reverse_search = 193;
static i32 fcoder_metacmd_ID_replace_in_buffer = 194; static i32 fcoder_metacmd_ID_reverse_search_identifier = 194;
static i32 fcoder_metacmd_ID_replace_in_range = 195; static i32 fcoder_metacmd_ID_save = 195;
static i32 fcoder_metacmd_ID_reverse_search = 196; static i32 fcoder_metacmd_ID_save_all_dirty_buffers = 196;
static i32 fcoder_metacmd_ID_reverse_search_identifier = 197; static i32 fcoder_metacmd_ID_save_to_query = 197;
static i32 fcoder_metacmd_ID_save = 198; static i32 fcoder_metacmd_ID_search = 198;
static i32 fcoder_metacmd_ID_save_all_dirty_buffers = 199; static i32 fcoder_metacmd_ID_search_identifier = 199;
static i32 fcoder_metacmd_ID_save_to_query = 200; static i32 fcoder_metacmd_ID_seek_beginning_of_line = 200;
static i32 fcoder_metacmd_ID_search = 201; static i32 fcoder_metacmd_ID_seek_beginning_of_textual_line = 201;
static i32 fcoder_metacmd_ID_search_identifier = 202; static i32 fcoder_metacmd_ID_seek_end_of_line = 202;
static i32 fcoder_metacmd_ID_seek_beginning_of_line = 203; static i32 fcoder_metacmd_ID_seek_end_of_textual_line = 203;
static i32 fcoder_metacmd_ID_seek_beginning_of_textual_line = 204; static i32 fcoder_metacmd_ID_select_all = 204;
static i32 fcoder_metacmd_ID_seek_end_of_line = 205; static i32 fcoder_metacmd_ID_select_next_scope_absolute = 205;
static i32 fcoder_metacmd_ID_seek_end_of_textual_line = 206; static i32 fcoder_metacmd_ID_select_next_scope_after_current = 206;
static i32 fcoder_metacmd_ID_select_all = 207; static i32 fcoder_metacmd_ID_select_prev_scope_absolute = 207;
static i32 fcoder_metacmd_ID_select_next_scope_absolute = 208; static i32 fcoder_metacmd_ID_select_prev_top_most_scope = 208;
static i32 fcoder_metacmd_ID_select_next_scope_after_current = 209; static i32 fcoder_metacmd_ID_select_surrounding_scope = 209;
static i32 fcoder_metacmd_ID_select_prev_scope_absolute = 210; static i32 fcoder_metacmd_ID_select_surrounding_scope_maximal = 210;
static i32 fcoder_metacmd_ID_select_prev_top_most_scope = 211; static i32 fcoder_metacmd_ID_set_eol_mode_from_contents = 211;
static i32 fcoder_metacmd_ID_select_surrounding_scope = 212; static i32 fcoder_metacmd_ID_set_eol_mode_to_binary = 212;
static i32 fcoder_metacmd_ID_select_surrounding_scope_maximal = 213; static i32 fcoder_metacmd_ID_set_eol_mode_to_crlf = 213;
static i32 fcoder_metacmd_ID_set_eol_mode_from_contents = 214; static i32 fcoder_metacmd_ID_set_eol_mode_to_lf = 214;
static i32 fcoder_metacmd_ID_set_eol_mode_to_binary = 215; static i32 fcoder_metacmd_ID_set_face_size = 215;
static i32 fcoder_metacmd_ID_set_eol_mode_to_crlf = 216; static i32 fcoder_metacmd_ID_set_face_size_this_buffer = 216;
static i32 fcoder_metacmd_ID_set_eol_mode_to_lf = 217; static i32 fcoder_metacmd_ID_set_mark = 217;
static i32 fcoder_metacmd_ID_set_face_size = 218; static i32 fcoder_metacmd_ID_set_mode_to_notepad_like = 218;
static i32 fcoder_metacmd_ID_set_face_size_this_buffer = 219; static i32 fcoder_metacmd_ID_set_mode_to_original = 219;
static i32 fcoder_metacmd_ID_set_mark = 220; static i32 fcoder_metacmd_ID_setup_build_bat = 220;
static i32 fcoder_metacmd_ID_set_mode_to_notepad_like = 221; static i32 fcoder_metacmd_ID_setup_build_bat_and_sh = 221;
static i32 fcoder_metacmd_ID_set_mode_to_original = 222; static i32 fcoder_metacmd_ID_setup_build_sh = 222;
static i32 fcoder_metacmd_ID_setup_build_bat = 223; static i32 fcoder_metacmd_ID_setup_new_project = 223;
static i32 fcoder_metacmd_ID_setup_build_bat_and_sh = 224; static i32 fcoder_metacmd_ID_show_filebar = 224;
static i32 fcoder_metacmd_ID_setup_build_sh = 225; static i32 fcoder_metacmd_ID_show_scrollbar = 225;
static i32 fcoder_metacmd_ID_setup_new_project = 226; static i32 fcoder_metacmd_ID_show_the_log_graph = 226;
static i32 fcoder_metacmd_ID_show_filebar = 227; static i32 fcoder_metacmd_ID_snipe_backward_whitespace_or_token_boundary = 227;
static i32 fcoder_metacmd_ID_show_scrollbar = 228; static i32 fcoder_metacmd_ID_snipe_forward_whitespace_or_token_boundary = 228;
static i32 fcoder_metacmd_ID_show_the_log_graph = 229; static i32 fcoder_metacmd_ID_snippet_lister = 229;
static i32 fcoder_metacmd_ID_snipe_backward_whitespace_or_token_boundary = 230; static i32 fcoder_metacmd_ID_string_repeat = 230;
static i32 fcoder_metacmd_ID_snipe_forward_whitespace_or_token_boundary = 231; static i32 fcoder_metacmd_ID_suppress_mouse = 231;
static i32 fcoder_metacmd_ID_snippet_lister = 232; static i32 fcoder_metacmd_ID_swap_panels = 232;
static i32 fcoder_metacmd_ID_string_repeat = 233; static i32 fcoder_metacmd_ID_theme_lister = 233;
static i32 fcoder_metacmd_ID_suppress_mouse = 234; static i32 fcoder_metacmd_ID_to_lowercase = 234;
static i32 fcoder_metacmd_ID_swap_panels = 235; static i32 fcoder_metacmd_ID_to_uppercase = 235;
static i32 fcoder_metacmd_ID_theme_lister = 236; static i32 fcoder_metacmd_ID_toggle_filebar = 236;
static i32 fcoder_metacmd_ID_to_lowercase = 237; static i32 fcoder_metacmd_ID_toggle_fps_meter = 237;
static i32 fcoder_metacmd_ID_to_uppercase = 238; static i32 fcoder_metacmd_ID_toggle_fullscreen = 238;
static i32 fcoder_metacmd_ID_toggle_filebar = 239; static i32 fcoder_metacmd_ID_toggle_highlight_enclosing_scopes = 239;
static i32 fcoder_metacmd_ID_toggle_fps_meter = 240; static i32 fcoder_metacmd_ID_toggle_highlight_line_at_cursor = 240;
static i32 fcoder_metacmd_ID_toggle_fullscreen = 241; static i32 fcoder_metacmd_ID_toggle_line_numbers = 241;
static i32 fcoder_metacmd_ID_toggle_highlight_enclosing_scopes = 242; static i32 fcoder_metacmd_ID_toggle_line_wrap = 242;
static i32 fcoder_metacmd_ID_toggle_highlight_line_at_cursor = 243; static i32 fcoder_metacmd_ID_toggle_mouse = 243;
static i32 fcoder_metacmd_ID_toggle_line_numbers = 244; static i32 fcoder_metacmd_ID_toggle_paren_matching_helper = 244;
static i32 fcoder_metacmd_ID_toggle_line_wrap = 245; static i32 fcoder_metacmd_ID_toggle_show_whitespace = 245;
static i32 fcoder_metacmd_ID_toggle_mouse = 246; static i32 fcoder_metacmd_ID_toggle_virtual_whitespace = 246;
static i32 fcoder_metacmd_ID_toggle_paren_matching_helper = 247; static i32 fcoder_metacmd_ID_tutorial_maximize = 247;
static i32 fcoder_metacmd_ID_toggle_show_whitespace = 248; static i32 fcoder_metacmd_ID_tutorial_minimize = 248;
static i32 fcoder_metacmd_ID_toggle_virtual_whitespace = 249; static i32 fcoder_metacmd_ID_uncomment_line = 249;
static i32 fcoder_metacmd_ID_tutorial_maximize = 250; static i32 fcoder_metacmd_ID_undo = 250;
static i32 fcoder_metacmd_ID_tutorial_minimize = 251; static i32 fcoder_metacmd_ID_undo_all_buffers = 251;
static i32 fcoder_metacmd_ID_uncomment_line = 252; static i32 fcoder_metacmd_ID_view_buffer_other_panel = 252;
static i32 fcoder_metacmd_ID_undo = 253; static i32 fcoder_metacmd_ID_view_jump_list_with_lister = 253;
static i32 fcoder_metacmd_ID_undo_all_buffers = 254; static i32 fcoder_metacmd_ID_word_complete = 254;
static i32 fcoder_metacmd_ID_view_buffer_other_panel = 255; static i32 fcoder_metacmd_ID_word_complete_drop_down = 255;
static i32 fcoder_metacmd_ID_view_jump_list_with_lister = 256; static i32 fcoder_metacmd_ID_write_block = 256;
static i32 fcoder_metacmd_ID_word_complete = 257; static i32 fcoder_metacmd_ID_write_hack = 257;
static i32 fcoder_metacmd_ID_word_complete_drop_down = 258; static i32 fcoder_metacmd_ID_write_note = 258;
static i32 fcoder_metacmd_ID_write_block = 259; static i32 fcoder_metacmd_ID_write_space = 259;
static i32 fcoder_metacmd_ID_write_hack = 260; static i32 fcoder_metacmd_ID_write_text_and_auto_indent = 260;
static i32 fcoder_metacmd_ID_write_note = 261; static i32 fcoder_metacmd_ID_write_text_input = 261;
static i32 fcoder_metacmd_ID_write_space = 262; static i32 fcoder_metacmd_ID_write_todo = 262;
static i32 fcoder_metacmd_ID_write_text_and_auto_indent = 263; static i32 fcoder_metacmd_ID_write_underscore = 263;
static i32 fcoder_metacmd_ID_write_text_input = 264; static i32 fcoder_metacmd_ID_write_zero_struct = 264;
static i32 fcoder_metacmd_ID_write_todo = 265;
static i32 fcoder_metacmd_ID_write_underscore = 266;
static i32 fcoder_metacmd_ID_write_zero_struct = 267;
#endif #endif

View File

@ -1697,7 +1697,6 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdS
log_os("Initializing thread context...\n"); log_os("Initializing thread context...\n");
// NOTE(allen): This thing
InitializeCriticalSection(&memory_tracker_mutex); InitializeCriticalSection(&memory_tracker_mutex);
// NOTE(allen): context setup // NOTE(allen): context setup