From 12dfcde0b558da5330c50bc7b617ba46cbe3f1a1 Mon Sep 17 00:00:00 2001 From: cancel Date: Wed, 12 Dec 2018 03:02:14 +0900 Subject: [PATCH] Add hacky save "feature" (until I make a real one) --- field.c | 2 +- tui_main.c | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/field.c b/field.c index db0c9c7..cfd3886 100644 --- a/field.c +++ b/field.c @@ -54,7 +54,7 @@ void field_fput(Field* f, FILE* stream) { Glyph* row_p = f_buffer + f_width * iy; for (Usz ix = 0; ix < f_width; ++ix) { char c = row_p[ix]; - out_buffer[ix] = glyph_char_is_valid(c) ? c : '!'; + out_buffer[ix] = glyph_char_is_valid(c) ? c : '?'; } out_buffer[f_width] = '\n'; out_buffer[f_width + 1] = '\0'; diff --git a/tui_main.c b/tui_main.c index 937989a..c0f7c9b 100644 --- a/tui_main.c +++ b/tui_main.c @@ -1459,6 +1459,16 @@ void app_input_cmd(App_state* a, App_input_cmd ev) { } } +bool app_hacky_try_save(App_state* a) { + if (!a->filename) return false; + if (a->field.height == 0 || a->field.width == 0) return false; + FILE* f = fopen(a->filename, "w"); + if (!f) return false; + field_fput(&a->field, f); + fclose(f); + return true; +} + enum { Argopt_margins = UCHAR_MAX + 1, Argopt_osc_server, @@ -1839,6 +1849,10 @@ int main(int argc, char** argv) { app_input_character(&app_state, '.'); break; + case KEY_F(2): + app_hacky_try_save(&app_state); + break; + default: if (key >= CHAR_MIN && key <= CHAR_MAX && is_valid_glyph((Glyph)key)) { app_input_character(&app_state, (char)key);