summaryrefslogtreecommitdiff
path: root/start/lightline/doc/lightline.txt
blob: 7c2a886bdb3f223a483e024be25ca5674f3d70a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
*lightline.txt*	A light and configurable statusline/tabline for Vim

Version: 0.1
Author: itchyny (https://github.com/itchyny)
License: MIT License
Repository: https://github.com/itchyny/lightline.vim
Last Change: 2018/04/28 00:08:18.

CONTENTS					*lightline-contents*

Introduction				|lightline-introduction|
Spirit					|lightline-spirit|
Option					|lightline-option|
Font					|lightline-font|
Function				|lightline-function|
Component Expansion			|lightline-component-expansion|
Colorscheme				|lightline-colorscheme|
Examples				|lightline-examples|
Nice Examples				|lightline-nice-examples|
Powerful Example			|lightline-powerful-example|
Troubleshooting				|lightline-troubleshooting|

==============================================================================
INTRODUCTION					*lightline-introduction*

The *lightline* plugin is a light and configurable statusline/tabline for Vim.

------------------------------------------------------------------------------
SPIRIT						*lightline-spirit*

	Minimalism
	    The core script is very small to achieve enough functions as a
	    statusline plugin.

	Configurability
	    You can create your own component and easily add to the statusline
	    and the tabline.

	Orthogonality
	    The plugin does not rely on the implementation of other plugins.
	    Such plugin crossing settings should be configured by users.

	You find this plugin does not integrate with other plugins by default.
	This plugin does not provide branch information, which is a basic
	component in existing statusline plugins. It is a design of
	lightline.vim that such plugin crossing configuration should be
	written by users. Once a plugin starts to integrate with some famous
	plugins, it should be kept updated to follow the changes of the
	plugins and should accept integration requests with new plugins.
	Instead, lightline.vim is designed very carefully so that users can
	easily integrate with other plugins. Good APIs keep a plugin clean.

------------------------------------------------------------------------------
OPTIONS						*lightline-option*

	g:lightline				*g:lightline*
		All the configurations are stored in this global variable.

	g:lightline.active			*g:lightline.active*
	g:lightline.inactive			*g:lightline.inactive*
	g:lightline.tabline			*g:lightline.tabline*
		Dictionaries to store the statusline/tabline components.
		Note that right groups of components are stored from right to
		left.
		The default values are:
>
		let g:lightline.active = {
		    \ 'left': [ [ 'mode', 'paste' ],
		    \           [ 'readonly', 'filename', 'modified' ] ],
		    \ 'right': [ [ 'lineinfo' ],
		    \            [ 'percent' ],
		    \            [ 'fileformat', 'fileencoding', 'filetype' ] ] }
		let g:lightline.inactive = {
		    \ 'left': [ [ 'filename' ] ],
		    \ 'right': [ [ 'lineinfo' ],
		    \            [ 'percent' ] ] }
		let g:lightline.tabline = {
		    \ 'left': [ [ 'tabs' ] ],
		    \ 'right': [ [ 'close' ] ] }
<
	g:lightline.tab				*g:lightline.tab*
		A dictionary to store the tab components in each tabs.
		The default values are:
>
		let g:lightline.tab = {
		    \ 'active': [ 'tabnum', 'filename', 'modified' ],
		    \ 'inactive': [ 'tabnum', 'filename', 'modified' ] }
<
	g:lightline.component			*g:lightline.component*
		A dictionary for statusline/tabline components.
		The default value is:
>
		let g:lightline.component = {
		    \ 'mode': '%{lightline#mode()}',
		    \ 'absolutepath': '%F',
		    \ 'relativepath': '%f',
		    \ 'filename': '%t',
		    \ 'modified': '%M',
		    \ 'bufnum': '%n',
		    \ 'paste': '%{&paste?"PASTE":""}',
		    \ 'readonly': '%R',
		    \ 'charvalue': '%b',
		    \ 'charvaluehex': '%B',
		    \ 'fileencoding': '%{&fenc!=#""?&fenc:&enc}',
		    \ 'fileformat': '%{&ff}',
		    \ 'filetype': '%{&ft!=#""?&ft:"no ft"}',
		    \ 'percent': '%3p%%',
		    \ 'percentwin': '%P',
		    \ 'spell': '%{&spell?&spelllang:""}',
		    \ 'lineinfo': '%3l:%-2v',
		    \ 'line': '%l',
		    \ 'column': '%c',
		    \ 'close': '%999X X ',
		    \ 'winnr': '%{winnr()}' }
<
	g:lightline.component_visible_condition
						*g:lightline.component_visible_condition*
		A dictionary to store the visible condition of the components.
		Note that this configuration is used to control the visibility
		of the subseparators, not to control the visibility of the
		components themselves. Each expression should correspond to
		the condition on which each component is not empty.
		The default value is:
>
		let g:lightline.component_visible_condition = {
		    \ 'modified': '&modified||!&modifiable',
		    \ 'readonly': '&readonly',
		    \ 'paste': '&paste',
		    \ 'spell': '&spell' }
<
	g:lightline.component_function		*g:lightline.component_function*
		A dictionary to store the function components.
		This is useful to write a complex component configuration and
		to integrate with other plugins. If a component set in both
		component and component_function, the configuration of
		component_function has priority.

		The default value is:
>
		let g:lightline.component_function = {}
<
		For example, if you want to display the name of the git branch,
		install |vim-fugitive| plugin and then configure as:
>
		let g:lightline = {
			\ 'active': {
			\   'left': [ [ 'mode', 'paste' ],
			\             [ 'gitbranch', 'readonly', 'filename', 'modified' ] ]
			\ },
			\ 'component_function': {
			\   'gitbranch': 'fugitive#head'
			\ },
			\ }
<
	g:lightline.component_function_visible_condition
						*g:lightline.component_function_visible_condition*
		A dictionary to store the visible conditions of the function
		components. Each expression should correspond to the condition
		each component is not empty. This configuration is used to
		control the visibility of the sub-separators. You can use this
		configuration to reduce the number of function calls for
		performance improvement by setting the value 1 (to tell lightline
		that the component is always visible).
		The default value is:
>
		let g:lightline.component_function_visible_condition = {}
<
	g:lightline.component_expand		*g:lightline.component_expand*
		A dictionary to store expanding components. You can create
		warning and critical components. The values should be the name
		of functions should return either one of:
			+ a string
			+ an array of three elements:
				[[ left ], [ middle ], [ right ]]
		The component in this dictionary has priority over
		|g:lightline.component| and |g:lightline.component_function|.
		Note that the return string is appended to the statusline
		string without any conversion. So you should replace all the
		% signs with %%. Otherwise, lightline will be disabled in case
		the text has a % sign.
		(example: return substitute(text, '%', '%%', 'g')).
		See |lightline-component-expansion| for more detail.
>
		let g:lightline.component_expand = {
		    \ 'tabs': 'lightline#tabs' }
<
	g:lightline.component_type		*g:lightline.component_type*
		A dictionary to specify the types for components in
		|g:lightline.component_expand|. The types are used to specify
		the color. Specifically, the type raw is used to specify a
		component which should not be wrapped by item group: %(...%).
		If you want to specify the type of a raw component, please use
		|g:lightline.component_raw|.
		The default value is: >

		let g:lightline.component_type = {
		    \ 'tabs': 'tabsel',
		    \ 'close': 'raw' }
<
	g:lightline.component_raw		*g:lightline.component_raw*
		A dictionary to specify the raw type components. When you
		register a component to this dictionary (like >
		let g:lightline.component_raw = { 'example': 1 }
<		), the example component is not wrapped by item group: %(...%).
		The default value is: >

		let g:lightline.component_raw = {}
<
	g:lightline.tab_component		*g:lightline.tab_component*
		A dictionary for components in one tab.
		The default value is: >

		let g:lightline.tab_component = {}
<
	g:lightline.tab_component_function	*g:lightline.tab_component_function*
		Another dictionary for components in one tab.
		A function specified as a tab component takes one argument:
		the tab [count].
		The default value is:
>
		let g:lightline.tab_component_function = {
		      \ 'filename': 'lightline#tab#filename',
		      \ 'modified': 'lightline#tab#modified',
		      \ 'readonly': 'lightline#tab#readonly',
		      \ 'tabnum': 'lightline#tab#tabnum' }
<
	g:lightline.colorscheme			*g:lightline.colorscheme*
		The colorscheme for lightline.vim.
		Currently, wombat, solarized, powerline, jellybeans, Tomorrow,
		Tomorrow_Night, Tomorrow_Night_Blue, Tomorrow_Night_Eighties,
		PaperColor, seoul256, landscape, one, darcula, molokai, materia,
		material, OldHope, nord, 16color and deus are available.
		The default value is:
>
		let g:lightline.colorscheme = 'default'
<
		Note that the default colorscheme is exactly the same as the
		powerline theme.

	g:lightline.mode_map			*g:lightline.mode_map*
		A dictionary of names for the modes. The keys are the return
		values of |mode()|.
		The default value is:
>
		let g:lightline.mode_map = {
		    \ 'n' : 'NORMAL',
		    \ 'i' : 'INSERT',
		    \ 'R' : 'REPLACE',
		    \ 'v' : 'VISUAL',
		    \ 'V' : 'V-LINE',
		    \ "\<C-v>": 'V-BLOCK',
		    \ 'c' : 'COMMAND',
		    \ 's' : 'SELECT',
		    \ 'S' : 'S-LINE',
		    \ "\<C-s>": 'S-BLOCK',
		    \ 't': 'TERMINAL',
		    \ }
<
		When you search a word, you get into the command mode. But if
		you want to keep the mode indicator as 'NORMAL', add >
		let g:lightline = { 'mode_map': { 'c': 'NORMAL' } }
<		to your .vimrc.

	g:lightline.separator			*g:lightline.separator*
	g:lightline.subseparator		*g:lightline.subseparator*
		Dictionaries to store separators.
		The default value is
>
		let g:lightline.separator = { 'left': '', 'right': '' }
		let g:lightline.subseparator = { 'left': '|', 'right': '|' }
<
	g:lightline.tabline_separator			*g:lightline.tabline_separator*
	g:lightline.tabline_subseparator		*g:lightline.tabline_subseparator*
		Dictionaries to store separators for the tabline.
		The default value is
>
		let g:lightline.tabline_separator = g:lightline.separator
		let g:lightline.tabline_subseparator = g:lightline.subseparator
<
	g:lightline.enable			*g:lightline.enable*
		A dictionary to specify which feature is turned on.
		The default value is
>
		let g:lightline.enable = {
		    \ 'statusline': 1,
		    \ 'tabline': 1
		    \ }
<
==============================================================================
FONT						*lightline-font*
You can use the patched font you used for |vim-powerline| and |powerline|.

The patched fonts for |powerline| are available at
https://github.com/Lokaltog/powerline-fonts

A tutorial to create a patched font for |vim-powerline| is available at
https://github.com/Lokaltog/vim-powerline/tree/develop/fontpatcher

If you have installed the patched font for |powerline|, following settings look
nice.
>
	let g:lightline = {
		\ 'component': {
		\   'lineinfo': ' %3l:%-2v',
		\ },
		\ 'component_function': {
		\   'readonly': 'LightlineReadonly',
		\   'fugitive': 'LightlineFugitive'
		\ },
		\ 'separator': { 'left': '', 'right': '' },
		\ 'subseparator': { 'left': '', 'right': '' }
		\ }
	function! LightlineReadonly()
		return &readonly ? '' : ''
	endfunction
	function! LightlineFugitive()
		if exists('*fugitive#head')
			let branch = fugitive#head()
			return branch !=# '' ? ''.branch : ''
		endif
		return ''
	endfunction
<
If you have installed the patched font for |vim-powerline|, following settings
look nice.
>
	let g:lightline = {
		\ 'component': {
		\   'lineinfo': '⭡ %3l:%-2v',
		\ },
		\ 'component_function': {
		\   'readonly': 'LightlineReadonly',
		\   'fugitive': 'LightlineFugitive'
		\ },
		\ 'separator': { 'left': '⮀', 'right': '⮂' },
		\ 'subseparator': { 'left': '⮁', 'right': '⮃' }
		\ }
	function! LightlineReadonly()
		return &readonly ? '⭤' : ''
	endfunction
	function! LightlineFugitive()
		if exists('*fugitive#head')
			let branch = fugitive#head()
			return branch !=# '' ? '⭠ '.branch : ''
		endif
		return ''
	endfunction
<
If the statusline does not correctly show the special characters, use the
unicode numbers. For |powerline| font users:
>
		\ 'separator': { 'left': "\ue0b0", 'right': "\ue0b2" },
		\ 'subseparator': { 'left': "\ue0b1", 'right': "\ue0b3" }
<
For |vim-powerline| font users:
>
		\ 'separator': { 'left': "\u2b80", 'right': "\u2b82" },
		\ 'subseparator': { 'left': "\u2b81", 'right': "\u2b83" }
<
See |lightline-problem-9| for more detail.
==============================================================================
FUNCTION					*lightline-function*
Exposed functions for lightline.vim.

	lightline#mode()			*lightline#mode()*
		Returns the mode of the Vim using |g:lightline.mode_map|.

	lightline#init()			*lightline#init()*
		Initializes the internal state from |g:lightline|.

	lightline#colorscheme()			*lightline#colorscheme()*
		Initializes the colorscheme and the highlight groups.

	lightline#update()			*lightline#update()*
		Updates all the statuslines of existing windows.

	lightline#update_once()			*lightline#update_once()*
		Updates the statuslines only once.

	lightline#enable()			*lightline#enable()*
		Enables |lightline|.

	lightline#disable()			*lightline#disable()*
		Disables |lightline|.

	lightline#toggle()			*lightline#toggle()*
		Toggles |lightline|.

	lightline#link([mode])			*lightline#link()*
		Creates links of the highlight groups for the active window.
		This function accepts an optional argument. It should be one
		of the return value of |mode()|.

	lightline#highlight()			*lightline#highlight()*
		Set the highlight groups.

	lightline#statusline({inactive})	*lightline#statusline()*
		Returns |statusline| strings. If the argument is 0, it returns
		the statusline for active window, and the statusline for
		inactive window otherwise.

	lightline#tabline()			*lightline#tabline()*
		Returns the tabline string.

	lightline#concatenate({list}, {num})	*lightline#concatenate()*
		A string concatenation function. Concatenating all the strings
		in {list} using the sub-separator of lightline. If {num} is 0,
		then the left sub-separator is used. Otherwise, the right
		sub-separator is used.

	lightline#palette()			*lightline#palette()*
		Returns the palette data.

==============================================================================
COMPONENT EXPANSION				*lightline-component-expansion*
You can create components, which have specific colors. This section gives an
example using |syntastic|.

If you want to add the |syntastic| flag to the statusline, an easy example is:
>
	" Example A
	let g:lightline = {
	      \ 'active': {
	      \   'right': [ [ 'lineinfo', 'syntastic' ],
	      \              [ 'percent' ],
	      \              [ 'fileformat', 'fileencoding', 'filetype' ] ]
	      \ },
	      \ 'component_function': {
	      \   'syntastic': 'SyntasticStatuslineFlag',
	      \ }
	      \ }
	let g:syntastic_mode_map = { 'mode': 'passive',
	      \                      'active_filetypes': ['c', 'cpp'] }
<
However, the color of the syntastic component is the same as the lineinfo
component.

In order to change the syntastic component more outstanding, you have to use
|g:lightline.component_expand|. See the following example:
>
	" Example B
	let g:lightline = {
	      \ 'active': {
	      \   'right': [ [ 'syntastic', 'lineinfo' ],
	      \              [ 'percent' ],
	      \              [ 'fileformat', 'fileencoding', 'filetype' ] ]
	      \ },
	      \ 'component_expand': {
	      \   'syntastic': 'SyntasticStatuslineFlag',
	      \ },
	      \ 'component_type': {
	      \   'syntastic': 'error',
	      \ }
	      \ }
	" Syntastic can call a post-check hook, let's update lightline there
	" For more information: :help syntastic-loclist-callback
	function! SyntasticCheckHook(errors)
	  call lightline#update()
	endfunction
<
In order to understand the above codes, you firstly should know how the
colorschemes work in lightline.vim. Open the following file.
		autoload/lightline/colorscheme/powerline.vim
The colorscheme is created by one dictionary: s:p (abbreviation for palette).
See the value of s:p.normal.right.
>
	let s:p.normal.right = [ ['gray5', 'gray10'],
	      \                  ['gray9', 'gray4'],
	      \                  ['gray8', 'gray2'] ]
<
This array corresponds to the structure of g:lightline.active.right. Recall
the example A.
>
	" Example A
	let g:lightline.active.right = [ [ 'lineinfo', 'syntastic' ],
	      \                          [ 'percent' ],
	      \                          [ 'fileformat', 'fileencoding', 'filetype' ] ]
<
The colors are ([fgcolor, bgcolor):
>
	(0) [ 'lineinfo', 'syntastic' ]                   ---  s:p.normal.right[0] = ['gray5', 'gray10']
	(1) [ 'percent' ]                                 ---  s:p.normal.right[1] = ['gray9', 'gray4']
	(2) [ 'fileformat', 'fileencoding', 'filetype' ]  ---  s:p.normal.right[2] = ['gray8', 'gray2']
<
Recall the example B.
>
	" Example B
	let g:lightline.active.right = [ [ 'syntastic', 'lineinfo' ],
	      \                          [ 'percent' ],
	      \                          [ 'fileformat', 'fileencoding', 'filetype' ] ]
<
If a component is specified in |g:lightline.component_expand|, lightline.vim
expands the components before setting to statusline/tabline. In this example,
the syntastic component is expanded using the |SyntasticStatuslineFlag| function.
This function returns a {string}. Let us call it `syntastic_flag`.
>
	let syntastic_flag = SyntasticStatuslineFlag()
<
The syntastic component is now expanded, so it go up to one component group.
The type of the syntastic component is error, and the palette has error
colors, the result is:
>
	" Expanded result of Example B
	(error) [ syntastic_flag ]                            ---  s:p.normal.error[0] = ['gray9', 'brightestred']
	(0)     [ 'lineinfo' ]                                ---  s:p.normal.right[0] = ['gray5', 'gray10']
	(1)     [ 'percent' ]                                 ---  s:p.normal.right[1] = ['gray9', 'gray4']
	(2)     [ 'fileformat', 'fileencoding', 'filetype' ]  ---  s:p.normal.right[2] = ['gray8', 'gray2']
<
Thus the syntastic component has the red color.


Another example for |g:lightline.component_expand| is the tabs component.
Actually, the expand feature is created for the tabs component.
>
	let g:lightline.tabline.left = [ [ 'tabs' ] ]
	let g:lightline.component_expand = {
	    \ 'tabs': 'lightline#tabs' }
<
Create three tabs and select the middle tab. Then execute
>
	echo lightline#tabs()
	" [['%1T%{lightline#onetab(1,0)}'],
	"  ['%2T%{lightline#onetab(2,1)}'],
	"  ['%3T%{lightline#onetab(3,0)}%T']]
<
It returns an array of three elements. The expanded result is:
>
	" Expanded result of tabline
	(0)      ['%1T%{lightline#onetab(1,0)}']    ---  s:p.tabline.left[0] = ['gray9', 'gray4']
	(tabsel) ['%2T%{lightline#onetab(2,1)}']    ---  s:p.tabline.tabsel[0] = ['gray9', 'gray1']
	(0)      ['%3T%{lightline#onetab(3,0)}%T']  ---  s:p.tabline.left[0] = ['gray9', 'gray4']
<
If the tabline components are
>
	let g:lightline.tabline.left = [ [ 'A', 'B', 'tabs', 'C', 'D' ] ]
<
then the expanded result is:
>
	(0)      ['A', 'B', '%1T%{lightline#onetab(1,0)}']    ---  s:p.tabline.left[0]
	(tabsel) ['%2T%{lightline#onetab(2,1)}']              ---  s:p.tabline.tabsel[0]
	(0)      ['%3T%{lightline#onetab(3,0)}%T', 'C', 'D']  ---  s:p.tabline.left[0]
<
In summary, when a function in |g:lightline.component_expand| returns an
array of three elements, the first element and the last element remains as a
part of existing component group. And the middle element goes up to new
component group.
------------------------------------------------------------------------------
COLORSCHEME					*lightline-colorscheme*
You can configure the colorscheme of lightline. For example,
>
	let g:lightline = {
		\ 'colorscheme': 'wombat',
		\ }
<
The colorscheme files are found in the directory

	lightline.vim/autoload/lightline/colorscheme/

In each file, one global variable is defined. For example, in the landscape.vim
file, you see
>
	let g:lightline#colorscheme#landscape#palette = s:p
<
In the file, the colors for the landscape colorscheme are defined. For example,
>
	let s:p.normal.left = [ ['#0000ff', '#ffffff', 21, 231, 'bold' ], [ '#ffffff', '#0000ff', 231, 21 ] ]
<
defines the colors for the components on the left hand side, in normal mode.
>
	let s:p.tabline.tabsel = [ [ '#dadada', '#121212', 253, 233 ] ]
<
defines the colors for the selected tab in tabline. In general, each palette
follows the following style:
>
	let s:p.{mode}.{where} = [ [ {guifg}, {guibg}, {ctermfg}, {ctermbg} ], ... ]
<


Now, you can create your own colorscheme for lightline. Create a
yourcolorscheme.vim at

	{one of the paths in &rtp}/autoload/lightline/colorscheme/yourcolorscheme.vim

The following code gives the minimal palette definition for lightline.
>
	let s:p = {'normal': {}}
	let s:p.normal.left = [ [ ... ] ]
	let s:p.normal.right = [ [ ... ] ]
	let s:p.normal.middle = [ [ ... ] ]
	let g:lightline#colorscheme#yourcolorscheme#palette = s:p
<
And if you add the colorscheme configuration to your .vimrc(_vimrc),
>
	let g:lightline = {
		\ 'colorscheme': 'yourcolorscheme',
		\ }
<
you find it possible to change the lightline colors as you wish.

Moreover, if you want to change the colors based on the mode of vim, write
something like this:
>
	let s:p.insert.left = [ [ ... ] ]
	let s:p.insert.right = [ [ ... ] ]
	let s:p.replace.left = [ [ ... ] ]
	let s:p.replace.right = [ [ ... ] ]
	...
	...
<
For expanded components, you are recommended to define the following two
colors.
>
	let s:p.normal.error = [ [ ... ] ]
	let s:p.normal.warning = [ [ ... ] ]
<
For the complete list of components the color of which you should define in
your colorscheme, see the colorscheme files in lightline.

It is sometimes painful to write all the colors for both gui and cterm.
Actually, lightline has some useful functions for writing colorschemes. For
example, see
	lightline.vim/autoload/lightline/colorscheme/Tomorrow_Night.vim
this colorscheme is defined using only gui color numbers. And convert to the
normal colorscheme form using:
>
	let g:lightline#colorscheme#Tomorrow_Night#palette = lightline#colorscheme#fill(s:p)
<
This function fills the cterm colors for a palette which has only gui colors, or
vice versa. However, note that using the convenient function sources an
additional Vim script file (autoload/lightline/colorscheme.vim), which causes
a little slow down. If you want to avoid this situation, write all the colors
as done in autoload/lightline/colorscheme/landscape.vim; firstly create the
colorscheme using the fill function, and see the result, in a sense, the
compiled version of your colorscheme.
>
	echo g:lightline#colorscheme#yourcolorscheme#palette
<
Then copy and paste the result to the colorscheme file.

If you want to contribute a new colorscheme that is not currently available
please follow the following rules:
    *) All hex codes should be lowercase only
    *) Use 2 space soft tabs
    *) If your colorscheme has both light and dark variants, use a single file
    *) Normal Mode should default to Cyan
    *) Insert Mode should default to Green
    *) Visual Mode should default to Yellow
    *) Replace Mode should default to Red

