Load lua functions from an array
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -2,6 +2,6 @@ x64/Debug
|
|||||||
x64/Release
|
x64/Release
|
||||||
.vs/
|
.vs/
|
||||||
|
|
||||||
src/external
|
src/external/SDL
|
||||||
build/
|
build/
|
||||||
*.rdbg
|
*.rdbg
|
||||||
@@ -262,13 +262,15 @@ bool GlobalCommand(Event event) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (event.ctrl && Mouse(RIGHT)) {
|
||||||
|
GoBackToLastCrumb();
|
||||||
|
}
|
||||||
|
|
||||||
// @todo: maybe move some of this stuff to window command ???
|
// @todo: maybe move some of this stuff to window command ???
|
||||||
// for now let's leave it because we are relaying on global state
|
// for now let's leave it because we are relaying on global state
|
||||||
// - maybe just do the check if active window is matching the DocumentSelected window
|
// - maybe just do the check if active window is matching the DocumentSelected window
|
||||||
// - if scrollbar selected then don't invoke window command
|
// - if scrollbar selected then don't invoke window command
|
||||||
if (event.alt && Mouse(LEFT)) {
|
if (event.ctrl && Mouse(LEFT)) {
|
||||||
GoBackToLastCrumb();
|
|
||||||
} else if (event.ctrl && Mouse(LEFT)) {
|
|
||||||
Vec2I mouse = MouseVec2I();
|
Vec2I mouse = MouseVec2I();
|
||||||
Window *window = GetActiveWindow();
|
Window *window = GetActiveWindow();
|
||||||
|
|
||||||
|
|||||||
@@ -818,7 +818,7 @@ void WindowCommand(Event event, Window *window, View *view) {
|
|||||||
Open(string);
|
Open(string);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Alt(SDLK_Q)) {
|
if (Ctrl(SDLK_W)) {
|
||||||
GoBackToLastCrumb();
|
GoBackToLastCrumb();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ String16 LuaCommandResult = {};
|
|||||||
String ListFiles(String path) {
|
String ListFiles(String path) {
|
||||||
Scratch scratch;
|
Scratch scratch;
|
||||||
Array<String> strings = {scratch};
|
Array<String> strings = {scratch};
|
||||||
Add(&strings, String{"open \"..\""});
|
Add(&strings, String{"Open \"..\""});
|
||||||
for (FileIter iter = IterateFiles(scratch, path); IsValid(iter); Advance(&iter)) {
|
for (FileIter iter = IterateFiles(scratch, path); IsValid(iter); Advance(&iter)) {
|
||||||
String string = Format(scratch, "open \"%.*s\"", FmtString(iter.absolute_path));
|
String string = Format(scratch, "Open \"%.*s\"", FmtString(iter.absolute_path));
|
||||||
Add(&strings, string);
|
Add(&strings, string);
|
||||||
}
|
}
|
||||||
Add(&strings, Format(scratch, "working dir = %.*s", FmtString(WorkingDir)));
|
Add(&strings, Format(scratch, "working dir = %.*s", FmtString(WorkingDir)));
|
||||||
@@ -76,6 +76,14 @@ int LuaOpen(lua_State *L) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int LuaPrint(lua_State *L) {
|
||||||
|
Scratch scratch;
|
||||||
|
String string = luaL_checkstring(L, 1);
|
||||||
|
lua_pop(L, 1);
|
||||||
|
AppendToConsole(string);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int LuaListOpenBuffers(lua_State *L) {
|
int LuaListOpenBuffers(lua_State *L) {
|
||||||
Scratch scratch;
|
Scratch scratch;
|
||||||
Array<String> strings = {scratch};
|
Array<String> strings = {scratch};
|
||||||
@@ -139,33 +147,25 @@ int LuaGetCurrentBufferDir(lua_State *L) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
luaL_Reg LuaFunctions[] = {
|
||||||
|
{ "Open", LuaOpen},
|
||||||
|
{ "list_buffers", LuaListOpenBuffers},
|
||||||
|
{ "ListBuffers", LuaListOpenBuffersObject},
|
||||||
|
{ "GetWorkingDir", LuaGetWorkingDir},
|
||||||
|
{ "FileExists", LuaFileExists},
|
||||||
|
{"GetCurrentBufferName", LuaGetCurrentBufferName},
|
||||||
|
{ "GetCurrentBufferDir", LuaGetCurrentBufferDir},
|
||||||
|
{ NULL, NULL},
|
||||||
|
};
|
||||||
|
|
||||||
void InitLua() {
|
void InitLua() {
|
||||||
LuaState = luaL_newstate();
|
LuaState = luaL_newstate();
|
||||||
luaL_openlibs(LuaState);
|
luaL_openlibs(LuaState);
|
||||||
|
|
||||||
lua_pushcfunction(LuaState, LuaOpen);
|
for (int i = 0; LuaFunctions[i].name; i += 1) {
|
||||||
lua_setglobal(LuaState, "open");
|
lua_pushcfunction(LuaState, LuaFunctions[i].func);
|
||||||
|
lua_setglobal(LuaState, LuaFunctions[i].name);
|
||||||
lua_pushcfunction(LuaState, LuaListOpenBuffers);
|
}
|
||||||
lua_setglobal(LuaState, "list_buffers");
|
|
||||||
|
|
||||||
lua_pushcfunction(LuaState, LuaListOpenBuffersObject);
|
|
||||||
lua_setglobal(LuaState, "ListBuffers");
|
|
||||||
|
|
||||||
lua_pushcfunction(LuaState, LuaOpenBigBuffer);
|
|
||||||
lua_setglobal(LuaState, "open_big_buffer");
|
|
||||||
|
|
||||||
lua_pushcfunction(LuaState, LuaGetWorkingDir);
|
|
||||||
lua_setglobal(LuaState, "GetWorkingDir");
|
|
||||||
|
|
||||||
lua_pushcfunction(LuaState, LuaFileExists);
|
|
||||||
lua_setglobal(LuaState, "FileExists");
|
|
||||||
|
|
||||||
lua_pushcfunction(LuaState, LuaGetCurrentBufferName);
|
|
||||||
lua_setglobal(LuaState, "GetCurrentBufferName");
|
|
||||||
|
|
||||||
lua_pushcfunction(LuaState, LuaGetCurrentBufferDir);
|
|
||||||
lua_setglobal(LuaState, "GetCurrentBufferDir");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
String16 EvalString(Allocator allocator, String16 string16) {
|
String16 EvalString(Allocator allocator, String16 string16) {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
- page up and down should also scroll and leave you in exactly same scroll
|
- page up and down should also scroll and leave you in exactly same scroll
|
||||||
- I think the way sublime text and we display line highlights is confusing with multiple cursors (line highlight can be confused with selection)
|
- I think the way sublime text and we display line highlights is confusing with multiple cursors (line highlight can be confused with selection)
|
||||||
|
- ctrl + delete maybe should stop on new line but it keeps on going
|
||||||
|
|
||||||
- bug treats numbers as whitespace or whatever
|
|
||||||
- bug: Latin-1 is matched as column for some reason in ApplyRules!!
|
- bug: Latin-1 is matched as column for some reason in ApplyRules!!
|
||||||
- mouse execute (control right click)
|
- mouse execute (control right click)
|
||||||
- alt right click what to do ? (toggle console?)
|
- alt right click what to do ? (toggle console?)
|
||||||
@@ -9,45 +9,44 @@
|
|||||||
- should be able click on title bar of windows which disappear on losing focus
|
- should be able click on title bar of windows which disappear on losing focus
|
||||||
- console window should close on esacpe but make it more coherent
|
- console window should close on esacpe but make it more coherent
|
||||||
- Ctrl + G should select the line number in bar
|
- Ctrl + G should select the line number in bar
|
||||||
|
- consider highlighting different things on alt
|
||||||
|
- search as a command to execute which is going to be in the title bar
|
||||||
|
- each buffer needs a directory even the special ones: C:\a\b\c\+errors?
|
||||||
- open directories - resulting in buffer with dir listing and proper buffer name
|
- open directories - resulting in buffer with dir listing and proper buffer name
|
||||||
|
|
||||||
|
- clean \r\n into \n on trim and load
|
||||||
|
|
||||||
- baked font as fallback
|
- baked font as fallback
|
||||||
- expose font and font size to config
|
- expose font and font size to config
|
||||||
- global config and local config
|
- global config and local config
|
||||||
|
- load all files in a directory
|
||||||
|
|
||||||
- Search all buffers in 10X style, incrementally searched results popping up on every key press (maybe we need coroutine library in C so this is easier?)
|
|
||||||
- select space between parens,braces but make it good
|
|
||||||
- switch to previous view (ctrl + tab)
|
|
||||||
- we could rewrite kill lines with simpler commands - extend selection to encompass lines->replace
|
|
||||||
- search backwards
|
- search backwards
|
||||||
- search as a command to execute which is going to be in the title bar
|
- Search all buffers in 10X style, incrementally searched results popping up on every key press (maybe we need coroutine library in C so this is easier?)
|
||||||
|
- Search and replace
|
||||||
|
|
||||||
|
- select space between parens,braces but make it good
|
||||||
- make the editor replayable, store events and then replay, be careful about globals
|
- make the editor replayable, store events and then replay, be careful about globals
|
||||||
- I want a way to assign flags to buffers/views/windows from user perspective so that console window concept can be created from user space
|
|
||||||
- Implement shell interaction (here we also could use the coroutine library)
|
- Implement shell interaction (here we also could use the coroutine library)
|
||||||
- word complete
|
- word complete
|
||||||
- Colored strings
|
|
||||||
- Set scroll centered
|
|
||||||
- font cache and on demand unicode loads
|
|
||||||
- Search and replace
|
|
||||||
- Search result buffer
|
|
||||||
- yeet sheet
|
|
||||||
|
|
||||||
- color parens, braces
|
|
||||||
- auto register commands, but we need to figure out how to properly structure lua stuff
|
|
||||||
|
|
||||||
- double click - start enclosing word, triple click - start enclosing lines, merge 2 cursor selection - start treating it as anchor
|
|
||||||
|
|
||||||
- Windows
|
- Windows
|
||||||
|
- switch to previous view (ctrl + tab)
|
||||||
|
- shift + ctrl + click should open a new window and then with alt it probably should kill it
|
||||||
- layout using a tree!!
|
- layout using a tree!!
|
||||||
- I don't think we need WindowIDs
|
- I don't think we need WindowIDs
|
||||||
- layouting, resize windows
|
- layouting, resize windows
|
||||||
- try to incorporate the acme square which allows you to put windows wherever and also scale the border
|
- try to incorporate the acme square which allows you to put windows wherever and also scale the border
|
||||||
|
|
||||||
|
|
||||||
- files
|
backlog
|
||||||
- load directory
|
- maybe open should return multiple options if there are many more? (like in sublime if many symbols you get a window and you choose and it automatically jumps you to the symbol in the background)
|
||||||
- file lister
|
- we could rewrite kill lines with simpler commands - extend selection to encompass lines->replace
|
||||||
- commands should run in a directory specified by buffer so you don't have to specify whole path
|
- I want a way to assign flags to buffers/views/windows from user perspective so that console window concept can be created from user space
|
||||||
- each buffer would need a directory even the special ones: C:\a\b\c\+errors
|
- font cache and on demand unicode loads
|
||||||
- this could be used for storing the path in the command window
|
- Set scroll centered, what was the use case for this?
|
||||||
|
- color parens, braces
|
||||||
|
- auto register commands, but we need to figure out how to properly structure lua stuff
|
||||||
|
- double click - start enclosing word, triple click - start enclosing lines, merge 2 cursor selection - start treating it as anchor
|
||||||
|
- Colored strings
|
||||||
|
|||||||
Reference in New Issue
Block a user