diff options
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r-- | src/nvim/eval.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 0625a63e21..8fa4e23df6 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -22138,14 +22138,27 @@ void func_dump_profile(FILE *fd) if (fp->uf_prof_initialized) { sorttab[st_len++] = fp; - if (fp->uf_name[0] == K_SPECIAL) + if (fp->uf_name[0] == K_SPECIAL) { fprintf(fd, "FUNCTION <SNR>%s()\n", fp->uf_name + 3); - else + } else { fprintf(fd, "FUNCTION %s()\n", fp->uf_name); - if (fp->uf_tm_count == 1) + } + bool should_free; + const LastSet last_set = (LastSet){ + .script_ctx = fp->uf_script_ctx, + .channel_id = 0, + }; + char_u *p = get_scriptname(last_set, &should_free); + fprintf(fd, " Defined: %s line %" PRIdLINENR "\n", + p, fp->uf_script_ctx.sc_lnum); + if (should_free) { + xfree(p); + } + if (fp->uf_tm_count == 1) { fprintf(fd, "Called 1 time\n"); - else + } else { fprintf(fd, "Called %d times\n", fp->uf_tm_count); + } fprintf(fd, "Total time: %s\n", profile_msg(fp->uf_tm_total)); fprintf(fd, " Self time: %s\n", profile_msg(fp->uf_tm_self)); fprintf(fd, "\n"); |