diff --git a/src/backup/todo.txt b/src/backup/todo.txt index d19bfa2..d682387 100644 --- a/src/backup/todo.txt +++ b/src/backup/todo.txt @@ -2,9 +2,8 @@ ! From a user (novice) point of view, how does it look like? - Make a fuzzy command !> grep and fuzzy over it??? (doesn't seem very useful for grep) -- OpenCode :Set CodeExcludePatterns ".git/|mk -- ClangFormatOnCCode variable -- CleanTrailingWhitespace +- Add Bool variable +- Not rendering U+0009 TAB properly - Initialize all keybindings at the start and refer using global variables? - RegisterCommand should_appear_in_listing variable diff --git a/src/text_editor/buffer.cpp b/src/text_editor/buffer.cpp index 2742bc0..dd5685d 100644 --- a/src/text_editor/buffer.cpp +++ b/src/text_editor/buffer.cpp @@ -1514,8 +1514,21 @@ void ReopenBuffer(Buffer *buffer) { } void SaveBuffer(Buffer *buffer) { + bool formatted = false; + if (FormatUsingClangFormatWhenCCode) { + bool c = EndsWith(buffer->name, ".c") || EndsWith(buffer->name, ".cpp") || EndsWith(buffer->name, ".h") || EndsWith(buffer->name, ".hpp"); + if (c) { + ApplyClangFormat(buffer); + formatted = true; + } + } + + if (TrimTrailingWhitespace && formatted == false) { + TrimWhitespace(buffer); + } + Scratch scratch; - String string = AllocCharString(scratch, buffer); + String string = AllocCharString(scratch, buffer); bool success = WriteFile(buffer->name, string); if (success) { diff --git a/src/text_editor/commands.cpp b/src/text_editor/commands.cpp index 510d4bf..3614c3e 100644 --- a/src/text_editor/commands.cpp +++ b/src/text_editor/commands.cpp @@ -247,7 +247,7 @@ void MoveCursorByPageSize(Window *window, int direction, bool shift = false) { } } -void TrimTrailingWhitespace(Buffer *buffer, bool trim_lines_with_caret = false) { +void TrimWhitespace(Buffer *buffer, bool trim_lines_with_caret) { Scratch scratch; bool is_active_view = false; diff --git a/src/text_editor/globals.cpp b/src/text_editor/globals.cpp index 59d3031..f48712c 100644 --- a/src/text_editor/globals.cpp +++ b/src/text_editor/globals.cpp @@ -161,3 +161,5 @@ RegisterVariable(Float, UndoMergeTime, 0.3); RegisterVariable(Float, JumpHistoryMergeTime, 0.3); RegisterVariable(String, InternetBrowser, "firefox"); RegisterVariable(String, NonCodePatterns_EndsWith, ".git/|.obj|.o|.pdb|.exe|.ilk|.ttf|.ico|.gif|.jpg|.png|.spall"); +RegisterVariable(Int, TrimTrailingWhitespace, 1); +RegisterVariable(Int, FormatUsingClangFormatWhenCCode, 0); \ No newline at end of file diff --git a/src/text_editor/text_editor.h b/src/text_editor/text_editor.h index fb8f599..0f2db12 100644 --- a/src/text_editor/text_editor.h +++ b/src/text_editor/text_editor.h @@ -194,4 +194,6 @@ struct ResolvedOpen { bool existing_buffer; }; ResolvedOpen ResolveOpen(Allocator scratch, String path, String meta); -void CenterView(WindowID window); \ No newline at end of file +void CenterView(WindowID window); +void TrimWhitespace(Buffer *buffer, bool trim_lines_with_caret = false); +void ApplyClangFormat(Buffer *buffer); \ No newline at end of file