On Sat 19-Aug-06 3:13pm -0600, Yegappan Lakshmanan wrote: > On 8/10/06, Bill McCarthy <[EMAIL PROTECTED]> wrote:
>> The function reltimestr() return a string which may have >> leading spaces. Is that a bug or a feature? > The string returned by reltimestr() has leading spaces, because > the following code is internally used to generate this string (on > non MS-Windows systems): > > sprintf(buf, "%3ld.%06ld", (long)tm->tv_sec, (long)tm->tv_usec); > > On MS-Windows, the following code is used: > > sprintf(buf, "%10.6lf", (double)tm->QuadPart / (double)fr.QuadPart); >> A workaround for this is: >> >> function Reltimestr(t) >> return matchstr(reltimestr(a:t),'[0-9.]\+') >> endfunction That code, from profile_msg() in ex_cmds2.c is also used in several other functions to produce formatted text. However, the function f_reltimestr() is only used to perform for the end user. IMO the docs should disclose that the string returned has a minimum field width of 10 characters padded on the left with blanks OR any leading blanks should be stripped by the function. I prefer the latter. A patch is attached. (However, since I don't think this list accepts attachments, I have included this small patch as text below my sig and copying the vim-dev list - beware of email client tab handling.) -- Best regards, Bill *** eval.7.0.063.c Wed Aug 16 15:21:55 2006 --- eval.c Sat Aug 19 20:10:45 2006 *************** *** 13001,13007 **** --- 13001,13011 ---- rettv->vval.v_string = NULL; #ifdef FEAT_RELTIME if (list2proftime(&argvars[0], &tm) == OK) + { rettv->vval.v_string = vim_strsave((char_u *)profile_msg(&tm)); + while (rettv->vval.v_string[0] == ' ') + rettv->vval.v_string++; + } #endif }
eval.c.diff
Description: Binary data