When using -W to include the whole function in the diff context, you are typically doing this to be able to review the change in its entirety within the context of the function. It is therefore almost always desirable to include any comments that immediately precede the function. This also the fixes the case for C where the declaration is split across multiple lines (where the first line of the declaration would not be included in the output), e.g.: void dummy(void) { ... } We can include these lines by simply scanning upwards from the place of the detected function start until we hit the first non-blank line. Cc: René Scharfe <l.s.r@xxxxxx> Signed-off-by: Vegard Nossum <vegard.nossum@xxxxxxxxxx> --- xdiff/xemit.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/xdiff/xemit.c b/xdiff/xemit.c index 8c88dbd..3a3060d 100644 --- a/xdiff/xemit.c +++ b/xdiff/xemit.c @@ -200,6 +200,8 @@ int xdl_emit_diff(xdfenv_t *xe, xdchange_t *xscr, xdemitcb_t *ecb, } fs1 = get_func_line(xe, xecfg, NULL, i1, -1); + while (fs1 > 0 && !is_empty_rec(&xe->xdf1, fs1 - 1)) + fs1--; if (fs1 < 0) fs1 = 0; if (fs1 < s1) { @@ -220,6 +222,8 @@ int xdl_emit_diff(xdfenv_t *xe, xdchange_t *xscr, xdemitcb_t *ecb, long fe1 = get_func_line(xe, xecfg, NULL, xche->i1 + xche->chg1, xe->xdf1.nrec); + while (fe1 > 0 && !is_empty_rec(&xe->xdf1, fe1 - 1)) + fe1--; while (fe1 > 0 && is_empty_rec(&xe->xdf1, fe1 - 1)) fe1--; if (fe1 < 0) -- 2.7.4