removed open, and open_background from the dact system

This commit is contained in:
Allen Webster 2016-05-29 16:12:53 -04:00
parent d224d8cd7b
commit bc15f0ed3c
4 changed files with 72 additions and 104 deletions

109
4ed.cpp
View File

@ -801,13 +801,9 @@ COMMAND_DECL(interactive_new){
}
COMMAND_DECL(interactive_open){
USE_MODELS(models);
USE_PANEL(panel);
USE_VIEW(view);
Delay *delay = &models->delay1;
char *filename = 0;
int filename_len = 0;
int do_in_background = 0;
@ -830,16 +826,10 @@ COMMAND_DECL(interactive_open){
if (filename){
String string = make_string(filename, filename_len);
if (do_in_background){
delayed_open_background(delay, string);
view_open_file(system, models, 0, string);
}
else{
// TODO(allen): Change the behavior of all delayed_open/background
// calls so that they still allocate the buffer right away. This way
// it's still possible to get at the buffer if so wished in the API.
// The switch for this view doesn't need to happen until the file is ready.
//
// Alternatively... fuck all delayed actions. Please make them go away.
delayed_open(delay, string, panel);
view_open_file(system, models, view, string);
}
}
else{
@ -848,54 +838,6 @@ COMMAND_DECL(interactive_open){
}
}
internal void
view_file_in_panel(Command_Data *cmd, Panel *panel, Editing_File *file){
Models *models = cmd->models;
Partition old_part;
Temp_Memory temp;
View *old_view;
Partition *part;
old_view = cmd->view;
old_part = cmd->part;
cmd->view = panel->view;
part = &models->mem.part;
temp = begin_temp_memory(part);
cmd->part = partition_sub_part(part, Kbytes(16));
View *view = panel->view;
view_set_file(view, file, models);
view_show_file(view);
cmd->part = old_part;
end_temp_memory(temp);
cmd->view = old_view;
panel->view->map = get_map(models, file->settings.base_map_id);
}
internal void
init_normal_file(System_Functions *system, Models *models, Editing_File *file,
char *buffer, i32 size){
General_Memory *general = &models->mem.general;
String val = make_string(buffer, size);
file_create_from_string(system, models, file, file->name.source_path.str, val);
if (file->settings.tokens_exist){
file_first_lex_parallel(system, general, file);
}
for (View_Iter iter = file_view_iter_init(&models->layout, file, 0);
file_view_iter_good(iter);
iter = file_view_iter_next(iter)){
view_measure_wraps(general, iter.view);
}
}
// TODO(allen): Improvements to reopen
// - Preserve existing token stack
// - Keep current version open and do some sort of diff to keep
@ -1601,10 +1543,8 @@ COMMAND_DECL(set_settings){
}
COMMAND_DECL(command_line){
USE_VARS(vars);
USE_MODELS(models);
USE_PANEL(panel);
USE_VIEW(view);
Partition *part = &models->mem.part;
@ -1784,7 +1724,7 @@ COMMAND_DECL(command_line){
}
if (bind_to_new_view){
view_file_in_panel(command, panel, file);
view_set_file(view, file, models);
}
proc = procs + vars->cli_processes.count++;
@ -3878,26 +3818,26 @@ App_Step_Sig(app_step){
}
i32 i;
String file_name;
String filename;
Panel *panel = models->layout.used_sentinel.next;
for (i = 0;
i < models->settings.init_files_count;
++i, panel = panel->next){
file_name = make_string_slowly(models->settings.init_files[i]);
filename = make_string_slowly(models->settings.init_files[i]);
if (i < models->layout.panel_count){
delayed_open(&models->delay1, file_name, panel);
view_open_file(system, models, panel->view, filename);
if (i == 0){
delayed_set_line(&models->delay1, panel, models->settings.initial_line);
}
}
else{
delayed_open_background(&models->delay1, file_name);
view_open_file(system, models, 0, filename);
}
}
if (i < models->layout.panel_count){
view_file_in_panel(cmd, panel, models->message_buffer);
view_set_file(panel->view, models->message_buffer, models);
}
}
@ -4361,7 +4301,6 @@ App_Step_Sig(app_step){
Working_Set *working_set = &models->working_set;
Mem_Options *mem = &models->mem;
General_Memory *general = &mem->general;
Partition *part = &mem->part;
i32 count = models->delay1.count;
models->delay1.count = 0;
@ -4383,41 +4322,13 @@ App_Step_Sig(app_step){
}
}break;
#if 0
case DACT_OPEN:
case DACT_OPEN_BACKGROUND:
{
String filename = string;
Editing_File *file = working_set_contains(system, working_set, filename);
if (file == 0){
File_Loading loading = system->file_load_begin(filename.str);
if (loading.exists){
Temp_Memory temp = begin_temp_memory(part);
char *buffer = push_array(part, char, loading.size);
if (system->file_load_end(loading, buffer)){
file = working_set_alloc_always(working_set, general);
if (file){
file_init_strings(file);
file_set_name(working_set, file, filename.str);
working_set_add(system, working_set, file, general);
init_normal_file(system, models, file,
buffer, loading.size);
}
}
end_temp_memory(temp);
}
}
if (file){
if (act->type == DACT_OPEN){
view_file_in_panel(cmd, panel, file);
}
}
}break;
#endif
case DACT_SET_LINE:
{

View File

@ -1,6 +1,4 @@
enum Action_Type{
DACT_OPEN,
DACT_OPEN_BACKGROUND,
DACT_SET_LINE,
DACT_SWITCH,
DACT_TRY_KILL,
@ -124,8 +122,6 @@ delayed_action_repush(Delay *delay, Delayed_Action *act){
return(new_act);
}
#define delayed_open(delay, ...) delayed_action_(delay, DACT_OPEN, ##__VA_ARGS__)
#define delayed_open_background(delay, ...) delayed_action_(delay, DACT_OPEN_BACKGROUND, ##__VA_ARGS__)
#define delayed_set_line(delay, ...) delayed_action_(delay, DACT_SET_LINE, ##__VA_ARGS__)
#define delayed_switch(delay, ...) delayed_action_(delay, DACT_SWITCH, ##__VA_ARGS__)
#define delayed_try_kill(delay, ...) delayed_action_(delay, DACT_TRY_KILL, ##__VA_ARGS__)

View File

@ -3072,6 +3072,65 @@ view_new_file(System_Functions *system, Models *models,
#endif
}
internal void
init_normal_file(System_Functions *system, Models *models, Editing_File *file,
char *buffer, i32 size){
General_Memory *general = &models->mem.general;
String val = make_string(buffer, size);
file_create_from_string(system, models, file, file->name.source_path.str, val);
if (file->settings.tokens_exist){
file_first_lex_parallel(system, general, file);
}
for (View_Iter iter = file_view_iter_init(&models->layout, file, 0);
file_view_iter_good(iter);
iter = file_view_iter_next(iter)){
view_measure_wraps(general, iter.view);
}
}
internal void
view_open_file(System_Functions *system, Models *models,
View *view, String filename){
Working_Set *working_set = &models->working_set;
General_Memory *general = &models->mem.general;
Partition *part = &models->mem.part;
Editing_File *file = working_set_contains(system, working_set, filename);
if (file == 0){
File_Loading loading = system->file_load_begin(filename.str);
if (loading.exists){
Temp_Memory temp = begin_temp_memory(part);
char *buffer = push_array(part, char, loading.size);
if (system->file_load_end(loading, buffer)){
file = working_set_alloc_always(working_set, general);
if (file){
file_init_strings(file);
file_set_name(working_set, file, filename.str);
working_set_add(system, working_set, file, general);
init_normal_file(system, models, file,
buffer, loading.size);
}
}
end_temp_memory(temp);
}
}
if (file){
if (view){
view_set_file(view, file, models);
}
}
}
internal void
interactive_view_complete(System_Functions *system, View *view, String dest, i32 user_action){
Models *models = view->persistent.models;
@ -3080,7 +3139,7 @@ interactive_view_complete(System_Functions *system, View *view, String dest, i32
switch (view->action){
case IAct_Open:
delayed_open(&models->delay1, dest, panel);
view_open_file(system, models, view, dest);
delayed_touch_file(&models->delay1, old_file);
break;

View File

@ -146,8 +146,10 @@ char* generate_keycode_enum(){
//////////////////////////////////////////////////////////////////////////////////////////////////
char daction_enum_name[] = "Action_Type";
char *daction_enum[] = {
#if 0
"OPEN",
"OPEN_BACKGROUND",
#endif
"SET_LINE",
#if 0
"SAVE_AS",