OnCommand and OnInit
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -5,4 +5,5 @@ x64/Release
|
|||||||
src/external/SDL/
|
src/external/SDL/
|
||||||
build/
|
build/
|
||||||
*.rdbg
|
*.rdbg
|
||||||
*.spall
|
*.spall
|
||||||
|
*.sublime-workspace
|
||||||
@@ -185,6 +185,19 @@ KEY_RIGHT = 1073741903
|
|||||||
KEY_LEFT = 1073741904
|
KEY_LEFT = 1073741904
|
||||||
KEY_Q = 113
|
KEY_Q = 113
|
||||||
|
|
||||||
|
KEY_F1 = 0x4000003a
|
||||||
|
KEY_F2 = 0x4000003b
|
||||||
|
KEY_F3 = 0x4000003c
|
||||||
|
KEY_F4 = 0x4000003d
|
||||||
|
KEY_F5 = 0x4000003e
|
||||||
|
KEY_F6 = 0x4000003f
|
||||||
|
KEY_F7 = 0x40000040
|
||||||
|
KEY_F8 = 0x40000041
|
||||||
|
KEY_F9 = 0x40000042
|
||||||
|
KEY_F10 = 0x40000043
|
||||||
|
KEY_F11 = 0x40000044
|
||||||
|
KEY_F12 = 0x40000045
|
||||||
|
|
||||||
function SkipLineAndColumn(s)
|
function SkipLineAndColumn(s)
|
||||||
local line, col = "1", "1"
|
local line, col = "1", "1"
|
||||||
|
|
||||||
@@ -355,21 +368,28 @@ Coroutines = {}
|
|||||||
function AddCo(f)
|
function AddCo(f)
|
||||||
local i = #Coroutines + 1
|
local i = #Coroutines + 1
|
||||||
Coroutines[i] = coroutine.create(f)
|
Coroutines[i] = coroutine.create(f)
|
||||||
|
coroutine.resume(Coroutines[i])
|
||||||
return Coroutines[i]
|
return Coroutines[i]
|
||||||
end
|
end
|
||||||
|
|
||||||
function OnUpdate()
|
function OnUpdate(e)
|
||||||
local new_co_list = {}
|
local new_co_list = {}
|
||||||
for key, co in pairs(Coroutines) do
|
for key, co in pairs(Coroutines) do
|
||||||
local status = coroutine.status(co)
|
local status = coroutine.status(co)
|
||||||
if status ~= "dead" then
|
if status ~= "dead" then
|
||||||
coroutine.resume(co)
|
coroutine.resume(co, e)
|
||||||
new_co_list[#new_co_list + 1] = co
|
new_co_list[#new_co_list + 1] = co
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
Coroutines = new_co_list
|
Coroutines = new_co_list
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function OnCommand(e)
|
||||||
|
end
|
||||||
|
|
||||||
|
function OnInit()
|
||||||
|
end
|
||||||
|
|
||||||
)==";
|
)==";
|
||||||
|
|
||||||
void GenerateConfig() {
|
void GenerateConfig() {
|
||||||
|
|||||||
@@ -264,6 +264,9 @@ void GlobalCommand(Event event) {
|
|||||||
BSet active = GetActiveSet();
|
BSet active = GetActiveSet();
|
||||||
Int buffer_change_id = active.buffer->change_id;
|
Int buffer_change_id = active.buffer->change_id;
|
||||||
|
|
||||||
|
void CallOnCommand(Event * event);
|
||||||
|
CallOnCommand(&event);
|
||||||
|
|
||||||
if (event.kind == EVENT_DROP_FILE) {
|
if (event.kind == EVENT_DROP_FILE) {
|
||||||
WindowOpenBufferView(active.window, event.text);
|
WindowOpenBufferView(active.window, event.text);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,6 +75,19 @@ KEY_RIGHT = 1073741903
|
|||||||
KEY_LEFT = 1073741904
|
KEY_LEFT = 1073741904
|
||||||
KEY_Q = 113
|
KEY_Q = 113
|
||||||
|
|
||||||
|
KEY_F1 = 0x4000003a
|
||||||
|
KEY_F2 = 0x4000003b
|
||||||
|
KEY_F3 = 0x4000003c
|
||||||
|
KEY_F4 = 0x4000003d
|
||||||
|
KEY_F5 = 0x4000003e
|
||||||
|
KEY_F6 = 0x4000003f
|
||||||
|
KEY_F7 = 0x40000040
|
||||||
|
KEY_F8 = 0x40000041
|
||||||
|
KEY_F9 = 0x40000042
|
||||||
|
KEY_F10 = 0x40000043
|
||||||
|
KEY_F11 = 0x40000044
|
||||||
|
KEY_F12 = 0x40000045
|
||||||
|
|
||||||
function SkipLineAndColumn(s)
|
function SkipLineAndColumn(s)
|
||||||
local line, col = "1", "1"
|
local line, col = "1", "1"
|
||||||
|
|
||||||
@@ -245,21 +258,28 @@ Coroutines = {}
|
|||||||
function AddCo(f)
|
function AddCo(f)
|
||||||
local i = #Coroutines + 1
|
local i = #Coroutines + 1
|
||||||
Coroutines[i] = coroutine.create(f)
|
Coroutines[i] = coroutine.create(f)
|
||||||
|
coroutine.resume(Coroutines[i])
|
||||||
return Coroutines[i]
|
return Coroutines[i]
|
||||||
end
|
end
|
||||||
|
|
||||||
function OnUpdate()
|
function OnUpdate(e)
|
||||||
local new_co_list = {}
|
local new_co_list = {}
|
||||||
for key, co in pairs(Coroutines) do
|
for key, co in pairs(Coroutines) do
|
||||||
local status = coroutine.status(co)
|
local status = coroutine.status(co)
|
||||||
if status ~= "dead" then
|
if status ~= "dead" then
|
||||||
coroutine.resume(co)
|
coroutine.resume(co, e)
|
||||||
new_co_list[#new_co_list + 1] = co
|
new_co_list[#new_co_list + 1] = co
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
Coroutines = new_co_list
|
Coroutines = new_co_list
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function OnCommand(e)
|
||||||
|
end
|
||||||
|
|
||||||
|
function OnInit()
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
)==";
|
)==";
|
||||||
void ReloadStyle() {
|
void ReloadStyle() {
|
||||||
|
|||||||
@@ -370,7 +370,7 @@ int LoadLuaBuffer(Buffer *lua_buffer) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateLua() {
|
void ReloadLuaConfigs() {
|
||||||
int base_config_reload = LoadLuaBuffer(LuaConfigBuffer);
|
int base_config_reload = LoadLuaBuffer(LuaConfigBuffer);
|
||||||
int project_config_reload = LoadLuaBuffer(LuaProjectBuffer);
|
int project_config_reload = LoadLuaBuffer(LuaProjectBuffer);
|
||||||
|
|
||||||
@@ -385,13 +385,38 @@ void UpdateLua() {
|
|||||||
window->draw_line_numbers = StyleDrawLineNumbers;
|
window->draw_line_numbers = StyleDrawLineNumbers;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (luaL_dostring(LuaState, "OnUpdate()") != 0) {
|
void CallOnCommand(Event *event) {
|
||||||
|
lua_getglobal(LuaState, "OnCommand");
|
||||||
|
PushEvent(LuaState, event);
|
||||||
|
if (lua_pcall(LuaState, 1, 0, 0) != 0) {
|
||||||
const char *error_message = lua_tostring(LuaState, -1);
|
const char *error_message = lua_tostring(LuaState, -1);
|
||||||
ReportWarningf("OnUpdate failed! %s", error_message);
|
ReportWarningf("Failed the call to OnCommand! %s", error_message);
|
||||||
lua_pop(LuaState, 1);
|
lua_pop(LuaState, 1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// bool command_handled = lua_toboolean(LuaState, -1);
|
||||||
|
// return command_handled;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CallLuaOnUpdate(Event *event) {
|
||||||
|
lua_getglobal(LuaState, "OnUpdate");
|
||||||
|
PushEvent(LuaState, event);
|
||||||
|
if (lua_pcall(LuaState, 1, 0, 0) != 0) {
|
||||||
|
const char *error_message = lua_tostring(LuaState, -1);
|
||||||
|
ReportWarningf("Failed the call to OnUpdate! %s", error_message);
|
||||||
|
lua_pop(LuaState, 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CallLuaOnInit() {
|
||||||
|
if (luaL_dostring(LuaState, "OnInit()") != LUA_OK) {
|
||||||
|
const char *error_message = lua_tostring(LuaState, -1);
|
||||||
|
ReportErrorf("Error in OnInit! %s", error_message);
|
||||||
|
lua_pop(LuaState, 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitLuaConfig() {
|
void InitLuaConfig() {
|
||||||
@@ -433,7 +458,8 @@ void InitLuaConfig() {
|
|||||||
lua_buffer->user_change_id = -1; // if we loaded from file this should force to read
|
lua_buffer->user_change_id = -1; // if we loaded from file this should force to read
|
||||||
LuaConfigBuffer = lua_buffer;
|
LuaConfigBuffer = lua_buffer;
|
||||||
|
|
||||||
UpdateLua();
|
ReloadLuaConfigs();
|
||||||
|
CallLuaOnInit();
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -166,7 +166,8 @@ void Update(Event event) {
|
|||||||
GlobalCommand(event);
|
GlobalCommand(event);
|
||||||
For(Windows) if (it.o->is_title_bar) ReplaceTitleBarData(it.o);
|
For(Windows) if (it.o->is_title_bar) ReplaceTitleBarData(it.o);
|
||||||
UpdateProcesses();
|
UpdateProcesses();
|
||||||
UpdateLua();
|
ReloadLuaConfigs();
|
||||||
|
CallLuaOnUpdate(&event);
|
||||||
UpdateDebugBuffer();
|
UpdateDebugBuffer();
|
||||||
GarbageCollect();
|
GarbageCollect();
|
||||||
|
|
||||||
|
|||||||
9
text_editor.sublime-project
Normal file
9
text_editor.sublime-project
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"folders":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"path": ".",
|
||||||
|
"folder_exclude_patterns": ["src/external/SDL/src", "src/external/SDL/test", "src/external/SDL/cmake", "src/external/SDL/mingw", "src/external/SDL/docs", "src/external/SDL/build-scripts", "src/external/SDL/Xcode", "src/external/SDL/VisualC"],
|
||||||
|
}
|
||||||
|
],
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user