From fb5976f1239a72012aeb324ed18dbc1f143b0341 Mon Sep 17 00:00:00 2001 From: Kyle Isom Date: Sun, 30 Nov 2025 18:40:44 -0800 Subject: [PATCH] Add buffer position display and documentation improvements. - Display buffer position prefix "[x/N]" in GUI and terminal renderers. - Improve `kte` and `kge` man pages with frontend usage details and project homepage. - Update README with GUI invocation instructions. - Bump version to 1.0.0. --- .idea/workspace.xml | 69 ++++++++++----------------------------------- CMakeLists.txt | 2 +- GUIRenderer.cc | 12 ++++++++ README.md | 22 +++++++++++++-- TerminalRenderer.cc | 12 ++++++++ docs/kge.1 | 9 ++++-- docs/kte.1 | 13 +++++++-- 7 files changed, 78 insertions(+), 61 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index a068fd4..254e7ad 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -33,58 +33,10 @@ - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -327,7 +287,8 @@ - diff --git a/CMakeLists.txt b/CMakeLists.txt index 685b7e7..3622590 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ project(kte) include(GNUInstallDirs) set(CMAKE_CXX_STANDARD 17) -set(KTE_VERSION "0.9.2") +set(KTE_VERSION "1.0.0") # Default to terminal-only build to avoid SDL/OpenGL dependency by default. # Enable with -DBUILD_GUI=ON when SDL2/OpenGL/Freetype are available. diff --git a/GUIRenderer.cc b/GUIRenderer.cc index e4ba9ff..12a2d48 100644 --- a/GUIRenderer.cc +++ b/GUIRenderer.cc @@ -312,6 +312,18 @@ GUIRenderer::Draw(Editor &ed) } catch (...) {} } left += " "; + // Insert buffer position prefix "[x/N] " before filename + { + std::size_t total = ed.BufferCount(); + if (total > 0) { + std::size_t idx1 = ed.CurrentBufferIndex() + 1; // 1-based for display + left += "["; + left += std::to_string(static_cast(idx1)); + left += "/"; + left += std::to_string(static_cast(total)); + left += "] "; + } + } left += fname; if (buf->Dirty()) left += " *"; diff --git a/README.md b/README.md index d05018b..5073d3a 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ kte — Kyle's Text Editor Vision ------- -kte will be a small, fast, and understandable text editor with a -terminalâfirst UX and an optional ImGui GUI. It modernizes the +kte is a small, fast, and understandable text editor with a +terminal-first UX and an optional ImGui GUI. It modernizes the original ke editor while preserving its familiar WordStar/VDE‑style command model and Emacs‑influenced ergonomics. The focus is on simplicity of design, excellent latency, and pragmatic features you @@ -80,6 +80,15 @@ Interfaces - GUI: an optional ImGui‑based frontend that embeds the same editor core. +Man pages +--------- + +- Terminal editor: `docs/kte.1` (view locally with `man -l docs/kte.1`) +- GUI frontend: `docs/kge.1` (view locally with `man -l docs/kge.1`) + +The `ke` keybinding reference remains the canonical source for +commands while kte evolves: see `docs/ke.md`. + Architecture (intended) ----------------------- @@ -180,6 +189,15 @@ Run: ./cmake-build-debug/kte [files] ``` +If you configured the GUI, you can also run the GUI-first target (when +built as `kge`) or request the GUI from `kte`: + +``` +./cmake-build-debug/kte --gui [files] +# or if built/installed as a separate GUI target +./cmake-build-debug/kge [files] +``` + GUI build example ----------------- diff --git a/TerminalRenderer.cc b/TerminalRenderer.cc index 2f3067b..3ee3be9 100644 --- a/TerminalRenderer.cc +++ b/TerminalRenderer.cc @@ -180,6 +180,18 @@ TerminalRenderer::Draw(Editor &ed) fname = "[no name]"; } left += " "; + // Insert buffer position prefix "[x/N] " before filename + { + std::size_t total = ed.BufferCount(); + if (total > 0) { + std::size_t idx1 = ed.CurrentBufferIndex() + 1; // human-friendly 1-based + left += "["; + left += std::to_string(static_cast(idx1)); + left += "/"; + left += std::to_string(static_cast(total)); + left += "] "; + } + } left += fname; if (b && b->Dirty()) left += " *"; diff --git a/docs/kge.1 b/docs/kge.1 index c5dfdb2..4ea4d80 100644 --- a/docs/kge.1 +++ b/docs/kge.1 @@ -17,8 +17,11 @@ kge \- Kyle's Graphical Editor (GUI-first) is the GUI-first build target of Kyle's Text Editor. It shares the same editor core and command model as .BR kte (1), -but defaults to the graphical ImGui frontend when available. A terminal -(ncurses) frontend is also available and can be requested explicitly. +and defaults to the graphical ImGui frontend when available. A terminal +(ncurses) frontend is also available and can be requested explicitly with +.B --term +or by invoking +.BR kte (1). If one or more .I files @@ -199,6 +202,8 @@ Open using the terminal frontend from kge: .BR kte (1), .I docs/ke.md (project keybinding manual) +.br +Project homepage: https://github.com/wntrmute/kte .SH BUGS Report issues on the project tracker. Some behaviors are inherited from ke and may evolve over time; see the manual for notes. diff --git a/docs/kte.1 b/docs/kte.1 index 9794b24..32acbf8 100644 --- a/docs/kte.1 +++ b/docs/kte.1 @@ -16,8 +16,15 @@ kte \- Kyle's Text Editor (terminal-first) .B kte is a small, fast, and understandable text editor with a terminal-first experience. It preserves ke's WordStar/VDE-style command model with -Emacs-influenced ergonomics. The core uses ncurses in the terminal and can -optionally run with a GUI frontend if built. +Emacs-influenced ergonomics. The core uses ncurses in the terminal. + +By default, .B kte +runs in the terminal (ncurses) frontend. If the binary was built with GUI +support, the same editor core can be shown with an ImGui-based GUI by passing +.B --gui +or by invoking the GUI-first target +.BR kge (1) +when available. If one or more .I files @@ -194,6 +201,8 @@ Force GUI frontend (if available): .BR kge (1), .I docs/ke.md (project keybinding manual) +.br +Project homepage: https://github.com/wntrmute/kte .SH BUGS Incremental search currently restarts from the top on each invocation; see \(lqKnown behavior\(rq in the ke manual. Report issues on the project tracker.