diff --git a/build_file.cpp b/build_file.cpp index 10b66d0..2160860 100644 --- a/build_file.cpp +++ b/build_file.cpp @@ -184,6 +184,8 @@ char *C(const char *value) { } S8_String LuaScript = R"==( +INTERNET_BROWSER = 'C:/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe' + SDLK_CTRL = 1073742048 SDLK_PAGE_DOWN = 1073741902 SDLK_PAGE_UP = 1073741899 @@ -336,32 +338,19 @@ function SkipPath(s) return s, path, drive, cells end -function BufferNameExists(name) - buffers = GetBufferList() - for i = 1,#buffers do - buff = buffers[i] - if buff == name then - return true - end - end - return false -end - function MatchWindowsPath(_s) local s, file_path, drive = SkipPath(_s) if not file_path then return nil end if not drive then - local d = GetActiveMainWindowBufferDir() + local d = GetDir() file_path = d..'/'..file_path end local line, col, s = SkipLineAndColumn(s) - local exists = FileExists(file_path) or BufferNameExists(file_path) + local exists = FileExists(file_path) or BufferExists(file_path) if not exists then return nil end - - Print("OPEN :: INPUT = ".._s.." KIND = ".."text".." ".."FILE_PATH = "..file_path.."["..line..","..col.."]") return {kind = "text", file_path = file_path, line = line, col = col} end @@ -370,16 +359,15 @@ function MatchGitCommit(s) if i then s = s:sub(8) local command = "git --no-pager show "..s - return {kind = "exec", cmd = command, working_dir = GetActiveMainWindowBufferDir()} + return {kind = "exec", cmd = command, working_dir = GetDir()} end return nil end -InternetBrowser = 'C:/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe' function MatchURL(s) local i, j = string.find(s, "^https://") if i then - return {kind = "exec_console", cmd = '"'..InternetBrowser..'" '..s, working_dir = GetActiveMainWindowBufferDir()} + return {kind = "exec_console", cmd = '"'..INTERNET_BROWSER..'" '..s, working_dir = GetDir()} end return nil end @@ -429,8 +417,6 @@ table.insert(OnCommandCallbacks, function (e) Eval(GetLoadWord()) end end) --- REMEBER: AS LITTLE ACTUAL CODE AS POSSIBLE IN LUA --- ONLY CONFIGURABLES function OnCommand(e) for i = #OnCommandCallbacks,1,-1 do on_command = OnCommandCallbacks[i] diff --git a/src/text_editor/commands.cpp b/src/text_editor/commands.cpp index 2364425..4575214 100644 --- a/src/text_editor/commands.cpp +++ b/src/text_editor/commands.cpp @@ -120,7 +120,7 @@ void MouseLoadWord(Event event, bool cut_path) { active.view->carets.len = 1; active.view->carets[0] = MakeCaret(p); - Open(string); + Command_Open(string); } } } @@ -817,7 +817,7 @@ void Command_GotoNextInList(Window *window, Int line_offset = 1) { if (line.len == 0) continue; CheckpointBeforeGoto(window, active_view); - Open(line); + Command_Open(line); opened = true; break; } diff --git a/src/text_editor/commands_bindings.cpp b/src/text_editor/commands_bindings.cpp index 85edd74..020aee7 100644 --- a/src/text_editor/commands_bindings.cpp +++ b/src/text_editor/commands_bindings.cpp @@ -483,7 +483,7 @@ void OnCommand(Event event) { if (StartsWith(right_part, "/+")) { CutLastSlash(&string); } - Open(string); + Command_Open(string); } if (CtrlPress(SDLK_T)) { @@ -506,14 +506,14 @@ void OnCommand(Event event) { CutLastSlash(&string); } - Open(string); + Command_Open(string); } else if (CtrlPress(SDLK_Q)) { Caret caret = active.view->carets[0]; Range range = caret.range; if (GetSize(caret.range) == 0) range = EncloseLoadWord(active.buffer, GetFront(caret)); String16 string = GetString(active.buffer, range); - Open(string); + Command_Open(string); } if (Press(SDLK_ESCAPE)) { diff --git a/src/text_editor/generated.cpp b/src/text_editor/generated.cpp index 83cf8c9..bfe9710 100644 --- a/src/text_editor/generated.cpp +++ b/src/text_editor/generated.cpp @@ -68,6 +68,8 @@ Style.FontFilter = 0 Style.Font = "C:/Windows/Fonts/consola.ttf" Style.VCVarsall = "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Auxiliary/Build/vcvars64.bat" +INTERNET_BROWSER = 'C:/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe' + SDLK_CTRL = 1073742048 SDLK_PAGE_DOWN = 1073741902 SDLK_PAGE_UP = 1073741899 @@ -220,32 +222,19 @@ function SkipPath(s) return s, path, drive, cells end -function BufferNameExists(name) - buffers = GetBufferList() - for i = 1,#buffers do - buff = buffers[i] - if buff == name then - return true - end - end - return false -end - function MatchWindowsPath(_s) local s, file_path, drive = SkipPath(_s) if not file_path then return nil end if not drive then - local d = GetActiveMainWindowBufferDir() + local d = GetDir() file_path = d..'/'..file_path end local line, col, s = SkipLineAndColumn(s) - local exists = FileExists(file_path) or BufferNameExists(file_path) + local exists = FileExists(file_path) or BufferExists(file_path) if not exists then return nil end - - Print("OPEN :: INPUT = ".._s.." KIND = ".."text".." ".."FILE_PATH = "..file_path.."["..line..","..col.."]") return {kind = "text", file_path = file_path, line = line, col = col} end @@ -254,16 +243,15 @@ function MatchGitCommit(s) if i then s = s:sub(8) local command = "git --no-pager show "..s - return {kind = "exec", cmd = command, working_dir = GetActiveMainWindowBufferDir()} + return {kind = "exec", cmd = command, working_dir = GetDir()} end return nil end -InternetBrowser = 'C:/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe' function MatchURL(s) local i, j = string.find(s, "^https://") if i then - return {kind = "exec_console", cmd = '"'..InternetBrowser..'" '..s, working_dir = GetActiveMainWindowBufferDir()} + return {kind = "exec_console", cmd = '"'..INTERNET_BROWSER..'" '..s, working_dir = GetDir()} end return nil end @@ -313,8 +301,6 @@ table.insert(OnCommandCallbacks, function (e) Eval(GetLoadWord()) end end) --- REMEBER: AS LITTLE ACTUAL CODE AS POSSIBLE IN LUA --- ONLY CONFIGURABLES function OnCommand(e) for i = #OnCommandCallbacks,1,-1 do on_command = OnCommandCallbacks[i] diff --git a/src/text_editor/lua_api.cpp b/src/text_editor/lua_api.cpp index 842bc47..03f13d4 100644 --- a/src/text_editor/lua_api.cpp +++ b/src/text_editor/lua_api.cpp @@ -38,7 +38,7 @@ View *Command_ExecHidden(String buffer_name, String cmd, String working_dir) { return view; } -void Open(String path) { +void Command_Open(String path) { Scratch scratch; lua_getglobal(LuaState, "ApplyRules"); @@ -81,16 +81,16 @@ void Open(String path) { } } -void Open(String16 path) { +void Command_Open(String16 path) { Scratch scratch; String string = ToString(scratch, path); - Open(string); + Command_Open(string); } int Lua_AppendCmd(lua_State *L) { String string = lua_tostring(L, 1); lua_pop(L, 1); - String working_dir = GetActiveMainWindowBufferDir(); + String working_dir = Command_GetDir(); Exec(NullViewID, true, string, working_dir); return 0; } @@ -111,7 +111,7 @@ int Lua_C(lua_State *L) { String string = lua_tostring(L, 1); lua_pop(L, 1); - String working_dir = GetActiveMainWindowBufferDir(); + String working_dir = Command_GetDir(); BSet set = GetActiveMainSet(); Command_ExecInNewBuffer(set, string, working_dir); return 0; @@ -152,6 +152,18 @@ int Lua_Cmd(lua_State *L) { return 0; } +int Lua_Print(lua_State *L) { + Scratch scratch; + int nargs = lua_gettop(L); + View *null_view = GetView(NullViewID); + for (int i = 1; i <= nargs; i += 1) { + String string = lua_tostring(L, i); + Command_Append(null_view, string, true); + } + lua_pop(L, nargs); + return 0; +} + int Lua_Kill(lua_State *L) { BSet main = GetActiveMainSet(); KillProcess(main.view); @@ -188,7 +200,7 @@ int Lua_Open(lua_State *L) { Scratch scratch; String path = luaL_checkstring(L, 1); lua_pop(L, 1); - Open(path); + Command_Open(path); return 0; } @@ -211,16 +223,6 @@ int Lua_ToggleFullscreen(lua_State *L) { return 0; } -int Lua_Print(lua_State *L) { - Scratch scratch; - String string = lua_tostring(L, 1); - lua_pop(L, 1); - - View *null_view = GetView(NullViewID); - Command_Append(null_view, string, true); - return 0; -} - int Lua_ListBuffers(lua_State *L) { Command_ListBuffers(); return 0; @@ -240,28 +242,11 @@ int Lua_GetBufferList(lua_State *L) { return 1; } -int Lua_FileExists(lua_State *L) { - String path = luaL_checkstring(L, 1); +int Lua_BufferExists(lua_State *L) { + String string = lua_tostring(L, 1); lua_pop(L, 1); - bool exists = FileExists(path); - lua_pushboolean(L, exists); - return 1; -} - -int Lua_GetWorkingDir(lua_State *L) { - lua_pushlstring(L, WorkingDir.data, WorkingDir.len); - return 1; -} - -int Lua_GetActiveMainWindowBufferName(lua_State *L) { - String name = GetActiveMainWindowBufferName(); - lua_pushlstring(L, name.data, name.len); - return 1; -} - -int Lua_GetActiveMainWindowBufferDir(lua_State *L) { - String name = GetActiveMainWindowBufferDir(); - lua_pushlstring(L, name.data, name.len); + Buffer *buffer = BufferNameExists(string); + lua_pushboolean(L, buffer != NULL); return 1; } @@ -284,7 +269,7 @@ int Lua_Ls(lua_State *L) { String buffer_name = GetUniqueBufferName(scratch, GetDir(main.buffer), "+ls-"); Buffer *buffer = CreateBuffer(GetSystemAllocator(), buffer_name, 4096 * 4); - ListFilesRecursive(buffer, GetActiveMainWindowBufferDir()); + ListFilesRecursive(buffer, Command_GetDir()); WindowOpenBufferView(main.window, buffer_name); return 0; @@ -338,6 +323,25 @@ int Lua_GetProjectPath(lua_State *L) { return 1; } +int Lua_FileExists(lua_State *L) { + String path = luaL_checkstring(L, 1); + lua_pop(L, 1); + bool exists = FileExists(path); + lua_pushboolean(L, exists); + return 1; +} + +int Lua_GetWorkingDir(lua_State *L) { + lua_pushlstring(L, WorkingDir.data, WorkingDir.len); + return 1; +} + +int Lua_GetDir(lua_State *L) { + String name = Command_GetDir(); + lua_pushlstring(L, name.data, name.len); + return 1; +} + static void HookLuaForceExit(lua_State *L, lua_Debug *debug) { SDL_PumpEvents(); int numkeys = 0; @@ -500,20 +504,6 @@ void ReloadLuaConfigs() { } } -bool CallIsLoadWord(char16_t c) { - lua_getglobal(LuaState, "IsLoadWord"); - lua_pushinteger(LuaState, c); - if (lua_pcall(LuaState, 1, 1, 0) != 0) { - const char *error_message = lua_tostring(LuaState, -1); - ReportWarningf("Failed the call to IsLoadWord! %s", error_message); - lua_pop(LuaState, 1); - return false; - } - bool result = lua_toboolean(LuaState, -1); - lua_pop(LuaState, 1); - return result; -} - void CallOnCommand(Event *event) { lua_getglobal(LuaState, "OnCommand"); PushEvent(LuaState, event); diff --git a/src/text_editor/lua_api_generated.cpp b/src/text_editor/lua_api_generated.cpp index 401c54f..967b77d 100644 --- a/src/text_editor/lua_api_generated.cpp +++ b/src/text_editor/lua_api_generated.cpp @@ -3,6 +3,7 @@ luaL_Reg LuaFunctions[] = { {"Eval", Lua_Eval}, {"C", Lua_C}, {"Cmd", Lua_Cmd}, + {"Print", Lua_Print}, {"Kill", Lua_Kill}, {"GetLoadWord", Lua_GetLoadWord}, {"New", Lua_New}, @@ -10,13 +11,9 @@ luaL_Reg LuaFunctions[] = { {"SetProjectFile", Lua_SetProjectFile}, {"Reopen", Lua_Reopen}, {"ToggleFullscreen", Lua_ToggleFullscreen}, - {"Print", Lua_Print}, {"ListBuffers", Lua_ListBuffers}, {"GetBufferList", Lua_GetBufferList}, - {"FileExists", Lua_FileExists}, - {"GetWorkingDir", Lua_GetWorkingDir}, - {"GetActiveMainWindowBufferName", Lua_GetActiveMainWindowBufferName}, - {"GetActiveMainWindowBufferDir", Lua_GetActiveMainWindowBufferDir}, + {"BufferExists", Lua_BufferExists}, {"Ls", Lua_Ls}, {"Rename", Lua_Rename}, {"GetSelection", Lua_GetSelection}, @@ -24,6 +21,9 @@ luaL_Reg LuaFunctions[] = { {"GetClipboard", Lua_GetClipboard}, {"GetFilename", Lua_GetFilename}, {"GetProjectPath", Lua_GetProjectPath}, + {"FileExists", Lua_FileExists}, + {"GetWorkingDir", Lua_GetWorkingDir}, + {"GetDir", Lua_GetDir}, {"Play", Lua_Play}, {NULL, NULL}, }; diff --git a/src/text_editor/management.cpp b/src/text_editor/management.cpp index 8da4823..ff7dc45 100644 --- a/src/text_editor/management.cpp +++ b/src/text_editor/management.cpp @@ -238,7 +238,7 @@ String GetUniqueBufferName(Allocator allocator, String working_dir, String p return buffer_name; } -String GetActiveMainWindowBufferName() { +String Command_GetFilename() { BSet set = GetActiveMainSet(); return set.buffer->name; } @@ -248,7 +248,7 @@ String GetDir(Buffer *buffer) { return name; } -String GetActiveMainWindowBufferDir() { +String Command_GetDir() { BSet set = GetActiveMainSet(); String name = ChopLastSlash(set.buffer->name); return name; diff --git a/src/text_editor/text_editor.cpp b/src/text_editor/text_editor.cpp index c5127ee..addcf3d 100644 --- a/src/text_editor/text_editor.cpp +++ b/src/text_editor/text_editor.cpp @@ -221,7 +221,7 @@ Array GetEventsForFrame(Allocator allocator) { void Windows_SetupVCVarsall(mco_coro *co) { Scratch scratch; - String working_dir = GetActiveMainWindowBufferDir(); + String working_dir = Command_GetDir(); String buffer_name = GetUniqueBufferName(scratch, working_dir, "+cmd-"); String cmd = Format(scratch, "\"%.*s\" && set", FmtString(StyleVCVarsall)); View *view = Command_ExecHidden(buffer_name, cmd, working_dir); diff --git a/src/text_editor/text_editor.h b/src/text_editor/text_editor.h index e11501b..a5fa7e5 100644 --- a/src/text_editor/text_editor.h +++ b/src/text_editor/text_editor.h @@ -84,8 +84,8 @@ bool Command_EvalLua(View *view, String16 string); Rect2I GetVisibleCells(Window *window); void AfterEdit(View *view, Array edits); Scroller ComputeScrollerRect(Window *window); -void Open(String path); -void Open(String16 path); +void Command_Open(String path); +void Command_Open(String16 path); void UpdateScroll(Window *window, bool update_caret_scrolling); void Command_SelectEntireBuffer(View *view); diff --git a/te.lua_project b/te.lua_project index 9f73541..ca6b167 100644 --- a/te.lua_project +++ b/te.lua_project @@ -20,7 +20,7 @@ function MatchProject(s) local line, col, s = SkipLineAndColumn(s) - local fp = GetActiveMainWindowBufferDir().."/"..file_path + local fp = GetDir().."/"..file_path if FileExists(fp) then return {kind = "text", file_path = fp, line = line, col = col} end