diff options
Diffstat (limited to '')
-rw-r--r-- | boxes.c | 21 |
1 files changed, 19 insertions, 2 deletions
@@ -1790,6 +1790,20 @@ static void lineCommand(long extra, char *command, event *event) | |||
1790 | 1790 | ||
1791 | // Basically this is the main loop. | 1791 | // Basically this is the main loop. |
1792 | 1792 | ||
1793 | /* Unhandled complications - | ||
1794 | Less and more have the "ZZ" command, but nothing else seems to have multi ordinary character commands. | ||
1795 | |||
1796 | Some editors have a shortcut command concept. The smallest unique first part of each command will match, as well as anything longer. | ||
1797 | A further complication is if we are not implementing some commands that might change what is "shortest unique prefix". | ||
1798 | |||
1799 | The response from a terminal size check command includes a prefix, a suffix, with the data in the middle. | ||
1800 | send "\x1B[s\x1B[999C\x1B[999B\x1B[6n\x1B[u" | ||
1801 | Which breaks down to - save cursor position, down 999, right 999, request cursor position (DSR), restore cursor position. | ||
1802 | response is "\x1B[ ; R", where the spaces are replaced by digits LINES and COLUMNS respectively. | ||
1803 | And just to screw things up - {"\x1B[1;2R", "Shift F3"}, though no one's going to have a 1 x 2 terminal. | ||
1804 | |||
1805 | Mouse events are likely similar. | ||
1806 | */ | ||
1793 | void editLine(long extra, struct keyCommand *(*lineLoop)(long extra), void (*lineChar)(long extra, char *buffer), void (*lineCommand)(long extra, char *command, event *event)) | 1807 | void editLine(long extra, struct keyCommand *(*lineLoop)(long extra), void (*lineChar)(long extra, char *buffer), void (*lineCommand)(long extra, char *command, event *event)) |
1794 | { | 1808 | { |
1795 | struct pollfd pollfds[1]; | 1809 | struct pollfd pollfds[1]; |
@@ -2200,6 +2214,9 @@ struct context simpleJoe = | |||
2200 | // No cursor movement, just scrolling. | 2214 | // No cursor movement, just scrolling. |
2201 | // TODO - Put content into read only mode. | 2215 | // TODO - Put content into read only mode. |
2202 | // TODO - actually implement read only mode where up and down one line do actual scrolling instead of cursor movement. | 2216 | // TODO - actually implement read only mode where up and down one line do actual scrolling instead of cursor movement. |
2217 | // TODO - maybe I can support the ZZ command in one of two ways - | ||
2218 | // Just have a Z command do the quit. | ||
2219 | // Have the first Z go into a special mode, where anything other than a Z restores the original mode. | ||
2203 | 2220 | ||
2204 | struct keyCommand simpleLessKeys[] = | 2221 | struct keyCommand simpleLessKeys[] = |
2205 | { | 2222 | { |
@@ -2209,7 +2226,7 @@ struct keyCommand simpleLessKeys[] = | |||
2209 | {"End", "endOfLine"}, | 2226 | {"End", "endOfLine"}, |
2210 | {"q", "quit"}, | 2227 | {"q", "quit"}, |
2211 | {":q", "quit"}, // TODO - A vi ism, should do ex command stuff instead. | 2228 | {":q", "quit"}, // TODO - A vi ism, should do ex command stuff instead. |
2212 | {"ZZ", "quit"}, // This one will suck. | 2229 | // {"ZZ", "quit"}, // The infrastructure here does not support this style of command. |
2213 | {"PgDn", "downPage"}, | 2230 | {"PgDn", "downPage"}, |
2214 | {"f", "downPage"}, | 2231 | {"f", "downPage"}, |
2215 | {" ", "downPage"}, | 2232 | {" ", "downPage"}, |
@@ -2246,7 +2263,7 @@ struct keyCommand simpleMoreKeys[] = | |||
2246 | {"Return", "downLine"}, | 2263 | {"Return", "downLine"}, |
2247 | {"q", "quit"}, | 2264 | {"q", "quit"}, |
2248 | {":q", "quit"}, // See comments for "less". | 2265 | {":q", "quit"}, // See comments for "less". |
2249 | {"ZZ", "quit"}, // See comments for "less". | 2266 | // {"ZZ", "quit"}, // See comments for "less". |
2250 | {"f", "downPage"}, | 2267 | {"f", "downPage"}, |
2251 | {" ", "downPage"}, | 2268 | {" ", "downPage"}, |
2252 | {"^F", "downPage"}, | 2269 | {"^F", "downPage"}, |