diff --git a/Makefile b/Makefile index dca8136..8f37eb2 100644 --- a/Makefile +++ b/Makefile @@ -13,21 +13,22 @@ CCACHE := ccache CXX_DEBUG := $(CCACHE) g++ CXX_RELEASE := $(CCACHE) clang++ -CFLAGS_DEBUG := -std=c++20 -Wall -Wextra \ - -O0 -fno-inline -gsplit-dwarf\ - -g -fsanitize=address -fno-omit-frame-pointer\ - -Wno-unused-command-line-argument \ - -I./include -I./libs -CFLAGS_RELEASE := -std=c++20 -O3 -march=native \ - -fno-exceptions -fno-rtti -fstrict-aliasing \ - -ffast-math \ - -fvisibility=hidden -fuse-ld=lld \ - -flto=thin -Wl,--thinlto-cache-dir=.thinlto-cache \ - -fomit-frame-pointer -DNDEBUG -s \ - -mllvm -vectorize-loops \ - -fno-unwind-tables -fno-asynchronous-unwind-tables\ - -Wno-unused-command-line-argument \ - -I./include -I./libs +CFLAGS_DEBUG :=\ + -std=c++20 -Wall -Wextra \ + -O0 -fno-inline -gsplit-dwarf\ + -g -fsanitize=address -fno-omit-frame-pointer\ + -Wno-unused-command-line-argument \ + -I./include -I./libs +CFLAGS_RELEASE := \ + -std=c++20 -O3 -march=native \ + -fno-exceptions -fno-rtti -fstrict-aliasing \ + -ffast-math -flto=thin \ + -fvisibility=hidden -fuse-ld=lld \ + -fomit-frame-pointer -DNDEBUG -s \ + -mllvm -vectorize-loops \ + -fno-unwind-tables -fno-asynchronous-unwind-tables\ + -Wno-unused-command-line-argument \ + -I./include -I./libs PCH_CFLAGS_DEBUG := $(CFLAGS_DEBUG) -x c++-header PCH_CFLAGS_RELEASE := $(CFLAGS_RELEASE) -x c++-header diff --git a/README.md b/README.md index fa1fb2a..b994f21 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ A TUI IDE. # TODO - [ ] Add status bar & RUNNER mode +- [ ] Maybe hide boxes in !`normal` mode - [ ] Fix indentation logic - [ ] Fix bug where closing immediately while lsp is loading hangs and then segfaults. - [ ] For `"insertTextFormat": 2` in `clangd` and similar use only the last word in the signature when replacing @@ -41,6 +42,8 @@ A TUI IDE. - [ ] Add support for virtual cursor where edits apply at all the places. - [ ] Add alt + click to set multiple cursors. - [ ] Add search / replace along with search / virtual cursors are searched pos. + - Allow using perl directly for replace maybe? and others with my dfa? + - or add searcher that supports $1 $2 etc. (capture groups) - [ ] Add support for undo/redo. - [ ] Add splash screen / minigame jumping. - [ ] Normalize / validate unicode on file open. so use utf8 purely and fix other types of files diff --git a/include/editor/editor.h b/include/editor/editor.h index 94a33ac..239721e 100644 --- a/include/editor/editor.h +++ b/include/editor/editor.h @@ -1,11 +1,11 @@ #ifndef EDITOR_H #define EDITOR_H -#include "boxes/diagnostics.h" -#include "boxes/hover.h" +#include "ui/diagnostics.h" +#include "ui/hover.h" #include "editor/spans.h" #include "io/knot.h" -#include "io/ui.h" +#include "io/sysio.h" #include "ts/decl.h" #include "utils/utils.h" diff --git a/include/io/ui.h b/include/io/sysio.h similarity index 94% rename from include/io/ui.h rename to include/io/sysio.h index ca61e1c..9380e37 100644 --- a/include/io/ui.h +++ b/include/io/sysio.h @@ -83,6 +83,10 @@ extern std::vector screen; extern std::vector old_screen; extern std::mutex screen_mutex; +inline bool is_empty_cell(const ScreenCell &c) { + return c.utf8.empty() || c.utf8 == " " || c.utf8 == "\x1b"; +} + Coord start_screen(); void end_screen(); void update(uint32_t row, uint32_t col, std::string utf8, uint32_t fg, diff --git a/include/ui/bar.h b/include/ui/bar.h new file mode 100644 index 0000000..b054ed0 --- /dev/null +++ b/include/ui/bar.h @@ -0,0 +1,6 @@ +#ifndef UI_BAR_H +#define UI_BAR_H + +#include "utils/utils.h" + +#endif diff --git a/include/boxes/diagnostics.h b/include/ui/diagnostics.h similarity index 78% rename from include/boxes/diagnostics.h rename to include/ui/diagnostics.h index 42da4bb..c1fe466 100644 --- a/include/boxes/diagnostics.h +++ b/include/ui/diagnostics.h @@ -1,8 +1,8 @@ -#ifndef BOXES_DIAGNOSTICS_H -#define BOXES_DIAGNOSTICS_H +#ifndef UI_DIAGNOSTICS_H +#define UI_DIAGNOSTICS_H #include "editor/decl.h" -#include "io/ui.h" +#include "io/sysio.h" #include "pch.h" #include "utils/utils.h" diff --git a/include/boxes/hover.h b/include/ui/hover.h similarity index 87% rename from include/boxes/hover.h rename to include/ui/hover.h index 83ec217..cfc4db8 100644 --- a/include/boxes/hover.h +++ b/include/ui/hover.h @@ -1,8 +1,8 @@ -#ifndef BOXES_HOVER_H -#define BOXES_HOVER_H +#ifndef UI_HOVER_H +#define UI_HOVER_H #include "editor/decl.h" -#include "io/ui.h" +#include "io/sysio.h" #include "pch.h" #include "ts/decl.h" #include "utils/utils.h" diff --git a/src/io/input.cc b/src/io/input.cc index 85ea177..f4572f1 100644 --- a/src/io/input.cc +++ b/src/io/input.cc @@ -1,4 +1,4 @@ -#include "io/ui.h" +#include "io/sysio.h" static Queue input_queue; diff --git a/src/io/renderer.cc b/src/io/renderer.cc index 425ab51..1a79671 100644 --- a/src/io/renderer.cc +++ b/src/io/renderer.cc @@ -1,4 +1,4 @@ -#include "io/ui.h" +#include "io/sysio.h" uint32_t rows, cols; bool show_cursor = 0; @@ -112,10 +112,6 @@ void update(uint32_t row, uint32_t col, const char *utf8, uint32_t fg, screen[idx].ul_color = ul_color; } -inline bool is_empty_cell(const ScreenCell &c) { - return c.utf8.empty() || c.utf8 == " " || c.utf8 == "\x1b"; -} - void render() { static bool first_render = true; uint32_t current_fg = 0; diff --git a/src/main.cc b/src/main.cc index 11c0bc5..08d22d8 100644 --- a/src/main.cc +++ b/src/main.cc @@ -1,6 +1,6 @@ #include "main.h" #include "editor/editor.h" -#include "io/ui.h" +#include "io/sysio.h" #include "lsp/lsp.h" #include "ts/ts.h" diff --git a/src/ts/utils.cc b/src/ts/utils.cc index 0ea2d6a..dad6956 100644 --- a/src/ts/utils.cc +++ b/src/ts/utils.cc @@ -1,5 +1,5 @@ #include "config.h" -#include "io/ui.h" +#include "io/sysio.h" #include "ts/ts.h" std::unordered_map regex_cache; diff --git a/src/ui/bar.cc b/src/ui/bar.cc new file mode 100644 index 0000000..e08231f --- /dev/null +++ b/src/ui/bar.cc @@ -0,0 +1 @@ +#include "ui/bar.h" diff --git a/src/boxes/diagnostics.cc b/src/ui/diagnostics.cc similarity index 99% rename from src/boxes/diagnostics.cc rename to src/ui/diagnostics.cc index af9528b..99d1ccc 100644 --- a/src/boxes/diagnostics.cc +++ b/src/ui/diagnostics.cc @@ -1,4 +1,4 @@ -#include "boxes/diagnostics.h" +#include "ui/diagnostics.h" void DiagnosticBox::clear() { warnings.clear(); diff --git a/src/boxes/hover.cc b/src/ui/hover.cc similarity index 99% rename from src/boxes/hover.cc rename to src/ui/hover.cc index 976d776..2b97d5c 100644 --- a/src/boxes/hover.cc +++ b/src/ui/hover.cc @@ -1,4 +1,4 @@ -#include "boxes/hover.h" +#include "ui/hover.h" #include "ts/ts.h" void HoverBox::clear() {