diff options
Diffstat (limited to 'vim/bundle/lightline.vim/doc/lightline.txt')
m--------- | vim/bundle/lightline.vim | 0 | ||||
-rw-r--r-- | vim/bundle/lightline.vim/doc/lightline.txt | 1281 |
2 files changed, 0 insertions, 1281 deletions
diff --git a/vim/bundle/lightline.vim b/vim/bundle/lightline.vim new file mode 160000 +Subproject 430ce2cb063b39a0c7950cafd617e333acb6759 diff --git a/vim/bundle/lightline.vim/doc/lightline.txt b/vim/bundle/lightline.vim/doc/lightline.txt deleted file mode 100644 index 9936725..0000000 --- a/vim/bundle/lightline.vim/doc/lightline.txt +++ /dev/null @@ -1,1281 +0,0 @@ -*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: |