diff src/undo.c @ 2627:fae6fb779a6b v7.3.048

updated for version 7.3.048 Problem: ":earlier 1f" doesn't work after loading undo file. Solution: Set b_u_save_nr_cur when loading an undo file. (Christian Brabandt) Fix only showing time in ":undolist"
author Bram Moolenaar <bram@vim.org>
date Wed, 03 Nov 2010 19:32:42 +0100
parents 073ff46fe397
children 033e7b49356c
line wrap: on
line diff
--- a/src/undo.c
+++ b/src/undo.c
@@ -1861,6 +1861,7 @@ u_read_undo(name, hash, orig_name)
     curbuf->b_u_seq_cur = seq_cur;
     curbuf->b_u_time_cur = seq_time;
     curbuf->b_u_save_nr_last = last_save_nr;
+    curbuf->b_u_save_nr_cur = last_save_nr;
 
     curbuf->b_u_synced = TRUE;
     vim_free(uhp_table);
@@ -2794,7 +2795,7 @@ ex_undolist(eap)
 								uhp->uh_time);
 	    if (uhp->uh_save_nr > 0)
 	    {
-		while (STRLEN(IObuff) < 32)
+		while (STRLEN(IObuff) < 33)
 		    STRCAT(IObuff, " ");
 		vim_snprintf_add((char *)IObuff, IOSIZE,
 						   "  %3ld", uhp->uh_save_nr);
@@ -2849,7 +2850,7 @@ ex_undolist(eap)
 	sort_strings((char_u **)ga.ga_data, ga.ga_len);
 
 	msg_start();
-	msg_puts_attr((char_u *)_("number changes  time            saved"),
+	msg_puts_attr((char_u *)_("number changes  when               saved"),
 							      hl_attr(HLF_T));
 	for (i = 0; i < ga.ga_len && !got_int; ++i)
 	{
@@ -2879,7 +2880,15 @@ u_add_time(buf, buflen, tt)
     if (time(NULL) - tt >= 100)
     {
 	curtime = localtime(&tt);
-	(void)strftime((char *)buf, buflen, "%H:%M:%S", curtime);
+	if (time(NULL) - tt < (60L * 60L * 12L))
+	    /* within 12 hours */
+	    (void)strftime((char *)buf, buflen, "%H:%M:%S", curtime);
+	else if (time(NULL) - tt < (60L * 60L * 24L * 180L))
+	    /* within 6 months */
+	    (void)strftime((char *)buf, buflen, "%m/%d %H:%M:%S", curtime);
+	else
+	    /* long ago */
+	    (void)strftime((char *)buf, buflen, "%y/%m/%d %H:%M:%S", curtime);
     }
     else
 #endif