diff --git a/src/text_editor/plugin_directory_navigation.cpp b/src/text_editor/plugin_directory_navigation.cpp index 5fbc6b7..24f5b8f 100644 --- a/src/text_editor/plugin_directory_navigation.cpp +++ b/src/text_editor/plugin_directory_navigation.cpp @@ -2,6 +2,7 @@ // Instead of toying with Reopen maybe it should actually detect changes in directory etc. on update void CMD_OpenUpFolder() { +// @todo: Test this for weird cases BSet main = GetBSet(PrimaryWindowID); String name = ChopLastSlash(main.buffer->name); Open(name); diff --git a/src/text_editor/ui.cpp b/src/text_editor/ui.cpp index 42ae907..0517df7 100644 --- a/src/text_editor/ui.cpp +++ b/src/text_editor/ui.cpp @@ -73,19 +73,37 @@ void ShowUIMessagef(const char *fmt, ...) { } String QueryUserFile(mco_coro *co) { +// @todo: how to make it so that it doesn't open the file? +#if PLUGIN_DIRECTORY_NAVIGATION + Open(GetPrimaryDirectory()); + Window *window = GetWindow(PrimaryWindowID); + String filename = ""; + for (;;) { + BSet main = GetBSet(window); + if ((main.window->id != PrimaryWindowID && main.window->id != ActiveWindowID) || main.window->close) { + break; + } + + if (!main.buffer->is_dir) { + filename = main.buffer->name; + break; + } + + CoYield(co); + } + return filename; +#else + // Just simple query + // @todo: do we want to split like this? The plugin is maybe leaking too much? + // @todo: String QueryUserString(mco_coro *co) +#endif return "todo"; } -void Coro_TestQueryFile(mco_coro *co) { +void CO_TestQueryFile(mco_coro *co) { String file = QueryUserFile(co); ReportConsolef("%S", file); -} - -void CMD_TestQueryFile() { - CoRemove("Coro_TestQueryFile"); - CoData *data = CoAdd(Coro_TestQueryFile); - CoResume(data); -} RegisterCommand(CMD_TestQueryFile, "", ""); +} RegisterCoroutineCommand(CO_TestQueryFile, "", ""); void MouseLoadWord(Event event, ResolveOpenMeta meta = ResolveOpenMeta_Normal) { Vec2I mouse = MouseVec2I();