refactor(memline): distinguish mutating uses of ml_get_buf()

ml_get_buf() takes a third parameters to indicate whether the
caller wants to mutate the memline data in place. However
the vast majority of the call sites is using this function
just to specify a buffer but without any mutation. This makes
it harder to grep for the places which actually perform mutation.

Solution: Remove the bool param from ml_get_buf(). it now works
like ml_get() except for a non-current buffer. Add a new
ml_get_buf_mut() function for the mutating use-case, which can
be grepped along with the other ml_replace() etc functions which
can modify the memline.
This commit is contained in:
bfredl
2023-08-24 15:14:23 +02:00
parent daf7abbc42
commit cefd774fac
43 changed files with 134 additions and 123 deletions

View File

@@ -2475,7 +2475,7 @@ static void find_endpos(int idx, lpos_T *startpos, lpos_T *m_endpos, lpos_T *hl_
break;
}
line = ml_get_buf(syn_buf, startpos->lnum, false);
line = ml_get_buf(syn_buf, startpos->lnum);
int line_len = (int)strlen(line);
// take care of an empty match or negative offset
@@ -2611,7 +2611,7 @@ static void syn_add_end_off(lpos_T *result, regmmatch_T *regmatch, synpat_T *spp
if (result->lnum > syn_buf->b_ml.ml_line_count) {
col = 0;
} else if (off != 0) {
base = ml_get_buf(syn_buf, result->lnum, false);
base = ml_get_buf(syn_buf, result->lnum);
p = base + col;
if (off > 0) {
while (off-- > 0 && *p != NUL) {
@@ -2653,10 +2653,10 @@ static void syn_add_start_off(lpos_T *result, regmmatch_T *regmatch, synpat_T *s
if (result->lnum > syn_buf->b_ml.ml_line_count) {
// a "\n" at the end of the pattern may take us below the last line
result->lnum = syn_buf->b_ml.ml_line_count;
col = (int)strlen(ml_get_buf(syn_buf, result->lnum, false));
col = (int)strlen(ml_get_buf(syn_buf, result->lnum));
}
if (off != 0) {
base = ml_get_buf(syn_buf, result->lnum, false);
base = ml_get_buf(syn_buf, result->lnum);
p = base + col;
if (off > 0) {
while (off-- && *p != NUL) {
@@ -2675,7 +2675,7 @@ static void syn_add_start_off(lpos_T *result, regmmatch_T *regmatch, synpat_T *s
/// Get current line in syntax buffer.
static char *syn_getcurline(void)
{
return ml_get_buf(syn_buf, current_lnum, false);
return ml_get_buf(syn_buf, current_lnum);
}
// Call vim_regexec() to find a match with "rmp" in "syn_buf".