Commit graph

3023 commits

Author SHA1 Message Date
6292000ada
feat(gui): implement gui loadConfig and saveConfig 2026-04-01 13:16:37 +02:00
091345fd02
fix(gui): fix resize crash 2026-04-01 11:14:15 +02:00
4ca31b0f75
feat(gui): implement get_fontfaces 2026-04-01 11:13:39 +02:00
6faea2ef02
refactor(gui): improve hidpi scaling support 2026-04-01 10:39:20 +02:00
f484ea0b57
fix(gui): add pixel offsets to scroll events 2026-04-01 10:10:18 +02:00
45db14f894
refactor(gui): clean-up pixel to cell coordinate conversions 2026-04-01 10:08:35 +02:00
ce85a73063
fix(gui): implement horizontal scrolling 2026-04-01 10:08:04 +02:00
b3e1f22aa3
Merge branch 'master' into wio-sokol-gui 2026-03-31 22:37:16 +02:00
0ff9a9c522
fix: add non-conflicting keybinds for font size adjustment 2026-03-31 22:34:50 +02:00
fab38872ee
fix(gui): calculate cell size from full block glyph bounding box 2026-03-31 22:34:20 +02:00
cf7fc6af54
fix: allow loading custom theme files up to 512Kb in size
closes #544
2026-03-31 20:58:54 +02:00
310221bb26
feat: support adding entirely new themes via the config 2026-03-31 20:58:00 +02:00
d53d155c6d
feat: add V language support
closes #509
2026-03-31 14:03:18 +02:00
Paul Graydon
ce7cc48a72 feat: [vim] Add bracket textobject actions 2026-03-31 10:07:55 +02:00
Paul Graydon
ba840b72e0 feat: [vim] Add word textobject actions 2026-03-31 10:07:55 +02:00
a8437d6139
feat(themes): add Kanso theme (zen, ink, mist, pearl variants) 2026-03-31 09:52:31 +02:00
50d9773956
fix(gui): only encode shifted codepoints if shift is active 2026-03-30 21:57:50 +02:00
932b640271
fix(gui): fix encoding of base and shifted key codes 2026-03-30 21:37:31 +02:00
6784797078
fix(gui): drop button press events if we also have text input 2026-03-30 21:26:20 +02:00
b1b50b7ff0
feat(gui): clipboard, title, cursor, attention 2026-03-30 21:17:27 +02:00
273be78055
fix(gui): fix shutdown hang 2026-03-30 20:58:52 +02:00
875c42ad9e
fix(gui): map keys to vaxis Key constants 2026-03-30 20:54:34 +02:00
c353c92bc3
fix(gui): map uppercase/shifted codepoints when *only* the shift modifer is set 2026-03-30 20:46:59 +02:00
0a9842f34d
fix(gui): correct dispatching of mouse dragging events 2026-03-30 20:40:39 +02:00
9b0f40f155
fix(gui): don't map control characters 2026-03-30 20:32:39 +02:00
a9efe0ca4c
fix(gui): eliminate row clipping at top of window 2026-03-30 20:28:09 +02:00
7fc2113b8a
feat(gui): implement double-wide glyph support 2026-03-30 19:56:54 +02:00
4291ccf2c5
fix(gui): resolve crashes and glyph rendering bugs from M3 smoke test 2026-03-30 00:27:24 +02:00
996e6714ba
fix(gui): shader build 2026-03-29 20:01:45 +02:00
ae0f62c3bf
feat(gui): M3 - TrueType rasterizer with fontconfig font discovery
Replace the M2 stub rasterizer with a real font rasterizer:

- build.zig.zon: add TrueType as a lazy path dependency
- build.zig: swap stub_rasterizer_mod for truetype_rasterizer_mod; link
  fontconfig + libc on Linux; TrueType dep is lazy (falls back gracefully)
- src/gui/rasterizer/truetype.zig: andrewrk/TrueType rasterizer; loadFont
  uses fontconfig to locate the font file, derives cell dimensions from
  vertical metrics (ascent−descent) and 'M' advance width; render blits the
  A8 glyph bitmap into the caller-provided staging buffer with correct
  baseline placement (ascent_px + off_y) and double-wide support (+cell_w
  x-offset for kind=.right); arena allocator per render call
- src/gui/rasterizer/font_finder.zig: OS dispatcher (Linux only for now)
- src/gui/rasterizer/font_finder/linux.zig: fontconfig C API - FcFontMatch
  resolves a font name pattern to an absolute file path

Requires: libfontconfig-dev  (already present alongside libgl-dev etc.)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-29 19:33:24 +02:00
39b482b2e0
feat(gui): M2 - sokol_gfx GPU backend initialised from wio window
Implements milestone 2 of the wio+sokol_gfx cross-platform GUI renderer:

- build.zig.zon: add wio and sokol-zig as lazy path dependencies
- build.zig: wire -Drenderer=gui - creates modules for gpu, app, and the
  stub rasterizer; links sokol_clib against system GL/X11/Xi/Xcursor/ALSA
  (requires: libgl-dev libx11-dev libxi-dev libxcursor-dev libasound2-dev)
