Add build window

This commit is contained in:
Krzosa Karol
2025-12-30 12:18:08 +01:00
parent b140d9c3f1
commit ca464c314b
9 changed files with 53 additions and 15 deletions

View File

@@ -8,7 +8,6 @@ How to go about search/replace, opening code and other considerations
- For fuzzy find number of files is the problem - most likely just getting them in one place is the biggest problem that can be optimized - For fuzzy find number of files is the problem - most likely just getting them in one place is the biggest problem that can be optimized
- Opening code is problematic for large / weird files, they stall for a while, getting them buffered up is hard. And they stall the execution when they go overboard. Maybe just skipping on filesisze on something would be enough, or making a very large skip list. Another solution would be lazy loaded buffers + determining what kind of file we are dealing with on open before loading - Opening code is problematic for large / weird files, they stall for a while, getting them buffered up is hard. And they stall the execution when they go overboard. Maybe just skipping on filesisze on something would be enough, or making a very large skip list. Another solution would be lazy loaded buffers + determining what kind of file we are dealing with on open before loading
- Search everything, like fuzzy panel, on every key stroke we grep immediately and get new results, cancel old, reset - Search everything, like fuzzy panel, on every key stroke we grep immediately and get new results, cancel old, reset
- ARENA CODE POSSIBLY DOMINATES
Use session 2 Use session 2
- Need configs I can't change browser or vcvarsall currently, maybe syntax like :Set InternetBrowser "firefox" - Need configs I can't change browser or vcvarsall currently, maybe syntax like :Set InternetBrowser "firefox"
@@ -17,7 +16,6 @@ Use session 2
- When jumping should center the view!!! - When jumping should center the view!!!
Debug session: Debug session:
- Should highlight main buffer when clicking on status?
- Report errorf - use coroutine dialogs - Report errorf - use coroutine dialogs
- Replace in render layer also - Replace in render layer also
- BlockAllocator something is not working there which only showed after executing OpenCode on many files - BlockAllocator something is not working there which only showed after executing OpenCode on many files

View File

