Remove command window
This commit is contained in:
@@ -450,18 +450,6 @@ bool GlobalCommand(Event event) {
|
|||||||
ToggleFullscreen();
|
ToggleFullscreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Ctrl(SDLK_P)) {
|
|
||||||
Window *command_window = GetWindow(CommandWindowID);
|
|
||||||
if (command_window->visible) {
|
|
||||||
SetActiveWindow(GetLastActiveWindow());
|
|
||||||
} else {
|
|
||||||
View *view = GetView(command_window->active_view);
|
|
||||||
SetActiveWindow(command_window->id);
|
|
||||||
Command_EvalLua(view, L"ListBuffers()");
|
|
||||||
}
|
|
||||||
run_window_command = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Ctrl(SDLK_1)) {
|
if (Ctrl(SDLK_1)) {
|
||||||
Window *window = GetLayoutWindow(0);
|
Window *window = GetLayoutWindow(0);
|
||||||
if (window) SetActiveWindow(window->id);
|
if (window) SetActiveWindow(window->id);
|
||||||
|
|||||||
@@ -619,6 +619,27 @@ void Command_GotoNextInList(Window *window, Int line_offset = 1) {
|
|||||||
if (!opened) window->active_view = active_view;
|
if (!opened) window->active_view = active_view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Command_FuzzySort(View *view, String16 needle) {
|
||||||
|
Buffer *buffer = GetBuffer(view->active_buffer);
|
||||||
|
|
||||||
|
Scratch scratch;
|
||||||
|
Array<FuzzyPair> ratings = FuzzySearchLines(scratch, buffer, 0, buffer->line_starts.len, needle);
|
||||||
|
|
||||||
|
Buffer *temp_buffer = CreateTempBuffer(scratch, buffer->cap);
|
||||||
|
For(ratings) {
|
||||||
|
String16 s = GetLineStringWithoutNL(*buffer, it.index);
|
||||||
|
if (s.len == 0) continue;
|
||||||
|
IKnowWhatImDoing_ReplaceText(temp_buffer, GetEndAsRange(*temp_buffer), s);
|
||||||
|
IKnowWhatImDoing_ReplaceText(temp_buffer, GetEndAsRange(*temp_buffer), L"\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
Command_SelectEntireBuffer(view);
|
||||||
|
Command_Replace(view, GetString(*temp_buffer));
|
||||||
|
|
||||||
|
view->carets.len = 1;
|
||||||
|
view->carets[0] = MakeCaret({});
|
||||||
|
}
|
||||||
|
|
||||||
void WindowCommand(Event event, Window *window, View *view) {
|
void WindowCommand(Event event, Window *window, View *view) {
|
||||||
ProfileFunction();
|
ProfileFunction();
|
||||||
Buffer *buffer = GetBuffer(view->active_buffer);
|
Buffer *buffer = GetBuffer(view->active_buffer);
|
||||||
@@ -813,42 +834,6 @@ void WindowCommand(Event event, Window *window, View *view) {
|
|||||||
Command_GotoNextInList(window, 1);
|
Command_GotoNextInList(window, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (view->fuzzy_search && search) {
|
|
||||||
Scratch scratch;
|
|
||||||
String16 first_line_string = GetLineStringWithoutNL(*buffer, 0);
|
|
||||||
Array<FuzzyPair> ratings = FuzzySearchLines(scratch, buffer, 1, buffer->line_starts.len, first_line_string);
|
|
||||||
|
|
||||||
Buffer *temp_buffer = CreateTempBuffer(scratch, buffer->cap);
|
|
||||||
IKnowWhatImDoing_ReplaceText(temp_buffer, GetEndAsRange(*temp_buffer), first_line_string);
|
|
||||||
IKnowWhatImDoing_ReplaceText(temp_buffer, GetEndAsRange(*temp_buffer), L"\n");
|
|
||||||
For(ratings) {
|
|
||||||
String16 s = GetLineStringWithoutNL(*buffer, it.index);
|
|
||||||
if (s.len == 0) continue;
|
|
||||||
IKnowWhatImDoing_ReplaceText(temp_buffer, GetEndAsRange(*temp_buffer), s);
|
|
||||||
IKnowWhatImDoing_ReplaceText(temp_buffer, GetEndAsRange(*temp_buffer), L"\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
Caret caret = view->carets[0];
|
|
||||||
Command_SelectEntireBuffer(view);
|
|
||||||
Command_Replace(view, GetString(*temp_buffer));
|
|
||||||
view->carets[0] = caret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (view->fuzzy_search) {
|
|
||||||
if (Press(SDLK_RETURN)) {
|
|
||||||
Scratch scratch;
|
|
||||||
Buffer *buffer = GetBuffer(view->active_buffer);
|
|
||||||
Int line = PosToLine(*buffer, GetFront(view->carets[0]));
|
|
||||||
if (line == 0) line = 1;
|
|
||||||
|
|
||||||
String16 string = GetLineStringWithoutNL(*buffer, line);
|
|
||||||
Open(string);
|
|
||||||
|
|
||||||
// Clear text
|
|
||||||
Command_SelectRangeOneCursor(view, GetLineRangeWithoutNL(*buffer, 0));
|
|
||||||
Command_Replace(view, {});
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (CtrlShift(SDLK_RETURN)) {
|
if (CtrlShift(SDLK_RETURN)) {
|
||||||
Command_MoveCursorsToSide(view, DIR_LEFT);
|
Command_MoveCursorsToSide(view, DIR_LEFT);
|
||||||
Command_IdentedNewLine(view);
|
Command_IdentedNewLine(view);
|
||||||
@@ -859,7 +844,6 @@ void WindowCommand(Event event, Window *window, View *view) {
|
|||||||
} else if (Press(SDLK_RETURN)) {
|
} else if (Press(SDLK_RETURN)) {
|
||||||
Command_IdentedNewLine(view);
|
Command_IdentedNewLine(view);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (Ctrl(SDLK_S)) {
|
if (Ctrl(SDLK_S)) {
|
||||||
if (StyleTrimWhitespaceOnSave) {
|
if (StyleTrimWhitespaceOnSave) {
|
||||||
|
|||||||
@@ -92,6 +92,19 @@ void Open(String16 path) {
|
|||||||
Open(string);
|
Open(string);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Lua_FuzzySort(lua_State *L) {
|
||||||
|
String string = lua_tostring(L, 1);
|
||||||
|
lua_pop(L, 1);
|
||||||
|
Scratch scratch;
|
||||||
|
String16 string16 = ToString16(scratch, string);
|
||||||
|
|
||||||
|
WindowID window_id = GetLastActiveWindow();
|
||||||
|
Window *window = GetWindow(window_id);
|
||||||
|
View *view = GetView(window->active_view);
|
||||||
|
Command_FuzzySort(view, string16);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int Lua_AppendCmd(lua_State *L) {
|
int Lua_AppendCmd(lua_State *L) {
|
||||||
String string = lua_tostring(L, 1);
|
String string = lua_tostring(L, 1);
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
luaL_Reg LuaFunctions[] = {
|
luaL_Reg LuaFunctions[] = {
|
||||||
|
{"FuzzySort", Lua_FuzzySort},
|
||||||
{"AppendCmd", Lua_AppendCmd},
|
{"AppendCmd", Lua_AppendCmd},
|
||||||
{"NewCmd", Lua_NewCmd},
|
{"NewCmd", Lua_NewCmd},
|
||||||
{"Kill", Lua_Kill},
|
{"Kill", Lua_Kill},
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ Array<Window> Windows = {};
|
|||||||
WindowID NullWindowID;
|
WindowID NullWindowID;
|
||||||
BufferID NullBufferID;
|
BufferID NullBufferID;
|
||||||
ViewID NullViewID;
|
ViewID NullViewID;
|
||||||
WindowID CommandWindowID;
|
|
||||||
WindowID DebugWindowID;
|
WindowID DebugWindowID;
|
||||||
WindowID ConsoleWindowID;
|
WindowID ConsoleWindowID;
|
||||||
|
|
||||||
|
|||||||
@@ -51,10 +51,6 @@ struct View {
|
|||||||
// window | view
|
// window | view
|
||||||
Caret main_caret_on_begin_frame;
|
Caret main_caret_on_begin_frame;
|
||||||
bool update_scroll;
|
bool update_scroll;
|
||||||
|
|
||||||
struct {
|
|
||||||
bool fuzzy_search : 1;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct GotoCrumb {
|
struct GotoCrumb {
|
||||||
|
|||||||
@@ -193,30 +193,6 @@ void InitWindows() {
|
|||||||
SetVisibility(window_id, false);
|
SetVisibility(window_id, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
Window *w = CreateWindow();
|
|
||||||
WindowID window_id = w->id;
|
|
||||||
w->draw_scrollbar = false;
|
|
||||||
w->draw_line_numbers = false;
|
|
||||||
w->visible = false;
|
|
||||||
w->invisible_when_inactive = true;
|
|
||||||
w->absolute_position = true;
|
|
||||||
w->dont_save_in_active_window_history = true;
|
|
||||||
w->deactivate_on_escape = true;
|
|
||||||
Buffer *b = CreateBuffer(sys_allocator, BuffCWD("+commands"));
|
|
||||||
View *v = CreateView(b->id);
|
|
||||||
v->fuzzy_search = true;
|
|
||||||
|
|
||||||
w->active_view = v->id;
|
|
||||||
w->z = 1;
|
|
||||||
|
|
||||||
Window *titlebar = CreateTitlebar(window_id);
|
|
||||||
titlebar->z = 1;
|
|
||||||
SetVisibility(window_id, false);
|
|
||||||
|
|
||||||
CommandWindowID = window_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
SetActiveWindow({0});
|
SetActiveWindow({0});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -286,26 +262,4 @@ void LayoutWindows() {
|
|||||||
|
|
||||||
window->document_rect = window->total_rect;
|
window->document_rect = window->total_rect;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
Window *window = GetWindow(CommandWindowID);
|
|
||||||
if (window->visible) {
|
|
||||||
Rect2 screen_rect = GetScreenRectF();
|
|
||||||
|
|
||||||
Vec2 size = GetSize(screen_rect);
|
|
||||||
|
|
||||||
CutTop(&screen_rect, size.y * 0.05f);
|
|
||||||
CutLeft(&screen_rect, size.x * 0.2f);
|
|
||||||
CutRight(&screen_rect, size.x * 0.2f);
|
|
||||||
Rect2 r = CutTop(&screen_rect, FontLineSpacing * 30.f);
|
|
||||||
|
|
||||||
window->total_rect = ToRect2I(r);
|
|
||||||
|
|
||||||
Window *title_bar_window = GetWindow(window->title_bar_window);
|
|
||||||
title_bar_window->total_rect = CutBottom(&window->total_rect, GetTitleBarSize(title_bar_window));
|
|
||||||
title_bar_window->document_rect = title_bar_window->total_rect;
|
|
||||||
|
|
||||||
window->document_rect = window->total_rect;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -211,21 +211,6 @@ void DrawWindow(Window *window, Event &event) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (view->fuzzy_search) {
|
|
||||||
Caret it = view->carets[0];
|
|
||||||
Int front = GetFront(it);
|
|
||||||
XY fxy = PosToXY(*buffer, front);
|
|
||||||
if (fxy.line == 0) fxy.line += 1;
|
|
||||||
Vec2I w = XYToWorldPos(view, XYLine(fxy.line));
|
|
||||||
w -= view->scroll;
|
|
||||||
w += window->document_rect.min;
|
|
||||||
Rect2 rect = {
|
|
||||||
{(float)window->total_rect.min.x, (float)w.y},
|
|
||||||
{(float)window->total_rect.max.x, (float)w.y + (float)FontLineSpacing}
|
|
||||||
};
|
|
||||||
DrawRectOutline(rect, ColorFuzzySearchLineHighlight);
|
|
||||||
}
|
|
||||||
|
|
||||||
EndProfileScope();
|
EndProfileScope();
|
||||||
DrawVisibleText(window, color_text);
|
DrawVisibleText(window, color_text);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user