📄 t4.c
字号:
#include "a.h"/* * 4 - Text filling, centering, and adjusting. * "\ " - unbreakable space * .n register - length of last line * nl register - text baseline position on this page * .h register - baseline high water mark * .k register - current horizontal output position * \p - cause break at end of word, justify * \& - non-printing zero-width filler * tr - output translation * \c - break (but don't) input line in .nf mode * \c - break (but don't) word in .fi mode */inte_space(void){ return 0xA0; /* non-breaking space */}inte_amp(void){ return Uempty;}inte_c(void){ getrune(); bol = 1; return 0;}voidr_br(int argc, Rune **argv){ USED(argc); USED(argv); br();}/* fill mode on */voidr_fi(int argc, Rune **argv){ USED(argc); USED(argv); nr(L(".fi"), 1);// warn(".fi");}/* no-fill mode */voidr_nf(int argc, Rune **argv){ USED(argc); USED(argv); nr(L(".fi"), 0);}/* adjust */voidr_ad(int argc, Rune **argv){ int c, n; nr(L(".j"), getnr(L(".j"))|1); if(argc < 2) return; c = argv[1][0]; switch(c){ default: fprint(2, "%L: bad adjust %C\n", c); return; case 'r': n = 2*2|1; break; case 'l': n = 0; break; case 'c': n = 1*2|1; break; case 'b': case 'n': n = 0*2|1; break; case '0': case '1': case '2': case '3': case '4': case '5': n = c-'0'; break; } nr(L(".j"), n);}/* no adjust */voidr_na(int argc, Rune **argv){ USED(argc); USED(argv); nr(L(".j"), getnr(L(".j"))&~1);}/* center next N lines */voidr_ce(int argc, Rune **argv){ if(argc < 2) nr(L(".ce"), 1); else nr(L(".ce"), eval(argv[1])); /* XXX set trap */}voidt4init(void){ nr(L(".fi"), 1); nr(L(".j"), 1); addreq(L("br"), r_br, 0); addreq(L("fi"), r_fi, 0); addreq(L("nf"), r_nf, 0); addreq(L("ad"), r_ad, -1); addreq(L("na"), r_na, 0); addreq(L("ce"), r_ce, -1); addesc(' ', e_space, 0); addesc('p', e_warn, 0); addesc('&', e_amp, 0); addesc('c', e_c, 0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -