diff options
-rw-r--r-- | bin/man/psfed.1 | 6 | ||||
-rw-r--r-- | bin/psfed.c | 11 |
2 files changed, 17 insertions, 0 deletions
diff --git a/bin/man/psfed.1 b/bin/man/psfed.1 index bd15d897..f0709594 100644 --- a/bin/man/psfed.1 +++ b/bin/man/psfed.1 @@ -61,6 +61,12 @@ Select previous/next glyph. .It Ic k Ic j Select glyph in previous/next row. . +.It Ic f +Select glyph of next input character. +. +.It Ic ' +Return to previously selected glyph. +. .It Ic y Copy selected glyph. . diff --git a/bin/psfed.c b/bin/psfed.c index 8cf792da..fb7de3b7 100644 --- a/bin/psfed.c +++ b/bin/psfed.c @@ -252,6 +252,8 @@ static struct { uint32_t scale; uint32_t index; bool modified; + bool to; + uint32_t from; } normal; static struct { @@ -292,6 +294,13 @@ static void normalPrint(const char *prefix) { } static void inputNormal(char ch) { + if (normal.to) { + if (ch < header.glyph.len) normal.index = ch; + normalPrint("index"); + normal.to = false; + return; + } + switch (ch) { break; case 'q': { if (!normal.modified) exit(EX_OK); @@ -308,6 +317,8 @@ static void inputNormal(char ch) { break; case 'l': normalInc(1); normalPrint("index"); break; case 'k': normalDec(NormalCols); normalPrint("index"); break; case 'j': normalInc(NormalCols); normalPrint("index"); + break; case 'f': normal.from = normal.index; normal.to = true; + break; case 047: normal.index = normal.from; normalPrint("index"); break; case 'y': { if (!edit.copy) edit.copy = malloc(header.glyph.size); if (!edit.copy) err(EX_OSERR, "malloc"); |