@@ -1707,9 +1707,10 @@ append_redir(buf, buflen, opt, fname)
17071707 (char * )opt , (char * )fname );
17081708}
17091709
1710- #ifdef FEAT_VIMINFO
1710+ #if defined( FEAT_VIMINFO ) || defined( PROTO )
17111711
17121712static int no_viminfo __ARGS ((void ));
1713+ static void write_viminfo_barlines (vir_T * virp , FILE * fp_out );
17131714static int viminfo_errcnt ;
17141715
17151716 static int
@@ -2123,6 +2124,7 @@ do_viminfo(fp_in, fp_out, flags)
21232124#ifdef FEAT_MBYTE
21242125 vir .vir_conv .vc_type = CONV_NONE ;
21252126#endif
2127+ ga_init2 (& vir .vir_barlines , (int )sizeof (char_u * ), 100 );
21262128
21272129 if (fp_in != NULL )
21282130 {
@@ -2159,6 +2161,7 @@ do_viminfo(fp_in, fp_out, flags)
21592161#endif
21602162 write_viminfo_filemarks (fp_out );
21612163 write_viminfo_bufferlist (fp_out );
2164+ write_viminfo_barlines (& vir , fp_out );
21622165 count = write_viminfo_marks (fp_out );
21632166 }
21642167 if (fp_in != NULL
@@ -2170,6 +2173,7 @@ do_viminfo(fp_in, fp_out, flags)
21702173 if (vir .vir_conv .vc_type != CONV_NONE )
21712174 convert_setup (& vir .vir_conv , NULL , NULL );
21722175#endif
2176+ ga_clear_strings (& vir .vir_barlines );
21732177}
21742178
21752179/*
@@ -2196,7 +2200,6 @@ read_viminfo_up_to_marks(virp, forceit, writing)
21962200 {
21972201 /* Characters reserved for future expansion, ignored now */
21982202 case '+' : /* "+40 /path/dir file", for running vim without args */
2199- case '|' : /* to be defined */
22002203 case '^' : /* to be defined */
22012204 case '<' : /* long line - ignored */
22022205 /* A comment or empty line. */
@@ -2206,6 +2209,11 @@ read_viminfo_up_to_marks(virp, forceit, writing)
22062209 case '#' :
22072210 eof = viminfo_readline (virp );
22082211 break ;
2212+ case '|' : /* copy line (for future use) */
2213+ if (writing )
2214+ ga_add_string (& virp -> vir_barlines , virp -> vir_line );
2215+ eof = viminfo_readline (virp );
2216+ break ;
22092217 case '*' : /* "*encoding=value" */
22102218 eof = viminfo_encoding (virp );
22112219 break ;
@@ -2427,6 +2435,21 @@ viminfo_writestring(fd, p)
24272435 }
24282436 putc ('\n' , fd );
24292437}
2438+
2439+ static void
2440+ write_viminfo_barlines (vir_T * virp , FILE * fp_out )
2441+ {
2442+ int i ;
2443+ garray_T * gap = & virp -> vir_barlines ;
2444+
2445+ if (gap -> ga_len > 0 )
2446+ {
2447+ fputs (_ ("\n# Bar lines, copied verbatim:\n" ), fp_out );
2448+
2449+ for (i = 0 ; i < gap -> ga_len ; ++ i )
2450+ fputs (((char * * )(gap -> ga_data ))[i ], fp_out );
2451+ }
2452+ }
24302453#endif /* FEAT_VIMINFO */
24312454
24322455/*
0 commit comments