aboutsummaryrefslogtreecommitdiff
path: root/vim/bundle/lightline.vim/doc/lightline.txt
diff options
context:
space:
mode:
Diffstat (limited to 'vim/bundle/lightline.vim/doc/lightline.txt')
-rw-r--r--vim/bundle/lightline.vim/doc/lightline.txt1281
1 files changed, 1281 insertions, 0 deletions
diff --git a/vim/bundle/lightline.vim/doc/lightline.txt b/vim/bundle/lightline.vim/doc/lightline.txt
new file mode 100644
index 0000000..9936725
--- /dev/null
+++ b/vim/bundle/lightline.vim/doc/lightline.txt
@@ -0,0 +1,1281 @@
+*lightline.txt* A light and configurable statusline/tabline for Vim
+
+Version: 0.0
+Author: itchyny (https://github.com/itchyny)
+License: MIT License
+Repository: https://github.com/itchyny/lightline.vim
+Last Change: 2016/05/26 21:57:34.
+
+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|
+Changelog |lightline-changelog|
+
+==============================================================================
+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.
+
+ Configurability
+ You can create your own component and easily add to the
+ statusline/tabline.
+
+ Orthogonality
+ Any plugin should not change the settings of another plugin.
+ Such plugin-crossing settings should be written by users in
+ .vimrc.
+
+ You might find this plugin is not so useful by default. This plugin
+ does not provide the branch information, which is a very basic
+ component in existing plugins. The reason is that branch component is
+ one of plugin-crossing settings so users should write the settings
+ using the APIs of the both plugins. Hospitality makes a plugin messy.
+ Good APIs keep a plugin clean.
+
+------------------------------------------------------------------------------
+OPTIONS *lightline-option*
+
+ g:lightline *g:lightline*
+ All the options are stored into this global variable.
+
+ g:lightline.active *g:lightline.active*
+ g:lightline.inactive *g:lightline.inactive*
+ g:lightline.tabline *g:lightline.tabline*
+ Dictionaries to specify the statusline/tabline components.
+ The components are gathered from either |g:lightline.component|,
+ |g:lightline.component_function| or
+ |g:lightline.component_expand|.
+ 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*
+ Dictionaries to specify the components in each tabs.
+ The components are gathered from either
+ |g:lightline.tab_component| or
+ |g:lightline.tab_component_function|.
+ The default values are:
+>
+ let g:lightline.tab = {
+ \ 'active': [ 'tabnum', 'filename', 'modified' ],
+ \ 'inactive': [ 'tabnum', 'filename', 'modified' ] }
+<
+ g:lightline.component *g:lightline.component*
+ 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 ' }
+<
+ g:lightline.component_visible_condition *g:lightline.component_visible_condition*
+ Dictionary of boolean expressions for the components.
+ Each expression should correspond to the condition each
+ component have non-zero length.
+ The default value is:
+>
+ let g:lightline.component_visible_condition = {
+ \ 'modified': '&modified||!&modifiable',
+ \ 'readonly': '&readonly',
+ \ 'paste': '&paste',
+ \ 'spell': '&spell' }
+<
+ Users are recommended to set this option together with the
+ component itself.
+
+ g:lightline.component_function *g:lightline.component_function*
+ Another dictionary for components. This is more convenient
+ because the user does not have to set both component and
+ component_visible_condition. If a component set to both component and
+ component_function, the setting of component_function has priority.
+ For example, if you want a component for read-only mark, which
+ disappears in help windows:
+>
+ let g:lightline = {
+ \ 'active': {
+ \ 'left': [ [ 'mode', 'paste' ],
+ \ [ 'myreadonly', 'filename', 'modified' ] ],
+ \ },
+ \ 'component_function': {
+ \ 'myreadonly': 'LightLineReadonly'
+ \ },
+ \ }
+ function! LightLineReadonly()
+ return &ft !~? 'help' && &readonly ? 'RO' : ''
+ endfunction
+<
+ g:lightline.component_expand *g:lightline.component_expand*
+ Another dictionary for components. You can create a component
+ which has a special color. For example, error components or
+ warning components. The functions should return 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: %(...%).
+ The default value is: >
+
+ let g:lightline.component_type = {
+ \ 'tabs': 'tabsel',
+ \ 'close': '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 and 16color 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',
+ \ }
+ \ }
+ let g:syntastic_mode_map = { 'mode': 'passive' }
+ augroup AutoSyntastic
+ autocmd!
+ autocmd BufWritePost *.c,*.cpp call s:syntastic()
+ augroup END
+ function! s:syntastic()
+ SyntasticCheck
+ 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}, {cuifg}, {cuibg} ], ... ]
+<
+
+
+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 cui.
+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 cui 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.
+
+==============================================================================
+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
+
+ augroup AutoSyntastic
+ autocmd!
+ autocmd BufWritePost *.c,*.cpp call s:syntastic()
+ augroup END
+ function! s:syntastic()
+ SyntasticCheck
+ 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) '⭡' (\u2b81)
+
+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 setings.
+>
+ 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.
+
+ 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.*', '', '') .
+ \ (g:colors_name ==# 'solarized' ? '_' . &background : '')
+ call lightline#init()
+ call lightline#colorscheme()
+ call lightline#update()
+ endif
+ catch
+ endtry
+ endfunction
+<
+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.
+
+==============================================================================
+CHANGELOG *lightline-changelog*
+
+0.0 2013-08-21, ...
+ - Initial commit and implementation
+
+==============================================================================
+vim:tw=78:sw=4:ts=8:ft=help:norl:noet: