Unified · Split
| @@ -654,17 +654,6 @@ curmove(int x, int y) · 653 unmodified lines | |||
| 654 | sel.max = ptclamp(addpt(sel.max, xy)); | 654 | sel.max = ptclamp(addpt(sel.max, xy)); |
| 655 | } | 655 | } |
| 656 | 656 | ||
| 657 | static void | ||
| 658 | fieldmodeset(Rune key) | ||
| 659 | { | ||
| 660 | if (mode != Mappend) { | ||
| 661 | selset(key); | ||
| 662 | } else { | ||
| 663 | fieldset(cur.x, cur.y, key); | ||
| 664 | curmove(1, 0); | ||
| 665 | } | ||
| 666 | } | ||
| 667 | |||
| 668 | static void | 657 | static void |
| 669 | selmove(int x, int y) | 658 | selmove(int x, int y) |
| 670 | { | 659 | { |
| @@ -1053,8 +1042,9 @@ noredraw: · 382 unmodified lines | |||
| 1053 | 1042 | ||
| 1054 | case Cchar: | 1043 | case Cchar: |
| 1055 | switch (key.rune) { | 1044 | switch (key.rune) { |
| 1056 | case 0x0b: /* C-k */ | 1045 | case '\n': /* C-j */ |
| 1057 | move.y = 1; | 1046 | /* FIXME bang it */ |
| 1047 | break; | ||
| 1058 | case Kup: | 1048 | case Kup: |
| 1059 | if (shiftdown || mode == Mselect) | 1049 | if (shiftdown || mode == Mselect) |
| 1060 | selext(0, -move.y); | 1050 | selext(0, -move.y); |
| @@ -1064,8 +1054,6 @@ noredraw: · 3 unmodified lines | |||
| 1064 | curmove(0, -move.y); | 1054 | curmove(0, -move.y); |
| 1065 | } | 1055 | } |
| 1066 | break; | 1056 | break; |
| 1067 | case '\n': /* C-j */ | ||
| 1068 | move.y = 1; | ||
| 1069 | case Kdown: | 1057 | case Kdown: |
| 1070 | if (shiftdown || mode == Mselect) | 1058 | if (shiftdown || mode == Mselect) |
| 1071 | selext(0, move.y); | 1059 | selext(0, move.y); |
| @@ -1075,8 +1063,6 @@ noredraw: · 3 unmodified lines | |||
| 1075 | curmove(0, move.y); | 1063 | curmove(0, move.y); |
| 1076 | } | 1064 | } |
| 1077 | break; | 1065 | break; |
| 1078 | case Kbs: /* C-h */ | ||
| 1079 | move.x = 1; | ||
| 1080 | case Kleft: | 1066 | case Kleft: |
| 1081 | if (shiftdown || mode == Mselect) { | 1067 | if (shiftdown || mode == Mselect) { |
| 1082 | selext(-move.x, 0); | 1068 | selext(-move.x, 0); |
| @@ -1087,11 +1073,8 @@ noredraw: · 4 unmodified lines | |||
| 1087 | } | 1073 | } |
| 1088 | break; | 1074 | break; |
| 1089 | case 0x0c: /* C-l */ | 1075 | case 0x0c: /* C-l */ |
| 1090 | move.x = 1; | 1076 | selmap(tolower); |
| 1091 | if (shiftdown) { /* FIXME this conflicts with vim keys btw */ | 1077 | break; |
| 1092 | selmap(tolower); | ||
| 1093 | break; | ||
| 1094 | } | ||
| 1095 | case Kright: | 1078 | case Kright: |
| 1096 | if (shiftdown || mode == Mselect) | 1079 | if (shiftdown || mode == Mselect) |
| 1097 | selext(move.x, 0); | 1080 | selext(move.x, 0); |
| @@ -1184,7 +1167,7 @@ noredraw: · 86 unmodified lines | |||
| 1184 | case Kins: | 1167 | case Kins: |
| 1185 | mode = mode != Mappend ? Mappend : Minsert; | 1168 | mode = mode != Mappend ? Mappend : Minsert; |
| 1186 | break; | 1169 | break; |
| 1187 | case Kstx: | 1170 | case 0x0b: /* C-k */ |
| 1188 | tmp[0] = 0; | 1171 | tmp[0] = 0; |
| 1189 | if (enter("command:", tmp, sizeof(tmp), nil, &kctl, nil) > 0) | 1172 | if (enter("command:", tmp, sizeof(tmp), nil, &kctl, nil) > 0) |
| 1190 | command(tmp); | 1173 | command(tmp); |
| @@ -1209,8 +1192,15 @@ noredraw: · 18 unmodified lines | |||
| 1209 | mode = mode != Mselect ? Mselect : Minsert; | 1192 | mode = mode != Mselect ? Mselect : Minsert; |
| 1210 | break; | 1193 | break; |
| 1211 | case Knack: /* C-u */ | 1194 | case Knack: /* C-u */ |
| 1212 | if (shiftdown) | 1195 | selmap(toupper); |
| 1213 | selmap(toupper); | 1196 | break; |
| 1197 | case Kbs: /* C-h */ | ||
| 1198 | if (mode != Mappend) { | ||
| 1199 | selset('.'); | ||
| 1200 | } else { | ||
| 1201 | curmove(-1, 0); | ||
| 1202 | fieldset(cur.x, cur.y, '.'); | ||
| 1203 | } | ||
| 1214 | break; | 1204 | break; |
| 1215 | case ' ': | 1205 | case ' ': |
| 1216 | if (mode != Mappend) { | 1206 | if (mode != Mappend) { |
| @@ -1221,7 +1211,12 @@ noredraw: · 4 unmodified lines | |||
| 1221 | if (key.rune == Kdel || key.rune == ' ') | 1211 | if (key.rune == Kdel || key.rune == ' ') |
| 1222 | key.rune = '.'; | 1212 | key.rune = '.'; |
| 1223 | if (orca_is_valid_glyph(key.rune)) { | 1213 | if (orca_is_valid_glyph(key.rune)) { |
| 1224 | fieldmodeset(key.rune); | 1214 | if (mode != Mappend) { |
| 1215 | selset(key.rune); | ||
| 1216 | } else { | ||
| 1217 | fieldset(cur.x, cur.y, key.rune); | ||
| 1218 | curmove(1, 0); | ||
| 1219 | } | ||
| 1225 | } else { | 1220 | } else { |
| 1226 | // fprint(2, "unhandled key %04x\n", key.rune); | 1221 | // fprint(2, "unhandled key %04x\n", key.rune); |
| 1227 | goto noredraw; | 1222 | goto noredraw; |