Convert line endings command
This commit is contained in:
@@ -353,6 +353,34 @@ void Command_TrimTrailingWhitespace(View *view, bool dont_trim_lines_with_cursor
|
|||||||
view->update_scroll = false;
|
view->update_scroll = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Command_ConvertLineEndings(View *view, bool dont_trim_lines_with_cursor) {
|
||||||
|
Scratch scratch;
|
||||||
|
Buffer *buffer = GetBuffer(view->active_buffer);
|
||||||
|
|
||||||
|
BeforeEdit(buffer, view->carets);
|
||||||
|
MergeCarets(view);
|
||||||
|
|
||||||
|
Array<Range> lines_to_skip_triming = {};
|
||||||
|
if (dont_trim_lines_with_cursor) lines_to_skip_triming = GetSelectedLinesSorted(scratch, view);
|
||||||
|
|
||||||
|
Array<Edit> edits = {scratch};
|
||||||
|
for (Int i = 0; i < buffer->line_starts.len; i += 1) {
|
||||||
|
Int range_index = FindRangeByPos(lines_to_skip_triming, i);
|
||||||
|
if (range_index != -1) continue;
|
||||||
|
|
||||||
|
Range range = GetLineRangeWithoutNL(*buffer, i);
|
||||||
|
wchar_t cr = GetChar(buffer, range.max - 1);
|
||||||
|
wchar_t lf = GetChar(buffer, range.max);
|
||||||
|
if (cr == L'\r' && lf == L'\n') {
|
||||||
|
AddEdit(&edits, {range.max - 1, range.max}, L"");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ApplyEdits(buffer, edits);
|
||||||
|
AfterEdit(buffer, &edits, &view->carets, !KILL_SELECTION);
|
||||||
|
view->update_scroll = false;
|
||||||
|
}
|
||||||
|
|
||||||
void Command_KillSelectedLines(View *view) {
|
void Command_KillSelectedLines(View *view) {
|
||||||
Scratch scratch;
|
Scratch scratch;
|
||||||
Buffer *buffer = GetBuffer(view->active_buffer);
|
Buffer *buffer = GetBuffer(view->active_buffer);
|
||||||
@@ -827,6 +855,7 @@ void WindowCommand(Event event, Window *window, View *view) {
|
|||||||
if (StyleTrimWhitespaceOnSave) {
|
if (StyleTrimWhitespaceOnSave) {
|
||||||
bool dont_trim_lines_with_cursor = true;
|
bool dont_trim_lines_with_cursor = true;
|
||||||
Command_TrimTrailingWhitespace(view, dont_trim_lines_with_cursor);
|
Command_TrimTrailingWhitespace(view, dont_trim_lines_with_cursor);
|
||||||
|
Command_ConvertLineEndings(view, dont_trim_lines_with_cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
String16 string16 = GetString(*buffer);
|
String16 string16 = GetString(*buffer);
|
||||||
|
|||||||
Reference in New Issue
Block a user