==============================================================================
EXAMPLES					*lightline-examples*
You can configure the appearance of statusline.
Write the following examples in you .vimrc(_vimrc).

In order to change the colorscheme:
>
	let g:lightline = {
		\ 'colorscheme': 'wombat',
		\ }
<

In order to define your own component:
>
	let g:lightline = {
		\ 'active': {
		\   'left': [ [ 'mode', 'paste' ], [ 'myfilename' ] ]
		\ },
		\ 'component_function': {
		\   'myfilename': 'LightlineFilename',
		\   'myreadonly': 'LightlineReadonly',
		\   'mymodified': 'LightlineModified',
		\ }
		\ }
	function! LightlineFilename()
		return ('' != LightlineReadonly() ? LightlineReadonly() . ' ' : '') .
		      \ (&ft == 'vimfiler' ? vimfiler#get_status_string() :
		      \  &ft == 'unite' ? unite#get_status_string() :
		      \ '' != expand('%:t') ? expand('%:t') : '[No Name]') .
		      \ ('' != LightlineModified() ? ' ' . LightlineModified() : '')
	endfunction
	function! LightlineReadonly()
		return &ft !~? 'help' && &readonly ? 'RO' : ''
	endfunction
	function! LightlineModified()
		return &modifiable && &modified ? '+' : ''
	endfunction
