frontend: add a line editor for shell input

This commit is contained in:
2024-11-18 09:53:55 +00:00
parent f44a3364b3
commit 4fc1a6ade8
22 changed files with 2137 additions and 0 deletions

40
frontend/line-ed/buffer.c Normal file
View File

@@ -0,0 +1,40 @@
#include "buffer.h"
#include "line-ed.h"
const char *line_start(struct line_ed *ed, unsigned int y)
{
const char *line = ed->l_buf;
for (unsigned int i = 0; i < y; i++) {
line += strcspn(line, "\n");
if (*line == '\n') {
line++;
}
}
return line;
}
unsigned int line_length(struct line_ed *ed, unsigned int y)
{
const char *line = ed->l_buf;
for (unsigned int i = 0; i < y; i++) {
line += strcspn(line, "\n");
if (*line == '\n') {
line++;
}
}
if (*line == '\0') {
return 0;
}
unsigned int len = strcspn(line, "\n");
if (line[len] == '\n') {
len++;
}
return len;
}