Config files
This commit is contained in:
@@ -5,6 +5,7 @@
|
|||||||
- RegisterCommand should_appear_in_listing variable
|
- RegisterCommand should_appear_in_listing variable
|
||||||
- Maybe one list for all variables including the commands etc?
|
- Maybe one list for all variables including the commands etc?
|
||||||
- make variables nicer named
|
- make variables nicer named
|
||||||
|
- Problem generating configs don't know which quotation marks would be good ....
|
||||||
|
|
||||||
Use session 3:
|
Use session 3:
|
||||||
- Maybe status view, commit changes (like to buffer name or line) on enter?
|
- Maybe status view, commit changes (like to buffer name or line) on enter?
|
||||||
|
|||||||
@@ -38,6 +38,11 @@ API bool IsDigit(char16_t a) {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
API bool IsHexDigit(char16_t a) {
|
||||||
|
bool result = a >= u'0' && a <= u'9' || a == 'a' || a == 'b' || a == 'c' || a == 'd' || a == 'e' || a == 'f';
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
API bool IsAlphanumeric(char16_t a) {
|
API bool IsAlphanumeric(char16_t a) {
|
||||||
bool result = IsDigit(a) || IsAlphabetic(a);
|
bool result = IsDigit(a) || IsAlphabetic(a);
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ void Test(mco_coro *co) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void InitTests() {
|
void InitTests() {
|
||||||
ConfigWaitForEvents = false;
|
WaitForEvents = false;
|
||||||
TestDir = Format(TestArena, "%S/test_env", GetExeDir(TestArena));
|
TestDir = Format(TestArena, "%S/test_env", GetExeDir(TestArena));
|
||||||
CoData *data = CoAdd(Test);
|
CoData *data = CoAdd(Test);
|
||||||
data->dont_wait_until_resolved = true;
|
data->dont_wait_until_resolved = true;
|
||||||
|
|||||||
@@ -895,7 +895,7 @@ API void RedoEdit(Buffer *buffer, Array<Caret> *carets) {
|
|||||||
|
|
||||||
if (buffer->redo_stack.len > 0) {
|
if (buffer->redo_stack.len > 0) {
|
||||||
HistoryEntry *next = GetLast(buffer->redo_stack);
|
HistoryEntry *next = GetLast(buffer->redo_stack);
|
||||||
if (next->time - entry.time <= ConfigUndoMergeTimeWindow) {
|
if (next->time - entry.time <= UndoMergeTimeWindow) {
|
||||||
RedoEdit(buffer, carets);
|
RedoEdit(buffer, carets);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -921,7 +921,7 @@ API void UndoEdit(Buffer *buffer, Array<Caret> *carets) {
|
|||||||
|
|
||||||
if (buffer->undo_stack.len > 0) {
|
if (buffer->undo_stack.len > 0) {
|
||||||
HistoryEntry *next = GetLast(buffer->undo_stack);
|
HistoryEntry *next = GetLast(buffer->undo_stack);
|
||||||
if (entry.time - next->time <= ConfigUndoMergeTimeWindow) {
|
if (entry.time - next->time <= UndoMergeTimeWindow) {
|
||||||
UndoEdit(buffer, carets);
|
UndoEdit(buffer, carets);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -486,7 +486,7 @@ ResolvedOpen ResolveOpen(Allocator alo, String path, String meta) {
|
|||||||
// Web
|
// Web
|
||||||
{
|
{
|
||||||
if (StartsWith(path, "https://") || StartsWith(path, "http://")) {
|
if (StartsWith(path, "https://") || StartsWith(path, "http://")) {
|
||||||
result.path = Format(alo, "%S %S", ConfigInternetBrowser, path);
|
result.path = Format(alo, "%S %S", InternetBrowser, path);
|
||||||
result.kind = OpenKind_BackgroundExec;
|
result.kind = OpenKind_BackgroundExec;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -953,14 +953,14 @@ void CMD_Undo() {
|
|||||||
} RegisterCommand(CMD_Undo, "ctrl-z");
|
} RegisterCommand(CMD_Undo, "ctrl-z");
|
||||||
|
|
||||||
void CMD_MakeFontLarger() {
|
void CMD_MakeFontLarger() {
|
||||||
ConfigFontSize += 1;
|
FontSize += 1;
|
||||||
ReloadFont(ConfigFont, (U32)ConfigFontSize);
|
ReloadFont(Font, (U32)FontSize);
|
||||||
} RegisterCommand(CMD_MakeFontLarger, "ctrl-equals");
|
} RegisterCommand(CMD_MakeFontLarger, "ctrl-equals");
|
||||||
|
|
||||||
void CMD_MakeFontSmaller() {
|
void CMD_MakeFontSmaller() {
|
||||||
if (ConfigFontSize > 4) {
|
if (FontSize > 4) {
|
||||||
ConfigFontSize -= 1;
|
FontSize -= 1;
|
||||||
ReloadFont(ConfigFont, (U32)ConfigFontSize);
|
ReloadFont(Font, (U32)FontSize);
|
||||||
}
|
}
|
||||||
} RegisterCommand(CMD_MakeFontSmaller, "ctrl-minus");
|
} RegisterCommand(CMD_MakeFontSmaller, "ctrl-minus");
|
||||||
|
|
||||||
@@ -1313,6 +1313,20 @@ void Set(String16 string) {
|
|||||||
ReportErrorf("Failed to parse :Set %S <expected float>", name8);
|
ReportErrorf("Failed to parse :Set %S <expected float>", name8);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
} else if (var->type == VariableType_Color) {
|
||||||
|
if (IsHexDigit(At(string, 0))) {
|
||||||
|
String16 begin = {string.data, 0};
|
||||||
|
while (IsHexDigit(At(string, 0))) {
|
||||||
|
string = Skip(string, 1);
|
||||||
|
begin.len += 1;
|
||||||
|
}
|
||||||
|
String p = ToString(scratch, begin);
|
||||||
|
ReportConsolef(":Set %S %S", name8, p);
|
||||||
|
var->color->value = (uint32_t)strtoll(p.data, NULL, 16);
|
||||||
|
} else {
|
||||||
|
ReportErrorf("Failed to parse :Set %S <expected integer>", name8);
|
||||||
|
return;
|
||||||
|
}
|
||||||
} ElseInvalidCodepath();
|
} ElseInvalidCodepath();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1366,14 +1380,50 @@ void CMD_Set() {
|
|||||||
Set(string);
|
Set(string);
|
||||||
} RegisterCommand(CMD_Set, "");
|
} RegisterCommand(CMD_Set, "");
|
||||||
|
|
||||||
void EvalCommandsLineByLine(Buffer *buffer) {
|
void EvalCommandsLineByLine(BSet set) {
|
||||||
for (Int i = 0; i < buffer->line_starts.len; i += 1) {
|
WindowID save_last = LastActiveLayoutWindowID;
|
||||||
String16 istr = GetLineString(buffer, i);
|
WindowID save_active = ActiveWindowID;
|
||||||
EvalCommand(istr);
|
WindowID save_next = NextActiveWindowID;
|
||||||
|
ActiveWindowID = set.window->id;
|
||||||
|
LastActiveLayoutWindowID = set.window->id;
|
||||||
|
NextActiveWindowID = set.window->id;
|
||||||
|
for (Int i = 0; i < set.buffer->line_starts.len; i += 1) {
|
||||||
|
Int pos = GetLineRangeWithoutNL(set.buffer, i).min;
|
||||||
|
SelectRange(set.view, MakeRange(pos));
|
||||||
|
Range range = EncloseLoadWord(set.buffer, pos);
|
||||||
|
String16 string = GetString(set.buffer, range);
|
||||||
|
string = Trim(string);
|
||||||
|
if (string.len == 0) {
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
if (StartsWith(string, u"//")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
Open(string);
|
||||||
|
}
|
||||||
|
LastActiveLayoutWindowID = save_last;
|
||||||
|
ActiveWindowID = save_active;
|
||||||
|
NextActiveWindowID = save_next;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMD_EvalCommandsLineByLine() {
|
void CMD_EvalCommandsLineByLine() {
|
||||||
BSet set = GetBSet(LastActiveLayoutWindowID);
|
BSet set = GetBSet(LastActiveLayoutWindowID);
|
||||||
EvalCommandsLineByLine(set.buffer);
|
EvalCommandsLineByLine(set);
|
||||||
} RegisterCommand(CMD_EvalCommandsLineByLine, "");
|
} RegisterCommand(CMD_EvalCommandsLineByLine, "");
|
||||||
|
|
||||||
|
void GenerateConfig(Buffer *buffer) {
|
||||||
|
For (Variables) {
|
||||||
|
if (it.type == VariableType_String) {
|
||||||
|
RawAppendf(buffer, "// :Set %S '%S'\n", it.name, *it.string);
|
||||||
|
} else if (it.type == VariableType_Int) {
|
||||||
|
RawAppendf(buffer, "// :Set %S '%lld'\n", it.name, (long long)*it.i);
|
||||||
|
} else if (it.type == VariableType_Float) {
|
||||||
|
RawAppendf(buffer, "// :Set %S '%f'\n", it.name, *it.f);
|
||||||
|
} else if (it.type == VariableType_Color) {
|
||||||
|
RawAppendf(buffer, "// :Set %S %x\n", it.name, it.color->value);
|
||||||
|
} ElseInvalidCodepath();
|
||||||
|
}
|
||||||
|
For (CommandFunctions) {
|
||||||
|
RawAppendf(buffer, "// :Set %S '%S'\n", it.name, it.binding);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -130,7 +130,7 @@ void DrawWindow(Window *window, Event &event) {
|
|||||||
|
|
||||||
|
|
||||||
Rect2I combined_document_line_number = window->document_rect;
|
Rect2I combined_document_line_number = window->document_rect;
|
||||||
if (window->draw_line_numbers) {
|
if (DrawLineNumbers && window->draw_line_numbers) {
|
||||||
combined_document_line_number.min.x = window->line_numbers_rect.min.x;
|
combined_document_line_number.min.x = window->line_numbers_rect.min.x;
|
||||||
}
|
}
|
||||||
SetScissor(combined_document_line_number);
|
SetScissor(combined_document_line_number);
|
||||||
@@ -242,7 +242,7 @@ void DrawWindow(Window *window, Event &event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Draw line numbers
|
// Draw line numbers
|
||||||
if (window->draw_line_numbers) {
|
if (DrawLineNumbers && window->draw_line_numbers) {
|
||||||
ProfileScope(DrawLineNumbers);
|
ProfileScope(DrawLineNumbers);
|
||||||
Scratch scratch;
|
Scratch scratch;
|
||||||
SetScissor(window->line_numbers_rect);
|
SetScissor(window->line_numbers_rect);
|
||||||
@@ -269,7 +269,7 @@ void DrawWindow(Window *window, Event &event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Draw scrollbar
|
// Draw scrollbar
|
||||||
if (window->draw_scrollbar) {
|
if (DrawScrollbar && window->draw_scrollbar) {
|
||||||
ProfileScope(DrawScrollbar);
|
ProfileScope(DrawScrollbar);
|
||||||
SetScissor(window->scrollbar_rect);
|
SetScissor(window->scrollbar_rect);
|
||||||
DrawRect(window->scrollbar_rect, ColorScrollbarBackground);
|
DrawRect(window->scrollbar_rect, ColorScrollbarBackground);
|
||||||
|
|||||||
@@ -473,7 +473,7 @@ Array<Event> GetEventsForFrame(Allocator allocator) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
if (WaitForEvents) {
|
if (WaitForEventsState) {
|
||||||
SDL_WaitEvent(&event);
|
SDL_WaitEvent(&event);
|
||||||
Event ev = TranslateSDLEvent(&event);
|
Event ev = TranslateSDLEvent(&event);
|
||||||
AddEvent(&result, ev);
|
AddEvent(&result, ev);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ int FullScreenSizeX, FullScreenSizeY;
|
|||||||
int FullScreenPositionX, FullScreenPositionY;
|
int FullScreenPositionX, FullScreenPositionY;
|
||||||
bool Testing = false;
|
bool Testing = false;
|
||||||
bool AppIsRunning = true;
|
bool AppIsRunning = true;
|
||||||
bool WaitForEvents = true;
|
bool WaitForEventsState = true;
|
||||||
bool RunGCThisFrame;
|
bool RunGCThisFrame;
|
||||||
bool SearchCaseSensitive = false;
|
bool SearchCaseSensitive = false;
|
||||||
bool SearchWordBoundary = false;
|
bool SearchWordBoundary = false;
|
||||||
@@ -153,14 +153,13 @@ RegisterVariable(Color, ColorTitleBarLineHighlight, GruvboxLight0Soft);
|
|||||||
RegisterVariable(Color, ColorTitleBarOutline, GruvboxLight3);
|
RegisterVariable(Color, ColorTitleBarOutline, GruvboxLight3);
|
||||||
RegisterVariable(Color, ColorResizerBackground, GruvboxLight0Hard);
|
RegisterVariable(Color, ColorResizerBackground, GruvboxLight0Hard);
|
||||||
RegisterVariable(Color, ColorResizerOutline, GruvboxLight3);
|
RegisterVariable(Color, ColorResizerOutline, GruvboxLight3);
|
||||||
RegisterVariable(Int, ConfigWaitForEvents, 1);
|
RegisterVariable(Int, WaitForEvents, 1);
|
||||||
RegisterVariable(Int, ConfigDrawLineNumbers, 1);
|
RegisterVariable(Int, DrawLineNumbers, 1);
|
||||||
RegisterVariable(Int, ConfigDrawScrollbar, 1);
|
RegisterVariable(Int, DrawScrollbar, 1);
|
||||||
RegisterVariable(Int, ConfigIndentSize, 4);
|
RegisterVariable(Int, IndentSize, 4);
|
||||||
RegisterVariable(Int, ConfigFontSize, 15);
|
RegisterVariable(Int, FontSize, 15);
|
||||||
RegisterVariable(Int, ConfigFontFilter, 0);
|
RegisterVariable(String, Font, "");
|
||||||
RegisterVariable(String, ConfigFont, "/home/krz/text_editor/package/CascadiaMono.ttf");
|
RegisterVariable(String, VCVarsall, "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/vcvars64.bat");
|
||||||
RegisterVariable(String, ConfigVCVarsall, "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/vcvars64.bat");
|
RegisterVariable(Float, UndoMergeTimeWindow, 0.3);
|
||||||
RegisterVariable(Float, ConfigUndoMergeTimeWindow, 0.3);
|
RegisterVariable(Float, JumpHistoryMergeTimeWindow, 0.3);
|
||||||
RegisterVariable(Float, ConfigJumpHistoryMergeTimeWindow, 0.3);
|
RegisterVariable(String, InternetBrowser, "firefox");
|
||||||
RegisterVariable(String, ConfigInternetBrowser, "firefox");
|
|
||||||
|
|||||||
@@ -648,7 +648,7 @@ void Windows_SetupVCVarsall(mco_coro *co) {
|
|||||||
Scratch scratch;
|
Scratch scratch;
|
||||||
String working_dir = WorkDir;
|
String working_dir = WorkDir;
|
||||||
String buffer_name = GetUniqueBufferName(working_dir, "vcvarsall-");
|
String buffer_name = GetUniqueBufferName(working_dir, "vcvarsall-");
|
||||||
String cmd = Format(scratch, "\"%S\" && set", ConfigVCVarsall);
|
String cmd = Format(scratch, "\"%S\" && set", VCVarsall);
|
||||||
view = ExecHidden(buffer_name, cmd, working_dir);
|
view = ExecHidden(buffer_name, cmd, working_dir);
|
||||||
}
|
}
|
||||||
for (;;) {
|
for (;;) {
|
||||||
@@ -701,9 +701,9 @@ void MainLoop() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WaitForEvents = ConfigWaitForEvents;
|
WaitForEventsState = WaitForEvents;
|
||||||
if (IsDocumentSelectionValid() || IsScrollbarSelectionValid() || ActiveProcesses.len || dont_wait_until_resolved) {
|
if (IsDocumentSelectionValid() || IsScrollbarSelectionValid() || ActiveProcesses.len || dont_wait_until_resolved) {
|
||||||
WaitForEvents = false;
|
WaitForEventsState = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// This shouldn't matter to the state of the program, only appearance for
|
// This shouldn't matter to the state of the program, only appearance for
|
||||||
@@ -846,7 +846,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
InitBuffers();
|
InitBuffers();
|
||||||
InitRender();
|
InitRender();
|
||||||
ReloadFont(ConfigFont, (U32)ConfigFontSize);
|
ReloadFont(Font, (U32)FontSize);
|
||||||
InitWindows();
|
InitWindows();
|
||||||
InitOS(ReportWarningf);
|
InitOS(ReportWarningf);
|
||||||
|
|
||||||
@@ -873,6 +873,23 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
Scratch scratch;
|
||||||
|
String exe_dir = GetExeDir(scratch);
|
||||||
|
String config_path = Format(scratch, "%S/config.te", exe_dir);
|
||||||
|
Window *window = GetWindow(NullWindowID);
|
||||||
|
View *view = WindowOpenBufferView(window, config_path);
|
||||||
|
Buffer *buffer = GetBuffer(view->active_buffer);
|
||||||
|
bool file_exists = buffer->file_mod_time != 0;
|
||||||
|
if (!file_exists) {
|
||||||
|
GenerateConfig(buffer);
|
||||||
|
} else {
|
||||||
|
EvalCommandsLineByLine({window, view, buffer});
|
||||||
|
}
|
||||||
|
buffer->dirty = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
ReportConsolef("WorkDir = %S", WorkDir);
|
ReportConsolef("WorkDir = %S", WorkDir);
|
||||||
if (Testing) InitTests();
|
if (Testing) InitTests();
|
||||||
#if OS_WINDOWS
|
#if OS_WINDOWS
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ struct Register_Function {
|
|||||||
};
|
};
|
||||||
#define RegisterFunction(functions, name) Register_Function RF__##name(functions, #name, name)
|
#define RegisterFunction(functions, name) Register_Function RF__##name(functions, #name, name)
|
||||||
|
|
||||||
struct Register_Command { Register_Command(Array<CommandData> *fucs, Function *function, String name, String binding) { if (StartsWith(name, "CMD_")) name = Skip(name, 8); Add(fucs, {name, binding, function}); } };
|
struct Register_Command { Register_Command(Array<CommandData> *fucs, Function *function, String name, String binding) { if (StartsWith(name, "CMD_")) name = Skip(name, sizeof("CMD_") - 1); Add(fucs, {name, binding, function}); } };
|
||||||
#define RegisterCommand(name, binding) Register_Command RC__##name(&CommandFunctions, name, #name, binding)
|
#define RegisterCommand(name, binding) Register_Command RC__##name(&CommandFunctions, name, #name, binding)
|
||||||
|
|
||||||
const int DIR_RIGHT = 0;
|
const int DIR_RIGHT = 0;
|
||||||
|
|||||||
@@ -443,9 +443,9 @@ void Delete(View *view, int direction, bool ctrl = false) {
|
|||||||
Range indent_range = GetIndentRangeAtPos(buffer, it.range.min);
|
Range indent_range = GetIndentRangeAtPos(buffer, it.range.min);
|
||||||
if (ctrl == false && it.range.min > indent_range.min && it.range.max <= indent_range.max) {
|
if (ctrl == false && it.range.min > indent_range.min && it.range.max <= indent_range.max) {
|
||||||
Int offset = it.range.min - indent_range.min;
|
Int offset = it.range.min - indent_range.min;
|
||||||
Int to_delete = (offset % (ConfigIndentSize));
|
Int to_delete = (offset % (IndentSize));
|
||||||
if (to_delete == 0) to_delete = ConfigIndentSize;
|
if (to_delete == 0) to_delete = IndentSize;
|
||||||
to_delete = Clamp(to_delete, (Int)1, ConfigIndentSize);
|
to_delete = Clamp(to_delete, (Int)1, IndentSize);
|
||||||
for (Int i = 0; i < to_delete; i += 1) {
|
for (Int i = 0; i < to_delete; i += 1) {
|
||||||
it = MoveCaret(buffer, it, direction, false, SHIFT_PRESS);
|
it = MoveCaret(buffer, it, direction, false, SHIFT_PRESS);
|
||||||
}
|
}
|
||||||
@@ -512,12 +512,12 @@ void IndentSelectedLines(View *view, bool shift = false) {
|
|||||||
Range pos_range_of_line = GetLineRange(buffer, i);
|
Range pos_range_of_line = GetLineRange(buffer, i);
|
||||||
|
|
||||||
if (!shift) {
|
if (!shift) {
|
||||||
String16 whitespace_string = {u" ", ConfigIndentSize};
|
String16 whitespace_string = {u" ", IndentSize};
|
||||||
AddEdit(&edits, {pos_range_of_line.min, pos_range_of_line.min}, whitespace_string);
|
AddEdit(&edits, {pos_range_of_line.min, pos_range_of_line.min}, whitespace_string);
|
||||||
} else {
|
} else {
|
||||||
String16 string = GetString(buffer, pos_range_of_line);
|
String16 string = GetString(buffer, pos_range_of_line);
|
||||||
Int whitespace_len = 0;
|
Int whitespace_len = 0;
|
||||||
for (Int i = 0; i < ConfigIndentSize && i < string.len && string.data[i] == ' '; i += 1) {
|
for (Int i = 0; i < IndentSize && i < string.len && string.data[i] == ' '; i += 1) {
|
||||||
whitespace_len += 1;
|
whitespace_len += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ Window *CreateWind() {
|
|||||||
w->font = &PrimaryFont;
|
w->font = &PrimaryFont;
|
||||||
w->visible = true;
|
w->visible = true;
|
||||||
w->layout = true;
|
w->layout = true;
|
||||||
w->draw_scrollbar = ConfigDrawScrollbar;
|
w->draw_scrollbar = true;
|
||||||
w->draw_line_numbers = ConfigDrawLineNumbers;
|
w->draw_line_numbers = true;
|
||||||
w->draw_line_highlight = true;
|
w->draw_line_highlight = true;
|
||||||
w->jump_history = true;
|
w->jump_history = true;
|
||||||
w->id = AllocWindowID(w);
|
w->id = AllocWindowID(w);
|
||||||
@@ -126,8 +126,8 @@ void InitWindows() {
|
|||||||
void CalcNiceties(Window *n) {
|
void CalcNiceties(Window *n) {
|
||||||
float scrollbar_size = (10.f * DPIScale);
|
float scrollbar_size = (10.f * DPIScale);
|
||||||
float line_numbers_size = (float)n->font->char_spacing * 10.f;
|
float line_numbers_size = (float)n->font->char_spacing * 10.f;
|
||||||
if (n->draw_scrollbar) n->scrollbar_rect = CutRight(&n->document_rect, (Int)scrollbar_size);
|
if (DrawScrollbar && n->draw_scrollbar) n->scrollbar_rect = CutRight(&n->document_rect, (Int)scrollbar_size);
|
||||||
if (n->draw_line_numbers) n->line_numbers_rect = CutLeft(&n->document_rect, (Int)line_numbers_size);
|
if (DrawLineNumbers && n->draw_line_numbers) n->line_numbers_rect = CutLeft(&n->document_rect, (Int)line_numbers_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
double WindowCalcEvenResizerValue(Int screen_size_x, Int *out_count = NULL) {
|
double WindowCalcEvenResizerValue(Int screen_size_x, Int *out_count = NULL) {
|
||||||
@@ -278,7 +278,7 @@ void JumpBack(Window *window) {
|
|||||||
|
|
||||||
if (window->goto_history.len) {
|
if (window->goto_history.len) {
|
||||||
GotoCrumb *next = GetLast(window->goto_history);
|
GotoCrumb *next = GetLast(window->goto_history);
|
||||||
if (c.view_id == next->view_id && c.time - next->time <= ConfigJumpHistoryMergeTimeWindow) {
|
if (c.view_id == next->view_id && c.time - next->time <= JumpHistoryMergeTimeWindow) {
|
||||||
JumpBack(window);
|
JumpBack(window);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -298,7 +298,7 @@ void JumpForward(Window *window) {
|
|||||||
|
|
||||||
if (window->goto_redo.len) {
|
if (window->goto_redo.len) {
|
||||||
GotoCrumb *next = GetLast(window->goto_redo);
|
GotoCrumb *next = GetLast(window->goto_redo);
|
||||||
if (c.view_id == next->view_id && next->time - c.time <= ConfigJumpHistoryMergeTimeWindow) {
|
if (c.view_id == next->view_id && next->time - c.time <= JumpHistoryMergeTimeWindow) {
|
||||||
JumpForward(window);
|
JumpForward(window);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ void CMD_ShowBufferList() {
|
|||||||
ResetBuffer(command_bar.buffer);
|
ResetBuffer(command_bar.buffer);
|
||||||
For (Buffers) {
|
For (Buffers) {
|
||||||
if (it->special || it->temp) {
|
if (it->special || it->temp) {
|
||||||
continue;
|
if (it->id != NullBufferID) continue;
|
||||||
}
|
}
|
||||||
RawAppendf(command_bar.buffer, "\n%S", it->name);
|
RawAppendf(command_bar.buffer, "\n%S", it->name);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user