<

Separators settings:
>
	let g:lightline = {
		\ 'separator': { 'left': '', 'right': '' },
		\ 'subseparator': { 'left': '|', 'right': '|' }
		\ }
<

For |powerline| font users:
>
	let g:lightline = {
		\ 'separator': { 'left': '', 'right': '' },
		\ 'subseparator': { 'left': '', 'right': '' }
		\ }
<

For |vim-powerline| font users:
>
	let g:lightline = {
		\ 'separator': { 'left': '⮀', 'right': '⮂' },
		\ 'subseparator': { 'left': '⮁', 'right': '⮃' }
		\ }
<

------------------------------------------------------------------------------
NICE EXAMPLES					*lightline-nice-examples*

A nice example for non-patched font users.
>
	let g:lightline = {
		\ 'colorscheme': 'wombat',
		\ 'active': {
		\   'left': [ [ 'mode', 'paste' ], [ 'fugitive', 'filename' ] ]
		\ },
		\ 'component_function': {
		\   'fugitive': 'LightlineFugitive',
		\   'filename': 'LightlineFilename'
		\ }
		\ }
	function! LightlineModified()
		return &ft =~ 'help\|vimfiler' ? '' : &modified ? '+' : &modifiable ? '' : '-'
	endfunction
	function! LightlineReadonly()
		return &ft !~? 'help\|vimfiler' && &readonly ? 'RO' : ''
	endfunction
	function! LightlineFilename()
		return ('' != LightlineReadonly() ? LightlineReadonly() . ' ' : '') .
		\ (&ft == 'vimfiler' ? vimfiler#get_status_string() :
		\  &ft == 'unite' ? unite#get_status_string() :
		\  &ft == 'vimshell' ? vimshell#get_status_string() :
		\ '' != expand('%:t') ? expand('%:t') : '[No Name]') .
		\ ('' != LightlineModified() ? ' ' . LightlineModified() : '')
	endfunction
	function! LightlineFugitive()
		if &ft !~? 'vimfiler' && exists('*fugitive#head')
			return fugitive#head()
		endif
		return ''
	endfunction
<
A nice example for |vim-powerline| font users:
>
	let g:lightline = {
		\ 'colorscheme': 'wombat',
		\ 'active': {
		\   'left': [ [ 'mode', 'paste' ], [ 'fugitive', 'filename' ] ]
		\ },
		\ 'component_function': {
		\   'fugitive': 'LightlineFugitive',
		\   'filename': 'LightlineFilename'
		\ },
		\ 'separator': { 'left': '⮀', 'right': '⮂' },
		\ 'subseparator': { 'left': '⮁', 'right': '⮃' }
		\ }
	function! LightlineModified()
		return &ft =~ 'help\|vimfiler' ? '' : &modified ? '+' : &modifiable ? '' : '-'
	endfunction
	function! LightlineReadonly()
		return &ft !~? 'help\|vimfiler' && &readonly ? '⭤' : ''
	endfunction
	function! LightlineFilename()
		return ('' != LightlineReadonly() ? LightlineReadonly() . ' ' : '') .
		\ (&ft == 'vimfiler' ? vimfiler#get_status_string() :
		\  &ft == 'unite' ? unite#get_status_string() :
		\  &ft == 'vimshell' ? vimshell#get_status_string() :
		\ '' != expand('%:t') ? expand('%:t') : '[No Name]') .
		\ ('' != LightlineModified() ? ' ' . LightlineModified() : '')
	endfunction
	function! LightlineFugitive()
		if &ft !~? 'vimfiler' && exists('*fugitive#head')
			let branch = fugitive#head()
			return branch !=# '' ? '⭠ '.branch : ''
		endif
		return ''
	endfunction
<

------------------------------------------------------------------------------
POWERFUL EXAMPLE				*lightline-powerful-example*

For users who uses lots of plugins:
>
	let g:lightline = {
	      \ 'colorscheme': 'wombat',
	      \ 'active': {
	      \   'left': [ [ 'mode', 'paste' ], [ 'fugitive', 'filename' ], ['ctrlpmark'] ],
	      \   'right': [ [ 'syntastic', 'lineinfo' ], ['percent'], [ 'fileformat', 'fileencoding', 'filetype' ] ]
	      \ },
	      \ 'component_function': {
	      \   'fugitive': 'LightlineFugitive',
	      \   'filename': 'LightlineFilename',
	      \   'fileformat': 'LightlineFileformat',
	      \   'filetype': 'LightlineFiletype',
	      \   'fileencoding': 'LightlineFileencoding',
	      \   'mode': 'LightlineMode',
	      \   'ctrlpmark': 'CtrlPMark',
	      \ },
	      \ 'component_expand': {
	      \   'syntastic': 'SyntasticStatuslineFlag',
	      \ },
	      \ 'component_type': {
	      \   'syntastic': 'error',
	      \ },
	      \ 'subseparator': { 'left': '|', 'right': '|' }
	      \ }

	function! LightlineModified()
	  return &ft =~ 'help' ? '' : &modified ? '+' : &modifiable ? '' : '-'
	endfunction

	function! LightlineReadonly()
	  return &ft !~? 'help' && &readonly ? 'RO' : ''
	endfunction

	function! LightlineFilename()
	  let fname = expand('%:t')
	  return fname == 'ControlP' && has_key(g:lightline, 'ctrlp_item') ? g:lightline.ctrlp_item :
	        \ fname == '__Tagbar__' ? g:lightline.fname :
	        \ fname =~ '__Gundo\|NERD_tree' ? '' :
	        \ &ft == 'vimfiler' ? vimfiler#get_status_string() :
	        \ &ft == 'unite' ? unite#get_status_string() :
	        \ &ft == 'vimshell' ? vimshell#get_status_string() :
	        \ ('' != LightlineReadonly() ? LightlineReadonly() . ' ' : '') .
	        \ ('' != fname ? fname : '[No Name]') .
	        \ ('' != LightlineModified() ? ' ' . LightlineModified() : '')
	endfunction

	function! LightlineFugitive()
	  try
	    if expand('%:t') !~? 'Tagbar\|Gundo\|NERD' && &ft !~? 'vimfiler' && exists('*fugitive#head')
	      let mark = ''  " edit here for cool mark
	      let branch = fugitive#head()
	      return branch !=# '' ? mark.branch : ''
	    endif
	  catch
	  endtry
	  return ''
	endfunction

	function! LightlineFileformat()
	  return winwidth(0) > 70 ? &fileformat : ''
	endfunction

	function! LightlineFiletype()
	  return winwidth(0) > 70 ? (&filetype !=# '' ? &filetype : 'no ft') : ''
	endfunction

	function! LightlineFileencoding()
	  return winwidth(0) > 70 ? (&fenc !=# '' ? &fenc : &enc) : ''
	endfunction

	function! LightlineMode()
	  let fname = expand('%:t')
	  return fname == '__Tagbar__' ? 'Tagbar' :
	        \ fname == 'ControlP' ? 'CtrlP' :
	        \ fname == '__Gundo__' ? 'Gundo' :
	        \ fname == '__Gundo_Preview__' ? 'Gundo Preview' :
	        \ fname =~ 'NERD_tree' ? 'NERDTree' :
	        \ &ft == 'unite' ? 'Unite' :
	        \ &ft == 'vimfiler' ? 'VimFiler' :
	        \ &ft == 'vimshell' ? 'VimShell' :
	        \ winwidth(0) > 60 ? lightline#mode() : ''
	endfunction

	function! CtrlPMark()
	  if expand('%:t') =~ 'ControlP' && has_key(g:lightline, 'ctrlp_item')
	    call lightline#link('iR'[g:lightline.ctrlp_regex])
	    return lightline#concatenate([g:lightline.ctrlp_prev, g:lightline.ctrlp_item
	          \ , g:lightline.ctrlp_next], 0)
	  else
	    return ''
	  endif
	endfunction

	let g:ctrlp_status_func = {
	  \ 'main': 'CtrlPStatusFunc_1',
	  \ 'prog': 'CtrlPStatusFunc_2',
	  \ }

	function! CtrlPStatusFunc_1(focus, byfname, regex, prev, item, next, marked)
	  let g:lightline.ctrlp_regex = a:regex
	  let g:lightline.ctrlp_prev = a:prev
	  let g:lightline.ctrlp_item = a:item
	  let g:lightline.ctrlp_next = a:next
	  return lightline#statusline(0)
	endfunction

	function! CtrlPStatusFunc_2(str)
	  return lightline#statusline(0)
	endfunction

	let g:tagbar_status_func = 'TagbarStatusFunc'

	function! TagbarStatusFunc(current, sort, fname, ...) abort
	    let g:lightline.fname = a:fname
	  return lightline#statusline(0)
	endfunction

	" Syntastic can call a post-check hook, let's update lightline there
	" For more information: :help syntastic-loclist-callback
	function! SyntasticCheckHook(errors)
	  call lightline#update()
	endfunction

	let g:unite_force_overwrite_statusline = 0
	let g:vimfiler_force_overwrite_statusline = 0
	let g:vimshell_force_overwrite_statusline = 0
