#include "a.h"

/*
 * 11. Local Horizontal and Vertical Motions, and the Width Function.
 */

int
e_0(void)
{
	/* digit-width space */
	return ' ';
}

int
dv(int d)
{
	Rune sub[6];

	d += getnr(L(".dv"));
	nr(L(".dv"), d);

	runestrcpy(sub, L("<sub>"));
	sub[0] = Ult;
	sub[4] = Ugt;
	if(d < 0){
		sub[3] = 'p';
		ihtml(L(".dv"), sub);
	}else if(d > 0)
		ihtml(L(".dv"), sub);
	else
		ihtml(L(".dv"), nil);
	return 0;
}

int
e_v(void)
{
	dv(eval(getqarg()));
	return 0;
}

int
e_u(void)
{
	dv(eval(L("-0.5m")));
	return 0;
}

int
e_d(void)
{
	dv(eval(L("0.5m")));
	return 0;
}

int
e_r(void)
{
	dv(eval(L("-1m")));
	return 0;
}

int
e_h(void)
{
	getqarg();
	return 0;
}

int
e_w(void)
{
	Rune *a;
	Rune buf[40];
	static Rune zero;

	a = getqarg();
	if(a == nil){
		warn("no arg for \\w");
		a = &zero;
	}
	runesnprint(buf, sizeof buf, "%ld", runestrlen(a));
	pushinputstring(buf);
	nr(L("st"), 0);
	nr(L("sb"), 0);
	nr(L("ct"), 0);
	return 0;
}

int
e_k(void)
{
	getname();
	warn("%Ck not available", backslash);
	return 0;
}

void
t11init(void)
{
	addesc('|', e_nop, 0);
	addesc('^', e_nop, 0);
	addesc('v', e_v, 0);
	addesc('h', e_h, 0);
	addesc('w', e_w, 0);
	addesc('0', e_0, 0);
	addesc('u', e_u, 0);
	addesc('d', e_d, 0);
	addesc('r', e_r, 0);
	addesc('k', e_k, 0);
}

