diff options
Diffstat (limited to 'boxes.c')
| -rw-r--r-- | boxes.c | 44 |
1 files changed, 22 insertions, 22 deletions
| @@ -196,11 +196,11 @@ GLOBALS( | |||
| 196 | * | 196 | * |
| 197 | * TODO - disentangle boxes from views. | 197 | * TODO - disentangle boxes from views. |
| 198 | * | 198 | * |
| 199 | * TODO - Show status line instead of command line when it's not being edited. | ||
| 200 | * | ||
| 201 | * TODO - should split this up into editing, UI, and boxes parts, | 199 | * TODO - should split this up into editing, UI, and boxes parts, |
| 202 | * so the developer can leave out bits they are not using. | 200 | * so the developer can leave out bits they are not using. |
| 203 | * | 201 | * |
| 202 | * TODO - Show status line instead of command line when it's not being edited. | ||
| 203 | * | ||
| 204 | * TODO - should review it all for UTF8 readiness. Think I can pull that off | 204 | * TODO - should review it all for UTF8 readiness. Think I can pull that off |
| 205 | * by keeping everything on the output side as "screen position", and using | 205 | * by keeping everything on the output side as "screen position", and using |
| 206 | * the formatter to sort out the input to output mapping. | 206 | * the formatter to sort out the input to output mapping. |
| @@ -951,8 +951,8 @@ void formatCheckCursor(view *view, long *cX, long *cY, char *input) | |||
| 951 | } | 951 | } |
| 952 | 952 | ||
| 953 | // TODO - Should convert control characters to reverse video, and deal with UTF8. | 953 | // TODO - Should convert control characters to reverse video, and deal with UTF8. |
| 954 | /* FIXME - We get passed a NULL input, apparently when the file length is close to the screen length. - | ||
| 955 | 954 | ||
| 955 | /* FIXME - We get passed a NULL input, apparently when the file length is close to the screen length. - | ||
| 956 | > On Thu, 6 Sep 2012 11:56:17 +0800 Roy Tam <roytam@gmail.com> wrote: | 956 | > On Thu, 6 Sep 2012 11:56:17 +0800 Roy Tam <roytam@gmail.com> wrote: |
| 957 | > | 957 | > |
| 958 | > > 2012/9/6 David Seikel <onefang@gmail.com>: | 958 | > > 2012/9/6 David Seikel <onefang@gmail.com>: |
| @@ -1821,16 +1821,6 @@ static struct keyCommand * lineCommand(long extra, char *command) | |||
| 1821 | return currentBox->view->content->context->modes[currentBox->view->mode].keys; | 1821 | return currentBox->view->content->context->modes[currentBox->view->mode].keys; |
| 1822 | } | 1822 | } |
| 1823 | 1823 | ||
| 1824 | // Basically this is the main loop. | ||
| 1825 | |||
| 1826 | /* Unhandled complications - | ||
| 1827 | Less and more have the "ZZ" command, but nothing else seems to have multi ordinary character commands. | ||
| 1828 | |||
| 1829 | Some editors have a shortcut command concept. The smallest unique first part of each command will match, as well as anything longer. | ||
| 1830 | A further complication is if we are not implementing some commands that might change what is "shortest unique prefix". | ||
| 1831 | */ | ||
| 1832 | |||
| 1833 | |||
| 1834 | char *termSize(long extra, int *params, int count) | 1824 | char *termSize(long extra, int *params, int count) |
| 1835 | { | 1825 | { |
| 1836 | struct _view *view = (struct _view *) extra; // Though we pretty much stomp on this straight away. | 1826 | struct _view *view = (struct _view *) extra; // Though we pretty much stomp on this straight away. |
| @@ -1871,6 +1861,15 @@ struct CSI CSI_terminators[] = | |||
| 1871 | {NULL, NULL} | 1861 | {NULL, NULL} |
| 1872 | }; | 1862 | }; |
| 1873 | 1863 | ||
| 1864 | // Basically this is the main loop. | ||
| 1865 | |||
| 1866 | /* Unhandled complications - | ||
| 1867 | Less and more have the "ZZ" command, but nothing else seems to have multi ordinary character commands. | ||
| 1868 | |||
| 1869 | Some editors have a shortcut command concept. The smallest unique first part of each command will match, as well as anything longer. | ||
| 1870 | A further complication is if we are not implementing some commands that might change what is "shortest unique prefix". | ||
| 1871 | */ | ||
| 1872 | |||
| 1874 | void editLine(long extra, void (*lineChar)(long extra, char *buffer), struct keyCommand * (*lineCommand)(long extra, char *command)) | 1873 | void editLine(long extra, void (*lineChar)(long extra, char *buffer), struct keyCommand * (*lineCommand)(long extra, char *command)) |
| 1875 | { | 1874 | { |
| 1876 | struct pollfd pollfds[1]; | 1875 | struct pollfd pollfds[1]; |
| @@ -2015,12 +2014,12 @@ void editLine(long extra, void (*lineChar)(long extra, char *buffer), struct key | |||
| 2015 | { | 2014 | { |
| 2016 | /* ECMA-048 section 5.2 defines this, and is unreadable. | 2015 | /* ECMA-048 section 5.2 defines this, and is unreadable. |
| 2017 | General CSI format - CSI [private] n1 ; n2 [extra] final | 2016 | General CSI format - CSI [private] n1 ; n2 [extra] final |
| 2018 | private 0x3c to 0x3f [<=>?] if first byte is one of these, this is a private command, if it's one of the other n1 ones, it's not private. | 2017 | private 0x3c to 0x3f "<=>?" if first byte is one of these, this is a private command, if it's one of the other n1 ones, it's not private. |
| 2019 | n1 0x30 to 0x3f [01234567890:;<=>?] ASCII digits forming a "number" | 2018 | n1 0x30 to 0x3f "01234567890:;<=>?" ASCII digits forming a "number" |
| 2020 | 0x3a [:] used for floats, not expecting any. Could also be used as some other sort of inter digit separator. | 2019 | 0x3a [:] used for floats, not expecting any. Could also be used as some other sort of inter digit separator. |
| 2021 | 0x3b [;] separates the parameters | 2020 | 0x3b [;] separates the parameters |
| 2022 | extra 0x20 to 0x2f [ !"#$%&'()*+,-./] Can be multiple, likely isn't. | 2021 | extra 0x20 to 0x2f [ !"#$%&'()*+,-./] Can be multiple, likely isn't. |
| 2023 | final 0x40 to 0x7e "@A .. Z[\]^_`a .. z{|}~" it's private if 0x70 to 0x7e [p ..z{|}~] | 2022 | final 0x40 to 0x7e "@A .. Z[\]^_`a .. z{|}~" it's private if 0x70 to 0x7e "p .. z{|}~" |
| 2024 | Though the "private" ~ is used for key codes. | 2023 | Though the "private" ~ is used for key codes. |
| 2025 | We also have SS3 "\x1BO" for other keys, but that's not a CSI. | 2024 | We also have SS3 "\x1BO" for other keys, but that's not a CSI. |
| 2026 | C0 controls, DEL (0x7f), or high characters are undefined. | 2025 | C0 controls, DEL (0x7f), or high characters are undefined. |
| @@ -2195,7 +2194,8 @@ struct keyCommand simpleCommandKeys[] = | |||
| 2195 | }; | 2194 | }; |
| 2196 | 2195 | ||
| 2197 | 2196 | ||
| 2198 | // TODO - simple emacs editor. | 2197 | // Construct a simple emacs editor. |
| 2198 | |||
| 2199 | // Mostly control keys, some meta keys. | 2199 | // Mostly control keys, some meta keys. |
| 2200 | // Ctrl-h and Ctrl-x have more keys in the commands. Some of those extra keys are commands by themselves. Up to "Ctrl-x 4 Ctrl-g" which apparently is identical to just Ctrl-g. shrugs | 2200 | // Ctrl-h and Ctrl-x have more keys in the commands. Some of those extra keys are commands by themselves. Up to "Ctrl-x 4 Ctrl-g" which apparently is identical to just Ctrl-g. shrugs |
| 2201 | // Ctrl-h is backspace / del. Pffft. | 2201 | // Ctrl-h is backspace / del. Pffft. |
| @@ -2422,7 +2422,7 @@ struct keyCommand simpleLessKeys[] = | |||
| 2422 | {"End", "endOfLine"}, | 2422 | {"End", "endOfLine"}, |
| 2423 | {"q", "quit"}, | 2423 | {"q", "quit"}, |
| 2424 | {":q", "quit"}, // TODO - A vi ism, should do ex command stuff instead. | 2424 | {":q", "quit"}, // TODO - A vi ism, should do ex command stuff instead. |
| 2425 | // {"ZZ", "quit"}, // The infrastructure here does not support this style of command. | 2425 | {"ZZ", "quit"}, // The infrastructure here does not support this style of command. |
| 2426 | {"PgDn", "downPage"}, | 2426 | {"PgDn", "downPage"}, |
| 2427 | {"f", "downPage"}, | 2427 | {"f", "downPage"}, |
| 2428 | {" ", "downPage"}, | 2428 | {" ", "downPage"}, |
| @@ -2459,7 +2459,7 @@ struct keyCommand simpleMoreKeys[] = | |||
| 2459 | {"Return", "downLine"}, | 2459 | {"Return", "downLine"}, |
| 2460 | {"q", "quit"}, | 2460 | {"q", "quit"}, |
| 2461 | {":q", "quit"}, // See comments for "less". | 2461 | {":q", "quit"}, // See comments for "less". |
| 2462 | // {"ZZ", "quit"}, // See comments for "less". | 2462 | {"ZZ", "quit"}, // See comments for "less". |
| 2463 | {"f", "downPage"}, | 2463 | {"f", "downPage"}, |
| 2464 | {" ", "downPage"}, | 2464 | {" ", "downPage"}, |
| 2465 | {"^F", "downPage"}, | 2465 | {"^F", "downPage"}, |
| @@ -2871,9 +2871,9 @@ void boxes_main(void) | |||
| 2871 | PARENB enable parity | 2871 | PARENB enable parity |
| 2872 | CS8 8 bit characters | 2872 | CS8 8 bit characters |
| 2873 | 2873 | ||
| 2874 | VEOF "sends" EOF on ^D | 2874 | VEOF "sends" EOF on ^D, ICANON turns that on. |
| 2875 | VSTART restart output on ^Q, IXON turns that on. | 2875 | VSTART restart output on ^Q, IXON turns that on. |
| 2876 | VSTATUS display status info and sends SIGINFO on ^T. Not in POSIX, not supported in Linux. Does not seem to be any method of turning it off where it is supported. | 2876 | VSTATUS display status info and sends SIGINFO (STATUS) on ^T. Not in POSIX, not supported in Linux. ICANON turns that on. |
| 2877 | VSTOP stop output on ^S, IXON turns that on. | 2877 | VSTOP stop output on ^S, IXON turns that on. |
| 2878 | */ | 2878 | */ |
| 2879 | termio.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IUCLC | IXON | IXOFF | IXANY); | 2879 | termio.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IUCLC | IXON | IXOFF | IXANY); |