<
------------------------------------------------------------------------------
TROUBLESHOOTING					*lightline-troubleshooting*

Problem 1:				|lightline-problem-1|
	How to install this plugin.

Problem 2:				|lightline-problem-2|
	How to update this plugin.

Problem 3:				|lightline-problem-3|
	How to uninstall this plugin.

Problem 4:				|lightline-problem-4|
	Cool statuslines appear only on |:vsp|.

Problem 5:				|lightline-problem-5|
	The statusline does not seem to be correctly colored.

Problem 6:				|lightline-problem-6|
	How to install a patched font.

Problem 7:				|lightline-problem-7|
	Right triangles do not stick to the right components with the
	patched font.

Problem 8:				|lightline-problem-8|
	Triangles do not appear. Triangles look weird.

Problem 9:				|lightline-problem-9|
	Where can I find the list of all the cool characters for patched fonts?

Problem 10:				|lightline-problem-10|
	Cool statusline disappears in |unite|, |vimfiler| and |vimshell|
	buffers.

Problem 11:				|lightline-problem-11|
	Cool statusline disappears in |CtrlP|, |Tagbar| buffers.

Problem 12:				|lightline-problem-12|
	How to make the plus sign red like |powerline|?

Problem 13:				|lightline-problem-13|
	How to change the lightline colorscheme on the fly.

