CMD_RunFile

This commit is contained in:
Krzosa Karol
2026-01-17 09:51:40 +01:00
parent c970c1c7d6
commit 6fc5f0538f
2 changed files with 18 additions and 5 deletions

View File

@@ -4,9 +4,6 @@ mkdir build
cd build
FLAGS="-Wall -Wno-missing-braces -Wno-writable-strings -nostdlib++ -fsanitize=address -fno-exceptions -fdiagnostics-absolute-paths -g -Wno-writable-strings -I../src -DDEBUG_BUILD=1"
# clang -o metaprogram $FLAGS ../src/metaprogram/metaprogram.cpp
# ./metaprogram
I="-I../src/external/SDL/include -I../src/external/lua/src -I../src/external/glad"
clang -o te $FLAGS ../src/text_editor/text_editor.cpp $I -lSDL3 -lm -lbacktrace

View File

@@ -31,12 +31,12 @@ void LayoutBuildWindow(Rect2I *rect, int16_t wx, int16_t wy) {
window->document_rect = window->total_rect = CutBottom(rect, barsize);
}
BSet ExecBuild(String cmd) {
BSet ExecBuild(String cmd, String working_dir = ProjectDirectory) {
BSet build = GetBSet(BuildWindowID);
BSet main = GetBSet(PrimaryWindowID);
SelectRange(build.view, Range{});
ResetBuffer(build.buffer);
Exec(build.view->id, true, cmd, ProjectDirectory);
Exec(build.view->id, true, cmd, working_dir);
main.window->active_goto_list = build.view->id;
main.window->goto_list_pos = 0;
return build;
@@ -53,6 +53,22 @@ void CMD_Build() {
main.window->visible = true;
} RegisterCommand(CMD_Build, "f1", "Run build.sh or build.bat in working directory, output is printed in a popup console and a special build buffer");
void CMD_RunFile() {
Scratch scratch;
BSet primary = GetBSet(PrimaryWindowID);
BSet build = GetBSet(BuildWindowID);
SaveBuffer(primary.buffer);
if (OS_WINDOWS) {
String cmd = Format(scratch, "cl %S -Fe:cfile.exe /Zi /FC /nologo /WX /W3 /wd4200 /wd4334 /diagnostics:column && cfile.exe", primary.buffer->name);
ExecBuild(cmd, GetDir(primary.buffer));
} else {
String cmd = Format(scratch, "bash <<EOF\nclang %S -o cfile.exe -g -Wall -Wno-missing-braces -Wno-writable-strings -Wno-writable-strings -fsanitize=address -fdiagnostics-absolute-paths -lm \n ./cfile.exe\nEOF", primary.buffer->name);
ExecBuild(cmd, GetDir(primary.buffer));
}
build.window->visible = true;
} RegisterCommand(CMD_RunFile, "", "Run and build current file, currently only C/C++ supported");
void CMD_ShowBuildWindow() {
BSet main = GetBSet(BuildWindowID);
if (ActiveWindowID != BuildWindowID) {