4.0.11 fix on command line file handling

master
Allen Webster 2016-09-16 21:11:22 -04:00
parent be735f84f0
commit c9b62381ed
4 changed files with 74 additions and 80 deletions

View File

@ -130,10 +130,10 @@ HOOK_SIG(my_start){
change_theme(app, literal("4coder"));
change_font(app, literal("Liberation Sans"), true);
exec_command(app, open_panel_vsplit);
exec_command(app, hide_scrollbar);
exec_command(app, change_active_panel);
//exec_command(app, open_panel_vsplit);
exec_command(app, hide_scrollbar);
//exec_command(app, change_active_panel);
//exec_command(app, hide_scrollbar);
// Theme options:
// "4coder"

32
4ed.cpp
View File

@ -516,22 +516,6 @@ case_change_range(System_Functions *system,
#endif
}
COMMAND_DECL(to_uppercase){
USE_MODELS(models);
REQ_OPEN_VIEW(view);
REQ_FILE(file, view);
case_change_range(system, &models->mem, view, file, 'a', 'z', (u8)('A' - 'a'));
}
COMMAND_DECL(to_lowercase){
USE_MODELS(models);
REQ_OPEN_VIEW(view);
REQ_FILE(file, view);
case_change_range(system, &models->mem, view, file, 'A', 'Z', (u8)('a' - 'A'));
}
COMMAND_DECL(open_panel_vsplit){
USE_VARS(vars);
USE_MODELS(models);
@ -2047,10 +2031,20 @@ App_Step_Sig(app_step){
Panel *panel = models->layout.used_sentinel.next;
for (; i < models->settings.init_files_count; ++i, panel = panel->next){
cl_filename.size = cl_filename_len;
append_sc(&cl_filename, models->settings.init_files[i]);
String filename = {0};
Editing_File_Canon_Name canon_name;
if (get_canon_name(system, &canon_name, make_string_slowly(models->settings.init_files[i]))){
filename = canon_name.name;
}
else{
append_sc(&cl_filename, models->settings.init_files[i]);
filename = cl_filename;
}
if (i < models->layout.panel_count){
view_open_file(system, models, panel->view, cl_filename);
view_open_file(system, models, panel->view, filename);
view_show_file(panel->view);
Assert("Earlier" && panel->view->file_data.file != 0);
#if 0
@ -2064,7 +2058,7 @@ App_Step_Sig(app_step){
#endif
}
else{
view_open_file(system, models, 0, cl_filename);
view_open_file(system, models, 0, filename);
}
}

View File

@ -682,9 +682,9 @@ metagen(char *cdir){
static void
do_buildsuper(char *cdir){
BEGIN_TIME_SECTION();
//buildsuper(cdir, BUILD_DIR, "../code/4coder_default_bindings.cpp");
buildsuper(cdir, BUILD_DIR, "../code/4coder_default_bindings.cpp");
#if defined(IS_WINDOWS)
buildsuper(cdir, BUILD_DIR, "../code/internal_4coder_tests.cpp");
//buildsuper(cdir, BUILD_DIR, "../code/internal_4coder_tests.cpp");
#else
buildsuper(cdir, BUILD_DIR, "../code/power/4coder_experiments.cpp");
#endif

View File

@ -375,8 +375,8 @@ CUSTOM_COMMAND_SIG(casey_newline_and_indent)
// read-only, it cannot be edited anyway. So instead let the return
// key indicate an attempt to interpret the line as a location to jump to.
View_Summary view = app->get_active_view(app, AccessProtected);
Buffer_Summary buffer = app->get_buffer(app, view.buffer_id, AccessProtected);
View_Summary view = get_active_view(app, AccessProtected);
Buffer_Summary buffer = get_buffer(app, view.buffer_id, AccessProtected);
if (buffer.lock_flags & AccessProtected){
exec_command(app, goto_jump_at_cursor);
@ -403,7 +403,7 @@ internal void
DeleteAfterCommand(struct Application_Links *app, unsigned long long CommandID)
{
unsigned int access = AccessOpen;
View_Summary view = app->get_active_view(app, access);
View_Summary view = get_active_view(app, access);
int pos2 = view.cursor.pos;
if (CommandID < cmdid_count){
@ -417,8 +417,8 @@ DeleteAfterCommand(struct Application_Links *app, unsigned long long CommandID)
Range range = make_range(pos1, pos2);
Buffer_Summary buffer = app->get_buffer(app, view.buffer_id, access);
app->buffer_replace_range(app, &buffer, range.min, range.max, 0, 0);
Buffer_Summary buffer = get_buffer(app, view.buffer_id, access);
buffer_replace_range(app, &buffer, range.min, range.max, 0, 0);
}
CUSTOM_COMMAND_SIG(casey_delete_token_left)
@ -434,7 +434,7 @@ CUSTOM_COMMAND_SIG(casey_delete_token_right)
CUSTOM_COMMAND_SIG(casey_kill_to_end_of_line)
{
unsigned int access = AccessOpen;
View_Summary view = app->get_active_view(app, access);
View_Summary view = get_active_view(app, access);
int pos2 = view.cursor.pos;
exec_command(app, seek_end_of_line);
@ -447,8 +447,8 @@ CUSTOM_COMMAND_SIG(casey_kill_to_end_of_line)
range.max += 1;
}
Buffer_Summary buffer = app->get_buffer(app, view.buffer_id, access);
app->buffer_replace_range(app, &buffer, range.min, range.max, 0, 0);
Buffer_Summary buffer = get_buffer(app, view.buffer_id, access);
buffer_replace_range(app, &buffer, range.min, range.max, 0, 0);
exec_command(app, auto_tab_line_at_cursor);
}
@ -500,26 +500,26 @@ SwitchToOrLoadFile(struct Application_Links *app, String FileName, bool CreateIf
SanitizeSlashes(FileName);
unsigned int access = AccessAll;
View_Summary view = app->get_active_view(app, access);
Buffer_Summary buffer = app->get_buffer_by_name(app, FileName.str, FileName.size, access);
View_Summary view = get_active_view(app, access);
Buffer_Summary buffer = get_buffer_by_name(app, FileName.str, FileName.size, access);
Result.view = view;
Result.buffer = buffer;
if(buffer.exists)
{
app->view_set_buffer(app, &view, buffer.buffer_id, 0);
view_set_buffer(app, &view, buffer.buffer_id, 0);
Result.Switched = true;
}
else
{
if(app->file_exists(app, FileName.str, FileName.size) || CreateIfNotFound)
if(file_exists(app, FileName.str, FileName.size) || CreateIfNotFound)
{
// NOTE(allen): This opens the file and puts it in &view
// This returns false if the open fails.
view_open_file(app, &view, FileName.str, FileName.size, true);
Result.buffer = app->get_buffer_by_name(app, FileName.str, FileName.size, access);
Result.buffer = get_buffer_by_name(app, FileName.str, FileName.size, access);
Result.Loaded = true;
Result.Switched = true;
@ -542,14 +542,14 @@ CUSTOM_COMMAND_SIG(casey_build_search)
// TODO(allen): It's fine to get memory this way for now, eventually
// we should properly suballocating from app->memory.
String dir = make_string(app->memory, 0, app->memory_size);
dir.size = app->directory_get_hot(app, dir.str, dir.memory_size);
dir.size = directory_get_hot(app, dir.str, dir.memory_size);
while (keep_going)
{
old_size = dir.size;
append(&dir, "build.bat");
if (app->file_exists(app, dir.str, dir.size))
if (file_exists(app, dir.str, dir.size))
{
dir.size = old_size;
memcpy(BuildDirectory, dir.str, dir.size);
@ -557,19 +557,19 @@ CUSTOM_COMMAND_SIG(casey_build_search)
// TODO(allen): There are ways this could be boiled down
// to one print message which would be better.
app->print_message(app, literal("Building with: "));
app->print_message(app, BuildDirectory, dir.size);
app->print_message(app, literal("build.bat\n"));
print_message(app, literal("Building with: "));
print_message(app, BuildDirectory, dir.size);
print_message(app, literal("build.bat\n"));
return;
}
dir.size = old_size;
if (app->directory_cd(app, dir.str, &dir.size, dir.memory_size, literal("..")) == 0)
if (directory_cd(app, dir.str, &dir.size, dir.memory_size, literal("..")) == 0)
{
keep_going = 0;
app->print_message(app, literal("Did not find a build.bat\n"));
print_message(app, literal("Did not find a build.bat\n"));
}
}
}
@ -577,8 +577,8 @@ CUSTOM_COMMAND_SIG(casey_build_search)
CUSTOM_COMMAND_SIG(casey_find_corresponding_file)
{
unsigned int access = AccessProtected;
View_Summary view = app->get_active_view(app, access);
Buffer_Summary buffer = app->get_buffer(app, view.buffer_id, access);
View_Summary view = get_active_view(app, access);
Buffer_Summary buffer = get_buffer(app, view.buffer_id, access);
String extension = file_extension(make_string(buffer.file_name, buffer.file_name_len));
if (extension.str)
@ -633,12 +633,12 @@ CUSTOM_COMMAND_SIG(casey_find_corresponding_file)
CUSTOM_COMMAND_SIG(casey_find_corresponding_file_other_window)
{
unsigned int access = AccessProtected;
View_Summary old_view = app->get_active_view(app, access);
Buffer_Summary buffer = app->get_buffer(app, old_view.buffer_id, access);
View_Summary old_view = get_active_view(app, access);
Buffer_Summary buffer = get_buffer(app, old_view.buffer_id, access);
exec_command(app, change_active_panel);
View_Summary new_view = app->get_active_view(app, AccessAll);
app->view_set_buffer(app, &new_view, buffer.buffer_id, 0);
View_Summary new_view = get_active_view(app, AccessAll);
view_set_buffer(app, &new_view, buffer.buffer_id, 0);
// exec_command(app, casey_find_corresponding_file);
}
@ -650,11 +650,11 @@ CUSTOM_COMMAND_SIG(casey_save_and_make_without_asking)
Buffer_Summary buffer = {};
unsigned int access = AccessAll;
for(buffer = app->get_buffer_first(app, access);
for(buffer = get_buffer_first(app, access);
buffer.exists;
app->get_buffer_next(app, &buffer, access))
get_buffer_next(app, &buffer, access))
{
app->save_buffer(app, &buffer, buffer.file_name, buffer.file_name_len, 0);
save_buffer(app, &buffer, buffer.file_name, buffer.file_name_len, 0);
}
// NOTE(allen): The parameter pushing made it a little easier
@ -682,12 +682,12 @@ CUSTOM_COMMAND_SIG(casey_save_and_make_without_asking)
if(append(&command, "build.bat"))
{
unsigned int access = AccessAll;
View_Summary view = app->get_active_view(app, access);
app->exec_system_command(app, &view,
buffer_identifier(GlobalCompilationBufferName, (int)strlen(GlobalCompilationBufferName)),
dir.str, dir.size,
command.str, command.size,
CLI_OverlapWithConflict);
View_Summary view = get_active_view(app, access);
exec_system_command(app, &view,
buffer_identifier(GlobalCompilationBufferName, (int)strlen(GlobalCompilationBufferName)),
dir.str, dir.size,
command.str, command.size,
CLI_OverlapWithConflict);
}
exec_command(app, change_active_panel);
@ -847,13 +847,13 @@ casey_seek_error_dy(Application_Links *app, int dy)
CUSTOM_COMMAND_SIG(casey_goto_previous_error)
{
// casey_seek_error_dy(app, -1);
seek_error_skip_repeats(app, &global_part, false, -1);
seek_error(app, &global_part, true, false, -1);
}
CUSTOM_COMMAND_SIG(casey_goto_next_error)
{
// casey_seek_error_dy(app, 1);
seek_error_skip_repeats(app, &global_part, false, 1);
// casey_seek_error_dy(app, 1);
seek_error(app, &global_part, true, false, 1);
}
CUSTOM_COMMAND_SIG(casey_imenu)
@ -1044,7 +1044,7 @@ ParseCalc(tokenizer *Tokenizer)
CUSTOM_COMMAND_SIG(casey_quick_calc)
{
unsigned int access = AccessOpen;
View_Summary view = app->get_active_view(app, access);
View_Summary view = get_active_view(app, access);
Range range = get_range(&view);
@ -1052,8 +1052,8 @@ CUSTOM_COMMAND_SIG(casey_quick_calc)
char *Stuff = (char *)malloc(Size + 1);
Stuff[Size] = 0;
Buffer_Summary buffer = app->get_buffer(app, view.buffer_id, access);
app->buffer_read_range(app, &buffer, range.min, range.max, Stuff);
Buffer_Summary buffer = get_buffer(app, view.buffer_id, access);
buffer_read_range(app, &buffer, range.min, range.max, Stuff);
tokenizer Tokenizer = {Stuff};
calc_node *CalcTree = ParseCalc(&Tokenizer);
@ -1063,7 +1063,7 @@ CUSTOM_COMMAND_SIG(casey_quick_calc)
char ResultBuffer[256];
int ResultSize = sprintf(ResultBuffer, "%f", ComputedValue);
app->buffer_replace_range(app, &buffer, range.min, range.max, ResultBuffer, ResultSize);
buffer_replace_range(app, &buffer, range.min, range.max, ResultBuffer, ResultSize);
free(Stuff);
}
@ -1107,7 +1107,7 @@ OpenProject(Application_Links *app, char *ProjectFileName)
dir.str[dir.size++] = '/';
}
File_List list = app->get_file_list(app, dir.str, dir.size);
File_List list = get_file_list(app, dir.str, dir.size);
int dir_size = dir.size;
for (int i = 0; i < list.count; ++i)
@ -1132,7 +1132,7 @@ OpenProject(Application_Links *app, char *ProjectFileName)
}
}
app->free_file_list(app, list);
free_file_list(app, list);
}
fclose(ProjectFile);
@ -1147,7 +1147,7 @@ CUSTOM_COMMAND_SIG(casey_execute_arbitrary_command)
bar.string = make_fixed_width_string(space);
if (!query_user_string(app, &bar)) return;
app->end_query_bar(app, &bar, 0);
end_query_bar(app, &bar, 0);
if(match(bar.string, make_lit_string("project")))
{
@ -1164,8 +1164,8 @@ CUSTOM_COMMAND_SIG(casey_execute_arbitrary_command)
append(&bar.prompt, bar.string);
bar.string.size = 0;
app->start_query_bar(app, &bar, 0);
app->get_user_input(app, EventOnAnyKey | EventOnButton, 0);
start_query_bar(app, &bar, 0);
get_user_input(app, EventOnAnyKey | EventOnButton, 0);
}
}
@ -1195,10 +1195,10 @@ UpdateModalIndicator(Application_Links *app)
};
if (GlobalEditMode){
app->set_theme_colors(app, edit_colors, ArrayCount(edit_colors));
set_theme_colors(app, edit_colors, ArrayCount(edit_colors));
}
else{
app->set_theme_colors(app, normal_colors, ArrayCount(normal_colors));
set_theme_colors(app, normal_colors, ArrayCount(normal_colors));
}
}
CUSTOM_COMMAND_SIG(begin_free_typing)
@ -1303,7 +1303,7 @@ OPEN_FILE_HOOK_SIG(casey_file_settings)
// from app->get_active_buffer.
unsigned int access = AccessAll;
//Buffer_Summary buffer = app->get_parameter_buffer(app, 0, access);
Buffer_Summary buffer = app->get_buffer(app, buffer_id, access);
Buffer_Summary buffer = get_buffer(app, buffer_id, access);
int treat_as_code = 0;
int treat_as_project = 0;
@ -1315,9 +1315,9 @@ OPEN_FILE_HOOK_SIG(casey_file_settings)
treat_as_project = match(ext, make_lit_string("prj"));
}
app->buffer_set_setting(app, &buffer, BufferSetting_Lex, treat_as_code);
app->buffer_set_setting(app, &buffer, BufferSetting_WrapLine, !treat_as_code);
app->buffer_set_setting(app, &buffer, BufferSetting_MapID, mapid_file);
buffer_set_setting(app, &buffer, BufferSetting_Lex, treat_as_code);
buffer_set_setting(app, &buffer, BufferSetting_WrapLine, !treat_as_code);
buffer_set_setting(app, &buffer, BufferSetting_MapID, mapid_file);
if(treat_as_project)
{
@ -1478,8 +1478,8 @@ HOOK_SIG(casey_start)
exec_command(app, hide_scrollbar);
exec_command(app, change_active_panel);
app->change_theme(app, literal("Handmade Hero"));
app->change_font(app, literal("Liberation Mono"), true);
change_theme(app, literal("Handmade Hero"));
change_font(app, literal("Liberation Mono"), true);
Theme_Color colors[] =
{
@ -1513,7 +1513,7 @@ HOOK_SIG(casey_start)
// {Stag_Undo, },
// {Stag_Next_Undo, },
};
app->set_theme_colors(app, colors, ArrayCount(colors));
set_theme_colors(app, colors, ArrayCount(colors));
win32_toggle_fullscreen();