@@ -6,16 +6,16 @@ let s:window_start = 0
6
6
7
7
function ! s: generate_names ()
8
8
let names = []
9
- let i = 1
9
+ let buffer_num = 1
10
10
let last_buffer = bufnr (' $' )
11
11
let current_buffer = bufnr (' %' )
12
- while i <= last_buffer
13
- if bufexists (i ) && buflisted (i )
12
+ while buffer_num <= last_buffer
13
+ if bufexists (buffer_num ) && buflisted (buffer_num )
14
14
let modified = ' '
15
- if getbufvar (i , ' &mod' )
15
+ if getbufvar (buffer_num , ' &mod' )
16
16
let modified = g: bufferline_modified
17
17
endif
18
- let fname = fnamemodify (bufname (i ), g: bufferline_fname_mod )
18
+ let fname = fnamemodify (bufname (buffer_num ), g: bufferline_fname_mod )
19
19
let fname = substitute (fname, " %" , " %%" , " g" )
20
20
21
21
let skip = 0
@@ -27,23 +27,50 @@ function! s:generate_names()
27
27
endfor
28
28
29
29
if ! skip
30
- let name = ' '
31
- if g: bufferline_show_bufnr != 0 && g: bufferline_status_info . count >= g: bufferline_show_bufnr
32
- let name = i . ' : '
33
- endif
34
- let name .= fname . modified
30
+ call add (names, [buffer_num, fname])
31
+ endif
32
+ endif
33
+ let buffer_num += 1
34
+ endwhile
35
35
36
- if current_buffer == i
37
- let name = g: bufferline_active_buffer_left . name . g: bufferline_active_buffer_right
38
- let g: bufferline_status_info .current = name
36
+ if g: bufferline_sort_function != ' '
37
+ call sort (names, g: bufferline_sort_function )
38
+ endif
39
+
40
+ let nameindex = 0
41
+ let labelnum = 1
42
+ while nameindex < len (names)
43
+ let buffer_num = names[nameindex][0 ]
44
+ let fname = names[nameindex][1 ]
45
+
46
+ let name = ' '
47
+ if g: bufferline_show_bufnr != 0 && g: bufferline_status_info .count >= g: bufferline_show_bufnr
48
+ let name = labelnum . ' :'
49
+ endif
50
+ let name .= fname . modified
51
+
52
+ if current_buffer == buffer_num
53
+ let name = g: bufferline_active_buffer_left . name . g: bufferline_active_buffer_right
54
+ let g: bufferline_status_info .current = name
55
+ else
56
+ let name = g: bufferline_separator . name . g: bufferline_separator
57
+ endif
58
+
59
+ let names[nameindex][1 ] = name
60
+
61
+ if current_buffer == buffer_num && g: bufferline_hide_active_buffer == 1
62
+ if nameindex == 0
63
+ let names = names[nameindex+ 1 :]
64
+ elseif nameindex == len (names)-1
65
+ let names = names[:nameindex- 1 ]
39
66
else
40
- let name = g: bufferline_separator . name . g: bufferline_separator
67
+ let names = names[:nameindex - 1 ] + names[nameindex + 1 :]
41
68
endif
42
-
43
- call add (names, [i , name])
69
+ let nameindex -= 1
44
70
endif
45
- endif
46
- let i += 1
71
+
72
+ let nameindex += 1
73
+ let labelnum += 1
47
74
endwhile
48
75
49
76
if len (names) > 1
0 commit comments