buf->bufstart = NULL;
}
/* reset the state to defaults */
- buf->modified = false;
+ memset(buf, 0, sizeof(Buf));
buf->expand_tabs = true;
- buf->crlf = 0;
buf->bufsize = pagealign(1);
buf->bufstart = emalloc(buf->bufsize * sizeof(Rune));
buf->bufend = buf->bufstart + buf->bufsize;
buf->gapstart = buf->bufstart;
buf->gapend = buf->bufend;
- buf->undo = NULL;
- buf->redo = NULL;
buf->errfn = errfn;
- buf->path = NULL;
}
-void buf_load(Buf* buf, Sel* sel, char* path) {
+void buf_load(Buf* buf, char* path) {
/* process the file path and address */
- if (sel) *sel = (Sel){0};
if (!path) return;
if (path[0] == '.' && path[1] == '/')
path += 2;
void (*errfn)(char*) = buf->errfn;
char* path = buf->path;
buf_init(buf, errfn);
- buf_load(buf, NULL, path);
+ buf_load(buf, path);
}
void buf_save(Buf* buf) {
}
}
-Rune buf_getc(Buf* buf, Sel* sel)
-{
+int buf_getc(Buf* buf, Sel* sel) {
Sel lsel = selconvert(buf, sel);
return 0;
}
-void buf_putc(Buf* buf, Sel* sel, Rune rune, int fmtopts)
-{
+void buf_putc(Buf* buf, Sel* sel, Rune rune, int fmtopts) {
Sel lsel = selconvert(buf, sel);
selupdate(buf, sel, &lsel);
}
-void buf_last(Buf* buf, Sel* sel)
-{
+void buf_last(Buf* buf, Sel* sel) {
}
/* Loading
*************************************************************************/
TEST(buf_load should load a UTF-8 file from disk) {
- Sel sel;
buf_init(&TestBuf, NULL);
- buf_load(&TestBuf, NULL, "testdocs/lorem.txt");
- CHECK(sel.end == 0);
+ buf_load(&TestBuf, "testdocs/lorem.txt");
CHECK(TestBuf.modified == false);
CHECK(TestBuf.expand_tabs == true);
CHECK(TestBuf.crlf == 0);
TEST(buf_load should load a file from disk and jump to a specific line) {
IGNORE("Jumping to a specific line is not implemented yet.");
- Sel sel;
buf_init(&TestBuf, NULL);
- buf_load(&TestBuf, &sel, "testdocs/lorem.txt:2");
- CHECK(sel.end == 70);
+ buf_load(&TestBuf, "testdocs/lorem.txt:2");
CHECK(TestBuf.modified == false);
CHECK(TestBuf.expand_tabs == true);
CHECK(TestBuf.crlf == 0);
}
TEST(buf_load should remove ./ from file path) {
- Sel sel;
buf_init(&TestBuf, NULL);
- buf_load(&TestBuf, &sel, "./testdocs/lorem.txt");
- CHECK(sel.end == 0);
+ buf_load(&TestBuf, "./testdocs/lorem.txt");
CHECK(TestBuf.modified == false);
CHECK(TestBuf.expand_tabs == true);
CHECK(TestBuf.crlf == 0);
}
TEST(buf_load should handle non-existent paths) {
- Sel sel;
buf_init(&TestBuf, NULL);
- buf_load(&TestBuf, &sel, "nonexistent.txt");
- CHECK(sel.end == 0);
+ buf_load(&TestBuf, "nonexistent.txt");
CHECK(TestBuf.modified == false);
CHECK(TestBuf.expand_tabs == true);
CHECK(TestBuf.crlf == 0);
}
TEST(buf_load should handle NULL for selection) {
- Sel sel;
buf_init(&TestBuf, NULL);
- buf_load(&TestBuf, NULL, "nonexistent.txt");
- CHECK(sel.end == 0);
+ buf_load(&TestBuf, "nonexistent.txt");
CHECK(TestBuf.modified == false);
CHECK(TestBuf.expand_tabs == true);
CHECK(TestBuf.crlf == 0);
}
TEST(buf_load should handle NULL for path) {
- Sel sel;
buf_init(&TestBuf, NULL);
- buf_load(&TestBuf, NULL, NULL);
- CHECK(sel.end == 0);
+ buf_load(&TestBuf, NULL);
CHECK(TestBuf.modified == false);
CHECK(TestBuf.expand_tabs == true);
CHECK(TestBuf.crlf == 0);
}
TEST(buf_reload should reload the file from disk) {
- Sel sel;
buf_init(&TestBuf, NULL);
- buf_load(&TestBuf, &sel, "testdocs/waf");
+ buf_load(&TestBuf, "testdocs/waf");
TestBuf.path = "testdocs/lorem.txt";
buf_reload(&TestBuf);
- CHECK(sel.end == 0);
CHECK(TestBuf.modified == false);
CHECK(TestBuf.expand_tabs == true);
CHECK(TestBuf.crlf == 0);
*************************************************************************/
TEST(buf_save should save a UTF-8 file to disk) {
buf_init(&TestBuf, NULL);
- buf_load(&TestBuf, NULL, "testdocs/lorem.txt");
+ buf_load(&TestBuf, "testdocs/lorem.txt");
TestBuf.modified = true;
buf_save(&TestBuf);
CHECK(TestBuf.modified == false);
TEST(buf_save should save a non UTF-8 file to disk) {
buf_init(&TestBuf, NULL);
- buf_load(&TestBuf, NULL, "testdocs/waf");
+ buf_load(&TestBuf, "testdocs/waf");
TestBuf.modified = true;
buf_save(&TestBuf);
CHECK(TestBuf.modified == false);
TEST(buf_save should save a file to disk with unix line endings) {
buf_init(&TestBuf, NULL);
- buf_load(&TestBuf, NULL, "testdocs/lf.txt");
+ buf_load(&TestBuf, "testdocs/lf.txt");
TestBuf.modified = true;
buf_save(&TestBuf);
CHECK(TestBuf.modified == false);
TEST(buf_save should save a file to disk with dos line endings) {
buf_init(&TestBuf, NULL);
- buf_load(&TestBuf, NULL, "testdocs/crlf.txt");
+ buf_load(&TestBuf, "testdocs/crlf.txt");
TestBuf.modified = true;
buf_save(&TestBuf);
CHECK(TestBuf.modified == false);