- src/gui/gpu/builtin.glsl.zig: hand-crafted GLCORE ShaderDesc with a
  full-screen-quad vertex stage and a cell-grid fragment stage; Y-flip via
  row_count*cell_size_y; FsParams as 4 INT uniforms; RGBA32UI cell texture
  and R8 glyph-atlas texture with NONFILTERING samplers
- src/gui/gpu/gpu.zig: sokol_gfx backend mirroring the d3d11 backend;
  TRIANGLE_STRIP pipeline, CPU-side glyph atlas shadow, per-frame cell
  texture update via sg.updateImage
- src/gui/rasterizer/stub.zig: blank-glyph stub rasterizer for M2 testing
- src/gui/wio/app.zig: wio event loop + thespian bridge; creates a core
  OpenGL 3.3 context, calls sg.setup/gpu.init, sends RDR messages for
  WindowCreated/Resize/keyboard/mouse events, renders on screen_pending
- src/gui/wio/input.zig: wio Button → Flow codepoint/mouse-button mapping
- src/renderer/gui/renderer.zig: standard renderer interface consumed by
  tui.zig; dispatches RDR events, delegates font/cursor/clipboard to app
2026-03-29 19:04:52 +02:00
9c66b19650 feat(gui): M1 shared core — extract src/gui/ and replace -Dgui with -Drenderer
Move shared types out of src/win32/ into a new src/gui/ package:
- xy.zig: generic XY(T) coordinate type
- xterm.zig: 256-color palette table (used by all GPU renderers)
- GlyphIndexCache.zig: glyph→atlas-slot mapping
- Cell.zig: Rgba8 and Cell extracted from d3d11.zig
- GlyphRasterizer.zig: comptime interface spec/checker

Update src/win32/ imports to point to ../gui/ and delete the
moved originals.

Replace the -Dgui bool option with -Drenderer enum { terminal, gui,
d3d11 }, wiring .d3d11 to the existing win32 DirectWrite path and
keeping build_options.gui = (renderer != .terminal) for tui.zig.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 23:22:31 +01:00
a782bfb690
fix: don't filter super, hyper and meta modifiers for no reason
This filter was introduced to ignore caps lock, scroll lock and num lock
modifier bits. super, hyper and meta might actually be useful though.
2026-03-28 14:48:07 +01:00
f61c716c27
feat: configure default markdown formatter to reflow at reflow_width 2026-03-26 09:39:06 +01:00
e930effa0c
feat: add {{reflow_width}} expansion 2026-03-26 09:38:28 +01:00
Volodia Kraplich
7f07f544c9 feat(lsp): support toml 2026-03-25 12:34:52 +01:00
84a45810a6
fix(lsp): fallback to sorting completions by label for LSPs that don't return unique sortText 2026-03-25 12:30:44 +01:00
JailBird
561124e667 Add formatter for YAML and LSP for YAML and RPM .spec 2026-03-25 09:10:48 +01:00
Ingo Lohmar
9df7a13934 feat: 0-based status line column
Optional fifth entry in bottom_bar "linenumber" widget: If literally "true",
display column 0-based (instead of 1-based) a la Emacs.
2026-03-24 15:30:32 +01:00
Miguel Granero
742e70a670 feat: change base path of git blame for subrepo support 2026-03-24 14:02:54 +01:00
fb19d50c20
fix: update flow-syntax to get tree-sitter-markdown fix for serialization buffer overflow 2026-03-24 14:01:44 +01:00
edwloef
c0e315495c invert priorities in file type guess 2026-03-24 13:56:25 +01:00
11d0e9e7e3
fix: avoid dangling Project pointer crash in LSP and git handlers 2026-03-23 13:09:19 +01:00
76e4a843c7
fix: windows build 2026-03-18 13:31:11 +01:00
7847589982
feat: update tree-sitter package to 0.26 (also adds languages)
This is a major update of the tree-sitter depedencies (via flow-syntax). In
addtion to updating tree-sitter from the 0.24 branch to 0.26 there are also
updates to all tree-sitter parsers and a couple of new languages. The
supported tree-sitter ABI is now at version 15. (min version still 13)

New languages:

d (dlang)
llvm (LLVM IR)
comment (tags in comment blocks in many languages)
query (tree-sitter queries)
rpmbash (bash embedded in rpmspec files)

This should also unblock a few other file type requests, but they are not
included here directly and will follow later.

closes #540
2026-03-18 10:57:09 +01:00
3551c765b2
feat: update flow-syntax for tree-sitter 0.26 and several new languages 2026-03-17 22:39:58 +01:00
a5df57f824
fix: sort filelist items 2026-03-17 22:27:35 +01:00
c93f829cd5
fix: sort files in each directory of the file tree 2026-03-17 22:21:42 +01:00
22ed9a32d7
fix(symbol_palette): add indent to match highlights 2026-03-17 22:11:45 +01:00
Igor Támara
3a16d7fe50 Add indentation according to depth in symbol palette 2026-03-13 13:32:25 -05:00