Layout window to PrimaryWindow, command documentation
This commit is contained in:
@@ -5,9 +5,10 @@ Use session 4
|
|||||||
- ":OpenAt C:/Work"
|
- ":OpenAt C:/Work"
|
||||||
- :OpenCodeAt C:/Work
|
- :OpenCodeAt C:/Work
|
||||||
- :SetWorkDirAt C:/Work or :Set WorkDir "." ? or :Set WorkDir "C:/text_editor"
|
- :SetWorkDirAt C:/Work or :Set WorkDir "." ? or :Set WorkDir "C:/text_editor"
|
||||||
- Maybe some convention for commands that accept arguments?
|
|
||||||
- Delete file command
|
- Delete file command
|
||||||
- :Close Fuzzy search exact match doesn't match with Close
|
- :Close Fuzzy search exact match doesn't match with Close
|
||||||
|
- Maybe search everything window should have a special buffer
|
||||||
|
- Setting variables maybe should create and modify config, commit these changes immediately? So user can change keybindings in command window and commit immediately
|
||||||
|
|
||||||
- Make a fuzzy command !> grep and fuzzy over it??? (doesn't seem very useful for grep)
|
- Make a fuzzy command !> grep and fuzzy over it??? (doesn't seem very useful for grep)
|
||||||
- Make the equivalent of SearchProject but for cmds like !@git grep -n "@>"
|
- Make the equivalent of SearchProject but for cmds like !@git grep -n "@>"
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ String GetDir(Buffer *buffer) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String GetMainDir() {
|
String GetMainDir() {
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
return GetDir(main.buffer);
|
return GetDir(main.buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -162,7 +162,7 @@ void Appendf(View *view, const char *fmt, ...) {
|
|||||||
void UIMessagef(const char *fmt, ...) {
|
void UIMessagef(const char *fmt, ...) {
|
||||||
Scratch scratch;
|
Scratch scratch;
|
||||||
STRING_FORMAT(scratch, fmt, string);
|
STRING_FORMAT(scratch, fmt, string);
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
JumpTempBuffer(&main);
|
JumpTempBuffer(&main);
|
||||||
NextActiveWindowID = main.window->id;
|
NextActiveWindowID = main.window->id;
|
||||||
RawAppendf(main.buffer, "\n %S\n :Close\n", string);
|
RawAppendf(main.buffer, "\n %S\n :Close\n", string);
|
||||||
@@ -217,7 +217,7 @@ void CenterView(WindowID window) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CMD_CenterView() {
|
void CMD_CenterView() {
|
||||||
CenterView(LastActiveLayoutWindowID);
|
CenterView(PrimaryWindowID);
|
||||||
} RegisterCommand(CMD_CenterView, "");
|
} RegisterCommand(CMD_CenterView, "");
|
||||||
|
|
||||||
void MoveCursorByPageSize(Window *window, int direction, bool shift = false) {
|
void MoveCursorByPageSize(Window *window, int direction, bool shift = false) {
|
||||||
@@ -341,7 +341,7 @@ void GotoNextInList(Window *window, Int line_offset = 1) {
|
|||||||
|
|
||||||
{
|
{
|
||||||
Int idx = 0;
|
Int idx = 0;
|
||||||
String16 delim = u"|::|";
|
String16 delim = u"||>";
|
||||||
if (Seek(line, delim, &idx, SeekFlag_None)) {
|
if (Seek(line, delim, &idx, SeekFlag_None)) {
|
||||||
line = Skip(line, idx + delim.len);
|
line = Skip(line, idx + delim.len);
|
||||||
}
|
}
|
||||||
@@ -425,7 +425,7 @@ View *ExecHidden(String buffer_name, String cmd, String working_dir) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
BSet Exec(String cmd, String working_dir, bool set_active = true) {
|
BSet Exec(String cmd, String working_dir, bool set_active = true) {
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
if (set_active) {
|
if (set_active) {
|
||||||
NextActiveWindowID = main.window->id;
|
NextActiveWindowID = main.window->id;
|
||||||
}
|
}
|
||||||
@@ -436,7 +436,7 @@ BSet Exec(String cmd, String working_dir, bool set_active = true) {
|
|||||||
|
|
||||||
BSet ExecBuild(String cmd) {
|
BSet ExecBuild(String cmd) {
|
||||||
BSet build = GetBSet(BuildWindowID);
|
BSet build = GetBSet(BuildWindowID);
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
SelectRange(build.view, Range{});
|
SelectRange(build.view, Range{});
|
||||||
ResetBuffer(build.buffer);
|
ResetBuffer(build.buffer);
|
||||||
Exec(build.view->id, true, cmd, WorkDir);
|
Exec(build.view->id, true, cmd, WorkDir);
|
||||||
@@ -466,12 +466,12 @@ void CMD_Build() {
|
|||||||
} RegisterCommand(CMD_Build, "f1");
|
} RegisterCommand(CMD_Build, "f1");
|
||||||
|
|
||||||
void CMD_GotoNextInList() {
|
void CMD_GotoNextInList() {
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
GotoNextInList(main.window, 1);
|
GotoNextInList(main.window, 1);
|
||||||
} RegisterCommand(CMD_GotoNextInList, "ctrl-e");
|
} RegisterCommand(CMD_GotoNextInList, "ctrl-e");
|
||||||
|
|
||||||
void CMD_GotoPrevInList() {
|
void CMD_GotoPrevInList() {
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
GotoNextInList(main.window, -1);
|
GotoNextInList(main.window, -1);
|
||||||
} RegisterCommand(CMD_GotoPrevInList, "alt-e");
|
} RegisterCommand(CMD_GotoPrevInList, "alt-e");
|
||||||
|
|
||||||
@@ -664,7 +664,7 @@ BSet Open(Window *window, String path, ResolveOpenMeta meta, bool set_active = t
|
|||||||
}
|
}
|
||||||
|
|
||||||
BSet Open(String path, ResolveOpenMeta meta) {
|
BSet Open(String path, ResolveOpenMeta meta) {
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
main = Open(main.window, path, meta);
|
main = Open(main.window, path, meta);
|
||||||
return main;
|
return main;
|
||||||
}
|
}
|
||||||
@@ -676,18 +676,18 @@ BSet Open(String16 path, ResolveOpenMeta meta) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CMD_Save() {
|
void CMD_Save() {
|
||||||
BSet active = GetBSet(LastActiveLayoutWindowID);
|
BSet active = GetBSet(PrimaryWindowID);
|
||||||
SaveBuffer(active.buffer);
|
SaveBuffer(active.buffer);
|
||||||
} RegisterCommand(CMD_Save, "ctrl-s");
|
} RegisterCommand(CMD_Save, "ctrl-s");
|
||||||
|
|
||||||
void CMD_Reopen() {
|
void CMD_Reopen() {
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
ReopenBuffer(main.buffer);
|
ReopenBuffer(main.buffer);
|
||||||
NextActiveWindowID = main.window->id;
|
NextActiveWindowID = main.window->id;
|
||||||
} RegisterCommand(CMD_Reopen, "");
|
} RegisterCommand(CMD_Reopen, "");
|
||||||
|
|
||||||
void CMD_New() {
|
void CMD_New() {
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
New(main.window, "");
|
New(main.window, "");
|
||||||
} RegisterCommand(CMD_New, "ctrl-n");
|
} RegisterCommand(CMD_New, "ctrl-n");
|
||||||
|
|
||||||
@@ -710,7 +710,7 @@ void CMD_ToggleFullscreen() {
|
|||||||
|
|
||||||
void CMD_SetWorkDir() {
|
void CMD_SetWorkDir() {
|
||||||
Scratch scratch;
|
Scratch scratch;
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
WorkDir = GetDir(main.buffer);
|
WorkDir = GetDir(main.buffer);
|
||||||
For (Buffers) {
|
For (Buffers) {
|
||||||
if (it->special) {
|
if (it->special) {
|
||||||
@@ -722,7 +722,7 @@ void CMD_SetWorkDir() {
|
|||||||
|
|
||||||
String Coro_OpenCodeDir;
|
String Coro_OpenCodeDir;
|
||||||
void Coro_OpenCode(mco_coro *co) {
|
void Coro_OpenCode(mco_coro *co) {
|
||||||
Array<String> patterns = Split(CoCurr->arena, NonCodePatterns_EndsWith, "|");
|
Array<String> patterns = Split(CoCurr->arena, Coro_OpenCodeDir, "|");
|
||||||
Array<String> dirs = {CoCurr->arena};
|
Array<String> dirs = {CoCurr->arena};
|
||||||
Add(&dirs, Coro_OpenCodeDir);
|
Add(&dirs, Coro_OpenCodeDir);
|
||||||
for (int diri = 0; diri < dirs.len; diri += 1) {
|
for (int diri = 0; diri < dirs.len; diri += 1) {
|
||||||
@@ -758,24 +758,24 @@ void OpenCode(String dir) {
|
|||||||
|
|
||||||
void CMD_OpenCode() {
|
void CMD_OpenCode() {
|
||||||
OpenCode(WorkDir);
|
OpenCode(WorkDir);
|
||||||
} RegisterCommand(CMD_OpenCode, "");
|
} RegisterCommand(CMD_OpenCode, "", "Open all code files in current WorkDir, the code files are determined through NonCodePatterns_EndsWith config variable list");
|
||||||
|
|
||||||
void CMD_KillProcess() {
|
void CMD_KillProcess() {
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
KillProcess(main.view);
|
KillProcess(main.view);
|
||||||
} RegisterCommand(CMD_KillProcess, "");
|
} RegisterCommand(CMD_KillProcess, "", "Kill process in the last active primary window");
|
||||||
|
|
||||||
void CMD_CloseWindow() {
|
void CMD_CloseWindow() {
|
||||||
Close(LastActiveLayoutWindowID);
|
Close(PrimaryWindowID);
|
||||||
} RegisterCommand(CMD_CloseWindow, "");
|
} RegisterCommand(CMD_CloseWindow, "", "Close the last active primary window");
|
||||||
|
|
||||||
void AddHook(Array<CommandData> *arr, String name, String binding, Function *function) {
|
void AddHook(Array<CommandData> *arr, String name, String binding, Function *function) {
|
||||||
CommandData n = {name, binding, function, ParseKeyCached(binding)};
|
CommandData n = {name, binding, function, "Not listing hooks anywhere currently", ParseKeyCached(binding)};
|
||||||
Add(arr, n);
|
Add(arr, n);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Coro_Rename(mco_coro *co) {
|
void Coro_Rename(mco_coro *co) {
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
Buffer *buffer = main.buffer;
|
Buffer *buffer = main.buffer;
|
||||||
JumpTempBuffer(&main);
|
JumpTempBuffer(&main);
|
||||||
NextActiveWindowID = main.window->id;
|
NextActiveWindowID = main.window->id;
|
||||||
@@ -787,7 +787,7 @@ void Coro_Rename(mco_coro *co) {
|
|||||||
AddHook(&main.view->hooks, "Cancel", "escape", [](){BSet active = GetBSet(ActiveWindowID); active.view->hook_cmd = "Cancel";});
|
AddHook(&main.view->hooks, "Cancel", "escape", [](){BSet active = GetBSet(ActiveWindowID); active.view->hook_cmd = "Cancel";});
|
||||||
String result = "Cancel";
|
String result = "Cancel";
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (main.window->active_view != main.view->id || (main.window->id != LastActiveLayoutWindowID && main.window->id != ActiveWindowID) || main.window->close) {
|
if (main.window->active_view != main.view->id || (main.window->id != PrimaryWindowID && main.window->id != ActiveWindowID) || main.window->close) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -817,7 +817,7 @@ void CMD_Rename() {
|
|||||||
CoRemove("Coro_Rename");
|
CoRemove("Coro_Rename");
|
||||||
CoData *data = CoAdd(Coro_Rename);
|
CoData *data = CoAdd(Coro_Rename);
|
||||||
CoResume(data);
|
CoResume(data);
|
||||||
} RegisterCommand(CMD_Rename, "");
|
} RegisterCommand(CMD_Rename, "", "Opens a UI asking for a new name of a buffer open in the last active primary window");
|
||||||
|
|
||||||
String Coro_YesNoCancel(mco_coro *co, BSet main, String question) {
|
String Coro_YesNoCancel(mco_coro *co, BSet main, String question) {
|
||||||
JumpTempBuffer(&main);
|
JumpTempBuffer(&main);
|
||||||
@@ -834,7 +834,7 @@ String Coro_YesNoCancel(mco_coro *co, BSet main, String question) {
|
|||||||
AddHook(&main.view->hooks, "Cancel", "escape", [](){BSet active = GetBSet(ActiveWindowID); active.view->hook_cmd = "Cancel";});
|
AddHook(&main.view->hooks, "Cancel", "escape", [](){BSet active = GetBSet(ActiveWindowID); active.view->hook_cmd = "Cancel";});
|
||||||
String result = "Cancel";
|
String result = "Cancel";
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (main.window->active_view != main.view->id || (main.window->id != LastActiveLayoutWindowID && main.window->id != ActiveWindowID) || main.window->close) {
|
if (main.window->active_view != main.view->id || (main.window->id != PrimaryWindowID && main.window->id != ActiveWindowID) || main.window->close) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -850,7 +850,7 @@ String Coro_YesNoCancel(mco_coro *co, BSet main, String question) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Coro_Close(mco_coro *co) {
|
void Coro_Close(mco_coro *co) {
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
if (main.buffer->special || main.buffer->temp) {
|
if (main.buffer->special || main.buffer->temp) {
|
||||||
Close(main.view->id);
|
Close(main.view->id);
|
||||||
return;
|
return;
|
||||||
@@ -893,15 +893,14 @@ void CMD_Close() {
|
|||||||
CoRemove("Coro_Close");
|
CoRemove("Coro_Close");
|
||||||
CoData *data = CoAdd(Coro_Close);
|
CoData *data = CoAdd(Coro_Close);
|
||||||
CoResume(data);
|
CoResume(data);
|
||||||
|
} RegisterCommand(CMD_Close, "ctrl-w", "Close open view in the last active primary window");
|
||||||
} RegisterCommand(CMD_Close, "ctrl-w");
|
|
||||||
|
|
||||||
// Considerations with coroutines:
|
// Considerations with coroutines:
|
||||||
// 1. Does scratch memory leak across Yield boundary? Or interacts badly with Yield stuff in any way?
|
// 1. Does scratch memory leak across Yield boundary? Or interacts badly with Yield stuff in any way?
|
||||||
// 2. Are pointers and globals correct over time? Or might they get deleted etc.
|
// 2. Are pointers and globals correct over time? Or might they get deleted etc.
|
||||||
// 3. Imagine a scenario where the coroutine gets deleted before completion, will the memory leak?
|
// 3. Imagine a scenario where the coroutine gets deleted before completion, will the memory leak?
|
||||||
String Coro_CloseAllEx(mco_coro *co) {
|
String Coro_CloseAllEx(mco_coro *co) {
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
Array<BufferID> buffers = {CoCurr->arena};
|
Array<BufferID> buffers = {CoCurr->arena};
|
||||||
For (Buffers) Add(&buffers, it->id);
|
For (Buffers) Add(&buffers, it->id);
|
||||||
ForItem (id, buffers) {
|
ForItem (id, buffers) {
|
||||||
@@ -941,11 +940,11 @@ void CMD_Quit() {
|
|||||||
CoRemove("Coro_Quit");
|
CoRemove("Coro_Quit");
|
||||||
CoData *data = CoAdd(Coro_Quit);
|
CoData *data = CoAdd(Coro_Quit);
|
||||||
CoResume(data);
|
CoResume(data);
|
||||||
} RegisterCommand(CMD_Quit, "");
|
} RegisterCommand(CMD_Quit, "", "Ask user which files he would like to save and exit");
|
||||||
|
|
||||||
void CMD_QuitWithoutSaving() {
|
void CMD_QuitWithoutSaving() {
|
||||||
AppIsRunning = false;
|
AppIsRunning = false;
|
||||||
} RegisterCommand(CMD_QuitWithoutSaving, "");
|
} RegisterCommand(CMD_QuitWithoutSaving, "", "Self explanatory");
|
||||||
|
|
||||||
void Coro_CloseAll(mco_coro *co) {
|
void Coro_CloseAll(mco_coro *co) {
|
||||||
Coro_CloseAllEx(co);
|
Coro_CloseAllEx(co);
|
||||||
@@ -955,77 +954,77 @@ void CMD_CloseAll() {
|
|||||||
CoRemove("Coro_CloseAll");
|
CoRemove("Coro_CloseAll");
|
||||||
CoData *data = CoAdd(Coro_CloseAll);
|
CoData *data = CoAdd(Coro_CloseAll);
|
||||||
CoResume(data);
|
CoResume(data);
|
||||||
} RegisterCommand(CMD_CloseAll, "");
|
} RegisterCommand(CMD_CloseAll, "", "Ask user which files to save and close all open normal views and buffers");
|
||||||
|
|
||||||
void CMD_JumpPrev() {
|
void CMD_JumpPrev() {
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
JumpToLastValidView(main.window);
|
JumpToLastValidView(main.window);
|
||||||
NextActiveWindowID = main.window->id;
|
NextActiveWindowID = main.window->id;
|
||||||
} RegisterCommand(CMD_JumpPrev, "ctrl-tab");
|
} RegisterCommand(CMD_JumpPrev, "ctrl-tab", "Go to the previous open view in primary window");
|
||||||
|
|
||||||
void CMD_Prev() {
|
void CMD_Prev() {
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
main.window->skip_checkpoint = true;
|
main.window->skip_checkpoint = true;
|
||||||
JumpBack(main.window);
|
JumpBack(main.window);
|
||||||
NextActiveWindowID = main.window->id;
|
NextActiveWindowID = main.window->id;
|
||||||
} RegisterCommand(CMD_Prev, "alt-q | mousex1");
|
} RegisterCommand(CMD_Prev, "alt-q | mousex1", "Go to previous position (either previous view that was open or caret position) in the primary window");
|
||||||
|
|
||||||
void CMD_Next() {
|
void CMD_Next() {
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
main.window->skip_checkpoint = true;
|
main.window->skip_checkpoint = true;
|
||||||
JumpForward(main.window);
|
JumpForward(main.window);
|
||||||
NextActiveWindowID = main.window->id;
|
NextActiveWindowID = main.window->id;
|
||||||
} RegisterCommand(CMD_Next, "alt-shift-q | mousex2");
|
} RegisterCommand(CMD_Next, "alt-shift-q | mousex2", "Go to next position, after backtracking, in the primary window");
|
||||||
|
|
||||||
void CMD_OpenUpFolder() {
|
void CMD_OpenUpFolder() {
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
String name = ChopLastSlash(main.buffer->name);
|
String name = ChopLastSlash(main.buffer->name);
|
||||||
Open(name);
|
Open(name);
|
||||||
} RegisterCommand(CMD_OpenUpFolder, "ctrl-period");
|
} RegisterCommand(CMD_OpenUpFolder, "ctrl-period", "Open current's file directory or up directory in other cases");
|
||||||
|
|
||||||
void CMD_EncloseLine() {
|
void CMD_EncloseLine() {
|
||||||
BSet active = GetBSet(ActiveWindowID);
|
BSet active = GetBSet(ActiveWindowID);
|
||||||
EncloseLine(active.view);
|
EncloseLine(active.view);
|
||||||
} RegisterCommand(CMD_EncloseLine, "ctrl-l");
|
} RegisterCommand(CMD_EncloseLine, "ctrl-l", "Select the entire line on which your caret is placed");
|
||||||
|
|
||||||
void CMD_SelectAll() {
|
void CMD_SelectAll() {
|
||||||
BSet active = GetBSet(ActiveWindowID);
|
BSet active = GetBSet(ActiveWindowID);
|
||||||
SelectEntireBuffer(active.view);
|
SelectEntireBuffer(active.view);
|
||||||
active.view->update_scroll = false;
|
active.view->update_scroll = false;
|
||||||
} RegisterCommand(CMD_SelectAll, "ctrl-a");
|
} RegisterCommand(CMD_SelectAll, "ctrl-a", "Select the entire buffer");
|
||||||
|
|
||||||
void CMD_Redo() {
|
void CMD_Redo() {
|
||||||
BSet active = GetBSet(ActiveWindowID);
|
BSet active = GetBSet(ActiveWindowID);
|
||||||
RedoEdit(active.buffer, &active.view->carets);
|
RedoEdit(active.buffer, &active.view->carets);
|
||||||
} RegisterCommand(CMD_Redo, "ctrl-shift-z");
|
} RegisterCommand(CMD_Redo, "ctrl-shift-z", "Redo after undoing changes to the buffer");
|
||||||
|
|
||||||
void CMD_Undo() {
|
void CMD_Undo() {
|
||||||
BSet active = GetBSet(ActiveWindowID);
|
BSet active = GetBSet(ActiveWindowID);
|
||||||
UndoEdit(active.buffer, &active.view->carets);
|
UndoEdit(active.buffer, &active.view->carets);
|
||||||
} RegisterCommand(CMD_Undo, "ctrl-z");
|
} RegisterCommand(CMD_Undo, "ctrl-z", "Undo last change you made to the buffer");
|
||||||
|
|
||||||
void CMD_MakeFontLarger() {
|
void CMD_MakeFontLarger() {
|
||||||
FontSize += 1;
|
FontSize += 1;
|
||||||
ReloadFont(Font, (U32)FontSize);
|
ReloadFont(Font, (U32)FontSize);
|
||||||
} RegisterCommand(CMD_MakeFontLarger, "ctrl-equals");
|
} RegisterCommand(CMD_MakeFontLarger, "ctrl-equals", "Increase the font size");
|
||||||
|
|
||||||
void CMD_MakeFontSmaller() {
|
void CMD_MakeFontSmaller() {
|
||||||
if (FontSize > 4) {
|
if (FontSize > 4) {
|
||||||
FontSize -= 1;
|
FontSize -= 1;
|
||||||
ReloadFont(Font, (U32)FontSize);
|
ReloadFont(Font, (U32)FontSize);
|
||||||
}
|
}
|
||||||
} RegisterCommand(CMD_MakeFontSmaller, "ctrl-minus");
|
} RegisterCommand(CMD_MakeFontSmaller, "ctrl-minus", "Decrease the font size");
|
||||||
|
|
||||||
void CMD_OpenLoadWord() {
|
void CMD_OpenLoadWord() {
|
||||||
Scratch scratch;
|
Scratch scratch;
|
||||||
BSet active = GetBSet(ActiveWindowID);
|
BSet active = GetBSet(ActiveWindowID);
|
||||||
String16 load_word = FetchLoadWord(active.view);
|
String16 load_word = FetchLoadWord(active.view);
|
||||||
// String load_word = ToString(scratch, load_word16);
|
// String load_word = ToString(scratch, load_word16);
|
||||||
Window *window = GetWindow(LastActiveLayoutWindowID);
|
// Window *window = GetWindow(PrimaryWindowID);
|
||||||
window->active_goto_list = active.view->id;
|
// window->active_goto_list = active.view->id;
|
||||||
window->goto_list_pos = active.view->carets[0].range.min;
|
// window->goto_list_pos = active.view->carets[0].range.min;
|
||||||
Open(load_word);
|
Open(load_word);
|
||||||
} RegisterCommand(CMD_OpenLoadWord, "ctrl-q");
|
} RegisterCommand(CMD_OpenLoadWord, "ctrl-q", "Open a link under the caret (file link, url, command) or open the selection");
|
||||||
|
|
||||||
void CMD_KillSelectedLines() {
|
void CMD_KillSelectedLines() {
|
||||||
BSet active = GetBSet(ActiveWindowID);
|
BSet active = GetBSet(ActiveWindowID);
|
||||||
@@ -1289,10 +1288,10 @@ void CMD_ClearCarets() {
|
|||||||
active.view->carets[0] = MakeCaret(GetFront(active.view->carets[0]));
|
active.view->carets[0] = MakeCaret(GetFront(active.view->carets[0]));
|
||||||
|
|
||||||
if (active.window->lose_focus_on_escape && active.window->id == ActiveWindowID) {
|
if (active.window->lose_focus_on_escape && active.window->id == ActiveWindowID) {
|
||||||
if (active.window->layout) {
|
if (active.window->primary) {
|
||||||
//
|
//
|
||||||
} else {
|
} else {
|
||||||
NextActiveWindowID = LastActiveLayoutWindowID;
|
NextActiveWindowID = PrimaryWindowID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1446,12 +1445,12 @@ void CMD_Set() {
|
|||||||
} RegisterCommand(CMD_Set, "");
|
} RegisterCommand(CMD_Set, "");
|
||||||
|
|
||||||
void EvalCommandsLineByLine(BSet set) {
|
void EvalCommandsLineByLine(BSet set) {
|
||||||
WindowID save_last = LastActiveLayoutWindowID;
|
WindowID save_last = PrimaryWindowID;
|
||||||
WindowID save_active = ActiveWindowID;
|
WindowID save_active = ActiveWindowID;
|
||||||
WindowID save_next = NextActiveWindowID;
|
WindowID save_next = NextActiveWindowID;
|
||||||
Caret save_caret = set.view->carets[0];
|
Caret save_caret = set.view->carets[0];
|
||||||
ActiveWindowID = set.window->id;
|
ActiveWindowID = set.window->id;
|
||||||
LastActiveLayoutWindowID = set.window->id;
|
PrimaryWindowID = set.window->id;
|
||||||
NextActiveWindowID = set.window->id;
|
NextActiveWindowID = set.window->id;
|
||||||
for (Int i = 0; i < set.buffer->line_starts.len; i += 1) {
|
for (Int i = 0; i < set.buffer->line_starts.len; i += 1) {
|
||||||
Int pos = GetLineRangeWithoutNL(set.buffer, i).min;
|
Int pos = GetLineRangeWithoutNL(set.buffer, i).min;
|
||||||
@@ -1468,13 +1467,13 @@ void EvalCommandsLineByLine(BSet set) {
|
|||||||
Open(string);
|
Open(string);
|
||||||
}
|
}
|
||||||
set.view->carets[0] = save_caret;
|
set.view->carets[0] = save_caret;
|
||||||
LastActiveLayoutWindowID = save_last;
|
PrimaryWindowID = save_last;
|
||||||
ActiveWindowID = save_active;
|
ActiveWindowID = save_active;
|
||||||
NextActiveWindowID = save_next;
|
NextActiveWindowID = save_next;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMD_EvalCommandsLineByLine() {
|
void CMD_EvalCommandsLineByLine() {
|
||||||
BSet set = GetBSet(LastActiveLayoutWindowID);
|
BSet set = GetBSet(PrimaryWindowID);
|
||||||
EvalCommandsLineByLine(set);
|
EvalCommandsLineByLine(set);
|
||||||
} RegisterCommand(CMD_EvalCommandsLineByLine, "");
|
} RegisterCommand(CMD_EvalCommandsLineByLine, "");
|
||||||
|
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ void DrawWindow(Window *window, Event &event) {
|
|||||||
SetScissor(screen_rect);
|
SetScissor(screen_rect);
|
||||||
|
|
||||||
bool is_active = window->id == ActiveWindowID;
|
bool is_active = window->id == ActiveWindowID;
|
||||||
bool active_layed_out_doc = window->id == LastActiveLayoutWindowID;
|
bool active_layed_out_doc = window->id == PrimaryWindowID;
|
||||||
|
|
||||||
Color color_whitespace_during_selection = SelectedWhitespaceColor;
|
Color color_whitespace_during_selection = SelectedWhitespaceColor;
|
||||||
Color color_background = BackgroundColor;
|
Color color_background = BackgroundColor;
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ BufferID BuildBufferID;
|
|||||||
|
|
||||||
WindowID NextActiveWindowID;
|
WindowID NextActiveWindowID;
|
||||||
WindowID ActiveWindowID;
|
WindowID ActiveWindowID;
|
||||||
WindowID LastActiveLayoutWindowID;
|
WindowID PrimaryWindowID;
|
||||||
WindowID ScrollbarSelected = {-1};
|
WindowID ScrollbarSelected = {-1};
|
||||||
WindowID DocumentSelected = {-1};
|
WindowID DocumentSelected = {-1};
|
||||||
WindowID ResizerSelected = {-1};
|
WindowID ResizerSelected = {-1};
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ void SetMouseCursor(Event event) {
|
|||||||
|
|
||||||
if (ResizerSelected.id != -1) {
|
if (ResizerSelected.id != -1) {
|
||||||
Window *window = GetWindow(ResizerSelected);
|
Window *window = GetWindow(ResizerSelected);
|
||||||
if (window->layout) {
|
if (window->primary) {
|
||||||
SetMouseCursor(SDL_SYSTEM_CURSOR_EW_RESIZE);
|
SetMouseCursor(SDL_SYSTEM_CURSOR_EW_RESIZE);
|
||||||
} else {
|
} else {
|
||||||
SetMouseCursor(SDL_SYSTEM_CURSOR_NS_RESIZE);
|
SetMouseCursor(SDL_SYSTEM_CURSOR_NS_RESIZE);
|
||||||
@@ -98,7 +98,7 @@ void SetMouseCursor(Event event) {
|
|||||||
|
|
||||||
if (ResizerHover.id != -1) {
|
if (ResizerHover.id != -1) {
|
||||||
Window *window = GetWindow(ResizerHover);
|
Window *window = GetWindow(ResizerHover);
|
||||||
if (window->layout) {
|
if (window->primary) {
|
||||||
SetMouseCursor(SDL_SYSTEM_CURSOR_EW_RESIZE);
|
SetMouseCursor(SDL_SYSTEM_CURSOR_EW_RESIZE);
|
||||||
} else {
|
} else {
|
||||||
SetMouseCursor(SDL_SYSTEM_CURSOR_NS_RESIZE);
|
SetMouseCursor(SDL_SYSTEM_CURSOR_NS_RESIZE);
|
||||||
@@ -256,7 +256,7 @@ void OnCommand(Event event) {
|
|||||||
ResizerSelected.id = {-1};
|
ResizerSelected.id = {-1};
|
||||||
} else if (ResizerSelected.id != -1) {
|
} else if (ResizerSelected.id != -1) {
|
||||||
Window *window = GetWindow(ResizerSelected);
|
Window *window = GetWindow(ResizerSelected);
|
||||||
if (window->layout) {
|
if (window->primary) {
|
||||||
Vec2I mouse = MouseVec2I();
|
Vec2I mouse = MouseVec2I();
|
||||||
Int offx = mouse.x - window->resizer_rect.min.x;
|
Int offx = mouse.x - window->resizer_rect.min.x;
|
||||||
window->weight += (double)offx / (double)WindowCalcEvenResizerValue(event.xwindow);
|
window->weight += (double)offx / (double)WindowCalcEvenResizerValue(event.xwindow);
|
||||||
@@ -403,7 +403,7 @@ void OnCommand(Event event) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
BSet active = GetBSet(ActiveWindowID);
|
BSet active = GetBSet(ActiveWindowID);
|
||||||
|
|
||||||
bool executed = false;
|
bool executed = false;
|
||||||
@@ -630,7 +630,7 @@ void Update(Event event) {
|
|||||||
ActiveWindowID = NextActiveWindowID;
|
ActiveWindowID = NextActiveWindowID;
|
||||||
Window *window = GetWindow(ActiveWindowID, NULL);
|
Window *window = GetWindow(ActiveWindowID, NULL);
|
||||||
if (window == NULL || window->visible == false) {
|
if (window == NULL || window->visible == false) {
|
||||||
ActiveWindowID = NextActiveWindowID = LastActiveLayoutWindowID;
|
ActiveWindowID = NextActiveWindowID = PrimaryWindowID;
|
||||||
window = GetWindow(ActiveWindowID, NULL);
|
window = GetWindow(ActiveWindowID, NULL);
|
||||||
if (window == NULL) {
|
if (window == NULL) {
|
||||||
ActiveWindowID = NullWindowID;
|
ActiveWindowID = NullWindowID;
|
||||||
@@ -653,10 +653,10 @@ void Update(Event event) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ActiveWindowID != LastActiveLayoutWindowID) {
|
if (ActiveWindowID != PrimaryWindowID) {
|
||||||
Window *window = GetWindow(ActiveWindowID, NULL);
|
Window *window = GetWindow(ActiveWindowID, NULL);
|
||||||
if (window->layout) {
|
if (window->primary) {
|
||||||
LastActiveLayoutWindowID = ActiveWindowID;
|
PrimaryWindowID = ActiveWindowID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,8 +134,8 @@ struct Register_Function {
|
|||||||
};
|
};
|
||||||
#define RegisterFunction(functions, name) Register_Function RF__##name(functions, #name, name)
|
#define RegisterFunction(functions, name) Register_Function RF__##name(functions, #name, name)
|
||||||
|
|
||||||
struct Register_Command { Register_Command(Array<CommandData> *fucs, Function *function, String name, String binding) { if (StartsWith(name, "CMD_")) name = Skip(name, sizeof("CMD_") - 1); Add(fucs, {name, binding, function}); } };
|
struct Register_Command { Register_Command(Array<CommandData> *fucs, Function *function, String name, String binding, String doc = "") { if (StartsWith(name, "CMD_")) name = Skip(name, sizeof("CMD_") - 1); Add(fucs, {name, binding, function, doc}); } };
|
||||||
#define RegisterCommand(name, binding) Register_Command RC__##name(&CommandFunctions, name, #name, binding)
|
#define RegisterCommand(name, ...) Register_Command RC__##name(&CommandFunctions, name, #name, __VA_ARGS__)
|
||||||
|
|
||||||
const int DIR_RIGHT = 0;
|
const int DIR_RIGHT = 0;
|
||||||
const int DIR_LEFT = 1;
|
const int DIR_LEFT = 1;
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ String16 FetchFuzzyViewLoadLine(View *view) {
|
|||||||
string = GetLineStringWithoutNL(buffer, line);
|
string = GetLineStringWithoutNL(buffer, line);
|
||||||
|
|
||||||
Int idx = 0;
|
Int idx = 0;
|
||||||
String16 delim = u"|::|";
|
String16 delim = u"||>";
|
||||||
if (Seek(string, delim, &idx, SeekFlag_None)) {
|
if (Seek(string, delim, &idx, SeekFlag_None)) {
|
||||||
string = Skip(string, idx + delim.len);
|
string = Skip(string, idx + delim.len);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ struct ViewID { Int id; View *o; };
|
|||||||
|
|
||||||
typedef void Function();
|
typedef void Function();
|
||||||
struct FunctionData { String name; Function *function; };
|
struct FunctionData { String name; Function *function; };
|
||||||
struct CommandData { String name; String binding; Function *function; struct Trigger *trigger; };
|
struct CommandData { String name; String binding; Function *function; String doc; struct Trigger *trigger; };
|
||||||
|
|
||||||
enum ViewKind {
|
enum ViewKind {
|
||||||
ViewKind_Normal,
|
ViewKind_Normal,
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ Window *CreateWind() {
|
|||||||
Window *w = AllocType(allocator, Window);
|
Window *w = AllocType(allocator, Window);
|
||||||
w->font = &PrimaryFont;
|
w->font = &PrimaryFont;
|
||||||
w->visible = true;
|
w->visible = true;
|
||||||
w->layout = true;
|
w->primary = true;
|
||||||
w->draw_scrollbar = true;
|
w->draw_scrollbar = true;
|
||||||
w->draw_line_numbers = true;
|
w->draw_line_numbers = true;
|
||||||
w->draw_line_highlight = true;
|
w->draw_line_highlight = true;
|
||||||
@@ -134,7 +134,7 @@ double WindowCalcEvenResizerValue(Int screen_size_x, Int *out_count = NULL) {
|
|||||||
double w = 0;
|
double w = 0;
|
||||||
Int c = 0;
|
Int c = 0;
|
||||||
ForItem(n, Windows) {
|
ForItem(n, Windows) {
|
||||||
if (n->layout) {
|
if (n->primary) {
|
||||||
w += n->weight;
|
w += n->weight;
|
||||||
c += 1;
|
c += 1;
|
||||||
}
|
}
|
||||||
@@ -162,7 +162,7 @@ void LayoutWindows(int16_t wx, int16_t wy) {
|
|||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
ForItem(n, Windows) {
|
ForItem(n, Windows) {
|
||||||
if (!n->layout) {
|
if (!n->primary) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ struct Window {
|
|||||||
uint32_t secondary_window_style : 1;
|
uint32_t secondary_window_style : 1;
|
||||||
uint32_t draw_line_highlight : 1;
|
uint32_t draw_line_highlight : 1;
|
||||||
uint32_t visible : 1;
|
uint32_t visible : 1;
|
||||||
uint32_t layout : 1;
|
uint32_t primary : 1;
|
||||||
uint32_t close : 1;
|
uint32_t close : 1;
|
||||||
uint32_t sync_visibility_with_focus : 1;
|
uint32_t sync_visibility_with_focus : 1;
|
||||||
uint32_t lose_focus_on_escape : 1;
|
uint32_t lose_focus_on_escape : 1;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ void BuildWindowInit() {
|
|||||||
window->active_view = view->id;
|
window->active_view = view->id;
|
||||||
window->secondary_window_style = true;
|
window->secondary_window_style = true;
|
||||||
window->draw_line_highlight = true;
|
window->draw_line_highlight = true;
|
||||||
window->layout = false;
|
window->primary = false;
|
||||||
window->visible = false;
|
window->visible = false;
|
||||||
window->lose_visibility_on_escape = true;
|
window->lose_visibility_on_escape = true;
|
||||||
window->jump_history = false;
|
window->jump_history = false;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
void CMD_ShowCommands() {
|
void CMD_ShowCommands() {
|
||||||
if (ActiveWindowID == CommandWindowID && LastExecutedManualCommand == CMD_ShowCommands) {
|
if (ActiveWindowID == CommandWindowID && LastExecutedManualCommand == CMD_ShowCommands) {
|
||||||
NextActiveWindowID = LastActiveLayoutWindowID;
|
NextActiveWindowID = PrimaryWindowID;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ProfileFunction();
|
ProfileFunction();
|
||||||
@@ -13,15 +13,18 @@ void CMD_ShowCommands() {
|
|||||||
if (it.name == "OpenCommand") {
|
if (it.name == "OpenCommand") {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
RawAppendf(command_bar.buffer, "\n:%S", it.name);
|
RawAppendf(command_bar.buffer, "\n:%-30S <|| :Set %-30S '%-30S'", it.name, it.name, it.binding);
|
||||||
|
if (it.doc.len) {
|
||||||
|
RawAppendf(command_bar.buffer, " |::| %S", it.doc);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
command_bar.view->update_scroll = true;
|
command_bar.view->update_scroll = true;
|
||||||
SelectRange(command_bar.view, GetBufferBeginAsRange(command_bar.buffer));
|
SelectRange(command_bar.view, GetBufferBeginAsRange(command_bar.buffer));
|
||||||
} RegisterCommand(CMD_ShowCommands, "ctrl-shift-p");
|
} RegisterCommand(CMD_ShowCommands, "ctrl-shift-p", "List available commands and their documentation inside the command window");
|
||||||
|
|
||||||
void CMD_ShowDebugBufferList() {
|
void CMD_ShowDebugBufferList() {
|
||||||
if (ActiveWindowID == CommandWindowID && LastExecutedManualCommand == CMD_ShowDebugBufferList) {
|
if (ActiveWindowID == CommandWindowID && LastExecutedManualCommand == CMD_ShowDebugBufferList) {
|
||||||
NextActiveWindowID = LastActiveLayoutWindowID;
|
NextActiveWindowID = PrimaryWindowID;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ProfileFunction();
|
ProfileFunction();
|
||||||
@@ -35,11 +38,11 @@ void CMD_ShowDebugBufferList() {
|
|||||||
}
|
}
|
||||||
command_bar.view->update_scroll = true;
|
command_bar.view->update_scroll = true;
|
||||||
SelectRange(command_bar.view, GetBufferBeginAsRange(command_bar.buffer));
|
SelectRange(command_bar.view, GetBufferBeginAsRange(command_bar.buffer));
|
||||||
} RegisterCommand(CMD_ShowDebugBufferList, "");
|
} RegisterCommand(CMD_ShowDebugBufferList, "", "Show full list of buffers, including the special ones that normally just clutter list");
|
||||||
|
|
||||||
void CMD_ShowBufferList() {
|
void CMD_ShowBufferList() {
|
||||||
if (ActiveWindowID == CommandWindowID && LastExecutedManualCommand == CMD_ShowBufferList) {
|
if (ActiveWindowID == CommandWindowID && LastExecutedManualCommand == CMD_ShowBufferList) {
|
||||||
NextActiveWindowID = LastActiveLayoutWindowID;
|
NextActiveWindowID = PrimaryWindowID;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ProfileFunction();
|
ProfileFunction();
|
||||||
@@ -53,7 +56,7 @@ void CMD_ShowBufferList() {
|
|||||||
}
|
}
|
||||||
command_bar.view->update_scroll = true;
|
command_bar.view->update_scroll = true;
|
||||||
SelectRange(command_bar.view, GetBufferBeginAsRange(command_bar.buffer));
|
SelectRange(command_bar.view, GetBufferBeginAsRange(command_bar.buffer));
|
||||||
} RegisterCommand(CMD_ShowBufferList, "ctrl-p");
|
} RegisterCommand(CMD_ShowBufferList, "ctrl-p", "List open buffers inside the command window that you can fuzzy search over");
|
||||||
|
|
||||||
void OpenCommand(BSet active) {
|
void OpenCommand(BSet active) {
|
||||||
ProfileFunction();
|
ProfileFunction();
|
||||||
@@ -63,13 +66,13 @@ void OpenCommand(BSet active) {
|
|||||||
|
|
||||||
void CMD_CommandWindowOpen() {
|
void CMD_CommandWindowOpen() {
|
||||||
BSet active = GetBSet(ActiveWindowID);
|
BSet active = GetBSet(ActiveWindowID);
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
NextActiveWindowID = main.window->id;
|
NextActiveWindowID = main.window->id;
|
||||||
String16 string = FetchFuzzyViewLoadLine(active.view);
|
String16 string = FetchFuzzyViewLoadLine(active.view);
|
||||||
// if (active.view->kind == ViewKind_ActiveSearch) {
|
if (active.view->kind == ViewKind_ActiveSearch) {
|
||||||
main.window->active_goto_list = active.view->id;
|
main.window->active_goto_list = active.view->id;
|
||||||
main.window->goto_list_pos = active.view->carets[0].range.min;
|
main.window->goto_list_pos = active.view->carets[0].range.min;
|
||||||
// }
|
}
|
||||||
Open(string);
|
Open(string);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,8 +123,9 @@ Array<FuzzyPair> FuzzySearchLines(Allocator allocator, Buffer *buffer, Int line_
|
|||||||
String16 s = GetLineStringWithoutNL(buffer, i);
|
String16 s = GetLineStringWithoutNL(buffer, i);
|
||||||
|
|
||||||
Int idx = 0;
|
Int idx = 0;
|
||||||
String16 delim = u"|::|";
|
if (Seek(s, u"||>", &idx, SeekFlag_None)) {
|
||||||
if (Seek(s, delim, &idx, SeekFlag_None)) {
|
s = GetPrefix(s, idx);
|
||||||
|
} else if (Seek(s, u"<||", &idx, SeekFlag_None)) {
|
||||||
s = GetPrefix(s, idx);
|
s = GetPrefix(s, idx);
|
||||||
}
|
}
|
||||||
s = Trim(s);
|
s = Trim(s);
|
||||||
@@ -155,7 +159,7 @@ void Coro_SearchProject(mco_coro *co) {
|
|||||||
Int line = PosToLine(it, pos);
|
Int line = PosToLine(it, pos);
|
||||||
String16 line_string = GetLineStringWithoutNL(it, line);
|
String16 line_string = GetLineStringWithoutNL(it, line);
|
||||||
String line_string8 = ToString(scratch, line_string);
|
String line_string8 = ToString(scratch, line_string);
|
||||||
RawAppendf(out_buffer, "%S |::| %S:%lld\n", line_string8, it->name, (long long)line + 1);
|
RawAppendf(out_buffer, "%S ||> %S:%lld\n", line_string8, it->name, (long long)line + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CoYield(co);
|
CoYield(co);
|
||||||
@@ -163,7 +167,7 @@ void Coro_SearchProject(mco_coro *co) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CMD_ReplaceAll() {
|
void CMD_ReplaceAll() {
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
String16 string = FetchLoadWord(main.view);
|
String16 string = FetchLoadWord(main.view);
|
||||||
Scratch scratch;
|
Scratch scratch;
|
||||||
Array<String16> parts = Split(scratch, string, u"@>");
|
Array<String16> parts = Split(scratch, string, u"@>");
|
||||||
@@ -183,7 +187,7 @@ void CMD_ReplaceAll() {
|
|||||||
SelectAllOccurences(view, needle);
|
SelectAllOccurences(view, needle);
|
||||||
Replace(view, replace);
|
Replace(view, replace);
|
||||||
}
|
}
|
||||||
} RegisterCommand(CMD_ReplaceAll, "");
|
} RegisterCommand(CMD_ReplaceAll, "", "Search and replace over the entire project, you need to select a text with format like this 'FindAnd@>ReplaceWith' and executing the command will change all occurences of FindAnd to ReplaceWith");
|
||||||
|
|
||||||
void FuzzySearchViewUpdate() {
|
void FuzzySearchViewUpdate() {
|
||||||
ProfileFunction();
|
ProfileFunction();
|
||||||
@@ -240,13 +244,13 @@ void FuzzySearchViewUpdate() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CMD_SearchProject() {
|
void CMD_SearchProject() {
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
JumpTempBuffer(&main);
|
JumpTempBuffer(&main);
|
||||||
NextActiveWindowID = main.window->id;
|
NextActiveWindowID = main.window->id;
|
||||||
main.view->kind = ViewKind_ActiveSearch;
|
main.view->kind = ViewKind_ActiveSearch;
|
||||||
AddHook(&main.view->hooks, "Open", "ctrl-q | enter", CMD_CommandWindowOpen);
|
AddHook(&main.view->hooks, "Open", "ctrl-q | enter", CMD_CommandWindowOpen);
|
||||||
main.buffer->no_history = true;
|
main.buffer->no_history = true;
|
||||||
} RegisterCommand(CMD_SearchProject, "ctrl-shift-f");
|
} RegisterCommand(CMD_SearchProject, "ctrl-shift-f", "Interactive search over the entire project in a new buffer view");
|
||||||
|
|
||||||
void SetFuzzy(View *view) {
|
void SetFuzzy(View *view) {
|
||||||
view->kind = ViewKind_FuzzySearch;
|
view->kind = ViewKind_FuzzySearch;
|
||||||
@@ -267,7 +271,7 @@ void CommandWindowInit() {
|
|||||||
window->draw_scrollbar = false;
|
window->draw_scrollbar = false;
|
||||||
window->secondary_window_style = true;
|
window->secondary_window_style = true;
|
||||||
window->draw_line_highlight = true;
|
window->draw_line_highlight = true;
|
||||||
window->layout = false;
|
window->primary = false;
|
||||||
window->visible = false;
|
window->visible = false;
|
||||||
window->sync_visibility_with_focus = true;
|
window->sync_visibility_with_focus = true;
|
||||||
window->lose_focus_on_escape = true;
|
window->lose_focus_on_escape = true;
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ void DebugWindowInit() {
|
|||||||
window->draw_scrollbar = false;
|
window->draw_scrollbar = false;
|
||||||
window->visible = false;
|
window->visible = false;
|
||||||
window->z = 2;
|
window->z = 2;
|
||||||
window->layout = false;
|
window->primary = false;
|
||||||
window->jump_history = false;
|
window->jump_history = false;
|
||||||
|
|
||||||
Buffer *buffer = CreateBuffer(SysAllocator, GetUniqueBufferName(WorkDir, "debug"));
|
Buffer *buffer = CreateBuffer(SysAllocator, GetUniqueBufferName(WorkDir, "debug"));
|
||||||
@@ -43,7 +43,7 @@ void DebugWindowUpdate() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
|
|
||||||
Scratch scratch;
|
Scratch scratch;
|
||||||
String s = Format(scratch, "wid: %d\nvid: %d\nbid: %d\nframe: %lld\n", (int)main.window->id.id, (int)main.view->id.id, (int)main.buffer->id.id, (long long)FrameID);
|
String s = Format(scratch, "wid: %d\nvid: %d\nbid: %d\nframe: %lld\n", (int)main.window->id.id, (int)main.view->id.id, (int)main.buffer->id.id, (long long)FrameID);
|
||||||
|
|||||||
@@ -15,12 +15,12 @@ void CMD_Search() {
|
|||||||
} RegisterCommand(CMD_Search, "ctrl-f");
|
} RegisterCommand(CMD_Search, "ctrl-f");
|
||||||
|
|
||||||
void SearchWindowFindNext(bool forward = true) {
|
void SearchWindowFindNext(bool forward = true) {
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
BSet set = GetBSet(SearchWindowID);
|
BSet set = GetBSet(SearchWindowID);
|
||||||
String16 seek = GetString(set.buffer, GetRange(set.buffer));
|
String16 seek = GetString(set.buffer, GetRange(set.buffer));
|
||||||
Find(main.view, seek, forward);
|
Find(main.view, seek, forward);
|
||||||
main.window->search_bar_anchor = main.view->carets[0];
|
main.window->search_bar_anchor = main.view->carets[0];
|
||||||
CenterView(LastActiveLayoutWindowID);
|
CenterView(PrimaryWindowID);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMD_SearchNextInSearch() {
|
void CMD_SearchNextInSearch() {
|
||||||
@@ -40,7 +40,7 @@ void CMD_SearchPrev() {
|
|||||||
} RegisterCommand(CMD_SearchPrev, "shift-f3");
|
} RegisterCommand(CMD_SearchPrev, "shift-f3");
|
||||||
|
|
||||||
void CMD_SearchAll() {
|
void CMD_SearchAll() {
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
BSet set = GetBSet(SearchWindowID);
|
BSet set = GetBSet(SearchWindowID);
|
||||||
String16 needle = GetString(set.buffer, GetRange(set.buffer));
|
String16 needle = GetString(set.buffer, GetRange(set.buffer));
|
||||||
SelectAllOccurences(main.view, needle);
|
SelectAllOccurences(main.view, needle);
|
||||||
@@ -58,7 +58,7 @@ void CMD_ToggleSearchWordBoundary() {
|
|||||||
void SearchWindowUpdate() {
|
void SearchWindowUpdate() {
|
||||||
BSet active = GetBSet(ActiveWindowID);
|
BSet active = GetBSet(ActiveWindowID);
|
||||||
if (active.window->id == SearchWindowID && active.buffer->begin_frame_change_id != active.buffer->change_id) {
|
if (active.window->id == SearchWindowID && active.buffer->begin_frame_change_id != active.buffer->change_id) {
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
BSet set = GetBSet(SearchWindowID);
|
BSet set = GetBSet(SearchWindowID);
|
||||||
main.view->carets[0] = main.window->search_bar_anchor;
|
main.view->carets[0] = main.window->search_bar_anchor;
|
||||||
String16 seek = GetString(set.buffer, GetRange(set.buffer));
|
String16 seek = GetString(set.buffer, GetRange(set.buffer));
|
||||||
@@ -92,7 +92,7 @@ void SearchWindowInit() {
|
|||||||
window->draw_scrollbar = false;
|
window->draw_scrollbar = false;
|
||||||
window->secondary_window_style = true;
|
window->secondary_window_style = true;
|
||||||
window->draw_line_highlight = false;
|
window->draw_line_highlight = false;
|
||||||
window->layout = false;
|
window->primary = false;
|
||||||
window->visible = false;
|
window->visible = false;
|
||||||
window->lose_visibility_on_escape = true;
|
window->lose_visibility_on_escape = true;
|
||||||
window->jump_history = false;
|
window->jump_history = false;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ void StatusWindowInit() {
|
|||||||
window->draw_scrollbar = false;
|
window->draw_scrollbar = false;
|
||||||
window->draw_line_highlight = true;
|
window->draw_line_highlight = true;
|
||||||
window->secondary_window_style = true;
|
window->secondary_window_style = true;
|
||||||
window->layout = false;
|
window->primary = false;
|
||||||
window->jump_history = false;
|
window->jump_history = false;
|
||||||
window->lose_focus_on_escape = true;
|
window->lose_focus_on_escape = true;
|
||||||
}
|
}
|
||||||
@@ -30,7 +30,7 @@ void StatusWindowUpdate() {
|
|||||||
ProfileFunction();
|
ProfileFunction();
|
||||||
Window *status_bar_window = GetWindow(StatusBarWindowID, NULL);
|
Window *status_bar_window = GetWindow(StatusBarWindowID, NULL);
|
||||||
Scratch scratch;
|
Scratch scratch;
|
||||||
BSet main = GetBSet(LastActiveLayoutWindowID);
|
BSet main = GetBSet(PrimaryWindowID);
|
||||||
BSet title = GetBSet(status_bar_window);
|
BSet title = GetBSet(status_bar_window);
|
||||||
title.view->scroll.y = 0;
|
title.view->scroll.y = 0;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user