merged View and File_View
This commit is contained in:
parent
2ca78a6bf8
commit
24846b3669
|
@ -74,11 +74,11 @@ CUSTOM_COMMAND_SIG(write_decrement){
|
||||||
|
|
||||||
static void
|
static void
|
||||||
long_braces(Application_Links *app, char *text, int size){
|
long_braces(Application_Links *app, char *text, int size){
|
||||||
File_View_Summary view;
|
View_Summary view;
|
||||||
Buffer_Summary buffer;
|
Buffer_Summary buffer;
|
||||||
int pos;
|
int pos;
|
||||||
|
|
||||||
view = app->get_active_file_view(app);
|
view = app->get_active_view(app);
|
||||||
buffer = app->get_buffer(app, view.buffer_id);
|
buffer = app->get_buffer(app, view.buffer_id);
|
||||||
|
|
||||||
pos = view.cursor.pos;
|
pos = view.cursor.pos;
|
||||||
|
@ -110,7 +110,7 @@ CUSTOM_COMMAND_SIG(open_long_braces_break){
|
||||||
}
|
}
|
||||||
|
|
||||||
CUSTOM_COMMAND_SIG(paren_wrap){
|
CUSTOM_COMMAND_SIG(paren_wrap){
|
||||||
File_View_Summary view;
|
View_Summary view;
|
||||||
Buffer_Summary buffer;
|
Buffer_Summary buffer;
|
||||||
|
|
||||||
char text1[] = "(";
|
char text1[] = "(";
|
||||||
|
@ -122,7 +122,7 @@ CUSTOM_COMMAND_SIG(paren_wrap){
|
||||||
Range range;
|
Range range;
|
||||||
int pos;
|
int pos;
|
||||||
|
|
||||||
view = app->get_active_file_view(app);
|
view = app->get_active_view(app);
|
||||||
buffer = app->get_active_buffer(app);
|
buffer = app->get_active_buffer(app);
|
||||||
|
|
||||||
range = get_range(&view);
|
range = get_range(&view);
|
||||||
|
@ -134,7 +134,7 @@ CUSTOM_COMMAND_SIG(paren_wrap){
|
||||||
}
|
}
|
||||||
|
|
||||||
CUSTOM_COMMAND_SIG(if0_off){
|
CUSTOM_COMMAND_SIG(if0_off){
|
||||||
File_View_Summary view;
|
View_Summary view;
|
||||||
Buffer_Summary buffer;
|
Buffer_Summary buffer;
|
||||||
|
|
||||||
char text1[] = "#if 0\n";
|
char text1[] = "#if 0\n";
|
||||||
|
@ -146,7 +146,7 @@ CUSTOM_COMMAND_SIG(if0_off){
|
||||||
Range range;
|
Range range;
|
||||||
int pos;
|
int pos;
|
||||||
|
|
||||||
view = app->get_active_file_view(app);
|
view = app->get_active_view(app);
|
||||||
buffer = app->get_active_buffer(app);
|
buffer = app->get_active_buffer(app);
|
||||||
|
|
||||||
range = get_range(&view);
|
range = get_range(&view);
|
||||||
|
@ -158,7 +158,7 @@ CUSTOM_COMMAND_SIG(if0_off){
|
||||||
push_parameter(app, par_range_end, pos);
|
push_parameter(app, par_range_end, pos);
|
||||||
exec_command(app, cmdid_auto_tab_range);
|
exec_command(app, cmdid_auto_tab_range);
|
||||||
|
|
||||||
app->refresh_file_view(app, &view);
|
app->refresh_view(app, &view);
|
||||||
range = get_range(&view);
|
range = get_range(&view);
|
||||||
pos = range.max;
|
pos = range.max;
|
||||||
|
|
||||||
|
@ -170,15 +170,15 @@ CUSTOM_COMMAND_SIG(if0_off){
|
||||||
}
|
}
|
||||||
|
|
||||||
CUSTOM_COMMAND_SIG(backspace_word){
|
CUSTOM_COMMAND_SIG(backspace_word){
|
||||||
File_View_Summary view;
|
View_Summary view;
|
||||||
Buffer_Summary buffer;
|
Buffer_Summary buffer;
|
||||||
int pos2, pos1;
|
int pos2, pos1;
|
||||||
|
|
||||||
view = app->get_active_file_view(app);
|
view = app->get_active_view(app);
|
||||||
|
|
||||||
pos2 = view.cursor.pos;
|
pos2 = view.cursor.pos;
|
||||||
exec_command(app, cmdid_seek_alphanumeric_left);
|
exec_command(app, cmdid_seek_alphanumeric_left);
|
||||||
app->refresh_file_view(app, &view);
|
app->refresh_view(app, &view);
|
||||||
pos1 = view.cursor.pos;
|
pos1 = view.cursor.pos;
|
||||||
|
|
||||||
buffer = app->get_buffer(app, view.buffer_id);
|
buffer = app->get_buffer(app, view.buffer_id);
|
||||||
|
@ -186,7 +186,7 @@ CUSTOM_COMMAND_SIG(backspace_word){
|
||||||
}
|
}
|
||||||
|
|
||||||
CUSTOM_COMMAND_SIG(switch_to_compilation){
|
CUSTOM_COMMAND_SIG(switch_to_compilation){
|
||||||
File_View_Summary view;
|
View_Summary view;
|
||||||
Buffer_Summary buffer;
|
Buffer_Summary buffer;
|
||||||
|
|
||||||
char name[] = "*compilation*";
|
char name[] = "*compilation*";
|
||||||
|
@ -194,17 +194,17 @@ CUSTOM_COMMAND_SIG(switch_to_compilation){
|
||||||
|
|
||||||
// TODO(allen): This will only work for file views for now. Fix up this
|
// TODO(allen): This will only work for file views for now. Fix up this
|
||||||
// view nonsense so that view types aren't such an issue.
|
// view nonsense so that view types aren't such an issue.
|
||||||
view = app->get_active_file_view(app);
|
view = app->get_active_view(app);
|
||||||
buffer = app->get_buffer_by_name(app, name, name_size);
|
buffer = app->get_buffer_by_name(app, name, name_size);
|
||||||
|
|
||||||
app->view_set_buffer(app, &view, buffer.buffer_id);
|
app->view_set_buffer(app, &view, buffer.buffer_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
CUSTOM_COMMAND_SIG(move_up_10){
|
CUSTOM_COMMAND_SIG(move_up_10){
|
||||||
File_View_Summary view;
|
View_Summary view;
|
||||||
float x, y;
|
float x, y;
|
||||||
|
|
||||||
view = app->get_active_file_view(app);
|
view = app->get_active_view(app);
|
||||||
x = view.preferred_x;
|
x = view.preferred_x;
|
||||||
|
|
||||||
if (view.unwrapped_lines){
|
if (view.unwrapped_lines){
|
||||||
|
@ -220,10 +220,10 @@ CUSTOM_COMMAND_SIG(move_up_10){
|
||||||
}
|
}
|
||||||
|
|
||||||
CUSTOM_COMMAND_SIG(move_down_10){
|
CUSTOM_COMMAND_SIG(move_down_10){
|
||||||
File_View_Summary view;
|
View_Summary view;
|
||||||
float x, y;
|
float x, y;
|
||||||
|
|
||||||
view = app->get_active_file_view(app);
|
view = app->get_active_view(app);
|
||||||
x = view.preferred_x;
|
x = view.preferred_x;
|
||||||
|
|
||||||
if (view.unwrapped_lines){
|
if (view.unwrapped_lines){
|
||||||
|
@ -239,12 +239,12 @@ CUSTOM_COMMAND_SIG(move_down_10){
|
||||||
}
|
}
|
||||||
|
|
||||||
CUSTOM_COMMAND_SIG(open_file_in_quotes){
|
CUSTOM_COMMAND_SIG(open_file_in_quotes){
|
||||||
File_View_Summary view;
|
View_Summary view;
|
||||||
Buffer_Summary buffer;
|
Buffer_Summary buffer;
|
||||||
char short_file_name[128];
|
char short_file_name[128];
|
||||||
int pos, start, end, size;
|
int pos, start, end, size;
|
||||||
|
|
||||||
view = app->get_active_file_view(app);
|
view = app->get_active_view(app);
|
||||||
buffer = app->get_buffer(app, view.buffer_id);
|
buffer = app->get_buffer(app, view.buffer_id);
|
||||||
pos = view.cursor.pos;
|
pos = view.cursor.pos;
|
||||||
app->buffer_seek_delimiter(app, &buffer, pos, '"', 1, &end);
|
app->buffer_seek_delimiter(app, &buffer, pos, '"', 1, &end);
|
||||||
|
@ -290,7 +290,7 @@ CUSTOM_COMMAND_SIG(reverse_search);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
isearch(Application_Links *app, int start_reversed){
|
isearch(Application_Links *app, int start_reversed){
|
||||||
File_View_Summary view;
|
View_Summary view;
|
||||||
Buffer_Summary buffer;
|
Buffer_Summary buffer;
|
||||||
User_Input in;
|
User_Input in;
|
||||||
Query_Bar bar;
|
Query_Bar bar;
|
||||||
|
@ -301,7 +301,7 @@ isearch(Application_Links *app, int start_reversed){
|
||||||
int reverse = start_reversed;
|
int reverse = start_reversed;
|
||||||
int pos;
|
int pos;
|
||||||
|
|
||||||
view = app->get_active_file_view(app);
|
view = app->get_active_view(app);
|
||||||
buffer = app->get_buffer(app, view.buffer_id);
|
buffer = app->get_buffer(app, view.buffer_id);
|
||||||
|
|
||||||
pos = view.cursor.pos;
|
pos = view.cursor.pos;
|
||||||
|
@ -408,18 +408,18 @@ CUSTOM_COMMAND_SIG(reverse_search){
|
||||||
}
|
}
|
||||||
|
|
||||||
CUSTOM_COMMAND_SIG(rewrite_as_single_caps){
|
CUSTOM_COMMAND_SIG(rewrite_as_single_caps){
|
||||||
File_View_Summary view;
|
View_Summary view;
|
||||||
Buffer_Summary buffer;
|
Buffer_Summary buffer;
|
||||||
Range range;
|
Range range;
|
||||||
String string;
|
String string;
|
||||||
int is_first, i;
|
int is_first, i;
|
||||||
|
|
||||||
exec_command(app, cmdid_seek_token_left);
|
exec_command(app, cmdid_seek_token_left);
|
||||||
view = app->get_active_file_view(app);
|
view = app->get_active_view(app);
|
||||||
range.min = view.cursor.pos;
|
range.min = view.cursor.pos;
|
||||||
|
|
||||||
exec_command(app, cmdid_seek_token_right);
|
exec_command(app, cmdid_seek_token_right);
|
||||||
app->refresh_file_view(app, &view);
|
app->refresh_view(app, &view);
|
||||||
range.max = view.cursor.pos;
|
range.max = view.cursor.pos;
|
||||||
|
|
||||||
string.str = (char*)app->memory;
|
string.str = (char*)app->memory;
|
||||||
|
@ -486,9 +486,9 @@ CUSTOM_COMMAND_SIG(replace_in_range){
|
||||||
w = with.string;
|
w = with.string;
|
||||||
|
|
||||||
Buffer_Summary buffer;
|
Buffer_Summary buffer;
|
||||||
File_View_Summary view;
|
View_Summary view;
|
||||||
|
|
||||||
view = app->get_active_file_view(app);
|
view = app->get_active_view(app);
|
||||||
buffer = app->get_buffer(app, view.buffer_id);
|
buffer = app->get_buffer(app, view.buffer_id);
|
||||||
|
|
||||||
Range range = get_range(&view);
|
Range range = get_range(&view);
|
||||||
|
@ -525,7 +525,7 @@ CUSTOM_COMMAND_SIG(query_replace){
|
||||||
|
|
||||||
Query_Bar bar;
|
Query_Bar bar;
|
||||||
Buffer_Summary buffer;
|
Buffer_Summary buffer;
|
||||||
File_View_Summary view;
|
View_Summary view;
|
||||||
int pos, new_pos;
|
int pos, new_pos;
|
||||||
|
|
||||||
bar.prompt = make_lit_string("Replace? (y)es, (n)ext, (esc)\n");
|
bar.prompt = make_lit_string("Replace? (y)es, (n)ext, (esc)\n");
|
||||||
|
@ -533,7 +533,7 @@ CUSTOM_COMMAND_SIG(query_replace){
|
||||||
|
|
||||||
app->start_query_bar(app, &bar, 0);
|
app->start_query_bar(app, &bar, 0);
|
||||||
|
|
||||||
view = app->get_active_file_view(app);
|
view = app->get_active_view(app);
|
||||||
buffer = app->get_buffer(app, view.buffer_id);
|
buffer = app->get_buffer(app, view.buffer_id);
|
||||||
|
|
||||||
pos = view.cursor.pos;
|
pos = view.cursor.pos;
|
||||||
|
|
|
@ -122,7 +122,7 @@ struct Buffer_Summary{
|
||||||
int map_id;
|
int map_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct File_View_Summary{
|
struct View_Summary{
|
||||||
int exists;
|
int exists;
|
||||||
int view_id;
|
int view_id;
|
||||||
int buffer_id;
|
int buffer_id;
|
||||||
|
@ -196,14 +196,14 @@ struct Application_Links;
|
||||||
|
|
||||||
// File view manipulation
|
// File view manipulation
|
||||||
#define GET_VIEW_MAX_INDEX_SIG(name) int name(Application_Links *context)
|
#define GET_VIEW_MAX_INDEX_SIG(name) int name(Application_Links *context)
|
||||||
#define GET_FILE_VIEW_SIG(name) File_View_Summary name(Application_Links *context, int index)
|
#define GET_VIEW_SIG(name) View_Summary name(Application_Links *context, int index)
|
||||||
#define GET_ACTIVE_FILE_VIEW_SIG(name) File_View_Summary name(Application_Links *context)
|
#define GET_ACTIVE_VIEW_SIG(name) View_Summary name(Application_Links *context)
|
||||||
|
|
||||||
#define REFRESH_FILE_VIEW_SIG(name) int name(Application_Links *context, File_View_Summary *view)
|
#define REFRESH_VIEW_SIG(name) int name(Application_Links *context, View_Summary *view)
|
||||||
#define VIEW_SET_CURSOR_SIG(name) int name(Application_Links *context, File_View_Summary *view, Buffer_Seek seek, int set_preferred_x)
|
#define VIEW_SET_CURSOR_SIG(name) int name(Application_Links *context, View_Summary *view, Buffer_Seek seek, int set_preferred_x)
|
||||||
#define VIEW_SET_MARK_SIG(name) int name(Application_Links *context, File_View_Summary *view, Buffer_Seek seek)
|
#define VIEW_SET_MARK_SIG(name) int name(Application_Links *context, View_Summary *view, Buffer_Seek seek)
|
||||||
#define VIEW_SET_HIGHLIGHT_SIG(name) int name(Application_Links *context, File_View_Summary *view, int start, int end, int turn_on)
|
#define VIEW_SET_HIGHLIGHT_SIG(name) int name(Application_Links *context, View_Summary *view, int start, int end, int turn_on)
|
||||||
#define VIEW_SET_BUFFER_SIG(name) int name(Application_Links *context, File_View_Summary *view, int buffer_id)
|
#define VIEW_SET_BUFFER_SIG(name) int name(Application_Links *context, View_Summary *view, int buffer_id)
|
||||||
|
|
||||||
// Directly get user input
|
// Directly get user input
|
||||||
#define EventOnAnyKey 0x1
|
#define EventOnAnyKey 0x1
|
||||||
|
@ -252,10 +252,10 @@ extern "C"{
|
||||||
|
|
||||||
// View manipulation
|
// View manipulation
|
||||||
typedef GET_VIEW_MAX_INDEX_SIG(Get_View_Max_Index_Function);
|
typedef GET_VIEW_MAX_INDEX_SIG(Get_View_Max_Index_Function);
|
||||||
typedef GET_FILE_VIEW_SIG(Get_File_View_Function);
|
typedef GET_VIEW_SIG(Get_View_Function);
|
||||||
typedef GET_ACTIVE_FILE_VIEW_SIG(Get_Active_File_View_Function);
|
typedef GET_ACTIVE_VIEW_SIG(Get_Active_View_Function);
|
||||||
|
|
||||||
typedef REFRESH_FILE_VIEW_SIG(Refresh_File_View_Function);
|
typedef REFRESH_VIEW_SIG(Refresh_View_Function);
|
||||||
typedef VIEW_SET_CURSOR_SIG(View_Set_Cursor_Function);
|
typedef VIEW_SET_CURSOR_SIG(View_Set_Cursor_Function);
|
||||||
typedef VIEW_SET_MARK_SIG(View_Set_Mark_Function);
|
typedef VIEW_SET_MARK_SIG(View_Set_Mark_Function);
|
||||||
typedef VIEW_SET_HIGHLIGHT_SIG(View_Set_Highlight_Function);
|
typedef VIEW_SET_HIGHLIGHT_SIG(View_Set_Highlight_Function);
|
||||||
|
@ -302,10 +302,10 @@ struct Application_Links{
|
||||||
|
|
||||||
// View manipulation
|
// View manipulation
|
||||||
Get_View_Max_Index_Function *get_view_max_index;
|
Get_View_Max_Index_Function *get_view_max_index;
|
||||||
Get_File_View_Function *get_file_view;
|
Get_View_Function *get_view;
|
||||||
Get_Active_File_View_Function *get_active_file_view;
|
Get_Active_View_Function *get_active_view;
|
||||||
|
|
||||||
Refresh_File_View_Function *refresh_file_view;
|
Refresh_View_Function *refresh_view;
|
||||||
View_Set_Cursor_Function *view_set_cursor;
|
View_Set_Cursor_Function *view_set_cursor;
|
||||||
View_Set_Mark_Function *view_set_mark;
|
View_Set_Mark_Function *view_set_mark;
|
||||||
View_Set_Highlight_Function *view_set_highlight;
|
View_Set_Highlight_Function *view_set_highlight;
|
||||||
|
|
|
@ -216,7 +216,7 @@ push_directory(Application_Links *app){
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
inline Range
|
inline Range
|
||||||
get_range(File_View_Summary *view){
|
get_range(View_Summary *view){
|
||||||
Range range;
|
Range range;
|
||||||
range = make_range(view->cursor.pos, view->mark.pos);
|
range = make_range(view->cursor.pos, view->mark.pos);
|
||||||
return(range);
|
return(range);
|
||||||
|
@ -236,8 +236,8 @@ exec_command(Application_Links *app, Custom_Command_Function *func){
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
active_view_to_line(Application_Links *app, int line_number){
|
active_view_to_line(Application_Links *app, int line_number){
|
||||||
File_View_Summary view;
|
View_Summary view;
|
||||||
view = app->get_active_file_view(app);
|
view = app->get_active_view(app);
|
||||||
|
|
||||||
// NOTE(allen|a3.4.4): We don't have to worry about whether this is a valid line number.
|
// NOTE(allen|a3.4.4): We don't have to worry about whether this is a valid line number.
|
||||||
// When it's not possible to place a cursor at the position for whatever reason it will set the
|
// When it's not possible to place a cursor at the position for whatever reason it will set the
|
||||||
|
|
316
4ed.cpp
316
4ed.cpp
|
@ -177,7 +177,6 @@ globalvar Application_Links app_links;
|
||||||
#define USE_MEM(n) Mem_Options *n = command->mem
|
#define USE_MEM(n) Mem_Options *n = command->mem
|
||||||
#define USE_PANEL(n) Panel *n = command->panel
|
#define USE_PANEL(n) Panel *n = command->panel
|
||||||
#define USE_VIEW(n) View *n = command->view
|
#define USE_VIEW(n) View *n = command->view
|
||||||
#define USE_FILE_VIEW(n) File_View *n = view_to_file_view(command->view)
|
|
||||||
#define USE_FILE(n,v) Editing_File *n = 0; if (v) { (n) = (v)->file; }
|
#define USE_FILE(n,v) Editing_File *n = 0; if (v) { (n) = (v)->file; }
|
||||||
#define USE_WORKING_SET(n) Working_Set *n = command->working_set
|
#define USE_WORKING_SET(n) Working_Set *n = command->working_set
|
||||||
#define USE_LAYOUT(n) Editing_Layout *n = command->layout
|
#define USE_LAYOUT(n) Editing_Layout *n = command->layout
|
||||||
|
@ -189,9 +188,7 @@ globalvar Application_Links app_links;
|
||||||
#define USE_EXCHANGE(n) Exchange *n = command->exchange
|
#define USE_EXCHANGE(n) Exchange *n = command->exchange
|
||||||
#define USE_FONT_SET(n) Font_Set *n = command->vars->font_set;
|
#define USE_FONT_SET(n) Font_Set *n = command->vars->font_set;
|
||||||
|
|
||||||
#define REQ_VIEW(n) View *n = command->view; if (!n) return
|
#define REQ_OPEN_VIEW(n) View *n = command->view; if (n->locked) return
|
||||||
#define REQ_FILE_VIEW(n) File_View *n = view_to_file_view(command->view); if (!n) return
|
|
||||||
#define REQ_OPEN_FILE_VIEW(n) File_View *n = view_to_file_view(command->view); if (!n || n->locked) return
|
|
||||||
#define REQ_FILE_HISTORY(n,v) Editing_File *n = (v)->file; if (!n || !buffer_good(&n->state.buffer) || n->state.is_dummy || !n->state.undo.undo.edits) return
|
#define REQ_FILE_HISTORY(n,v) Editing_File *n = (v)->file; if (!n || !buffer_good(&n->state.buffer) || n->state.is_dummy || !n->state.undo.undo.edits) return
|
||||||
#define REQ_FILE_LOADING(n,v) Editing_File *n = (v)->file; if (!n || n->state.is_dummy) return
|
#define REQ_FILE_LOADING(n,v) Editing_File *n = (v)->file; if (!n || n->state.is_dummy) return
|
||||||
#define REQ_FILE(n,v) Editing_File *n = (v)->file; if (!n || !buffer_good(&n->state.buffer) || n->state.is_dummy) return
|
#define REQ_FILE(n,v) Editing_File *n = (v)->file; if (!n || !buffer_good(&n->state.buffer) || n->state.is_dummy) return
|
||||||
|
@ -242,7 +239,7 @@ param_stack_end(Partition *part){
|
||||||
return (Command_Parameter*)((char*)part->base + part->pos);
|
return (Command_Parameter*)((char*)part->base + part->pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal File_View*
|
internal View*
|
||||||
panel_make_empty(System_Functions *system, Exchange *exchange,
|
panel_make_empty(System_Functions *system, Exchange *exchange,
|
||||||
App_Vars *vars, Style *style, Style_Font *global_font, Panel *panel){
|
App_Vars *vars, Style *style, Style_Font *global_font, Panel *panel){
|
||||||
|
|
||||||
|
@ -251,7 +248,7 @@ panel_make_empty(System_Functions *system, Exchange *exchange,
|
||||||
Working_Set *working_set = &vars->working_set;
|
Working_Set *working_set = &vars->working_set;
|
||||||
Delay *delay = &vars->delay1;
|
Delay *delay = &vars->delay1;
|
||||||
|
|
||||||
File_View *file_view;
|
View *file_view;
|
||||||
View_And_ID new_view;
|
View_And_ID new_view;
|
||||||
|
|
||||||
Assert(panel->view == 0);
|
Assert(panel->view == 0);
|
||||||
|
@ -273,7 +270,7 @@ COMMAND_DECL(null){
|
||||||
|
|
||||||
COMMAND_DECL(write_character){
|
COMMAND_DECL(write_character){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_OPEN_FILE_VIEW(view);
|
REQ_OPEN_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
USE_LAYOUT(layout);
|
USE_LAYOUT(layout);
|
||||||
USE_MEM(mem);
|
USE_MEM(mem);
|
||||||
|
@ -292,7 +289,7 @@ COMMAND_DECL(write_character){
|
||||||
|
|
||||||
COMMAND_DECL(seek_whitespace_right){
|
COMMAND_DECL(seek_whitespace_right){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
|
|
||||||
i32 pos = buffer_seek_whitespace_right(&file->state.buffer, view->cursor.pos);
|
i32 pos = buffer_seek_whitespace_right(&file->state.buffer, view->cursor.pos);
|
||||||
|
@ -301,7 +298,7 @@ COMMAND_DECL(seek_whitespace_right){
|
||||||
|
|
||||||
COMMAND_DECL(seek_whitespace_left){
|
COMMAND_DECL(seek_whitespace_left){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
|
|
||||||
i32 pos = buffer_seek_whitespace_left(&file->state.buffer, view->cursor.pos);
|
i32 pos = buffer_seek_whitespace_left(&file->state.buffer, view->cursor.pos);
|
||||||
|
@ -310,7 +307,7 @@ COMMAND_DECL(seek_whitespace_left){
|
||||||
|
|
||||||
COMMAND_DECL(seek_whitespace_up){
|
COMMAND_DECL(seek_whitespace_up){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
|
|
||||||
i32 pos = buffer_seek_whitespace_up(&file->state.buffer, view->cursor.pos);
|
i32 pos = buffer_seek_whitespace_up(&file->state.buffer, view->cursor.pos);
|
||||||
|
@ -319,7 +316,7 @@ COMMAND_DECL(seek_whitespace_up){
|
||||||
|
|
||||||
COMMAND_DECL(seek_whitespace_down){
|
COMMAND_DECL(seek_whitespace_down){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
|
|
||||||
i32 pos = buffer_seek_whitespace_down(&file->state.buffer, view->cursor.pos);
|
i32 pos = buffer_seek_whitespace_down(&file->state.buffer, view->cursor.pos);
|
||||||
|
@ -357,7 +354,7 @@ seek_token_right(Cpp_Token_Stack *tokens, i32 pos){
|
||||||
|
|
||||||
COMMAND_DECL(seek_token_left){
|
COMMAND_DECL(seek_token_left){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
|
|
||||||
if (file->state.tokens_complete){
|
if (file->state.tokens_complete){
|
||||||
|
@ -368,7 +365,7 @@ COMMAND_DECL(seek_token_left){
|
||||||
|
|
||||||
COMMAND_DECL(seek_token_right){
|
COMMAND_DECL(seek_token_right){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
|
|
||||||
if (file->state.tokens_complete){
|
if (file->state.tokens_complete){
|
||||||
|
@ -379,7 +376,7 @@ COMMAND_DECL(seek_token_right){
|
||||||
|
|
||||||
COMMAND_DECL(seek_white_or_token_right){
|
COMMAND_DECL(seek_white_or_token_right){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
|
|
||||||
i32 token_pos, white_pos;
|
i32 token_pos, white_pos;
|
||||||
|
@ -395,7 +392,7 @@ COMMAND_DECL(seek_white_or_token_right){
|
||||||
|
|
||||||
COMMAND_DECL(seek_white_or_token_left){
|
COMMAND_DECL(seek_white_or_token_left){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
|
|
||||||
i32 token_pos, white_pos;
|
i32 token_pos, white_pos;
|
||||||
|
@ -411,7 +408,7 @@ COMMAND_DECL(seek_white_or_token_left){
|
||||||
|
|
||||||
COMMAND_DECL(seek_alphanumeric_right){
|
COMMAND_DECL(seek_alphanumeric_right){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
|
|
||||||
i32 pos = buffer_seek_alphanumeric_right(&file->state.buffer, view->cursor.pos);
|
i32 pos = buffer_seek_alphanumeric_right(&file->state.buffer, view->cursor.pos);
|
||||||
|
@ -420,7 +417,7 @@ COMMAND_DECL(seek_alphanumeric_right){
|
||||||
|
|
||||||
COMMAND_DECL(seek_alphanumeric_left){
|
COMMAND_DECL(seek_alphanumeric_left){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
|
|
||||||
i32 pos = buffer_seek_alphanumeric_left(&file->state.buffer, view->cursor.pos);
|
i32 pos = buffer_seek_alphanumeric_left(&file->state.buffer, view->cursor.pos);
|
||||||
|
@ -429,7 +426,7 @@ COMMAND_DECL(seek_alphanumeric_left){
|
||||||
|
|
||||||
COMMAND_DECL(seek_alphanumeric_or_camel_right){
|
COMMAND_DECL(seek_alphanumeric_or_camel_right){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
|
|
||||||
i32 pos = buffer_seek_alphanumeric_or_camel_right(&file->state.buffer, view->cursor.pos);
|
i32 pos = buffer_seek_alphanumeric_or_camel_right(&file->state.buffer, view->cursor.pos);
|
||||||
|
@ -438,7 +435,7 @@ COMMAND_DECL(seek_alphanumeric_or_camel_right){
|
||||||
|
|
||||||
COMMAND_DECL(seek_alphanumeric_or_camel_left){
|
COMMAND_DECL(seek_alphanumeric_or_camel_left){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
|
|
||||||
i32 pos = buffer_seek_alphanumeric_or_camel_left(&file->state.buffer, view->cursor.pos);
|
i32 pos = buffer_seek_alphanumeric_or_camel_left(&file->state.buffer, view->cursor.pos);
|
||||||
|
@ -447,7 +444,7 @@ COMMAND_DECL(seek_alphanumeric_or_camel_left){
|
||||||
|
|
||||||
COMMAND_DECL(word_complete){
|
COMMAND_DECL(word_complete){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
USE_LAYOUT(layout);
|
USE_LAYOUT(layout);
|
||||||
USE_MEM(mem);
|
USE_MEM(mem);
|
||||||
|
@ -603,7 +600,7 @@ COMMAND_DECL(word_complete){
|
||||||
|
|
||||||
COMMAND_DECL(set_mark){
|
COMMAND_DECL(set_mark){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
|
|
||||||
view->mark = (i32)view->cursor.pos;
|
view->mark = (i32)view->cursor.pos;
|
||||||
|
@ -611,7 +608,7 @@ COMMAND_DECL(set_mark){
|
||||||
|
|
||||||
COMMAND_DECL(copy){
|
COMMAND_DECL(copy){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
USE_WORKING_SET(working_set);
|
USE_WORKING_SET(working_set);
|
||||||
USE_MEM(mem);
|
USE_MEM(mem);
|
||||||
|
@ -647,7 +644,7 @@ COMMAND_DECL(copy){
|
||||||
|
|
||||||
COMMAND_DECL(cut){
|
COMMAND_DECL(cut){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_OPEN_FILE_VIEW(view);
|
REQ_OPEN_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
USE_WORKING_SET(working_set);
|
USE_WORKING_SET(working_set);
|
||||||
USE_LAYOUT(layout);
|
USE_LAYOUT(layout);
|
||||||
|
@ -690,7 +687,7 @@ COMMAND_DECL(cut){
|
||||||
|
|
||||||
COMMAND_DECL(paste){
|
COMMAND_DECL(paste){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_OPEN_FILE_VIEW(view);
|
REQ_OPEN_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
USE_WORKING_SET(working_set);
|
USE_WORKING_SET(working_set);
|
||||||
USE_LAYOUT(layout);
|
USE_LAYOUT(layout);
|
||||||
|
@ -698,7 +695,7 @@ COMMAND_DECL(paste){
|
||||||
|
|
||||||
Panel *panel, *used_panels;
|
Panel *panel, *used_panels;
|
||||||
String *src;
|
String *src;
|
||||||
File_View *current_view;
|
View *current_view;
|
||||||
i32 pos_left, next_cursor_pos;
|
i32 pos_left, next_cursor_pos;
|
||||||
|
|
||||||
if (working_set->clipboard_size > 0){
|
if (working_set->clipboard_size > 0){
|
||||||
|
@ -715,7 +712,7 @@ COMMAND_DECL(paste){
|
||||||
|
|
||||||
used_panels = &layout->used_sentinel;
|
used_panels = &layout->used_sentinel;
|
||||||
for (dll_items(panel, used_panels)){
|
for (dll_items(panel, used_panels)){
|
||||||
current_view = view_to_file_view(panel->view);
|
current_view = panel->view;
|
||||||
|
|
||||||
if (current_view->file == file){
|
if (current_view->file == file){
|
||||||
view_post_paste_effect(current_view, 20, pos_left, src->size,
|
view_post_paste_effect(current_view, 20, pos_left, src->size,
|
||||||
|
@ -727,7 +724,7 @@ COMMAND_DECL(paste){
|
||||||
|
|
||||||
COMMAND_DECL(paste_next){
|
COMMAND_DECL(paste_next){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_OPEN_FILE_VIEW(view);
|
REQ_OPEN_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
USE_WORKING_SET(working_set);
|
USE_WORKING_SET(working_set);
|
||||||
USE_LAYOUT(layout);
|
USE_LAYOUT(layout);
|
||||||
|
@ -750,7 +747,7 @@ COMMAND_DECL(paste_next){
|
||||||
|
|
||||||
used_panels = &layout->used_sentinel;
|
used_panels = &layout->used_sentinel;
|
||||||
for (dll_items(panel, used_panels)){
|
for (dll_items(panel, used_panels)){
|
||||||
File_View *current_view = view_to_file_view(panel->view);
|
View *current_view = panel->view;
|
||||||
|
|
||||||
if (current_view->file == file){
|
if (current_view->file == file){
|
||||||
view_post_paste_effect(current_view, 20, range.start, src->size,
|
view_post_paste_effect(current_view, 20, range.start, src->size,
|
||||||
|
@ -765,7 +762,7 @@ COMMAND_DECL(paste_next){
|
||||||
|
|
||||||
COMMAND_DECL(delete_range){
|
COMMAND_DECL(delete_range){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_OPEN_FILE_VIEW(view);
|
REQ_OPEN_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
USE_LAYOUT(layout);
|
USE_LAYOUT(layout);
|
||||||
USE_MEM(mem);
|
USE_MEM(mem);
|
||||||
|
@ -782,7 +779,7 @@ COMMAND_DECL(delete_range){
|
||||||
|
|
||||||
COMMAND_DECL(timeline_scrub){
|
COMMAND_DECL(timeline_scrub){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE_HISTORY(file, view);
|
REQ_FILE_HISTORY(file, view);
|
||||||
|
|
||||||
view_set_widget(view, FWIDG_TIMELINES);
|
view_set_widget(view, FWIDG_TIMELINES);
|
||||||
|
@ -792,7 +789,7 @@ COMMAND_DECL(timeline_scrub){
|
||||||
|
|
||||||
COMMAND_DECL(undo){
|
COMMAND_DECL(undo){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE_HISTORY(file, view);
|
REQ_FILE_HISTORY(file, view);
|
||||||
USE_LAYOUT(layout);
|
USE_LAYOUT(layout);
|
||||||
USE_MEM(mem);
|
USE_MEM(mem);
|
||||||
|
@ -802,7 +799,7 @@ COMMAND_DECL(undo){
|
||||||
|
|
||||||
COMMAND_DECL(redo){
|
COMMAND_DECL(redo){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE_HISTORY(file, view);
|
REQ_FILE_HISTORY(file, view);
|
||||||
USE_LAYOUT(layout);
|
USE_LAYOUT(layout);
|
||||||
USE_MEM(mem);
|
USE_MEM(mem);
|
||||||
|
@ -812,7 +809,7 @@ COMMAND_DECL(redo){
|
||||||
|
|
||||||
COMMAND_DECL(history_backward){
|
COMMAND_DECL(history_backward){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE_HISTORY(file, view);
|
REQ_FILE_HISTORY(file, view);
|
||||||
USE_LAYOUT(layout);
|
USE_LAYOUT(layout);
|
||||||
USE_MEM(mem);
|
USE_MEM(mem);
|
||||||
|
@ -822,7 +819,7 @@ COMMAND_DECL(history_backward){
|
||||||
|
|
||||||
COMMAND_DECL(history_forward){
|
COMMAND_DECL(history_forward){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE_HISTORY(file, view);
|
REQ_FILE_HISTORY(file, view);
|
||||||
USE_LAYOUT(layout);
|
USE_LAYOUT(layout);
|
||||||
USE_MEM(mem);
|
USE_MEM(mem);
|
||||||
|
@ -833,7 +830,7 @@ COMMAND_DECL(history_forward){
|
||||||
#if UseFileHistoryDump
|
#if UseFileHistoryDump
|
||||||
COMMAND_DECL(save_history){
|
COMMAND_DECL(save_history){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
USE_MEM(mem);
|
USE_MEM(mem);
|
||||||
|
|
||||||
|
@ -843,10 +840,10 @@ COMMAND_DECL(save_history){
|
||||||
|
|
||||||
COMMAND_DECL(interactive_new){
|
COMMAND_DECL(interactive_new){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
USE_FILE_VIEW(fview);
|
USE_VIEW(view);
|
||||||
USE_VARS(vars);
|
USE_VARS(vars);
|
||||||
|
|
||||||
view_show_interactive(system, fview, &vars->map_ui,
|
view_show_interactive(system, view, &vars->map_ui,
|
||||||
IAct_New, IInt_Sys_File_List, make_lit_string("New: "));
|
IAct_New, IInt_Sys_File_List, make_lit_string("New: "));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -936,9 +933,7 @@ COMMAND_DECL(interactive_open){
|
||||||
View *view = panel->view;
|
View *view = panel->view;
|
||||||
Assert(view);
|
Assert(view);
|
||||||
|
|
||||||
File_View *fview = view_to_file_view(view);
|
view_show_interactive(system, view, &vars->map_ui,
|
||||||
|
|
||||||
view_show_interactive(system, fview, &vars->map_ui,
|
|
||||||
IAct_Open, IInt_Sys_File_List, make_lit_string("Open: "));
|
IAct_Open, IInt_Sys_File_List, make_lit_string("Open: "));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -957,7 +952,7 @@ view_file_in_panel(Command_Data *cmd, Panel *panel, Editing_File *file){
|
||||||
Partition old_part;
|
Partition old_part;
|
||||||
Temp_Memory temp;
|
Temp_Memory temp;
|
||||||
View *old_view;
|
View *old_view;
|
||||||
File_View *file_view;
|
View *file_view;
|
||||||
|
|
||||||
file_view = file_view_init(panel->view, layout, working_set, delay,
|
file_view = file_view_init(panel->view, layout, working_set, delay,
|
||||||
&vars->settings, &vars->hot_directory, mem, &vars->styles);
|
&vars->settings, &vars->hot_directory, mem, &vars->styles);
|
||||||
|
@ -985,7 +980,7 @@ view_file_in_panel(Command_Data *cmd, Panel *panel, Editing_File *file){
|
||||||
// the cursor position correct
|
// the cursor position correct
|
||||||
COMMAND_DECL(reopen){
|
COMMAND_DECL(reopen){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
USE_EXCHANGE(exchange);
|
USE_EXCHANGE(exchange);
|
||||||
USE_WORKING_SET(working_set);
|
USE_WORKING_SET(working_set);
|
||||||
|
@ -1010,7 +1005,7 @@ COMMAND_DECL(reopen){
|
||||||
|
|
||||||
COMMAND_DECL(save){
|
COMMAND_DECL(save){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
USE_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
USE_FILE(file, view);
|
USE_FILE(file, view);
|
||||||
USE_DELAY(delay);
|
USE_DELAY(delay);
|
||||||
USE_WORKING_SET(working_set);
|
USE_WORKING_SET(working_set);
|
||||||
|
@ -1061,7 +1056,7 @@ COMMAND_DECL(save){
|
||||||
|
|
||||||
COMMAND_DECL(interactive_save_as){
|
COMMAND_DECL(interactive_save_as){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
USE_FILE_VIEW(fview);
|
USE_VIEW(fview);
|
||||||
USE_VARS(vars);
|
USE_VARS(vars);
|
||||||
|
|
||||||
view_show_interactive(system, fview, &vars->map_ui,
|
view_show_interactive(system, fview, &vars->map_ui,
|
||||||
|
@ -1082,7 +1077,7 @@ COMMAND_DECL(change_active_panel){
|
||||||
|
|
||||||
COMMAND_DECL(interactive_switch_buffer){
|
COMMAND_DECL(interactive_switch_buffer){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
USE_FILE_VIEW(fview);
|
USE_VIEW(fview);
|
||||||
USE_VARS(vars);
|
USE_VARS(vars);
|
||||||
|
|
||||||
view_show_interactive(system, fview, &vars->map_ui,
|
view_show_interactive(system, fview, &vars->map_ui,
|
||||||
|
@ -1091,7 +1086,7 @@ COMMAND_DECL(interactive_switch_buffer){
|
||||||
|
|
||||||
COMMAND_DECL(interactive_kill_buffer){
|
COMMAND_DECL(interactive_kill_buffer){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
USE_FILE_VIEW(fview);
|
USE_VIEW(fview);
|
||||||
USE_VARS(vars);
|
USE_VARS(vars);
|
||||||
|
|
||||||
view_show_interactive(system, fview, &vars->map_ui,
|
view_show_interactive(system, fview, &vars->map_ui,
|
||||||
|
@ -1100,16 +1095,16 @@ COMMAND_DECL(interactive_kill_buffer){
|
||||||
|
|
||||||
COMMAND_DECL(kill_buffer){
|
COMMAND_DECL(kill_buffer){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
USE_DELAY(delay);
|
USE_DELAY(delay);
|
||||||
|
|
||||||
delayed_try_kill(delay, file->name.live_name, view->view_base.panel);
|
delayed_try_kill(delay, file->name.live_name, view->panel);
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_DECL(toggle_line_wrap){
|
COMMAND_DECL(toggle_line_wrap){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
|
|
||||||
Relative_Scrolling scrolling = view_get_relative_scrolling(view);
|
Relative_Scrolling scrolling = view_get_relative_scrolling(view);
|
||||||
|
@ -1133,14 +1128,14 @@ COMMAND_DECL(toggle_line_wrap){
|
||||||
|
|
||||||
COMMAND_DECL(toggle_show_whitespace){
|
COMMAND_DECL(toggle_show_whitespace){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
view->show_whitespace = !view->show_whitespace;
|
view->show_whitespace = !view->show_whitespace;
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_DECL(toggle_tokens){
|
COMMAND_DECL(toggle_tokens){
|
||||||
#if BUFFER_EXPERIMENT_SCALPEL <= 0
|
#if BUFFER_EXPERIMENT_SCALPEL <= 0
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
USE_MEM(mem);
|
USE_MEM(mem);
|
||||||
|
|
||||||
|
@ -1155,7 +1150,7 @@ COMMAND_DECL(toggle_tokens){
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
case_change_range(System_Functions *system,
|
case_change_range(System_Functions *system,
|
||||||
Mem_Options *mem, File_View *view, Editing_File *file,
|
Mem_Options *mem, View *view, Editing_File *file,
|
||||||
u8 a, u8 z, u8 char_delta){
|
u8 a, u8 z, u8 char_delta){
|
||||||
#if BUFFER_EXPERIMENT_SCALPEL <= 0
|
#if BUFFER_EXPERIMENT_SCALPEL <= 0
|
||||||
Range range = make_range(view->cursor.pos, view->mark);
|
Range range = make_range(view->cursor.pos, view->mark);
|
||||||
|
@ -1186,7 +1181,7 @@ case_change_range(System_Functions *system,
|
||||||
|
|
||||||
COMMAND_DECL(to_uppercase){
|
COMMAND_DECL(to_uppercase){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
USE_MEM(mem);
|
USE_MEM(mem);
|
||||||
case_change_range(system, mem, view, file, 'a', 'z', (u8)('A' - 'a'));
|
case_change_range(system, mem, view, file, 'a', 'z', (u8)('A' - 'a'));
|
||||||
|
@ -1194,7 +1189,7 @@ COMMAND_DECL(to_uppercase){
|
||||||
|
|
||||||
COMMAND_DECL(to_lowercase){
|
COMMAND_DECL(to_lowercase){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
USE_MEM(mem);
|
USE_MEM(mem);
|
||||||
case_change_range(system, mem, view, file, 'A', 'Z', (u8)('a' - 'A'));
|
case_change_range(system, mem, view, file, 'A', 'Z', (u8)('a' - 'A'));
|
||||||
|
@ -1202,7 +1197,7 @@ COMMAND_DECL(to_lowercase){
|
||||||
|
|
||||||
COMMAND_DECL(clean_all_lines){
|
COMMAND_DECL(clean_all_lines){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
USE_LAYOUT(layout);
|
USE_LAYOUT(layout);
|
||||||
USE_MEM(mem);
|
USE_MEM(mem);
|
||||||
|
@ -1212,7 +1207,7 @@ COMMAND_DECL(clean_all_lines){
|
||||||
|
|
||||||
COMMAND_DECL(eol_dosify){
|
COMMAND_DECL(eol_dosify){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
|
|
||||||
file->settings.dos_write_mode = 1;
|
file->settings.dos_write_mode = 1;
|
||||||
|
@ -1221,7 +1216,7 @@ COMMAND_DECL(eol_dosify){
|
||||||
|
|
||||||
COMMAND_DECL(eol_nixify){
|
COMMAND_DECL(eol_nixify){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
|
|
||||||
file->settings.dos_write_mode = 0;
|
file->settings.dos_write_mode = 0;
|
||||||
|
@ -1230,7 +1225,7 @@ COMMAND_DECL(eol_nixify){
|
||||||
|
|
||||||
COMMAND_DECL(auto_tab_range){
|
COMMAND_DECL(auto_tab_range){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
USE_LAYOUT(layout);
|
USE_LAYOUT(layout);
|
||||||
USE_MEM(mem);
|
USE_MEM(mem);
|
||||||
|
@ -1271,7 +1266,7 @@ COMMAND_DECL(auto_tab_range){
|
||||||
|
|
||||||
COMMAND_DECL(auto_tab_line_at_cursor){
|
COMMAND_DECL(auto_tab_line_at_cursor){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
USE_LAYOUT(layout);
|
USE_LAYOUT(layout);
|
||||||
USE_MEM(mem);
|
USE_MEM(mem);
|
||||||
|
@ -1297,7 +1292,7 @@ COMMAND_DECL(auto_tab_line_at_cursor){
|
||||||
|
|
||||||
COMMAND_DECL(auto_tab_whole_file){
|
COMMAND_DECL(auto_tab_whole_file){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
USE_LAYOUT(layout);
|
USE_LAYOUT(layout);
|
||||||
USE_MEM(mem);
|
USE_MEM(mem);
|
||||||
|
@ -1450,7 +1445,7 @@ COMMAND_DECL(close_panel){
|
||||||
|
|
||||||
COMMAND_DECL(move_left){
|
COMMAND_DECL(move_left){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
|
|
||||||
i32 pos = view->cursor.pos;
|
i32 pos = view->cursor.pos;
|
||||||
|
@ -1460,7 +1455,7 @@ COMMAND_DECL(move_left){
|
||||||
|
|
||||||
COMMAND_DECL(move_right){
|
COMMAND_DECL(move_right){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
|
|
||||||
i32 size = buffer_size(&file->state.buffer);
|
i32 size = buffer_size(&file->state.buffer);
|
||||||
|
@ -1471,7 +1466,7 @@ COMMAND_DECL(move_right){
|
||||||
|
|
||||||
COMMAND_DECL(delete){
|
COMMAND_DECL(delete){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_OPEN_FILE_VIEW(view);
|
REQ_OPEN_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
USE_LAYOUT(layout);
|
USE_LAYOUT(layout);
|
||||||
USE_MEM(mem);
|
USE_MEM(mem);
|
||||||
|
@ -1493,7 +1488,7 @@ COMMAND_DECL(delete){
|
||||||
|
|
||||||
COMMAND_DECL(backspace){
|
COMMAND_DECL(backspace){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_OPEN_FILE_VIEW(view);
|
REQ_OPEN_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
USE_LAYOUT(layout);
|
USE_LAYOUT(layout);
|
||||||
USE_MEM(mem);
|
USE_MEM(mem);
|
||||||
|
@ -1516,7 +1511,7 @@ COMMAND_DECL(backspace){
|
||||||
|
|
||||||
COMMAND_DECL(move_up){
|
COMMAND_DECL(move_up){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
USE_FONT_SET(font_set);
|
USE_FONT_SET(font_set);
|
||||||
USE_FONT(global_font);
|
USE_FONT(global_font);
|
||||||
|
@ -1532,7 +1527,7 @@ COMMAND_DECL(move_up){
|
||||||
|
|
||||||
COMMAND_DECL(move_down){
|
COMMAND_DECL(move_down){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
USE_FONT_SET(font_set);
|
USE_FONT_SET(font_set);
|
||||||
USE_FONT(global_font);
|
USE_FONT(global_font);
|
||||||
|
@ -1546,7 +1541,7 @@ COMMAND_DECL(move_down){
|
||||||
|
|
||||||
COMMAND_DECL(seek_end_of_line){
|
COMMAND_DECL(seek_end_of_line){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
|
|
||||||
i32 pos = view_find_end_of_line(view, view->cursor.pos);
|
i32 pos = view_find_end_of_line(view, view->cursor.pos);
|
||||||
|
@ -1555,7 +1550,7 @@ COMMAND_DECL(seek_end_of_line){
|
||||||
|
|
||||||
COMMAND_DECL(seek_beginning_of_line){
|
COMMAND_DECL(seek_beginning_of_line){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
|
|
||||||
i32 pos = view_find_beginning_of_line(view, view->cursor.pos);
|
i32 pos = view_find_beginning_of_line(view, view->cursor.pos);
|
||||||
|
@ -1564,7 +1559,7 @@ COMMAND_DECL(seek_beginning_of_line){
|
||||||
|
|
||||||
COMMAND_DECL(page_down){
|
COMMAND_DECL(page_down){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
|
|
||||||
f32 height = view_compute_height(view);
|
f32 height = view_compute_height(view);
|
||||||
f32 max_target_y = view_compute_max_target_y(view);
|
f32 max_target_y = view_compute_max_target_y(view);
|
||||||
|
@ -1578,7 +1573,7 @@ COMMAND_DECL(page_down){
|
||||||
|
|
||||||
COMMAND_DECL(page_up){
|
COMMAND_DECL(page_up){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
|
|
||||||
f32 height = view_compute_height(view);
|
f32 height = view_compute_height(view);
|
||||||
|
|
||||||
|
@ -1591,7 +1586,7 @@ COMMAND_DECL(page_up){
|
||||||
|
|
||||||
COMMAND_DECL(open_color_tweaker){
|
COMMAND_DECL(open_color_tweaker){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
USE_FILE_VIEW(fview);
|
USE_VIEW(fview);
|
||||||
USE_VARS(vars);
|
USE_VARS(vars);
|
||||||
|
|
||||||
view_show_theme(fview, &vars->map_ui);
|
view_show_theme(fview, &vars->map_ui);
|
||||||
|
@ -1599,7 +1594,7 @@ COMMAND_DECL(open_color_tweaker){
|
||||||
|
|
||||||
COMMAND_DECL(open_config){
|
COMMAND_DECL(open_config){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
USE_FILE_VIEW(fview);
|
USE_VIEW(fview);
|
||||||
USE_VARS(vars);
|
USE_VARS(vars);
|
||||||
|
|
||||||
view_show_config(fview, &vars->map_ui);
|
view_show_config(fview, &vars->map_ui);
|
||||||
|
@ -1607,7 +1602,7 @@ COMMAND_DECL(open_config){
|
||||||
|
|
||||||
COMMAND_DECL(open_menu){
|
COMMAND_DECL(open_menu){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
USE_FILE_VIEW(fview);
|
USE_VIEW(fview);
|
||||||
USE_VARS(vars);
|
USE_VARS(vars);
|
||||||
|
|
||||||
view_show_menu(fview, &vars->map_ui);
|
view_show_menu(fview, &vars->map_ui);
|
||||||
|
@ -1615,20 +1610,19 @@ COMMAND_DECL(open_menu){
|
||||||
|
|
||||||
COMMAND_DECL(close_minor_view){
|
COMMAND_DECL(close_minor_view){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_VIEW(view);
|
USE_VIEW(view);
|
||||||
USE_FILE_VIEW(fview);
|
|
||||||
USE_VARS(vars);
|
USE_VARS(vars);
|
||||||
|
|
||||||
Command_Map *map = &vars->map_top;
|
Command_Map *map = &vars->map_top;
|
||||||
if (fview->file){
|
if (view->file){
|
||||||
map = app_get_map(vars, fview->file->settings.base_map_id);
|
map = app_get_map(vars, view->file->settings.base_map_id);
|
||||||
}
|
}
|
||||||
view_show_file(fview, map);
|
view_show_file(view, map);
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_DECL(cursor_mark_swap){
|
COMMAND_DECL(cursor_mark_swap){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
|
|
||||||
i32 pos = view->cursor.pos;
|
i32 pos = view->cursor.pos;
|
||||||
view_cursor_move(view, view->mark);
|
view_cursor_move(view, view->mark);
|
||||||
|
@ -1642,7 +1636,7 @@ COMMAND_DECL(user_callback){
|
||||||
|
|
||||||
COMMAND_DECL(set_settings){
|
COMMAND_DECL(set_settings){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
REQ_FILE_VIEW(view);
|
USE_VIEW(view);
|
||||||
REQ_FILE_LOADING(file, view);
|
REQ_FILE_LOADING(file, view);
|
||||||
USE_VARS(vars);
|
USE_VARS(vars);
|
||||||
USE_MEM(mem);
|
USE_MEM(mem);
|
||||||
|
@ -1756,8 +1750,8 @@ build(System_Functions *system, Mem_Options *mem,
|
||||||
if (!(flags & CLI_AlwaysBindToView)){
|
if (!(flags & CLI_AlwaysBindToView)){
|
||||||
Panel *panel = layout->panels;
|
Panel *panel = layout->panels;
|
||||||
for (i32 i = 0; i < layout->panel_count; ++i, ++panel){
|
for (i32 i = 0; i < layout->panel_count; ++i, ++panel){
|
||||||
File_View *fview = view_to_file_view(panel->view);
|
View *view = panel->view;
|
||||||
if (fview && fview->file == file){
|
if (view->file == file){
|
||||||
bind_to_new_view = 0;
|
bind_to_new_view = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1902,7 +1896,7 @@ fill_buffer_summary(Buffer_Summary *buffer, Editing_File *file, Working_Set *wor
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
fill_view_summary(File_View_Summary *view, File_View *file_view, Live_Views *live_set, Working_Set *working_set){
|
fill_view_summary(View_Summary *view, View *file_view, Live_Views *live_set, Working_Set *working_set){
|
||||||
view->exists = 1;
|
view->exists = 1;
|
||||||
view->view_id = (int)((char*)file_view - (char*)live_set->views) / live_set->stride;
|
view->view_id = (int)((char*)file_view - (char*)live_set->views) / live_set->stride;
|
||||||
if (file_view->file){
|
if (file_view->file){
|
||||||
|
@ -2006,12 +2000,12 @@ extern "C"{
|
||||||
|
|
||||||
GET_ACTIVE_BUFFER_SIG(external_get_active_buffer){
|
GET_ACTIVE_BUFFER_SIG(external_get_active_buffer){
|
||||||
Command_Data *cmd = (Command_Data*)context->cmd_context;
|
Command_Data *cmd = (Command_Data*)context->cmd_context;
|
||||||
File_View *view;
|
View *view;
|
||||||
Editing_File *file;
|
Editing_File *file;
|
||||||
Working_Set *working_set;
|
Working_Set *working_set;
|
||||||
Buffer_Summary buffer = {};
|
Buffer_Summary buffer = {};
|
||||||
|
|
||||||
view = view_to_file_view(cmd->view);
|
view = cmd->view;
|
||||||
if (view){
|
if (view){
|
||||||
file = view->file;
|
file = view->file;
|
||||||
working_set = cmd->working_set;
|
working_set = cmd->working_set;
|
||||||
|
@ -2213,41 +2207,35 @@ extern "C"{
|
||||||
return(max);
|
return(max);
|
||||||
}
|
}
|
||||||
|
|
||||||
GET_FILE_VIEW_SIG(external_get_file_view){
|
GET_VIEW_SIG(external_get_view){
|
||||||
Command_Data *cmd = (Command_Data*)context->cmd_context;
|
Command_Data *cmd = (Command_Data*)context->cmd_context;
|
||||||
Live_Views *live_set = cmd->live_set;
|
Live_Views *live_set = cmd->live_set;
|
||||||
int max = live_set->max;
|
int max = live_set->max;
|
||||||
View *vptr;
|
View *vptr;
|
||||||
File_View *file_view;
|
View_Summary view = {};
|
||||||
File_View_Summary view = {};
|
|
||||||
|
|
||||||
if (index >= 0 && index < max){
|
if (index >= 0 && index < max){
|
||||||
vptr = (View*)((char*)live_set->views + live_set->stride*index);
|
vptr = (View*)((char*)live_set->views + live_set->stride*index);
|
||||||
file_view = view_to_file_view(vptr);
|
fill_view_summary(&view, vptr, cmd->live_set, cmd->working_set);
|
||||||
if (file_view){
|
|
||||||
fill_view_summary(&view, file_view, cmd->live_set, cmd->working_set);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return(view);
|
return(view);
|
||||||
}
|
}
|
||||||
|
|
||||||
GET_ACTIVE_FILE_VIEW_SIG(external_get_active_file_view){
|
GET_ACTIVE_VIEW_SIG(external_get_active_view){
|
||||||
Command_Data *cmd = (Command_Data*)context->cmd_context;
|
Command_Data *cmd = (Command_Data*)context->cmd_context;
|
||||||
File_View_Summary view = {};
|
View_Summary view = {};
|
||||||
File_View *file_view;
|
View *vptr;
|
||||||
|
|
||||||
file_view = view_to_file_view(cmd->view);
|
vptr = cmd->view;
|
||||||
if (file_view){
|
fill_view_summary(&view, vptr, cmd->live_set, cmd->working_set);
|
||||||
fill_view_summary(&view, file_view, cmd->live_set, cmd->working_set);
|
|
||||||
}
|
|
||||||
|
|
||||||
return(view);
|
return(view);
|
||||||
}
|
}
|
||||||
|
|
||||||
REFRESH_FILE_VIEW_SIG(external_refresh_file_view){
|
REFRESH_VIEW_SIG(external_refresh_view){
|
||||||
int result;
|
int result;
|
||||||
*view = external_get_file_view(context, view->view_id);
|
*view = external_get_view(context, view->view_id);
|
||||||
result = view->exists;
|
result = view->exists;
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
@ -2256,21 +2244,17 @@ extern "C"{
|
||||||
Command_Data *cmd = (Command_Data*)context->cmd_context;
|
Command_Data *cmd = (Command_Data*)context->cmd_context;
|
||||||
Live_Views *live_set;
|
Live_Views *live_set;
|
||||||
View *vptr;
|
View *vptr;
|
||||||
File_View *file_view;
|
|
||||||
int result = 0;
|
int result = 0;
|
||||||
|
|
||||||
if (view->exists){
|
if (view->exists){
|
||||||
live_set = cmd->live_set;
|
live_set = cmd->live_set;
|
||||||
vptr = (View*)((char*)live_set->views + live_set->stride * view->view_id);
|
vptr = (View*)((char*)live_set->views + live_set->stride * view->view_id);
|
||||||
file_view = view_to_file_view(vptr);
|
|
||||||
if (file_view){
|
|
||||||
result = 1;
|
result = 1;
|
||||||
file_view->cursor = view_compute_cursor(file_view, seek);
|
vptr->cursor = view_compute_cursor(vptr, seek);
|
||||||
if (set_preferred_x){
|
if (set_preferred_x){
|
||||||
file_view->preferred_x = view_get_cursor_x(file_view);
|
vptr->preferred_x = view_get_cursor_x(vptr);
|
||||||
}
|
|
||||||
fill_view_summary(view, file_view, cmd->live_set, cmd->working_set);
|
|
||||||
}
|
}
|
||||||
|
fill_view_summary(view, vptr, cmd->live_set, cmd->working_set);
|
||||||
}
|
}
|
||||||
|
|
||||||
return(result);
|
return(result);
|
||||||
|
@ -2280,25 +2264,21 @@ extern "C"{
|
||||||
Command_Data *cmd = (Command_Data*)context->cmd_context;
|
Command_Data *cmd = (Command_Data*)context->cmd_context;
|
||||||
Live_Views *live_set;
|
Live_Views *live_set;
|
||||||
View *vptr;
|
View *vptr;
|
||||||
File_View *file_view;
|
|
||||||
Full_Cursor cursor;
|
Full_Cursor cursor;
|
||||||
int result = 0;
|
int result = 0;
|
||||||
|
|
||||||
if (view->exists){
|
if (view->exists){
|
||||||
live_set = cmd->live_set;
|
live_set = cmd->live_set;
|
||||||
vptr = (View*)((char*)live_set->views + live_set->stride * view->view_id);
|
vptr = (View*)((char*)live_set->views + live_set->stride * view->view_id);
|
||||||
file_view = view_to_file_view(vptr);
|
|
||||||
if (file_view){
|
|
||||||
result = 1;
|
result = 1;
|
||||||
if (seek.type != buffer_seek_pos){
|
if (seek.type != buffer_seek_pos){
|
||||||
cursor = view_compute_cursor(file_view, seek);
|
cursor = view_compute_cursor(vptr, seek);
|
||||||
file_view->mark = cursor.pos;
|
vptr->mark = cursor.pos;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
file_view->mark = seek.pos;
|
vptr->mark = seek.pos;
|
||||||
}
|
|
||||||
fill_view_summary(view, file_view, cmd->live_set, cmd->working_set);
|
|
||||||
}
|
}
|
||||||
|
fill_view_summary(view, vptr, cmd->live_set, cmd->working_set);
|
||||||
}
|
}
|
||||||
|
|
||||||
return(result);
|
return(result);
|
||||||
|
@ -2308,23 +2288,19 @@ extern "C"{
|
||||||
Command_Data *cmd = (Command_Data*)context->cmd_context;
|
Command_Data *cmd = (Command_Data*)context->cmd_context;
|
||||||
Live_Views *live_set;
|
Live_Views *live_set;
|
||||||
View *vptr;
|
View *vptr;
|
||||||
File_View *file_view;
|
|
||||||
int result = 0;
|
int result = 0;
|
||||||
|
|
||||||
if (view->exists){
|
if (view->exists){
|
||||||
live_set = cmd->live_set;
|
live_set = cmd->live_set;
|
||||||
vptr = (View*)((char*)live_set->views + live_set->stride * view->view_id);
|
vptr = (View*)((char*)live_set->views + live_set->stride * view->view_id);
|
||||||
file_view = view_to_file_view(vptr);
|
|
||||||
if (file_view){
|
|
||||||
result = 1;
|
result = 1;
|
||||||
if (turn_on){
|
if (turn_on){
|
||||||
view_set_temp_highlight(file_view, start, end);
|
view_set_temp_highlight(vptr, start, end);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
file_view->show_temp_highlight = 0;
|
vptr->show_temp_highlight = 0;
|
||||||
}
|
|
||||||
fill_view_summary(view, file_view, cmd->live_set, cmd->working_set);
|
|
||||||
}
|
}
|
||||||
|
fill_view_summary(view, vptr, cmd->live_set, cmd->working_set);
|
||||||
}
|
}
|
||||||
|
|
||||||
return(result);
|
return(result);
|
||||||
|
@ -2334,7 +2310,6 @@ extern "C"{
|
||||||
Command_Data *cmd = (Command_Data*)context->cmd_context;
|
Command_Data *cmd = (Command_Data*)context->cmd_context;
|
||||||
Live_Views *live_set;
|
Live_Views *live_set;
|
||||||
View *vptr;
|
View *vptr;
|
||||||
File_View *file_view;
|
|
||||||
Editing_File *file;
|
Editing_File *file;
|
||||||
Working_Set *working_set;
|
Working_Set *working_set;
|
||||||
int max, result = 0;
|
int max, result = 0;
|
||||||
|
@ -2342,20 +2317,17 @@ extern "C"{
|
||||||
if (view->exists){
|
if (view->exists){
|
||||||
live_set = cmd->live_set;
|
live_set = cmd->live_set;
|
||||||
vptr = (View*)((char*)live_set->views + live_set->stride * view->view_id);
|
vptr = (View*)((char*)live_set->views + live_set->stride * view->view_id);
|
||||||
file_view = view_to_file_view(vptr);
|
|
||||||
if (file_view){
|
|
||||||
working_set = cmd->working_set;
|
working_set = cmd->working_set;
|
||||||
max = working_set->file_index_count;
|
max = working_set->file_index_count;
|
||||||
if (buffer_id >= 0 && buffer_id < max){
|
if (buffer_id >= 0 && buffer_id < max){
|
||||||
file = working_set->files + buffer_id;
|
file = working_set->files + buffer_id;
|
||||||
if (!file->state.is_dummy){
|
if (!file->state.is_dummy){
|
||||||
view_set_file(file_view, file, cmd->vars->font_set, cmd->style, cmd->global_font,
|
view_set_file(vptr, file, cmd->vars->font_set, cmd->style, cmd->global_font,
|
||||||
cmd->system, cmd->vars->hooks[hook_open_file], &app_links);
|
cmd->system, cmd->vars->hooks[hook_open_file], &app_links);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fill_view_summary(view, file_view, cmd->live_set, cmd->working_set);
|
fill_view_summary(view, vptr, cmd->live_set, cmd->working_set);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return(result);
|
return(result);
|
||||||
|
@ -2380,15 +2352,11 @@ extern "C"{
|
||||||
Command_Data *cmd = (Command_Data*)context->cmd_context;
|
Command_Data *cmd = (Command_Data*)context->cmd_context;
|
||||||
Query_Slot *slot = 0;
|
Query_Slot *slot = 0;
|
||||||
View *vptr;
|
View *vptr;
|
||||||
File_View *file_view;
|
|
||||||
|
|
||||||
vptr = cmd->view;
|
vptr = cmd->view;
|
||||||
file_view = view_to_file_view(vptr);
|
|
||||||
|
|
||||||
if (file_view){
|
slot = alloc_query_slot(&vptr->query_set);
|
||||||
slot = alloc_query_slot(&file_view->query_set);
|
|
||||||
slot->query_bar = bar;
|
slot->query_bar = bar;
|
||||||
}
|
|
||||||
|
|
||||||
return(slot != 0);
|
return(slot != 0);
|
||||||
}
|
}
|
||||||
|
@ -2396,14 +2364,9 @@ extern "C"{
|
||||||
END_QUERY_BAR_SIG(external_end_query_bar){
|
END_QUERY_BAR_SIG(external_end_query_bar){
|
||||||
Command_Data *cmd = (Command_Data*)context->cmd_context;
|
Command_Data *cmd = (Command_Data*)context->cmd_context;
|
||||||
View *vptr;
|
View *vptr;
|
||||||
File_View *file_view;
|
|
||||||
|
|
||||||
vptr = cmd->view;
|
vptr = cmd->view;
|
||||||
file_view = view_to_file_view(vptr);
|
free_query_slot(&vptr->query_set, bar);
|
||||||
|
|
||||||
if (file_view){
|
|
||||||
free_query_slot(&file_view->query_set, bar);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2417,13 +2380,12 @@ command_caller(Coroutine *coroutine){
|
||||||
Command_In *cmd_in = (Command_In*)coroutine->in;
|
Command_In *cmd_in = (Command_In*)coroutine->in;
|
||||||
Command_Data *cmd = cmd_in->cmd;
|
Command_Data *cmd = cmd_in->cmd;
|
||||||
View *view = cmd->view;
|
View *view = cmd->view;
|
||||||
|
|
||||||
// TODO(allen): this isn't really super awesome, could have issues if
|
// TODO(allen): this isn't really super awesome, could have issues if
|
||||||
// the file view get's change out under us.
|
// the file view get's change out under us.
|
||||||
File_View *fview = view_to_file_view(view);
|
view->next_mode = {};
|
||||||
if (fview) fview->next_mode = {};
|
|
||||||
cmd_in->bind.function(cmd->system, cmd, cmd_in->bind);
|
cmd_in->bind.function(cmd->system, cmd, cmd_in->bind);
|
||||||
fview = view_to_file_view(view);
|
view->mode = view->next_mode;
|
||||||
if (fview) fview->mode = fview->next_mode;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
|
@ -2454,10 +2416,10 @@ app_links_init(System_Functions *system, void *data, int size){
|
||||||
app_links.buffer_replace_range = external_buffer_replace_range;
|
app_links.buffer_replace_range = external_buffer_replace_range;
|
||||||
|
|
||||||
app_links.get_view_max_index = external_get_view_max_index;
|
app_links.get_view_max_index = external_get_view_max_index;
|
||||||
app_links.get_file_view = external_get_file_view;
|
app_links.get_view = external_get_view;
|
||||||
app_links.get_active_file_view = external_get_active_file_view;
|
app_links.get_active_view = external_get_active_view;
|
||||||
|
|
||||||
app_links.refresh_file_view = external_refresh_file_view;
|
app_links.refresh_view = external_refresh_view;
|
||||||
app_links.view_set_cursor = external_view_set_cursor;
|
app_links.view_set_cursor = external_view_set_cursor;
|
||||||
app_links.view_set_mark = external_view_set_mark;
|
app_links.view_set_mark = external_view_set_mark;
|
||||||
app_links.view_set_highlight = external_view_set_highlight;
|
app_links.view_set_highlight = external_view_set_highlight;
|
||||||
|
@ -3026,7 +2988,7 @@ App_Init_Sig(app_init){
|
||||||
View *v = 0;
|
View *v = 0;
|
||||||
i32 i = 0;
|
i32 i = 0;
|
||||||
i32 max = 0;
|
i32 max = 0;
|
||||||
i32 view_size = sizeof(File_View);
|
i32 view_size = sizeof(View);
|
||||||
|
|
||||||
vars->live_set.count = 0;
|
vars->live_set.count = 0;
|
||||||
vars->live_set.max = panel_max_count;
|
vars->live_set.max = panel_max_count;
|
||||||
|
@ -3390,15 +3352,13 @@ App_Step_Sig(app_step){
|
||||||
|
|
||||||
Panel *panel, *used_panels;
|
Panel *panel, *used_panels;
|
||||||
View *view;
|
View *view;
|
||||||
File_View *fview;
|
|
||||||
|
|
||||||
used_panels = &vars->layout.used_sentinel;
|
used_panels = &vars->layout.used_sentinel;
|
||||||
for (dll_items(panel, used_panels)){
|
for (dll_items(panel, used_panels)){
|
||||||
view = panel->view;
|
view = panel->view;
|
||||||
fview = view_to_file_view(view);
|
Assert(view);
|
||||||
Assert(fview);
|
if (view->file == out_file){
|
||||||
if (fview->file == out_file){
|
view_cursor_move(view, new_cursor);
|
||||||
view_cursor_move(fview, new_cursor);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3416,7 +3376,7 @@ App_Step_Sig(app_step){
|
||||||
i32 current_height = target->height;
|
i32 current_height = target->height;
|
||||||
|
|
||||||
Panel *panel, *used_panels;
|
Panel *panel, *used_panels;
|
||||||
File_View *fview;
|
View *view;
|
||||||
|
|
||||||
vars->layout.full_width = current_width;
|
vars->layout.full_width = current_width;
|
||||||
vars->layout.full_height = current_height;
|
vars->layout.full_height = current_height;
|
||||||
|
@ -3426,11 +3386,11 @@ App_Step_Sig(app_step){
|
||||||
|
|
||||||
used_panels = &vars->layout.used_sentinel;
|
used_panels = &vars->layout.used_sentinel;
|
||||||
for (dll_items(panel, used_panels)){
|
for (dll_items(panel, used_panels)){
|
||||||
fview = view_to_file_view(panel->view);
|
view = panel->view;
|
||||||
Assert(fview);
|
Assert(view);
|
||||||
// TODO(allen): All responses to a panel changing size should
|
// TODO(allen): All responses to a panel changing size should
|
||||||
// be handled in the same place.
|
// be handled in the same place.
|
||||||
view_change_size(system, &vars->mem.general, fview);
|
view_change_size(system, &vars->mem.general, view);
|
||||||
}
|
}
|
||||||
|
|
||||||
app_result.redraw = 1;
|
app_result.redraw = 1;
|
||||||
|
@ -3637,9 +3597,8 @@ App_Step_Sig(app_step){
|
||||||
// TOOD(allen): Deduplicate
|
// TOOD(allen): Deduplicate
|
||||||
// TODO(allen): Allow a view to clean up however it wants after a command
|
// TODO(allen): Allow a view to clean up however it wants after a command
|
||||||
// finishes, or after transfering to another view mid command.
|
// finishes, or after transfering to another view mid command.
|
||||||
File_View *fview = view_to_file_view(view);
|
if (view != 0 && vars->command_coroutine == 0){
|
||||||
if (fview != 0 && vars->command_coroutine == 0){
|
init_query_set(&view->query_set);
|
||||||
init_query_set(&fview->query_set);
|
|
||||||
}
|
}
|
||||||
if (vars->command_coroutine == 0) break;
|
if (vars->command_coroutine == 0) break;
|
||||||
}
|
}
|
||||||
|
@ -3703,9 +3662,8 @@ App_Step_Sig(app_step){
|
||||||
// TOOD(allen): Deduplicate
|
// TOOD(allen): Deduplicate
|
||||||
// TODO(allen): Allow a view to clean up however it wants after a command finishes,
|
// TODO(allen): Allow a view to clean up however it wants after a command finishes,
|
||||||
// or after transfering to another view mid command.
|
// or after transfering to another view mid command.
|
||||||
File_View *fview = view_to_file_view(view);
|
if (view != 0 && vars->command_coroutine == 0){
|
||||||
if (fview != 0 && vars->command_coroutine == 0){
|
init_query_set(&view->query_set);
|
||||||
init_query_set(&fview->query_set);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4008,7 +3966,7 @@ App_Step_Sig(app_step){
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ed_file->state.is_dummy){
|
if (!ed_file->state.is_dummy){
|
||||||
for (File_View_Iter iter = file_view_iter_init(&vars->layout, ed_file, 0);
|
for (View_Iter iter = file_view_iter_init(&vars->layout, ed_file, 0);
|
||||||
file_view_iter_good(iter);
|
file_view_iter_good(iter);
|
||||||
iter = file_view_iter_next(iter)){
|
iter = file_view_iter_next(iter)){
|
||||||
view_measure_wraps(system, general, iter.view);
|
view_measure_wraps(system, general, iter.view);
|
||||||
|
@ -4053,7 +4011,6 @@ App_Step_Sig(app_step){
|
||||||
Style *style = &vars->style;
|
Style *style = &vars->style;
|
||||||
Style_Font *global_font = &vars->global_font;
|
Style_Font *global_font = &vars->global_font;
|
||||||
Working_Set *working_set = &vars->working_set;
|
Working_Set *working_set = &vars->working_set;
|
||||||
Live_Views *live_set = &vars->live_set;
|
|
||||||
Mem_Options *mem = &vars->mem;
|
Mem_Options *mem = &vars->mem;
|
||||||
General_Memory *general = &vars->mem.general;
|
General_Memory *general = &vars->mem.general;
|
||||||
|
|
||||||
|
@ -4123,8 +4080,7 @@ App_Step_Sig(app_step){
|
||||||
// TODO(allen): deduplicate
|
// TODO(allen): deduplicate
|
||||||
Editing_File *file = 0;
|
Editing_File *file = 0;
|
||||||
if (panel){
|
if (panel){
|
||||||
File_View *fview = view_to_file_view(panel->view);
|
file = panel->view->file;
|
||||||
file = fview->file;
|
|
||||||
}
|
}
|
||||||
else if (string.str && string.size > 0){
|
else if (string.str && string.size > 0){
|
||||||
file = working_set_lookup_file(working_set, string);
|
file = working_set_lookup_file(working_set, string);
|
||||||
|
@ -4144,8 +4100,7 @@ App_Step_Sig(app_step){
|
||||||
// TODO(allen): deduplicate
|
// TODO(allen): deduplicate
|
||||||
Editing_File *file = 0;
|
Editing_File *file = 0;
|
||||||
if (panel){
|
if (panel){
|
||||||
File_View *fview = view_to_file_view(panel->view);
|
file = panel->view->file;
|
||||||
file = fview->file;
|
|
||||||
}
|
}
|
||||||
else if (string.str && string.size > 0){
|
else if (string.str && string.size > 0){
|
||||||
file = working_set_lookup_file(working_set, string);
|
file = working_set_lookup_file(working_set, string);
|
||||||
|
@ -4166,11 +4121,9 @@ App_Step_Sig(app_step){
|
||||||
if (!file){
|
if (!file){
|
||||||
if (panel){
|
if (panel){
|
||||||
View *view;
|
View *view;
|
||||||
File_View *fview;
|
|
||||||
view = panel->view;
|
view = panel->view;
|
||||||
fview = view_to_file_view(view);
|
Assert(view);
|
||||||
Assert(fview);
|
file = view->file;
|
||||||
file = fview->file;
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
file = working_set_lookup_file(working_set, string);
|
file = working_set_lookup_file(working_set, string);
|
||||||
|
@ -4199,9 +4152,8 @@ App_Step_Sig(app_step){
|
||||||
table_add(&working_set->table, file.file->name.source_path, file.index);
|
table_add(&working_set->table, file.file->name.source_path, file.index);
|
||||||
|
|
||||||
View *view = panel->view;
|
View *view = panel->view;
|
||||||
File_View *fview = view_to_file_view(view);
|
|
||||||
|
|
||||||
view_set_file(fview, file.file, vars->font_set, style, global_font,
|
view_set_file(view, file.file, vars->font_set, style, global_font,
|
||||||
system, vars->hooks[hook_open_file], &app_links);
|
system, vars->hooks[hook_open_file], &app_links);
|
||||||
view->map = app_get_map(vars, file.file->settings.base_map_id);
|
view->map = app_get_map(vars, file.file->settings.base_map_id);
|
||||||
#if BUFFER_EXPERIMENT_SCALPEL <= 0
|
#if BUFFER_EXPERIMENT_SCALPEL <= 0
|
||||||
|
@ -4215,9 +4167,8 @@ App_Step_Sig(app_step){
|
||||||
Editing_File *file = working_set_lookup_file(working_set, string);
|
Editing_File *file = working_set_lookup_file(working_set, string);
|
||||||
if (file){
|
if (file){
|
||||||
View *view = panel->view;
|
View *view = panel->view;
|
||||||
File_View *fview = view_to_file_view(view);
|
|
||||||
|
|
||||||
view_set_file(fview, file, vars->font_set, style, global_font,
|
view_set_file(view, file, vars->font_set, style, global_font,
|
||||||
system, vars->hooks[hook_open_file], &app_links);
|
system, vars->hooks[hook_open_file], &app_links);
|
||||||
view->map = app_get_map(vars, file->settings.base_map_id);
|
view->map = app_get_map(vars, file->settings.base_map_id);
|
||||||
}
|
}
|
||||||
|
@ -4228,7 +4179,7 @@ App_Step_Sig(app_step){
|
||||||
Editing_File *file = working_set_lookup_file(working_set, string);
|
Editing_File *file = working_set_lookup_file(working_set, string);
|
||||||
if (file){
|
if (file){
|
||||||
table_remove(&working_set->table, file->name.source_path);
|
table_remove(&working_set->table, file->name.source_path);
|
||||||
kill_file(system, exchange, general, file, live_set, &vars->layout);
|
kill_file(system, exchange, general, file, &vars->layout);
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
|
@ -4245,18 +4196,17 @@ App_Step_Sig(app_step){
|
||||||
view = (vars->layout.panels + vars->layout.active_panel)->view;
|
view = (vars->layout.panels + vars->layout.active_panel)->view;
|
||||||
}
|
}
|
||||||
|
|
||||||
File_View *fview = view_to_file_view(view);
|
Assert(view);
|
||||||
Assert(fview);
|
|
||||||
|
|
||||||
if (file){
|
if (file){
|
||||||
if (buffer_needs_save(file)){
|
if (buffer_needs_save(file)){
|
||||||
view_show_interactive(system, fview, &vars->map_ui,
|
view_show_interactive(system, view, &vars->map_ui,
|
||||||
IAct_Sure_To_Kill, IInt_Sure_To_Kill, make_lit_string("Are you sure?"));
|
IAct_Sure_To_Kill, IInt_Sure_To_Kill, make_lit_string("Are you sure?"));
|
||||||
copy(&fview->dest, file->name.live_name);
|
copy(&view->dest, file->name.live_name);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
table_remove(&working_set->table, file->name.source_path);
|
table_remove(&working_set->table, file->name.source_path);
|
||||||
kill_file(system, exchange, general, file, live_set, &vars->layout);
|
kill_file(system, exchange, general, file, &vars->layout);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
|
|
|
@ -9,6 +9,23 @@
|
||||||
|
|
||||||
// TOP
|
// TOP
|
||||||
|
|
||||||
|
enum View_Message{
|
||||||
|
VMSG_STEP,
|
||||||
|
VMSG_DRAW,
|
||||||
|
VMSG_RESIZE,
|
||||||
|
VMSG_STYLE_CHANGE,
|
||||||
|
VMSG_FREE
|
||||||
|
};
|
||||||
|
|
||||||
|
struct View;
|
||||||
|
#define Do_View_Sig(name) \
|
||||||
|
i32 (name)(System_Functions *system, Exchange *exchange, \
|
||||||
|
View *view, i32_Rect rect, View *active, \
|
||||||
|
View_Message message, Render_Target *target, \
|
||||||
|
Input_Summary *user_input, Input_Summary *active_input)
|
||||||
|
|
||||||
|
typedef Do_View_Sig(Do_View_Function);
|
||||||
|
|
||||||
enum Interactive_Action{
|
enum Interactive_Action{
|
||||||
IAct_Open,
|
IAct_Open,
|
||||||
IAct_Save_As,
|
IAct_Save_As,
|
||||||
|
@ -24,7 +41,7 @@ enum Interactive_Interaction{
|
||||||
IInt_Sure_To_Kill
|
IInt_Sure_To_Kill
|
||||||
};
|
};
|
||||||
|
|
||||||
struct File_View_Mode{
|
struct View_Mode{
|
||||||
i8 rewrite;
|
i8 rewrite;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -34,16 +51,16 @@ struct Incremental_Search{
|
||||||
i32 pos;
|
i32 pos;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum File_View_Widget_Type{
|
enum View_Widget_Type{
|
||||||
FWIDG_NONE,
|
FWIDG_NONE,
|
||||||
FWIDG_TIMELINES,
|
FWIDG_TIMELINES,
|
||||||
// never below this
|
// never below this
|
||||||
FWIDG_TYPE_COUNT
|
FWIDG_TYPE_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
struct File_View_Widget{
|
struct View_Widget{
|
||||||
UI_State state;
|
UI_State state;
|
||||||
File_View_Widget_Type type;
|
View_Widget_Type type;
|
||||||
i32 height_;
|
i32 height_;
|
||||||
struct{
|
struct{
|
||||||
b32 undo_line;
|
b32 undo_line;
|
||||||
|
@ -69,8 +86,14 @@ enum Color_View_Mode{
|
||||||
CV_Mode_Adjusting
|
CV_Mode_Adjusting
|
||||||
};
|
};
|
||||||
|
|
||||||
struct File_View{
|
struct View{
|
||||||
View view_base;
|
View *next, *prev;
|
||||||
|
|
||||||
|
Panel *panel;
|
||||||
|
Command_Map *map;
|
||||||
|
Do_View_Function *do_view;
|
||||||
|
Scroll_Rule_Function *scroll_rule;
|
||||||
|
i32 id;
|
||||||
|
|
||||||
Editing_File *file;
|
Editing_File *file;
|
||||||
|
|
||||||
|
@ -100,7 +123,7 @@ struct File_View{
|
||||||
i32 user_action;
|
i32 user_action;
|
||||||
|
|
||||||
// theme stuff
|
// theme stuff
|
||||||
File_View *hot_file_view;
|
View *hot_file_view;
|
||||||
u32 *palette;
|
u32 *palette;
|
||||||
i32 palette_size;
|
i32 palette_size;
|
||||||
Color_View_Mode color_mode;
|
Color_View_Mode color_mode;
|
||||||
|
@ -132,8 +155,8 @@ struct File_View{
|
||||||
i32 temp_highlight_end_pos;
|
i32 temp_highlight_end_pos;
|
||||||
b32 show_temp_highlight;
|
b32 show_temp_highlight;
|
||||||
|
|
||||||
File_View_Mode mode, next_mode;
|
View_Mode mode, next_mode;
|
||||||
File_View_Widget widget;
|
View_Widget widget;
|
||||||
|
|
||||||
Query_Set query_set;
|
Query_Set query_set;
|
||||||
|
|
||||||
|
@ -149,10 +172,27 @@ struct File_View{
|
||||||
Command_Map *map_for_file;
|
Command_Map *map_for_file;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline File_View*
|
struct View_And_ID{
|
||||||
view_to_file_view(View *view){
|
View *view;
|
||||||
File_View* result = (File_View*)view;
|
i32 id;
|
||||||
return result;
|
};
|
||||||
|
|
||||||
|
inline void
|
||||||
|
view_set_first(View *new_view, Panel *panel){
|
||||||
|
new_view->panel = panel;
|
||||||
|
panel->view = new_view;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline f32
|
||||||
|
view_compute_width(View *view){
|
||||||
|
Panel *panel = view->panel;
|
||||||
|
return (f32)(panel->inner.x1 - panel->inner.x0);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline f32
|
||||||
|
view_compute_height(View *view){
|
||||||
|
Panel *panel = view->panel;
|
||||||
|
return (f32)(panel->inner.y1 - panel->inner.y0);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline i32
|
inline i32
|
||||||
|
@ -432,7 +472,7 @@ view_wrapped_line_span(f32 line_width, f32 max_width){
|
||||||
}
|
}
|
||||||
|
|
||||||
internal i32
|
internal i32
|
||||||
view_compute_lowest_line(File_View *view){
|
view_compute_lowest_line(View *view){
|
||||||
i32 lowest_line = 0;
|
i32 lowest_line = 0;
|
||||||
i32 last_line = view->line_count - 1;
|
i32 last_line = view->line_count - 1;
|
||||||
if (last_line > 0){
|
if (last_line > 0){
|
||||||
|
@ -456,7 +496,7 @@ view_compute_lowest_line(File_View *view){
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
view_measure_wraps(System_Functions *system,
|
view_measure_wraps(System_Functions *system,
|
||||||
General_Memory *general, File_View *view){
|
General_Memory *general, View *view){
|
||||||
ProfileMomentFunction();
|
ProfileMomentFunction();
|
||||||
Buffer_Type *buffer;
|
Buffer_Type *buffer;
|
||||||
|
|
||||||
|
@ -1165,7 +1205,7 @@ file_post_history(General_Memory *general, Editing_File *file,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
inline Full_Cursor
|
inline Full_Cursor
|
||||||
view_compute_cursor_from_pos(File_View *view, i32 pos){
|
view_compute_cursor_from_pos(View *view, i32 pos){
|
||||||
Editing_File *file = view->file;
|
Editing_File *file = view->file;
|
||||||
Render_Font *font = get_font_info(view->font_set, view->global_font->font_id)->font;
|
Render_Font *font = get_font_info(view->font_set, view->global_font->font_id)->font;
|
||||||
|
|
||||||
|
@ -1179,7 +1219,7 @@ view_compute_cursor_from_pos(File_View *view, i32 pos){
|
||||||
}
|
}
|
||||||
|
|
||||||
inline Full_Cursor
|
inline Full_Cursor
|
||||||
view_compute_cursor_from_unwrapped_xy(File_View *view, f32 seek_x, f32 seek_y, b32 round_down = 0){
|
view_compute_cursor_from_unwrapped_xy(View *view, f32 seek_x, f32 seek_y, b32 round_down = 0){
|
||||||
Editing_File *file = view->file;
|
Editing_File *file = view->file;
|
||||||
Render_Font *font = get_font_info(view->font_set, view->global_font->font_id)->font;
|
Render_Font *font = get_font_info(view->font_set, view->global_font->font_id)->font;
|
||||||
|
|
||||||
|
@ -1195,7 +1235,7 @@ view_compute_cursor_from_unwrapped_xy(File_View *view, f32 seek_x, f32 seek_y, b
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Full_Cursor
|
internal Full_Cursor
|
||||||
view_compute_cursor_from_wrapped_xy(File_View *view, f32 seek_x, f32 seek_y,
|
view_compute_cursor_from_wrapped_xy(View *view, f32 seek_x, f32 seek_y,
|
||||||
b32 round_down = 0){
|
b32 round_down = 0){
|
||||||
Editing_File *file = view->file;
|
Editing_File *file = view->file;
|
||||||
Render_Font *font = get_font_info(view->font_set, view->global_font->font_id)->font;
|
Render_Font *font = get_font_info(view->font_set, view->global_font->font_id)->font;
|
||||||
|
@ -1212,7 +1252,7 @@ view_compute_cursor_from_wrapped_xy(File_View *view, f32 seek_x, f32 seek_y,
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Full_Cursor
|
internal Full_Cursor
|
||||||
view_compute_cursor_from_line_pos(File_View *view, i32 line, i32 pos){
|
view_compute_cursor_from_line_pos(View *view, i32 line, i32 pos){
|
||||||
Editing_File *file = view->file;
|
Editing_File *file = view->file;
|
||||||
Render_Font *font = get_font_info(view->font_set, view->global_font->font_id)->font;
|
Render_Font *font = get_font_info(view->font_set, view->global_font->font_id)->font;
|
||||||
|
|
||||||
|
@ -1227,7 +1267,7 @@ view_compute_cursor_from_line_pos(File_View *view, i32 line, i32 pos){
|
||||||
}
|
}
|
||||||
|
|
||||||
inline Full_Cursor
|
inline Full_Cursor
|
||||||
view_compute_cursor(File_View *view, Buffer_Seek seek){
|
view_compute_cursor(View *view, Buffer_Seek seek){
|
||||||
Full_Cursor result = {};
|
Full_Cursor result = {};
|
||||||
|
|
||||||
switch(seek.type){
|
switch(seek.type){
|
||||||
|
@ -1252,7 +1292,7 @@ view_compute_cursor(File_View *view, Buffer_Seek seek){
|
||||||
}
|
}
|
||||||
|
|
||||||
inline Full_Cursor
|
inline Full_Cursor
|
||||||
view_compute_cursor_from_xy(File_View *view, f32 seek_x, f32 seek_y){
|
view_compute_cursor_from_xy(View *view, f32 seek_x, f32 seek_y){
|
||||||
Full_Cursor result;
|
Full_Cursor result;
|
||||||
if (view->unwrapped_lines) result = view_compute_cursor_from_unwrapped_xy(view, seek_x, seek_y);
|
if (view->unwrapped_lines) result = view_compute_cursor_from_unwrapped_xy(view, seek_x, seek_y);
|
||||||
else result = view_compute_cursor_from_wrapped_xy(view, seek_x, seek_y);
|
else result = view_compute_cursor_from_wrapped_xy(view, seek_x, seek_y);
|
||||||
|
@ -1260,14 +1300,14 @@ view_compute_cursor_from_xy(File_View *view, f32 seek_x, f32 seek_y){
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
view_set_temp_highlight(File_View *view, i32 pos, i32 end_pos){
|
view_set_temp_highlight(View *view, i32 pos, i32 end_pos){
|
||||||
view->temp_highlight = view_compute_cursor_from_pos(view, pos);
|
view->temp_highlight = view_compute_cursor_from_pos(view, pos);
|
||||||
view->temp_highlight_end_pos = end_pos;
|
view->temp_highlight_end_pos = end_pos;
|
||||||
view->show_temp_highlight = 1;
|
view->show_temp_highlight = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline i32
|
inline i32
|
||||||
view_get_cursor_pos(File_View *view){
|
view_get_cursor_pos(View *view){
|
||||||
i32 result;
|
i32 result;
|
||||||
if (view->show_temp_highlight){
|
if (view->show_temp_highlight){
|
||||||
result = view->temp_highlight.pos;
|
result = view->temp_highlight.pos;
|
||||||
|
@ -1279,7 +1319,7 @@ view_get_cursor_pos(File_View *view){
|
||||||
}
|
}
|
||||||
|
|
||||||
inline f32
|
inline f32
|
||||||
view_get_cursor_x(File_View *view){
|
view_get_cursor_x(View *view){
|
||||||
f32 result;
|
f32 result;
|
||||||
Full_Cursor *cursor;
|
Full_Cursor *cursor;
|
||||||
if (view->show_temp_highlight){
|
if (view->show_temp_highlight){
|
||||||
|
@ -1298,7 +1338,7 @@ view_get_cursor_x(File_View *view){
|
||||||
}
|
}
|
||||||
|
|
||||||
inline f32
|
inline f32
|
||||||
view_get_cursor_y(File_View *view){
|
view_get_cursor_y(View *view){
|
||||||
Full_Cursor *cursor;
|
Full_Cursor *cursor;
|
||||||
f32 result;
|
f32 result;
|
||||||
|
|
||||||
|
@ -1314,7 +1354,7 @@ view_get_cursor_y(File_View *view){
|
||||||
internal void
|
internal void
|
||||||
view_set_file(
|
view_set_file(
|
||||||
// NOTE(allen): These parameters are always meaningful
|
// NOTE(allen): These parameters are always meaningful
|
||||||
File_View *view,
|
View *view,
|
||||||
Editing_File *file,
|
Editing_File *file,
|
||||||
Font_Set *set,
|
Font_Set *set,
|
||||||
Style *style,
|
Style *style,
|
||||||
|
@ -1332,7 +1372,7 @@ view_set_file(
|
||||||
f32 cursor_x, cursor_y;
|
f32 cursor_x, cursor_y;
|
||||||
f32 target_x, target_y;
|
f32 target_x, target_y;
|
||||||
|
|
||||||
panel = view->view_base.panel;
|
panel = view->panel;
|
||||||
|
|
||||||
// NOTE(allen): This is actually more like view_set_style right?
|
// NOTE(allen): This is actually more like view_set_style right?
|
||||||
fnt_info = get_font_info(set, global_font->font_id);
|
fnt_info = get_font_info(set, global_font->font_id);
|
||||||
|
@ -1406,7 +1446,7 @@ struct Relative_Scrolling{
|
||||||
};
|
};
|
||||||
|
|
||||||
internal Relative_Scrolling
|
internal Relative_Scrolling
|
||||||
view_get_relative_scrolling(File_View *view){
|
view_get_relative_scrolling(View *view){
|
||||||
Relative_Scrolling result;
|
Relative_Scrolling result;
|
||||||
f32 cursor_x, cursor_y;
|
f32 cursor_x, cursor_y;
|
||||||
cursor_x = view_get_cursor_x(view);
|
cursor_x = view_get_cursor_x(view);
|
||||||
|
@ -1419,7 +1459,7 @@ view_get_relative_scrolling(File_View *view){
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
view_set_relative_scrolling(File_View *view, Relative_Scrolling scrolling){
|
view_set_relative_scrolling(View *view, Relative_Scrolling scrolling){
|
||||||
f32 cursor_x, cursor_y;
|
f32 cursor_x, cursor_y;
|
||||||
cursor_x = view_get_cursor_x(view);
|
cursor_x = view_get_cursor_x(view);
|
||||||
cursor_y = view_get_cursor_y(view);
|
cursor_y = view_get_cursor_y(view);
|
||||||
|
@ -1428,7 +1468,7 @@ view_set_relative_scrolling(File_View *view, Relative_Scrolling scrolling){
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
view_cursor_move(File_View *view, Full_Cursor cursor){
|
view_cursor_move(View *view, Full_Cursor cursor){
|
||||||
view->cursor = cursor;
|
view->cursor = cursor;
|
||||||
view->preferred_x = view_get_cursor_x(view);
|
view->preferred_x = view_get_cursor_x(view);
|
||||||
view->file->state.cursor_pos = view->cursor.pos;
|
view->file->state.cursor_pos = view->cursor.pos;
|
||||||
|
@ -1436,13 +1476,13 @@ view_cursor_move(File_View *view, Full_Cursor cursor){
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
view_cursor_move(File_View *view, i32 pos){
|
view_cursor_move(View *view, i32 pos){
|
||||||
Full_Cursor cursor = view_compute_cursor_from_pos(view, pos);
|
Full_Cursor cursor = view_compute_cursor_from_pos(view, pos);
|
||||||
view_cursor_move(view, cursor);
|
view_cursor_move(view, cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
view_cursor_move(File_View *view, f32 x, f32 y, b32 round_down = 0){
|
view_cursor_move(View *view, f32 x, f32 y, b32 round_down = 0){
|
||||||
Full_Cursor cursor;
|
Full_Cursor cursor;
|
||||||
if (view->unwrapped_lines){
|
if (view->unwrapped_lines){
|
||||||
cursor = view_compute_cursor_from_unwrapped_xy(view, x, y, round_down);
|
cursor = view_compute_cursor_from_unwrapped_xy(view, x, y, round_down);
|
||||||
|
@ -1454,20 +1494,20 @@ view_cursor_move(File_View *view, f32 x, f32 y, b32 round_down = 0){
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
view_cursor_move(File_View *view, i32 line, i32 pos){
|
view_cursor_move(View *view, i32 line, i32 pos){
|
||||||
Full_Cursor cursor = view_compute_cursor_from_line_pos(view, line, pos);
|
Full_Cursor cursor = view_compute_cursor_from_line_pos(view, line, pos);
|
||||||
view_cursor_move(view, cursor);
|
view_cursor_move(view, cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
view_set_widget(File_View *view, File_View_Widget_Type type){
|
view_set_widget(View *view, View_Widget_Type type){
|
||||||
view->widget.type = type;
|
view->widget.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inline i32_Rect
|
inline i32_Rect
|
||||||
view_widget_rect(File_View *view, i32 font_height){
|
view_widget_rect(View *view, i32 font_height){
|
||||||
Panel *panel = view->view_base.panel;
|
Panel *panel = view->panel;
|
||||||
i32_Rect result = panel->inner;
|
i32_Rect result = panel->inner;
|
||||||
|
|
||||||
if (view->file){
|
if (view->file){
|
||||||
|
@ -1728,12 +1768,12 @@ file_edit_cursor_fix(System_Functions *system,
|
||||||
f32 y_offset = 0, y_position = 0;
|
f32 y_offset = 0, y_position = 0;
|
||||||
i32 cursor_count = 0;
|
i32 cursor_count = 0;
|
||||||
|
|
||||||
File_View *view;
|
View *view;
|
||||||
Panel *panel, *used_panels;
|
Panel *panel, *used_panels;
|
||||||
used_panels = &layout->used_sentinel;
|
used_panels = &layout->used_sentinel;
|
||||||
|
|
||||||
for (dll_items(panel, used_panels)){
|
for (dll_items(panel, used_panels)){
|
||||||
view = view_to_file_view(panel->view);
|
view = panel->view;
|
||||||
if (view->file == file){
|
if (view->file == file){
|
||||||
view_measure_wraps(system, general, view);
|
view_measure_wraps(system, general, view);
|
||||||
write_cursor_with_index(cursors, &cursor_count, view->cursor.pos);
|
write_cursor_with_index(cursors, &cursor_count, view->cursor.pos);
|
||||||
|
@ -1757,7 +1797,7 @@ file_edit_cursor_fix(System_Functions *system,
|
||||||
|
|
||||||
cursor_count = 0;
|
cursor_count = 0;
|
||||||
for (dll_items(panel, used_panels)){
|
for (dll_items(panel, used_panels)){
|
||||||
view = view_to_file_view(panel->view);
|
view = panel->view;
|
||||||
if (view && view->file == file){
|
if (view && view->file == file){
|
||||||
view_cursor_move(view, cursors[cursor_count++].pos);
|
view_cursor_move(view, cursors[cursor_count++].pos);
|
||||||
view->preferred_x = view_get_cursor_x(view);
|
view->preferred_x = view_get_cursor_x(view);
|
||||||
|
@ -1835,7 +1875,7 @@ file_do_single_edit(System_Functions *system,
|
||||||
used_panels = &layout->used_sentinel;
|
used_panels = &layout->used_sentinel;
|
||||||
|
|
||||||
for (dll_items(panel, used_panels)){
|
for (dll_items(panel, used_panels)){
|
||||||
File_View *view = view_to_file_view(panel->view);
|
View *view = panel->view;
|
||||||
if (view->file == file){
|
if (view->file == file){
|
||||||
view_measure_wraps(system, general, view);
|
view_measure_wraps(system, general, view);
|
||||||
}
|
}
|
||||||
|
@ -1857,7 +1897,7 @@ file_do_single_edit(System_Functions *system,
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
view_do_white_batch_edit(System_Functions *system, Mem_Options *mem, File_View *view, Editing_File *file,
|
view_do_white_batch_edit(System_Functions *system, Mem_Options *mem, View *view, Editing_File *file,
|
||||||
Editing_Layout *layout, Edit_Spec spec, History_Mode history_mode){
|
Editing_Layout *layout, Edit_Spec spec, History_Mode history_mode){
|
||||||
if (view->locked) return;
|
if (view->locked) return;
|
||||||
#if BUFFER_EXPERIMENT_SCALPEL <= 3
|
#if BUFFER_EXPERIMENT_SCALPEL <= 3
|
||||||
|
@ -1957,7 +1997,7 @@ file_replace_range(System_Functions *system,
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
view_replace_range(System_Functions *system,
|
view_replace_range(System_Functions *system,
|
||||||
Mem_Options *mem, File_View *view, Editing_Layout *layout,
|
Mem_Options *mem, View *view, Editing_Layout *layout,
|
||||||
i32 start, i32 end, char *str, i32 len, i32 next_cursor){
|
i32 start, i32 end, char *str, i32 len, i32 next_cursor){
|
||||||
if (view->locked) return;
|
if (view->locked) return;
|
||||||
Edit_Spec spec = {};
|
Edit_Spec spec = {};
|
||||||
|
@ -1972,7 +2012,7 @@ view_replace_range(System_Functions *system,
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
view_post_paste_effect(File_View *view, i32 ticks, i32 start, i32 size, u32 color){
|
view_post_paste_effect(View *view, i32 ticks, i32 start, i32 size, u32 color){
|
||||||
Editing_File *file = view->file;
|
Editing_File *file = view->file;
|
||||||
|
|
||||||
file->state.paste_effect.start = start;
|
file->state.paste_effect.start = start;
|
||||||
|
@ -1984,7 +2024,7 @@ view_post_paste_effect(File_View *view, i32 ticks, i32 start, i32 size, u32 colo
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
view_undo_redo(System_Functions *system,
|
view_undo_redo(System_Functions *system,
|
||||||
Mem_Options *mem, Editing_Layout *layout, File_View *view, Editing_File *file,
|
Mem_Options *mem, Editing_Layout *layout, View *view, Editing_File *file,
|
||||||
Edit_Stack *stack, Edit_Type expected_type){
|
Edit_Stack *stack, Edit_Type expected_type){
|
||||||
if (view->locked) return;
|
if (view->locked) return;
|
||||||
if (file && stack->edit_count > 0){
|
if (file && stack->edit_count > 0){
|
||||||
|
@ -2016,13 +2056,13 @@ view_undo_redo(System_Functions *system,
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
view_undo(System_Functions *system, Mem_Options *mem, Editing_Layout *layout, File_View *view){
|
view_undo(System_Functions *system, Mem_Options *mem, Editing_Layout *layout, View *view){
|
||||||
Editing_File *file = view->file;
|
Editing_File *file = view->file;
|
||||||
view_undo_redo(system, mem, layout, view, file, &file->state.undo.undo, ED_UNDO);
|
view_undo_redo(system, mem, layout, view, file, &file->state.undo.undo, ED_UNDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
view_redo(System_Functions *system, Mem_Options *mem, Editing_Layout *layout, File_View *view){
|
view_redo(System_Functions *system, Mem_Options *mem, Editing_Layout *layout, View *view){
|
||||||
Editing_File *file = view->file;
|
Editing_File *file = view->file;
|
||||||
view_undo_redo(system, mem, layout, view, file, &file->state.undo.redo, ED_REDO);
|
view_undo_redo(system, mem, layout, view, file, &file->state.undo.redo, ED_REDO);
|
||||||
}
|
}
|
||||||
|
@ -2092,7 +2132,7 @@ file_dump_history(System_Functions *system, Mem_Options *mem, Editing_File *file
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
view_history_step(System_Functions *system, Mem_Options *mem, Editing_Layout *layout, File_View *view, History_Mode history_mode){
|
view_history_step(System_Functions *system, Mem_Options *mem, Editing_Layout *layout, View *view, History_Mode history_mode){
|
||||||
if (view->locked) return;
|
if (view->locked) return;
|
||||||
Assert(history_mode != hist_normal);
|
Assert(history_mode != hist_normal);
|
||||||
|
|
||||||
|
@ -2148,7 +2188,7 @@ view_history_step(System_Functions *system, Mem_Options *mem, Editing_Layout *la
|
||||||
|
|
||||||
// TODO(allen): write these as streamed operations
|
// TODO(allen): write these as streamed operations
|
||||||
internal i32
|
internal i32
|
||||||
view_find_end_of_line(File_View *view, i32 pos){
|
view_find_end_of_line(View *view, i32 pos){
|
||||||
#if BUFFER_EXPERIMENT_SCALPEL <= 0
|
#if BUFFER_EXPERIMENT_SCALPEL <= 0
|
||||||
Editing_File *file = view->file;
|
Editing_File *file = view->file;
|
||||||
char *data = file->state.buffer.data;
|
char *data = file->state.buffer.data;
|
||||||
|
@ -2159,7 +2199,7 @@ view_find_end_of_line(File_View *view, i32 pos){
|
||||||
}
|
}
|
||||||
|
|
||||||
internal i32
|
internal i32
|
||||||
view_find_beginning_of_line(File_View *view, i32 pos){
|
view_find_beginning_of_line(View *view, i32 pos){
|
||||||
#if BUFFER_EXPERIMENT_SCALPEL <= 0
|
#if BUFFER_EXPERIMENT_SCALPEL <= 0
|
||||||
Editing_File *file = view->file;
|
Editing_File *file = view->file;
|
||||||
char *data = file->state.buffer.data;
|
char *data = file->state.buffer.data;
|
||||||
|
@ -2173,7 +2213,7 @@ view_find_beginning_of_line(File_View *view, i32 pos){
|
||||||
}
|
}
|
||||||
|
|
||||||
internal i32
|
internal i32
|
||||||
view_find_beginning_of_next_line(File_View *view, i32 pos){
|
view_find_beginning_of_next_line(View *view, i32 pos){
|
||||||
#if BUFFER_EXPERIMENT_SCALPEL <= 0
|
#if BUFFER_EXPERIMENT_SCALPEL <= 0
|
||||||
Editing_File *file = view->file;
|
Editing_File *file = view->file;
|
||||||
char *data = file->state.buffer.data;
|
char *data = file->state.buffer.data;
|
||||||
|
@ -2289,7 +2329,7 @@ file_compute_whitespace_edit(Mem_Options *mem, Editing_File *file, i32 cursor_po
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
view_clean_whitespace(System_Functions *system, Mem_Options *mem, File_View *view, Editing_Layout *layout){
|
view_clean_whitespace(System_Functions *system, Mem_Options *mem, View *view, Editing_Layout *layout){
|
||||||
Editing_File *file = view->file;
|
Editing_File *file = view->file;
|
||||||
Assert(file && !file->state.is_dummy);
|
Assert(file && !file->state.is_dummy);
|
||||||
Partition *part = &mem->part;
|
Partition *part = &mem->part;
|
||||||
|
@ -2347,7 +2387,7 @@ view_clean_whitespace(System_Functions *system, Mem_Options *mem, File_View *vie
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
view_auto_tab_tokens(System_Functions *system,
|
view_auto_tab_tokens(System_Functions *system,
|
||||||
Mem_Options *mem, File_View *view, Editing_Layout *layout,
|
Mem_Options *mem, View *view, Editing_Layout *layout,
|
||||||
i32 start, i32 end, b32 empty_blank_lines){
|
i32 start, i32 end, b32 empty_blank_lines){
|
||||||
#if BUFFER_EXPERIMENT_SCALPEL <= 0
|
#if BUFFER_EXPERIMENT_SCALPEL <= 0
|
||||||
Editing_File *file = view->file;
|
Editing_File *file = view->file;
|
||||||
|
@ -2609,7 +2649,7 @@ view_compute_max_target_y(i32 lowest_line, i32 line_height, real32 view_height){
|
||||||
}
|
}
|
||||||
|
|
||||||
internal real32
|
internal real32
|
||||||
view_compute_max_target_y(File_View *view){
|
view_compute_max_target_y(View *view){
|
||||||
i32 lowest_line = view_compute_lowest_line(view);
|
i32 lowest_line = view_compute_lowest_line(view);
|
||||||
i32 line_height = view->font_height;
|
i32 line_height = view->font_height;
|
||||||
real32 view_height = view_compute_height(view);
|
real32 view_height = view_compute_height(view);
|
||||||
|
@ -2619,8 +2659,7 @@ view_compute_max_target_y(File_View *view){
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
remeasure_file_view(System_Functions *system, View *view_, i32_Rect rect){
|
remeasure_file_view(System_Functions *system, View *view, i32_Rect rect){
|
||||||
File_View *view = (File_View*)view_;
|
|
||||||
if (file_is_ready(view->file)){
|
if (file_is_ready(view->file)){
|
||||||
Relative_Scrolling relative = view_get_relative_scrolling(view);
|
Relative_Scrolling relative = view_get_relative_scrolling(view);
|
||||||
view_measure_wraps(system, &view->mem->general, view);
|
view_measure_wraps(system, &view->mem->general, view);
|
||||||
|
@ -2631,7 +2670,7 @@ remeasure_file_view(System_Functions *system, View *view_, i32_Rect rect){
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
undo_shit(System_Functions *system, File_View *view, UI_State *state, UI_Layout *layout,
|
undo_shit(System_Functions *system, View *view, UI_State *state, UI_Layout *layout,
|
||||||
i32 total_count, i32 undo_count, i32 scrub_max){
|
i32 total_count, i32 undo_count, i32 scrub_max){
|
||||||
|
|
||||||
Editing_File *file = view->file;
|
Editing_File *file = view->file;
|
||||||
|
@ -2690,7 +2729,7 @@ undo_shit(System_Functions *system, File_View *view, UI_State *state, UI_Layout
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
draw_file_view_queries(File_View *view, UI_State *state, UI_Layout *layout){
|
draw_file_view_queries(View *view, UI_State *state, UI_Layout *layout){
|
||||||
Widget_ID wid;
|
Widget_ID wid;
|
||||||
Query_Slot *slot;
|
Query_Slot *slot;
|
||||||
Query_Bar *bar;
|
Query_Bar *bar;
|
||||||
|
@ -2704,29 +2743,29 @@ draw_file_view_queries(File_View *view, UI_State *state, UI_Layout *layout){
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
view_show_menu(File_View *fview, Command_Map *gui_map){
|
view_show_menu(View *fview, Command_Map *gui_map){
|
||||||
fview->ui_state = {};
|
fview->ui_state = {};
|
||||||
fview->map_for_file = fview->view_base.map;
|
fview->map_for_file = fview->map;
|
||||||
fview->view_base.map = gui_map;
|
fview->map = gui_map;
|
||||||
fview->locked = 1;
|
fview->locked = 1;
|
||||||
fview->showing_ui = VUI_Menu;
|
fview->showing_ui = VUI_Menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
view_show_config(File_View *fview, Command_Map *gui_map){
|
view_show_config(View *fview, Command_Map *gui_map){
|
||||||
fview->ui_state = {};
|
fview->ui_state = {};
|
||||||
fview->map_for_file = fview->view_base.map;
|
fview->map_for_file = fview->map;
|
||||||
fview->view_base.map = gui_map;
|
fview->map = gui_map;
|
||||||
fview->locked = 1;
|
fview->locked = 1;
|
||||||
fview->showing_ui = VUI_Config;
|
fview->showing_ui = VUI_Config;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
view_show_interactive(System_Functions *system, File_View *fview, Command_Map *gui_map,
|
view_show_interactive(System_Functions *system, View *fview, Command_Map *gui_map,
|
||||||
Interactive_Action action, Interactive_Interaction interaction, String query){
|
Interactive_Action action, Interactive_Interaction interaction, String query){
|
||||||
fview->ui_state = {};
|
fview->ui_state = {};
|
||||||
fview->map_for_file = fview->view_base.map;
|
fview->map_for_file = fview->map;
|
||||||
fview->view_base.map = gui_map;
|
fview->map = gui_map;
|
||||||
fview->locked = 1;
|
fview->locked = 1;
|
||||||
fview->showing_ui = VUI_Interactive;
|
fview->showing_ui = VUI_Interactive;
|
||||||
fview->action = action;
|
fview->action = action;
|
||||||
|
@ -2741,31 +2780,31 @@ view_show_interactive(System_Functions *system, File_View *fview, Command_Map *g
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
view_show_theme(File_View *fview, Command_Map *gui_map){
|
view_show_theme(View *fview, Command_Map *gui_map){
|
||||||
fview->ui_state = {};
|
fview->ui_state = {};
|
||||||
fview->map_for_file = fview->view_base.map;
|
fview->map_for_file = fview->map;
|
||||||
fview->view_base.map = gui_map;
|
fview->map = gui_map;
|
||||||
fview->locked = 1;
|
fview->locked = 1;
|
||||||
fview->showing_ui = VUI_Theme;
|
fview->showing_ui = VUI_Theme;
|
||||||
fview->color_mode = CV_Mode_Library;
|
fview->color_mode = CV_Mode_Library;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
view_show_file(File_View *fview, Command_Map *file_map){
|
view_show_file(View *fview, Command_Map *file_map){
|
||||||
fview->ui_state = {};
|
fview->ui_state = {};
|
||||||
if (file_map){
|
if (file_map){
|
||||||
fview->view_base.map = file_map;
|
fview->map = file_map;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
fview->view_base.map = fview->map_for_file;
|
fview->map = fview->map_for_file;
|
||||||
}
|
}
|
||||||
fview->locked = 0;
|
fview->locked = 0;
|
||||||
fview->showing_ui = VUI_None;
|
fview->showing_ui = VUI_None;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
interactive_view_complete(File_View *view){
|
interactive_view_complete(View *view){
|
||||||
Panel *panel = view->view_base.panel;
|
Panel *panel = view->panel;
|
||||||
switch (view->action){
|
switch (view->action){
|
||||||
case IAct_Open:
|
case IAct_Open:
|
||||||
delayed_open(view->delay, view->hot_directory->string, panel);
|
delayed_open(view->delay, view->hot_directory->string, panel);
|
||||||
|
@ -2808,8 +2847,8 @@ interactive_view_complete(File_View *view){
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
update_highlighting(File_View *view){
|
update_highlighting(View *view){
|
||||||
File_View *file_view = view->hot_file_view;
|
View *file_view = view->hot_file_view;
|
||||||
if (!file_view){
|
if (!file_view){
|
||||||
view->highlight = {};
|
view->highlight = {};
|
||||||
return;
|
return;
|
||||||
|
@ -2888,7 +2927,7 @@ update_highlighting(File_View *view){
|
||||||
|
|
||||||
internal b32
|
internal b32
|
||||||
theme_library_shit(System_Functions *system, Exchange *exchange,
|
theme_library_shit(System_Functions *system, Exchange *exchange,
|
||||||
File_View *view, UI_State *state, UI_Layout *layout){
|
View *view, UI_State *state, UI_Layout *layout){
|
||||||
|
|
||||||
Mem_Options *mem = view->mem;
|
Mem_Options *mem = view->mem;
|
||||||
|
|
||||||
|
@ -3139,7 +3178,7 @@ theme_library_shit(System_Functions *system, Exchange *exchange,
|
||||||
}
|
}
|
||||||
|
|
||||||
internal b32
|
internal b32
|
||||||
theme_adjusting_shit(File_View *view, UI_State *state, UI_Layout *layout){
|
theme_adjusting_shit(View *view, UI_State *state, UI_Layout *layout){
|
||||||
update_highlighting(view);
|
update_highlighting(view);
|
||||||
|
|
||||||
Style *style = view->style;
|
Style *style = view->style;
|
||||||
|
@ -3270,12 +3309,11 @@ theme_adjusting_shit(File_View *view, UI_State *state, UI_Layout *layout){
|
||||||
|
|
||||||
internal b32
|
internal b32
|
||||||
theme_shit(System_Functions *system, Exchange *exchange,
|
theme_shit(System_Functions *system, Exchange *exchange,
|
||||||
File_View *view, View *active, UI_State *state, UI_Layout *layout){
|
View *view, View *active, UI_State *state, UI_Layout *layout){
|
||||||
b32 result = 0;
|
b32 result = 0;
|
||||||
|
|
||||||
File_View *factive = view_to_file_view(active);
|
if (view != active){
|
||||||
if (view != factive){
|
view->hot_file_view = active;
|
||||||
view->hot_file_view = factive;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (view->color_mode){
|
switch (view->color_mode){
|
||||||
|
@ -3301,7 +3339,7 @@ theme_shit(System_Functions *system, Exchange *exchange,
|
||||||
}
|
}
|
||||||
|
|
||||||
internal b32
|
internal b32
|
||||||
interactive_shit(System_Functions *system, File_View *view, UI_State *state, UI_Layout *layout){
|
interactive_shit(System_Functions *system, View *view, UI_State *state, UI_Layout *layout){
|
||||||
b32 result = 0;
|
b32 result = 0;
|
||||||
b32 new_dir = 0;
|
b32 new_dir = 0;
|
||||||
b32 complete = 0;
|
b32 complete = 0;
|
||||||
|
@ -3388,22 +3426,22 @@ interactive_shit(System_Functions *system, File_View *view, UI_State *state, UI_
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
menu_shit(File_View *view, UI_State *state, UI_Layout *layout){
|
menu_shit(View *view, UI_State *state, UI_Layout *layout){
|
||||||
i32 id = 0;
|
i32 id = 0;
|
||||||
|
|
||||||
do_label(state, layout, literal("Menu"), 2.f);
|
do_label(state, layout, literal("Menu"), 2.f);
|
||||||
|
|
||||||
if (do_list_option(++id, state, layout, make_lit_string("Theme Options"))){
|
if (do_list_option(++id, state, layout, make_lit_string("Theme Options"))){
|
||||||
view_show_theme(view, view->view_base.map);
|
view_show_theme(view, view->map);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (do_list_option(++id, state, layout, make_lit_string("Keyboard Layout Options"))){
|
if (do_list_option(++id, state, layout, make_lit_string("Keyboard Layout Options"))){
|
||||||
view_show_config(view, view->view_base.map);
|
view_show_config(view, view->map);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
config_shit(File_View *view, UI_State *state, UI_Layout *layout){
|
config_shit(View *view, UI_State *state, UI_Layout *layout){
|
||||||
i32 id = 0;
|
i32 id = 0;
|
||||||
|
|
||||||
do_label(state, layout, literal("Config"), 2.f);
|
do_label(state, layout, literal("Config"), 2.f);
|
||||||
|
@ -3415,7 +3453,7 @@ config_shit(File_View *view, UI_State *state, UI_Layout *layout){
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
do_file_bar(File_View *view, Editing_File *file, UI_Layout *layout, Render_Target *target){
|
do_file_bar(View *view, Editing_File *file, UI_Layout *layout, Render_Target *target){
|
||||||
Interactive_Bar bar;
|
Interactive_Bar bar;
|
||||||
Style_Font *font = view->global_font;
|
Style_Font *font = view->global_font;
|
||||||
i32 line_height = view->font_height;
|
i32 line_height = view->font_height;
|
||||||
|
@ -3469,11 +3507,10 @@ do_file_bar(File_View *view, Editing_File *file, UI_Layout *layout, Render_Targe
|
||||||
}
|
}
|
||||||
|
|
||||||
internal i32
|
internal i32
|
||||||
step_file_view(System_Functions *system, Exchange *exchange, View *view_, i32_Rect rect,
|
step_file_view(System_Functions *system, Exchange *exchange, View *view, i32_Rect rect,
|
||||||
b32 is_active, Input_Summary *user_input){
|
b32 is_active, Input_Summary *user_input){
|
||||||
|
|
||||||
i32 result = 0;
|
i32 result = 0;
|
||||||
File_View *view = (File_View*)view_;
|
|
||||||
Editing_File *file = view->file;
|
Editing_File *file = view->file;
|
||||||
|
|
||||||
i32 widget_height = 0;
|
i32 widget_height = 0;
|
||||||
|
@ -3573,10 +3610,10 @@ step_file_view(System_Functions *system, Exchange *exchange, View *view_, i32_Re
|
||||||
if (view->target_x != view->prev_target_x) is_new_target = 1;
|
if (view->target_x != view->prev_target_x) is_new_target = 1;
|
||||||
if (view->target_y != view->prev_target_y) is_new_target = 1;
|
if (view->target_y != view->prev_target_y) is_new_target = 1;
|
||||||
|
|
||||||
if (view_->scroll_rule(
|
if (view->scroll_rule(
|
||||||
view->target_x, view->target_y,
|
view->target_x, view->target_y,
|
||||||
&view->scroll_x, &view->scroll_y,
|
&view->scroll_x, &view->scroll_y,
|
||||||
view_->id, is_new_target)){
|
view->id, is_new_target)){
|
||||||
result = 1;
|
result = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3645,7 +3682,7 @@ step_file_view(System_Functions *system, Exchange *exchange, View *view_, i32_Re
|
||||||
}
|
}
|
||||||
|
|
||||||
internal i32
|
internal i32
|
||||||
draw_file_loaded(File_View *view, i32_Rect rect, b32 is_active, Render_Target *target){
|
draw_file_loaded(View *view, i32_Rect rect, b32 is_active, Render_Target *target){
|
||||||
Editing_File *file = view->file;
|
Editing_File *file = view->file;
|
||||||
Style *style = view->style;
|
Style *style = view->style;
|
||||||
i32 line_height = view->font_height;
|
i32 line_height = view->font_height;
|
||||||
|
@ -3813,9 +3850,9 @@ draw_file_loaded(File_View *view, i32_Rect rect, b32 is_active, Render_Target *t
|
||||||
|
|
||||||
internal i32
|
internal i32
|
||||||
draw_file_view(System_Functions *system, Exchange *exchange,
|
draw_file_view(System_Functions *system, Exchange *exchange,
|
||||||
View *view_, View *active, i32_Rect rect, b32 is_active,
|
View *view, View *active, i32_Rect rect, b32 is_active,
|
||||||
Render_Target *target, Input_Summary *user_input){
|
Render_Target *target, Input_Summary *user_input){
|
||||||
File_View *view = (File_View*)view_;
|
|
||||||
Editing_File *file = view->file;
|
Editing_File *file = view->file;
|
||||||
i32 result = 0;
|
i32 result = 0;
|
||||||
|
|
||||||
|
@ -3906,21 +3943,20 @@ draw_file_view(System_Functions *system, Exchange *exchange,
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
kill_file(
|
kill_file(System_Functions *system, Exchange *exchange,
|
||||||
System_Functions *system, Exchange *exchange,
|
|
||||||
General_Memory *general, Editing_File *file,
|
General_Memory *general, Editing_File *file,
|
||||||
Live_Views *live_set, Editing_Layout *layout){
|
Editing_Layout *layout){
|
||||||
|
|
||||||
File_View *fview;
|
View *view;
|
||||||
|
|
||||||
Panel *panel, *used_panels;
|
Panel *panel, *used_panels;
|
||||||
used_panels = &layout->used_sentinel;
|
used_panels = &layout->used_sentinel;
|
||||||
|
|
||||||
for (dll_items(panel, used_panels)){
|
for (dll_items(panel, used_panels)){
|
||||||
fview = view_to_file_view(panel->view);
|
view = panel->view;
|
||||||
Assert(fview);
|
Assert(view);
|
||||||
if (fview->file == file){
|
if (view->file == file){
|
||||||
fview->file = 0;
|
view->file = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3930,9 +3966,8 @@ kill_file(
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
free_file_view(View *view){
|
free_file_view(View *view){
|
||||||
File_View *fview = (File_View*)view;
|
if (view->line_wrap_y)
|
||||||
if (fview->line_wrap_y)
|
general_memory_free(&view->mem->general, view->line_wrap_y);
|
||||||
general_memory_free(&fview->mem->general, fview->line_wrap_y);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal
|
internal
|
||||||
|
@ -3960,7 +3995,7 @@ Do_View_Sig(do_file_view){
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal File_View*
|
internal View*
|
||||||
file_view_init(View *view, Editing_Layout *layout,
|
file_view_init(View *view, Editing_Layout *layout,
|
||||||
Working_Set *working_set, Delay *delay,
|
Working_Set *working_set, Delay *delay,
|
||||||
App_Settings *settings, Hot_Directory *hot_directory,
|
App_Settings *settings, Hot_Directory *hot_directory,
|
||||||
|
@ -3968,42 +4003,41 @@ file_view_init(View *view, Editing_Layout *layout,
|
||||||
|
|
||||||
view->do_view = do_file_view;
|
view->do_view = do_file_view;
|
||||||
|
|
||||||
File_View *result = (File_View*)view;
|
view->layout = layout;
|
||||||
result->layout = layout;
|
view->working_set = working_set;
|
||||||
result->working_set = working_set;
|
view->delay = delay;
|
||||||
result->delay = delay;
|
view->settings = settings;
|
||||||
result->settings = settings;
|
view->hot_directory = hot_directory;
|
||||||
result->hot_directory = hot_directory;
|
view->mem = mem;
|
||||||
result->mem = mem;
|
view->styles = styles;
|
||||||
result->styles = styles;
|
|
||||||
|
|
||||||
result->scrub_max = 1;
|
view->scrub_max = 1;
|
||||||
|
|
||||||
// TODO(allen): Make "interactive" mode customizable just like the query bars!
|
// TODO(allen): Make "interactive" mode customizable just like the query bars!
|
||||||
result->query = make_fixed_width_string(result->query_);
|
view->query = make_fixed_width_string(view->query_);
|
||||||
result->dest = make_fixed_width_string(result->dest_);
|
view->dest = make_fixed_width_string(view->dest_);
|
||||||
|
|
||||||
init_query_set(&result->query_set);
|
init_query_set(&view->query_set);
|
||||||
|
|
||||||
return(result);
|
return(view);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct File_View_Iter{
|
struct View_Iter{
|
||||||
File_View *view;
|
View *view;
|
||||||
|
|
||||||
Editing_File *file;
|
Editing_File *file;
|
||||||
File_View *skip;
|
View *skip;
|
||||||
Panel *used_panels;
|
Panel *used_panels;
|
||||||
Panel *panel;
|
Panel *panel;
|
||||||
};
|
};
|
||||||
|
|
||||||
internal File_View_Iter
|
internal View_Iter
|
||||||
file_view_iter_next(File_View_Iter iter){
|
file_view_iter_next(View_Iter iter){
|
||||||
Panel *panel;
|
Panel *panel;
|
||||||
File_View *file_view;
|
View *file_view;
|
||||||
|
|
||||||
for (panel = iter.panel; panel != iter.used_panels; panel = panel->next){
|
for (panel = iter.panel; panel != iter.used_panels; panel = panel->next){
|
||||||
file_view = view_to_file_view(panel->view);
|
file_view = panel->view;
|
||||||
if (file_view != iter.skip && file_view->file == iter.file){
|
if (file_view != iter.skip && file_view->file == iter.file){
|
||||||
iter.view = file_view;
|
iter.view = file_view;
|
||||||
break;
|
break;
|
||||||
|
@ -4013,9 +4047,9 @@ file_view_iter_next(File_View_Iter iter){
|
||||||
return(iter);
|
return(iter);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal File_View_Iter
|
internal View_Iter
|
||||||
file_view_iter_init(Editing_Layout *layout, Editing_File *file, File_View *skip){
|
file_view_iter_init(Editing_Layout *layout, Editing_File *file, View *skip){
|
||||||
File_View_Iter result;
|
View_Iter result;
|
||||||
result.used_panels = &layout->used_sentinel;
|
result.used_panels = &layout->used_sentinel;
|
||||||
result.panel = result.used_panels->next;
|
result.panel = result.used_panels->next;
|
||||||
result.file = file;
|
result.file = file;
|
||||||
|
@ -4025,7 +4059,7 @@ file_view_iter_init(Editing_Layout *layout, Editing_File *file, File_View *skip)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal b32
|
internal b32
|
||||||
file_view_iter_good(File_View_Iter iter){
|
file_view_iter_good(View_Iter iter){
|
||||||
b32 result = 1;
|
b32 result = 1;
|
||||||
if (iter.panel != iter.used_panels) result = 0;
|
if (iter.panel != iter.used_panels) result = 0;
|
||||||
return(result);
|
return(result);
|
||||||
|
@ -4227,12 +4261,51 @@ search_next_match(Partition *part, Search_Set *set, Search_Iter *iter_){
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
view_change_size(System_Functions *system, General_Memory *general, File_View *view){
|
view_change_size(System_Functions *system, General_Memory *general, View *view){
|
||||||
if (view->file){
|
if (view->file){
|
||||||
view_measure_wraps(system, general, view);
|
view_measure_wraps(system, general, view);
|
||||||
view->cursor = view_compute_cursor_from_pos(view, view->cursor.pos);
|
view->cursor = view_compute_cursor_from_pos(view, view->cursor.pos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct Live_Views{
|
||||||
|
void *views;
|
||||||
|
View free_sentinel;
|
||||||
|
i32 count, max;
|
||||||
|
i32 stride;
|
||||||
|
};
|
||||||
|
|
||||||
|
internal View*
|
||||||
|
live_set_get_view(Live_Views *live_set, i32 id){
|
||||||
|
void *result = ((char*)live_set->views + id);
|
||||||
|
return (View*)result;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal View_And_ID
|
||||||
|
live_set_alloc_view(Live_Views *live_set, Scroll_Rule_Function *scroll_rule){
|
||||||
|
View_And_ID result = {};
|
||||||
|
|
||||||
|
Assert(live_set->count < live_set->max);
|
||||||
|
++live_set->count;
|
||||||
|
|
||||||
|
result.view = live_set->free_sentinel.next;
|
||||||
|
result.id = (i32)((char*)result.view - (char*)live_set->views);
|
||||||
|
result.view->id = result.id;
|
||||||
|
|
||||||
|
dll_remove(result.view);
|
||||||
|
memset(result.view, 0, live_set->stride);
|
||||||
|
result.view->scroll_rule = scroll_rule;
|
||||||
|
|
||||||
|
return(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void
|
||||||
|
live_set_free_view(System_Functions *system, Exchange *exchange, Live_Views *live_set, View *view){
|
||||||
|
Assert(live_set->count > 0);
|
||||||
|
--live_set->count;
|
||||||
|
view->do_view(system, exchange, view, {}, 0, VMSG_FREE, 0, {}, 0);
|
||||||
|
dll_insert(&live_set->free_sentinel, view);
|
||||||
|
}
|
||||||
|
|
||||||
// BOTTOM
|
// BOTTOM
|
||||||
|
|
||||||
|
|
|
@ -309,97 +309,5 @@ layout_refit(Editing_Layout *layout, i32 prev_width, i32 prev_height){
|
||||||
layout_fix_all_panels(layout);
|
layout_fix_all_panels(layout);
|
||||||
}
|
}
|
||||||
|
|
||||||
enum View_Message{
|
|
||||||
VMSG_STEP,
|
|
||||||
VMSG_DRAW,
|
|
||||||
VMSG_RESIZE,
|
|
||||||
VMSG_STYLE_CHANGE,
|
|
||||||
VMSG_FREE
|
|
||||||
};
|
|
||||||
|
|
||||||
struct View;
|
|
||||||
#define Do_View_Sig(name) \
|
|
||||||
i32 (name)(System_Functions *system, Exchange *exchange, \
|
|
||||||
View *view, i32_Rect rect, View *active, \
|
|
||||||
View_Message message, Render_Target *target, \
|
|
||||||
Input_Summary *user_input, Input_Summary *active_input)
|
|
||||||
|
|
||||||
typedef Do_View_Sig(Do_View_Function);
|
|
||||||
|
|
||||||
struct View{
|
|
||||||
View *next, *prev;
|
|
||||||
|
|
||||||
Panel *panel;
|
|
||||||
Command_Map *map;
|
|
||||||
Do_View_Function *do_view;
|
|
||||||
Scroll_Rule_Function *scroll_rule;
|
|
||||||
i32 id;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Live_Views{
|
|
||||||
void *views;
|
|
||||||
View free_sentinel;
|
|
||||||
i32 count, max;
|
|
||||||
i32 stride;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct View_And_ID{
|
|
||||||
View *view;
|
|
||||||
i32 id;
|
|
||||||
};
|
|
||||||
|
|
||||||
internal View*
|
|
||||||
live_set_get_view(Live_Views *live_set, i32 id){
|
|
||||||
void *result = ((char*)live_set->views + id);
|
|
||||||
return (View*)result;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal View_And_ID
|
|
||||||
live_set_alloc_view(Live_Views *live_set, Scroll_Rule_Function *scroll_rule){
|
|
||||||
View_And_ID result = {};
|
|
||||||
|
|
||||||
Assert(live_set->count < live_set->max);
|
|
||||||
++live_set->count;
|
|
||||||
|
|
||||||
result.view = live_set->free_sentinel.next;
|
|
||||||
result.id = (i32)((char*)result.view - (char*)live_set->views);
|
|
||||||
result.view->id = result.id;
|
|
||||||
|
|
||||||
dll_remove(result.view);
|
|
||||||
memset(result.view, 0, live_set->stride);
|
|
||||||
result.view->scroll_rule = scroll_rule;
|
|
||||||
|
|
||||||
return(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void
|
|
||||||
live_set_free_view(System_Functions *system, Exchange *exchange, Live_Views *live_set, View *view){
|
|
||||||
Assert(live_set->count > 0);
|
|
||||||
--live_set->count;
|
|
||||||
view->do_view(system, exchange, view, {}, 0, VMSG_FREE, 0, {}, 0);
|
|
||||||
dll_insert(&live_set->free_sentinel, view);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void
|
|
||||||
view_set_first(View *new_view, Panel *panel){
|
|
||||||
new_view->panel = panel;
|
|
||||||
panel->view = new_view;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline f32
|
|
||||||
view_base_compute_width(View *view){
|
|
||||||
Panel *panel = view->panel;
|
|
||||||
return (f32)(panel->inner.x1 - panel->inner.x0);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline f32
|
|
||||||
view_base_compute_height(View *view){
|
|
||||||
Panel *panel = view->panel;
|
|
||||||
return (f32)(panel->inner.y1 - panel->inner.y0);
|
|
||||||
}
|
|
||||||
|
|
||||||
#define view_compute_width(view) (view_base_compute_width(&(view)->view_base))
|
|
||||||
#define view_compute_height(view) (view_base_compute_height(&(view)->view_base))
|
|
||||||
|
|
||||||
// BOTTOM
|
// BOTTOM
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue