Hi all,
I'm working with a Vim that has been patched to support ECL Lisp
(http://wiki.alu.org/Vim_ECL). Part of our project involves
outputting potentially large amounts of data to a buffer in a
streaming fashion, ie always adding at the end.
I think that I have worked out a reasonable way to append lines[1],
but I can't see any obvious way to quickly append single chars to a
buffer.
Are there any functions like ml_append I can look to for this support?
How should I go about appending single chars very quickly?
Cheers
Brad
[1] Here is the append code that I hacked up tonight
static cl_object cl_vim_append_lines_int (cl_object buf, cl_object lines)
{
buf_T *savebuf = curbuf;
curbuf = ((buf_T *)ecl_foreign_data_pointer_safe(buf));
int start_line = curbuf->b_ml.ml_line_count;
while (lines != Cnil) {
char_u *line = string_to_line (cl_car (lines));
ml_append (curbuf->b_ml.ml_line_count-1, line, 0, FALSE);
vim_free (line);
lines = cl_cdr (lines);
}
changed_lines(start_line, 0, curbuf->b_ml.ml_line_count,
(long)(curbuf->b_ml.ml_line_count - start_line));
/* restore and return */
curbuf = savebuf;
return Ct;
}