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