|
|
|
@ -163,9 +163,10 @@ static const char *find_funcname_matching_regexp(xdemitconf_t *xecfg, const char
@@ -163,9 +163,10 @@ static const char *find_funcname_matching_regexp(xdemitconf_t *xecfg, const char
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static const char *parse_range_funcname(const char *arg, nth_line_fn_t nth_line_cb, |
|
|
|
|
void *cb_data, long lines, long anchor, long *begin, long *end, |
|
|
|
|
const char *path) |
|
|
|
|
static const char *parse_range_funcname( |
|
|
|
|
const char *arg, nth_line_fn_t nth_line_cb, |
|
|
|
|
void *cb_data, long lines, long anchor, long *begin, long *end, |
|
|
|
|
const char *path, struct index_state *istate) |
|
|
|
|
{ |
|
|
|
|
char *pattern; |
|
|
|
|
const char *term; |
|
|
|
@ -198,7 +199,7 @@ static const char *parse_range_funcname(const char *arg, nth_line_fn_t nth_line_
@@ -198,7 +199,7 @@ static const char *parse_range_funcname(const char *arg, nth_line_fn_t nth_line_
|
|
|
|
|
anchor--; /* input is in human terms */ |
|
|
|
|
start = nth_line_cb(cb_data, anchor); |
|
|
|
|
|
|
|
|
|
drv = userdiff_find_by_path(&the_index, path); |
|
|
|
|
drv = userdiff_find_by_path(istate, path); |
|
|
|
|
if (drv && drv->funcname.pattern) { |
|
|
|
|
const struct userdiff_funcname *pe = &drv->funcname; |
|
|
|
|
xecfg = xcalloc(1, sizeof(*xecfg)); |
|
|
|
@ -244,7 +245,8 @@ static const char *parse_range_funcname(const char *arg, nth_line_fn_t nth_line_
@@ -244,7 +245,8 @@ static const char *parse_range_funcname(const char *arg, nth_line_fn_t nth_line_
|
|
|
|
|
|
|
|
|
|
int parse_range_arg(const char *arg, nth_line_fn_t nth_line_cb, |
|
|
|
|
void *cb_data, long lines, long anchor, |
|
|
|
|
long *begin, long *end, const char *path) |
|
|
|
|
long *begin, long *end, |
|
|
|
|
const char *path, struct index_state *istate) |
|
|
|
|
{ |
|
|
|
|
*begin = *end = 0; |
|
|
|
|
|
|
|
|
@ -254,7 +256,9 @@ int parse_range_arg(const char *arg, nth_line_fn_t nth_line_cb,
@@ -254,7 +256,9 @@ int parse_range_arg(const char *arg, nth_line_fn_t nth_line_cb,
|
|
|
|
|
anchor = lines + 1; |
|
|
|
|
|
|
|
|
|
if (*arg == ':' || (*arg == '^' && *(arg + 1) == ':')) { |
|
|
|
|
arg = parse_range_funcname(arg, nth_line_cb, cb_data, lines, anchor, begin, end, path); |
|
|
|
|
arg = parse_range_funcname(arg, nth_line_cb, cb_data, |
|
|
|
|
lines, anchor, begin, end, |
|
|
|
|
path, istate); |
|
|
|
|
if (!arg || *arg) |
|
|
|
|
return -1; |
|
|
|
|
return 0; |
|
|
|
@ -275,10 +279,12 @@ int parse_range_arg(const char *arg, nth_line_fn_t nth_line_cb,
@@ -275,10 +279,12 @@ int parse_range_arg(const char *arg, nth_line_fn_t nth_line_cb,
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const char *skip_range_arg(const char *arg) |
|
|
|
|
const char *skip_range_arg(const char *arg, struct index_state *istate) |
|
|
|
|
{ |
|
|
|
|
if (*arg == ':' || (*arg == '^' && *(arg + 1) == ':')) |
|
|
|
|
return parse_range_funcname(arg, NULL, NULL, 0, 0, NULL, NULL, NULL); |
|
|
|
|
return parse_range_funcname(arg, NULL, NULL, |
|
|
|
|
0, 0, NULL, NULL, |
|
|
|
|
NULL, istate); |
|
|
|
|
|
|
|
|
|
arg = parse_loc(arg, NULL, NULL, 0, -1, NULL); |
|
|
|
|
|
|
|
|
|