Problem 14:				|lightline-problem-14|
	The 'E541' warning appears on the right hand side.
	Many components disable the statusline of lightline.

Problem 15:				|lightline-problem-15|
	Do not deal with the tabline.
	Do not use the fancy separators in the tabline.

Problem 16:				|lightline-problem-16|
	When changed the component to a function component to an expanding
	component, the statusline of lightline is sometimes disabled.

Problem 17:				|lightline-problem-17|
	Found a bug of this plugin.
	Got many errors while using this plugin.
	Vim hangs while using this plugin.
	Want this plugin to be more configurable.
	This troubleshooting is not helpful.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Problem 1:					*lightline-problem-1*
	How to install this plugin.

		If you are to install this plugin manually:

			1. Put all the files under $VIM.

		If you are using |vim-pathogen|, install this plugin with the
		following command.
>
			git clone https://github.com/itchyny/lightline.vim \
			    ~/.vim/bundle/lightline.vim
<
		If you are to install this plugin using |Vundle|:

			1. Add the following configuration to your
			.vimrc(_vimrc).
>
			Plugin 'itchyny/lightline.vim'
<
			2. Install with |:PluginInstall|.

		If you are to install this plugin using |NeoBundle|:

			1. Add the following configuration to your
			.vimrc(_vimrc).
>
			NeoBundle 'itchyny/lightline.vim'
<
			2. Install with |:NeoBundleInstall|.

		If you are to install this plugin using |vim-plug|:

			1. Add the following configuration to your
			.vimrc(_vimrc).
>
			Plug 'itchyny/lightline.vim'
<
			2. Install with |:PlugInstall|.

Problem 2:					*lightline-problem-2*
	How to update this plugin.

		If you have installed this plugin manually:

			1. Access https://github.com/itchyny/lightline.vim .
			2. Download the latest scripts.
			3. Place the scripts as written in Problem 1.

		If you have installed this plugin using Vundle:

			1. Execute |:PluginUpdate|.

		If you have installed this plugin using NeoBundle:

			1. Execute |:NeoBundleUpdate|.

		If you have installed this plugin using vim-plug:

			1. Execute |:PlugUpdate|.

Problem 3:					*lightline-problem-3*
	How to uninstall this plugin.

		If you have installed this plugin manually:

			1. Remove all the lightline.*s under $VIM.

		If you have installed this plugin using Vundle:

			1. Remove the :Plugin 'itchyny/lightline.vim'
			configuration from your .vimrc(_vimrc).
			2. Update with |:PluginClean|.

		If you have installed this plugin using NeoBundle:

			1. Remove the :NeoBundle 'itchyny/lightline.vim'
			configuration from your .vimrc(_vimrc).
			2. Update with |:NeoBundleClean|.

		If you have installed this plugin using vim-plug:

			1. Remove the :Plug 'itchyny/lightline.vim'
			configuration from your .vimrc(_vimrc).
			2. Update with |:PlugClean|.

Problem 4:					*lightline-problem-4*
	Cool statuslines appear only on |:vsp|.

		Add the following setting to your .vimrc(_vimrc).
>
			set laststatus=2
<
Problem 5:					*lightline-problem-5*
	The statusline does not seem to be correctly colored.

		Add
>
			export TERM=xterm-256color
<
		to your .*shrc and add
>
			if !has('gui_running')
			  set t_Co=256
			endif
<
		to your .vimrc(_vimrc).