@@ -1399,9 +1399,6 @@ void InitBuffers() {
EventBuffer = CreateBuffer(sys_allocator, GetUniqueBufferName(WorkDir, "events")); EventBuffer = CreateBuffer(sys_allocator, GetUniqueBufferName(WorkDir, "events"));
EventBuffer->no_history = true; EventBuffer->no_history = true;
EventBuffer->special = true; EventBuffer->special = true;
BuildBuffer = CreateBuffer(sys_allocator, GetUniqueBufferName(WorkDir, "build"));
BuildBuffer->no_history = true;
BuildBuffer->special = true;
} }
Int ConvertUTF8ToUTF16UnixLine(String string, char16_t *buffer, Int buffer_cap) { Int ConvertUTF8ToUTF16UnixLine(String string, char16_t *buffer, Int buffer_cap) {

View File

@@ -398,15 +398,14 @@ BSet Exec(String cmd, String working_dir, bool set_active = true) {
} }
BSet ExecBuild(String cmd) { BSet ExecBuild(String cmd) {
BSet build = GetBSet(BuildWindowID);
BSet main = GetBSet(LastActiveLayoutWindowID); BSet main = GetBSet(LastActiveLayoutWindowID);
NextActiveWindowID = main.window->id; SelectRange(build.view, Range{});
View *view = WindowOpenBufferView(main.window, BuildBuffer->name); ResetBuffer(build.buffer);
SelectRange(view, Range{}); Exec(build.view->id, false, cmd, WorkDir); // NOTE: IN CASE WE MOVE THIS TO CONSOLE WINDOW, MAKE SURE TO SWITCH HERE the scrolling
ResetBuffer(BuildBuffer); main.window->active_goto_list = build.view->id;
Exec(view->id, false, cmd, WorkDir); // NOTE: IN CASE WE MOVE THIS TO CONSOLE WINDOW, MAKE SURE TO SWITCH HERE the scrolling
main.window->active_goto_list = view->id;
main.window->goto_list_pos = 0; main.window->goto_list_pos = 0;
return main; return build;
} }
void Command_SaveAll() { void Command_SaveAll() {
@@ -425,6 +424,8 @@ void Command_Build() {
#else #else
ExecBuild("sh build.sh"); ExecBuild("sh build.sh");
#endif #endif
BSet main = GetBSet(BuildWindowID);
main.window->visible = true;
} RegisterCommand(Command_Build, "f1"); } RegisterCommand(Command_Build, "f1");
void Command_GotoNextInList() { void Command_GotoNextInList() {

View File

@@ -27,12 +27,14 @@ WindowID NullWindowID;
WindowID DebugWindowID; WindowID DebugWindowID;
ViewID DebugViewID; ViewID DebugViewID;
BufferID DebugBufferID; BufferID DebugBufferID;
WindowID CommandWindowID; WindowID CommandWindowID;
WindowID StatusBarWindowID; WindowID StatusBarWindowID;
WindowID SearchWindowID; WindowID SearchWindowID;
ViewID SearchViewID; ViewID SearchViewID;
BufferID SearchBufferID; BufferID SearchBufferID;
WindowID BuildWindowID;
ViewID BuildViewID;
BufferID BuildBufferID;
WindowID NextActiveWindowID; WindowID NextActiveWindowID;
WindowID ActiveWindowID; WindowID ActiveWindowID;
@@ -43,7 +45,6 @@ WindowID ResizerSelected = {-1};
WindowID ResizerHover = {-1}; WindowID ResizerHover = {-1};
Caret DocumentAnchor; Caret DocumentAnchor;
Buffer *BuildBuffer;
Buffer *GCInfoBuffer; Buffer *GCInfoBuffer;
Buffer *EventBuffer; Buffer *EventBuffer;
Buffer *TraceBuffer; Buffer *TraceBuffer;

View File

@@ -31,6 +31,7 @@
#include "window_debug.cpp" #include "window_debug.cpp"
#include "window_status.cpp" #include "window_status.cpp"
#include "window_search.cpp" #include "window_search.cpp"
#include "window_build.cpp"
#include "process.cpp" #include "process.cpp"
#include "event.cpp" #include "event.cpp"

View File

@@ -122,6 +122,7 @@ void InitWindows() {
StatusWindowInit(); StatusWindowInit();
DebugWindowInit(); DebugWindowInit();
SearchWindowInit(); SearchWindowInit();
BuildWindowInit();
} }
void CalcNiceties(Window *n) { void CalcNiceties(Window *n) {
@@ -152,6 +153,7 @@ void LayoutWindows(int16_t wx, int16_t wy) {
StatusWindowLayout(&screen_rect, wx, wy); StatusWindowLayout(&screen_rect, wx, wy);
DebugWindowLayout(&screen_rect, wx, wy); DebugWindowLayout(&screen_rect, wx, wy);
SearchWindowLayout(&screen_rect, wx, wy); SearchWindowLayout(&screen_rect, wx, wy);
BuildWindowLayout(&screen_rect, wx, wy);
// Column layout // Column layout
Int c = 0; Int c = 0;

View File

@@ -63,3 +63,6 @@ void StatusWindowLayout(Rect2I *rect, Int wx, Int wy);
void DebugWindowInit(); void DebugWindowInit();
void DebugWindowLayout(Rect2I *rect, Int wx, Int wy); void DebugWindowLayout(Rect2I *rect, Int wx, Int wy);
void BuildWindowInit();
void BuildWindowLayout(Rect2I *rect, Int wx, Int wy);

View File

@@ -0,0 +1,36 @@
void BuildWindowInit() {
Window *window = CreateWind();
BuildWindowID = window->id;
Buffer *buffer = CreateBuffer(SysAllocator, GetUniqueBufferName(WorkDir, "build"));
buffer->special = true;
buffer->no_history = true;
BuildBufferID = buffer->id;
View *view = CreateView(buffer->id);
view->special = true;
BuildViewID = view->id;
window->active_view = view->id;
window->draw_darker = true;
window->draw_line_highlight = true;
window->layout = false;
window->visible = false;
window->lose_visibility_on_escape = true;
window->jump_history = false;
}
void BuildWindowLayout(Rect2I *rect, Int wx, Int wy) {
Window *n = GetWindow(BuildWindowID);
Rect2I copy_rect = *rect;
if (!n->visible) {
rect = &copy_rect;
}
Int barsize = n->font->line_spacing * 10;
n->document_rect = n->total_rect = CutBottom(rect, barsize);
}
void Command_ShowBuildWindow() {
if (ActiveWindowID != BuildWindowID) {
return;
}
BSet main = GetBSet(BuildWindowID);
main.window->visible = true;
} RegisterCommand(Command_ShowBuildWindow, "ctrl-grave");

View File

@@ -65,7 +65,6 @@ Array<FuzzyPair> FuzzySearchLines(Allocator allocator, Buffer *buffer, Int line_
int32_t rating = FuzzyRate(s, needle); int32_t rating = FuzzyRate(s, needle);
Add(&ratings, {(int32_t)i, rating}); Add(&ratings, {(int32_t)i, rating});
} }
Array<FuzzyPair> temp = Copy(allocator, ratings); Array<FuzzyPair> temp = Copy(allocator, ratings);
MergeSort(ratings.len, ratings.data, temp.data); MergeSort(ratings.len, ratings.data, temp.data);
return ratings; return ratings;