local h = require('u.renderer').h local Renderer = require('u.renderer').Renderer local tracker = require 'u.tracker' -- Create a new, temporary, buffer to the side: vim.cmd.vnew() vim.bo.buftype = 'nofile' vim.bo.bufhidden = 'wipe' vim.bo.buflisted = false local renderer = Renderer.new() -- Create two signals: local s_name = tracker.create_signal '[(name here)]' local s_age = tracker.create_signal '[(age here)]' -- Utility to trim brackets from strings: local function trimb(s) return (s:gsub('^%[(.*)%]$', '%1')) end -- Render effect that depends on the signals: tracker.create_effect(function() local name = s_name:get() local age = s_age:get() renderer:render { h.Type({}, '# Form Example'), '\n\n', { 'Name: ', h.Structure({ signal = s_name }, name) }, '\n', { 'Age: ', h.Structure({ signal = s_age }, age) }, '\n\n', { 'Hello, "', trimb(name), '", you are "', trimb(age), '" years old.' }, } end)