Problem 6:					*lightline-problem-6*
	How to install a patched font.

		There are two kinds of patched fonts:

		+ The patched fonts for |vim-powerline|
		(https://github.com/Lokaltog/vim-powerline):
		follow the guide https://github.com/Lokaltog/vim-powerline/tree/develop/fontpatcher
		+ The patched fonts for |powerline|
		(https://github.com/Lokaltog/powerline):
		download from https://github.com/Lokaltog/powerline-fonts

Problem 7:					*lightline-problem-7*
	Right triangles do not stick to the right components with patched
	font.

		Remove the following setting from your .vimrc(_vimrc).
>
			set ambiwidth=double
<
		If you want to keep this setting, try the patched font for
		|vim-powerline|.

Problem 8:					*lightline-problem-8*
	Triangles do not appear. Triangles look weird.

		If the triangles do not appear (but you get some spaces or
		weird characters like <bf> or ¿), firstly try adding
>
			scriptencoding utf-8
			set encoding=utf-8
<
		to the head of your .vimrc(_vimrc). Still you have weird
		characters, use the unicode numbers. For |powerline| font
		users:
>
		\ 'separator': { 'left': "\ue0b0", 'right': "\ue0b2" },
		\ 'subseparator': { 'left': "\ue0b1", 'right': "\ue0b3" }
<
		For |vim-powerline| font users:
>
		\ 'separator': { 'left': "\u2b80", 'right': "\u2b82" },
		\ 'subseparator': { 'left': "\u2b81", 'right': "\u2b83" }
<
		The full list of unicode numbers for fancy characters is shown
		in |lightline-problem-9|.

		If the triangles are shown in appropriate characters but the
		colors do not look correctly, see the following.
		If you are using iTerm2, change the following settings.

		    + set Profiles>Colors>Minimum contrast to the Lowest.
		    + set Profiles>Window>Transparency to the Opaquest.

		For other terminals, this weird-triangle problem will be
		resolved by disabling transparency or contrast adjustment.

Problem 9:					*lightline-problem-9*
	Where can I find the list of all the cool characters for patched fonts?

				Default		powerline	vim-powerline
	separator.left		''		'' (\ue0b0)		'⮀' (\u2b80)
	separator.right		''		'' (\ue0b2)		'⮂' (\u2b82)
	subseparator.left	'|'		'' (\ue0b1)		'⮁' (\u2b81)
	subseparator.right	'|'		'' (\ue0b3)		'⮃' (\u2b83)
	branch symbol		--		'' (\ue0a0)		'⭠' (\u2b60)
	readonly symbol		--		'' (\ue0a2)		'⭤' (\u2b64)
	linecolumn symbol	--		'' (\ue0a1)		'⭡' (\u2b61)

Problem 10:					*lightline-problem-10*
	Cool statusline disappears on |unite|, |vimfiler| and |vimshell|
	buffers.

		Add the following settings to your .vimrc(_vimrc).
>
		let g:unite_force_overwrite_statusline = 0
		let g:vimfiler_force_overwrite_statusline = 0
		let g:vimshell_force_overwrite_statusline = 0
<
Problem 11:					*lightline-problem-11*
	Cool statusline disappears in |CtrlP|, |Tagbar| buffers.

		Add the following settings to your .vimrc(_vimrc).
>
		let g:ctrlp_status_func = {
		  \ 'main': 'CtrlPStatusFunc_1',
		  \ 'prog': 'CtrlPStatusFunc_2',
		  \ }
		function! CtrlPStatusFunc_1(focus, byfname, regex, prev, item, next, marked)
		  return lightline#statusline(0)
		endfunction
		function! CtrlPStatusFunc_2(str)
		  return lightline#statusline(0)
		endfunction

		let g:tagbar_status_func = 'TagbarStatusFunc'
		function! TagbarStatusFunc(current, sort, fname, ...) abort
		  return lightline#statusline(0)
		endfunction
<
		See |lightline-powerful-example| for more cool settings for
		these plugins.

Problem 12:					*lightline-problem-12*
	How to make the plus sign red like |powerline|?

		Use the following settings.
>
		let g:lightline = {
		      \ 'component': {
		      \   'modified': '%#ModifiedColor#%{LightlineModified()}',
		      \ }
		      \ }
		function! LightlineModified()
		  let map = { 'V': 'n', "\<C-v>": 'n', 's': 'n', 'v': 'n', "\<C-s>": 'n', 'c': 'n', 'R': 'n'}
		  let mode = get(map, mode()[0], mode()[0])
		  let bgcolor = {'n': [240, '#585858'], 'i': [31, '#0087af']}
		  let color = get(bgcolor, mode, bgcolor.n)
		  exe printf('hi ModifiedColor ctermfg=196 ctermbg=%d guifg=#ff0000 guibg=%s term=bold cterm=bold',
			\ color[0], color[1])
		  return &modified ? '+' : &modifiable ? '' : '-'
		endfunction
<
		It's surely complicated. There's no easy API to do a thing
		like this. But it means that your request does not match
		the spirit of lightline.

Problem 13:					*lightline-problem-13*
	How to change the lightline colorscheme on the fly.

		To update your lightline colorscheme in sync with your vim
		colorscheme (only for select colorschemes which exist for
		both), add the following settings to your .vimrc(_vimrc).
>
		augroup LightlineColorscheme
		  autocmd!
		  autocmd ColorScheme * call s:lightline_update()
		augroup END
		function! s:lightline_update()
		  if !exists('g:loaded_lightline')
		    return
		  endif
		  try
		    if g:colors_name =~# 'wombat\|solarized\|landscape\|jellybeans\|seoul256\|Tomorrow'
		      let g:lightline.colorscheme =
		            \ substitute(substitute(g:colors_name, '-', '_', 'g'), '256.*', '', '')
		      call lightline#init()
		      call lightline#colorscheme()
		      call lightline#update()
		    endif
		  catch
		  endtry
		endfunction
<
		If you have not settled on a single lightline colorscheme, you
		can easily switch between lightline colorschemes by adding the
		following LightlineColorscheme command to your .vimrc(_vimrc).
>
		function! s:set_lightline_colorscheme(name) abort
		  let g:lightline.colorscheme = a:name
		  call lightline#init()
		  call lightline#colorscheme()
		  call lightline#update()
		endfunction

		function! s:lightline_colorschemes(...) abort
		  return join(map(
		        \ globpath(&rtp,"autoload/lightline/colorscheme/*.vim",1,1),
		        \ "fnamemodify(v:val,':t:r')"),
		        \ "\n")
		endfunction

		command! -nargs=1 -complete=custom,s:lightline_colorschemes LightlineColorscheme
		      \ call s:set_lightline_colorscheme(<q-args>)
<
Problem 14:					*lightline-problem-14*
	The 'E541' warning appears on the right hand side.
	Many components disable the statusline of lightline.

		The number of items in statusline/tabline is limited to 80
		(see |E541|). You cannot register too much components.

Problem 15:					*lightline-problem-15*
	Do not deal with the tabline.
	Do not use the fancy separators in the tabline.

		You can disable the tabline feature of lightline.vim using:
>
		let g:lightline = {
			\ 'enable': { 'tabline': 0 },
			\ }
<
		If you don't like the separators in the tabline, use:
>
		let g:lightline = {
			\ 'tabline_separator': { 'left': "", 'right': "" },
			\ 'tabline_subseparator': { 'left': "", 'right': "" },
			\ }
<
Problem 16:					*lightline-problem-16*
	When changed the component to a function component to an expanding
	component, the statusline of lightline is sometimes disabled.

		When you changed from
>
			\ 'component_function': {
			\   'my': 'My',
			\ }
<
		to
>
			\ 'component_expand': {
			\   'my': 'My',
			\ }
<
		the statusline of lightline is disabled unexpectedly.
		In such a case, the text returned by 'My' function may include
		the '%' character. Replace all the '%' signs with '%%'.
>
		function My()
		  ...
		  return substitute(text, '%', '%%', 'g')
		endfunction
<
Problem 17:					*lightline-problem-17*
	Found a bug of this plugin.
	Got many errors while using this plugin.
	Vim hangs while using this plugin.
	Want this plugin to be more configurable.
	This troubleshooting is not helpful.

		Report/Request the issue/feature at
		https://github.com/itchyny/lightline.vim/issues.

==============================================================================
vim:tw=78:sw=4:ts=8:ft=help:norl:noet: