Repository navigation
v0.11.0
.gtui format 10 (reads v1..v10). Crate 0.11.0.
Changed
- SVG export draws border glyphs as vector
<path>segments and centres every character in its
cell, on a 9x18 px cell with a 15 px font. Before, the font's advance (8.42 px at 14 px) did not
match the 8 px cell, so glyphs drifted about 0.4 px per column and box corners broke up. - The jump list is global instead of per document: entries remember the tab as well as the cell, so
Ctrl-oaftergf(or any tab switch) goes back to the previous buffer and position, and
Ctrl-i(Tab) walks forward again. Closing a tab drops its entries and shifts the rest.
Added
w/b(jump_next/jump_prev) cast a ray from the cursor along the picture's main axis
(right when the drawing is wider than it is tall, down when it is taller) and move the cursor to
the first box or edge the ray reaches — a connector between two boxes counts as a stop. The
ray stops at the viewport edge, and a direction with nothing in it only prints a message.
toggle_labelsmoved frombtoBto free the vim keys.iedits the cursor box's text in the box: no prompt line, the frame grows as you type,
Enterinserts a newline,Esccommits (one undo step) andCtrl-Cdrops the draft. The caret
starts on the character the cursor is on (the end when it is outside the text) and is the only
cursor on screen — the terminal cursor is moved onto the draft, nothing is painted twice.
Left/Right/Home/End move by character and line,Alt+ arrow by word,Up/Downkeep the
column. On an empty cellicreates the box first and starts editing it (an untouched new box is
dropped again onEsc).tstill edits through the prompt (multi-selection and<|new box|>
splitting), and apointnode keeps the prompt because a one-cell name has no room for a draft.Ctrl+G(edit_text_external) edits the cursor box's text in$VISUAL/$EDITORand writes
the result straight into the box when the editor exits, as one undo step;<|new box|>splitting
applies. The prompt'sCtrl+Galso applies its result immediately now instead of leaving the
text in the prompt for a secondEnter.- Custom URI schemes are configurable: any
scheme://…link is looked up in a new[links]
section (custom = my-reader) and the raw target is appended as one argument, run blocking
with the terminal suspended. An unconfigured scheme only saysno handler for scheme …. The
core carries no vendor-specific scheme any more (there is a source audit test for it), and
--print-configshows an empty[links]example. - Link targets are parsed into a handler chain (
self-> URL -> custom scheme -> local -> unknown) and
can end in a position:[x](./src/app.rs:10,4)opens$VISUAL/$EDITORat line 10,
column 4 (nvim/vim get+call cursor(10,4), other editors get+10and a note that the column
was dropped),[x](self:10,4)jumps the current document's cursor to cell10,4and
[x](./other.gtui:10,4)switches to that tab (opening one if needed) and jumps. URLs never take
a position,.dotignores it, custom schemes have no handler by default, and
every jump is recorded soCtrl-ogoes back across tabs. The terminal suspend/resume for a
positioned edit is theCtrl+Gpath; atrue/false/:$EDITORstub now counts as
unset. - Each edge can pick its own arrowhead glyphs:
headisauto|ascii|arrows|trianglesin the
.gtuifile (format v10), settable from the right-click menu'sarrowheadsubmenu or
:head triangles, one undo step, previewed live like every other menu item.autokeeps
following the global--arrow/[prefs] arrow, a new edge inherits the last chosen one, and
files from v9 and older load withauto. - A link keeps its link inside italics (
*[label](target)*); bold already did. - Text can carry links:
[label](target)renders as the underlinedlabel, the target takes no
width, andEnterorgfon it opens the target.http(s)://andmailto:go to the opener,
file:///~//.//..///are resolved to a local path (relative ones against the
document directory), and a local.gtui/.dotopens as a tab instead of starting another
graph-tui. The opener is[prefs] opener, then$OPENER, thenopener/xdg-open; when it is
theopenerhelper it is asked with--whichand theeditanswer runs with the terminal
suspended, sonvimcan take over.Enteris nowopen_link(confirm_selectionkeeps no
default key and can be rebound).