631 Commits
v0.5 ... v0.8

Author SHA1 Message Date
Bailey Ling
410429a95c update changelog for v0.8 2016-03-09 21:00:53 -05:00
Christian Brabandt
4395405628 Merge pull request #1081 from tnguyen14/master
extensions#whitespace: fix false positive for check_mix_indent_file() for JS file
2016-03-08 20:30:52 +01:00
Tri Nguyen
48423832d4 extensions#whitespace: fix false positive for check_mix_indent_file() for JS file 2016-03-07 22:22:07 -05:00
Christian Brabandt
e8cc5f8b84 Merge pull request #1076 from chrisbra/update_tabline
another approach for updating the bufferline on BufAdd
2016-03-07 19:55:10 +01:00
Christian Brabandt
1104639708 Merge pull request #1075 from chrisbra/po.vim
Enable po.vim integration
2016-03-02 18:48:58 +01:00
Christian Brabandt
d8d08ada7b Make clickable buffers (only Neovim)
fixes #369
2016-03-02 18:47:09 +01:00
Christian Brabandt
f60a8cc7a3 another approach for updating the bufferline on BufAdd 2016-03-01 22:07:52 +01:00
Christian Brabandt
a45a96c881 Merge pull request #1063 from sappo/master
Various ctrlspace tabline improvements
2016-03-01 20:40:20 +01:00
Bailey Ling
ea32215b08 add github issue template 2016-03-01 12:42:46 -05:00
Christian Brabandt
f28a706020 Enable po.vim integration
fixes #1070
2016-02-29 22:38:39 +01:00
Christian Brabandt
4fa37e5e20 Merge pull request #1068 from kballard/colorscheme-to-theme
Fix colorscheme to theme matching
2016-02-28 13:06:32 +01:00
Kevin Ballard
4540ea428a Fix colorscheme to theme matching
Fixes #1067 for real.
2016-02-27 11:22:30 -08:00
Christian Brabandt
a7eb735f2e Fix typo
fixes #1067
2016-02-26 09:20:01 +01:00
Christian Brabandt
6c43fdea96 Merge pull request #1065 from nach/master
extensions#whitespace: fix false positive for check_mix_indent_file()
2016-02-26 14:41:36 +01:00
Frederic Chanal
8fde76dd63 extensions#whitespace: fix false positive for check_mix_indent_file()
This patch prevents check_mix_indent_file() form notifying a "mix-ident-file"
when working where C/CPP using space and comment like:
/**
 * Some comment on the 1st column that shall not trigger check_indent_file()
 */
This kind of file can be found in linux kernel for example.
2016-02-26 14:29:51 +01:00
Christian Brabandt
23fb126322 Merge pull request #1057 from illicium/1055-buffer-highlight
Fix buffer modified highlighting being set from wrong buffer
2016-02-25 16:27:13 +01:00
Christian Brabandt
ff0f7df41f Merge pull request #1059 from chrisbra/base16_tomorrow
Fix matching of themes to color names
2016-02-25 16:25:05 +01:00
Christian Brabandt
5d4ddeec10 Merge pull request #1062 from chrisbra/fix_1061
do not unconditionally use utf-8 encoding in branch exten
2016-02-25 12:00:50 +01:00
Kevin Sapper
ab948735be Problem: Cannot disable tabs for ctrlspace tabline
Solution: Implement the show_tabs option which is used by the default
tabline.
2016-02-25 11:35:52 +01:00
Christian Brabandt
0bfae15d97 do not unconditionally use utf-8 encoding in branch exten
Check, that encoding is utf8 before using '…'
fixes #1061
2016-02-25 11:30:02 +01:00
Kevin Sapper
2f2797becb Problem: Cannot disable displaying buffers for ctrlspace tabline
Solution: Implement the show_buffers option which is used by the default
airline tab as well.
2016-02-25 11:19:52 +01:00
Kevin Sapper
ad5194244b Problem: Cannot switch position of tabs and buffers for ctrlspace
tabline
Solution: Add a new option which inverses the position of buffer and
tabs

If switch_buffer_and_tabs is 0 (default) buffer are on the left and tabs
on the right else if is 1 the order is reversed.
2016-02-25 11:03:50 +01:00
Christian Brabandt
5cf193fa28 Merge pull request #1058 from blueyed/fix-1054
parts#readonly: fix filereadable check with #1054
2016-02-25 08:18:49 +01:00
Christian Brabandt
78e1a2c8db Fix matching of themes to color names
theme usually use '_' instead of '-', so replace that first before
trying to match.

Second, make the patterns easier to match.

Third, make sure, match for Tomorrow happens with matching case

fixes #1056
2016-02-25 08:07:51 +01:00
Daniel Hahler
595d270398 parts#readonly: fix filereadable check with #1054 2016-02-25 02:57:49 +01:00
Yegor Pomortsev
7453b5e15c Fix buffer modified highlighting being set from wrong buffer
Fixes #1055, cased by refactoring in e4ef624 (#952)
2016-02-24 16:45:17 -08:00
Christian Brabandt
5ab8b754d8 Merge pull request #1054 from blueyed/file-noperm
Display [noperm] with modifiable, but not readable buffers
2016-02-24 22:26:53 +01:00
Daniel Hahler
0485b48dbb Display [noperm] with modifiable, but not readable buffers
Based on: https://github.com/vim-airline/vim-airline/issues/633#issuecomment-174504456
Fixes: https://github.com/vim-airline/vim-airline/issues/633.
2016-02-24 22:03:15 +01:00
Christian Brabandt
67f5a0ba20 Merge pull request #1050 from chrisbra/tabline_refresh
Disable tabline refresh per configuration
2016-02-24 19:12:29 +01:00
Christian Brabandt
7418df5583 Merge pull request #1052 from chrisbra/doc
document airline#extensions#tabline#show_splits
2016-02-23 21:41:17 +01:00
Christian Brabandt
67594b4da4 document airline#extensions#tabline#show_splits 2016-02-23 21:13:12 +01:00
Christian Brabandt
0e70dac030 Disable tabline refresh per configuration
fixes #1049 and should prevent that users see AirlineTabRefresh printed
on their screen.
2016-02-23 20:23:29 +01:00
Christian Brabandt
adbfda43f8 Merge pull request #1047 from rosston/fix-current-modified-buffer
Fix highlighting of current/modified buffer.
2016-02-23 12:05:56 +01:00
rosston
63f9abd3f2 Fix highlighting of current/modified buffer.
Fixes broken variable reference caused by e4ef624 (#952).
2016-02-22 23:07:27 -05:00
Christian Brabandt
cf9eebcc45 Merge pull request #1045 from sappo/master
Problem: Cannot rename the labels for buffers and tabs
2016-02-22 15:27:29 +01:00
Kevin Sapper
e7edb4c75a Problem: Cannot rename the labels for buffers and tabs
Solution: Add an option for the user to configure those labels and make
the current values the default ones.
2016-02-22 08:30:20 +01:00
Bailey Ling
e6ab7bdf6d show tabs on the left when in tabs mode, splits on the right (#1043) 2016-02-21 15:03:55 -05:00
Bailey Ling
8c080fdf80 Merge pull request #952 from chrisbra/buffer_line
Always display buffer list in tabline
2016-02-20 20:10:12 -05:00
Christian Brabandt
d0652caf69 Merge pull request #1041 from chrisbra/bubblegum
Match bubblegum theme to colorscheme
2016-02-19 12:57:20 +01:00
Christian Brabandt
20d3aae20f Match bubblegum theme to colorscheme 2016-02-19 12:55:33 +01:00
Christian Brabandt
8af213d3f9 Merge pull request #816 from mildred/master
Make tabline compatible with bufmru
2016-02-17 07:42:42 +01:00
Christian Brabandt
8c7515aade Merge pull request #1038 from chrisbra/better_warning_highlight
Revert term highlighting of airline_warning to orange
2016-02-16 23:36:50 +01:00
Christian Brabandt
7cfcc4871a Revert term highlighting of airline_warning to orange
Highlighting was changed with commit 06f2cb5a89
Revert it to the old colors.
2016-02-16 23:32:38 +01:00
Shanti Bouchez-Mongardé
faa7a18242 Make tabline compatible with bufmru 2016-02-16 21:16:55 +01:00
Christian Brabandt
37231dac3a Merge pull request #1034 from blueyed/fallback-to-NONE-in-get_syn
airline#highlighter: s:get_syn: fallback to 'NONE'
2016-02-16 20:49:28 +01:00
Christian Brabandt
13ea57b98a Revert "Add mq patch to branch output"
This reverts commit 8023f6f5dc.

fixes #1035
2016-02-16 17:52:26 +01:00
Christian Brabandt
5e0b10c005 Revert "Only show hg qtop output, if branch is also shown"
This reverts commit da78d4a7bb,
since it causes a massive performance impact.

fixes #1035
2016-02-16 17:48:57 +01:00
Bailey Ling
d632c88751 Merge pull request #1027 from chrisbra/hg
Add mq patch to branch output for hg
2016-02-15 22:13:04 -05:00
Daniel Hahler
d39076a07d airline#highlighter: s:get_syn: fallback to 'NONE'
This is required when used with 'Normal' with a transparent background.
Falling back to 1 here results in "red" for "ctermbg"!

I think it's important to keep the 'NONE' color property here, instead
of hardcoding the fallbacks (even if white would be used instead of
red).
2016-02-16 00:44:07 +01:00
Christian Brabandt
a2f54ef6e6 add feedback from PR 2016-02-15 20:01:34 +01:00
Christian Brabandt
da78d4a7bb Only show hg qtop output, if branch is also shown 2016-02-15 17:05:53 +01:00
Christian Brabandt
8023f6f5dc Add mq patch to branch output 2016-02-11 22:44:12 +01:00
Christian Brabandt
2c5aa75d5f update according to PR comments 2016-02-11 21:31:42 +01:00
Bailey Ling
e4ef624ea8 tabline for combined buffers/tabs
This is a new tabline extension, that displays both the buffers open and
the available tabs. This has been requested by #639 and fixes #639.

This is based on blings work on branch spike.

This uses the new highlight groups tab*_right, so that the separators
have the correct color. Also this makes some configuration variable
obsolete and therefore, they have been removed.

remove unused combined config variable, remove space after tab
2016-02-10 20:22:35 +01:00
Christian Brabandt
1dc8eac3d2 Merge pull request #1023 from chrisbra/doc
slightly updated documentation (mostly formatting)
2016-02-10 20:03:15 +01:00
Christian Brabandt
651ad0a0c4 slightly updated documentation (mostly formatting) 2016-02-10 19:53:17 +01:00
Christian Brabandt
525144bf1c Merge pull request #1019 from chrisbra/mixed_indent_check
Do not check for mixed whitespace in Makefiles
2016-02-09 20:48:07 +01:00
Christian Brabandt
1d072bf019 Do not check for mixed whitespace in Makefiles
Skip indent and mixed-indent-file check for Makefiles.

fixes #1017
2016-02-09 20:16:12 +01:00
Christian Brabandt
cc219dbc10 Merge pull request #1012 from chrisbra/performance
Some improvements for the buflist implementation
2016-02-09 19:43:46 +01:00
Christian Brabandt
31906ac7b2 Some improvements for the buflist implementation
This should make the buflist algorithm faster.
Also there is an alternative implementation in branch 535 available,
which avoids looping over the complete range, I'll stay with the current
approach, as it does not depend on BufAdd/BufDelete autocommands.

details:
instead of testing for buflisted() and bufexists() we only test for
buflisted() because, this also tests for the existence of the buffer.
Also instead of a second loop of the exclude patterns, we'll join all
of them together with '\|' and check if they match the current buffer.
The rest of the conditions have been joined into a single condition.

This together made up an improvement of
Orig:
FUNCTION  airline#extensions#tabline#buflist#list()
Called 94 times
Total time:   0.267305
 Self time:   0.267305

New:
FUNCTION  airline#extensions#tabline#buflist#list()
Called 85 times
Total time:   0.124572
 Self time:   0.124572
2016-02-09 19:41:17 +01:00
Werner Freund
447cf71ef2 Added visual mode word counting 2016-02-09 19:31:55 +01:00
Christian Brabandt
fb5ecd4703 Merge pull request #1018 from chrisbra/feedkeys
do not echo feedkeys() arguments
2016-02-09 19:30:45 +01:00
Bailey Ling
0ae3d36515 Merge pull request #1016 from sappo/master
Problem: ctrlspace integration not documented with a screenshot
2016-02-09 09:22:23 -05:00
Kevin Sapper
c1c1f7fc31 Problem: ctrlspace integration not documented with a screenshot
Solution: Add image from #1015 to README.md
2016-02-09 10:21:44 +01:00
Christian Brabandt
08a8779268 do not echo feedkeys() arguments
Try a different approach, that does not echo
the commandline. For that, create a <silent> mapping,
that is called via feedkeys() and as such should update the tabline.

fixes #1011
2016-02-08 21:16:38 +01:00
Christian Brabandt
b48b166a22 Merge pull request #911 from sappo/master
Problem: CtrlSpace 5.0 integration (statusline + tabline)
2016-02-08 10:44:01 +01:00
Christian Brabandt
9e6a917c52 Merge pull request #1005 from chrisbra/mixed_indent
Detect inconsistent mixed indentation in a file
2016-02-08 10:27:37 +01:00
Christian Brabandt
1043f9c0ce Merge pull request #1003 from chrisbra/less_redraws
Try to avoid excessive redraws.
2016-02-08 10:27:26 +01:00
Christian Brabandt
faaf58b2c5 Merge pull request #996 from chrisbra/untracked_improvement
Small improvement for untracked feature
2016-02-08 10:27:13 +01:00
Kevin Sapper
a65000211f Problem: Load check variables has changed
Solution: Use the current one from ctrlspace 5.0 + minor style fixes

Problem: CtrlSpace 5.0 does no longer work with airline
Solution: Modify the ctrlspace extension to call the new APIs

The statusline work fine but the custom ctrlspace function
somehow/somewhere gets overridden and I could not figure out where.
Therefore the user must add

let g:CtrlSpaceStatuslineFunction = "airline#extensions#ctrlspace#statusline()"

to its .vimrc.

Problem: Ctrlspace 5.0 does not integrate well into tabline
Solution: Write a tabline extensions for ctrlspace 5.0.

The extensions is capable of showing both tabs and buffers, but only the
buffers of a current tab are shown.
2016-02-08 08:36:25 +01:00
Christian Brabandt
e7de5f451a Merge pull request #1008 from chrisbra/performance_regression
fix performance regression
2016-02-07 22:29:30 +01:00
Christian Brabandt
7efa5067ef fix performance regression 2016-02-07 22:17:17 +01:00
Christian Brabandt
3d148154e1 Merge pull request #1006 from chrisbra/tabpagenr
check tabpagenr
2016-02-07 09:10:43 +01:00
Christian Brabandt
ac86003ac3 Problem with highlighting groups per tabpages
The current mode is only cached per window. This will break, if one
switches tabpage. We remember the last mode that was used to create the
highlighting group and compare, if this has changed.

This fixes #670
2016-02-07 09:07:00 +01:00
Christian Brabandt
b160ffaaf4 Update CHANGELOG.md 2016-02-06 19:06:04 +01:00
Christian Brabandt
7352c8ee9e Detect inconsistent mixed indentation in a file
This is an extension to the whitespace extension.
It can now detect, if there is mixed indentation used within a file,
e.g. (using space for indentation on some lines and using tabs on other
lines.

This fixes #560
2016-02-06 17:46:56 +01:00
Christian Brabandt
cb30971901 Merge pull request #1004 from chrisbra/unicode_plugin
Add support for unicode plugin
2016-02-06 16:07:42 +01:00
Christian Brabandt
62c383cefc Add support for unicode plugin
This commit adds support for the :UnicodeTable of https://github.com/chrisbra/unicode.vim
2016-02-06 16:05:29 +01:00
Christian Brabandt
af3f209d7a Try to avoid excessive redraws.
Most of them seem to be caused by using :hi statements, although the
highlighting group to be created is exactly the same. Therefore, get the
info from actual definition and only execute :hi when the new group is
actually different.

Also try to avoid to generate :hi statements when the popupmen is
visible. This causes flickers.
2016-02-06 13:55:28 +01:00
Christian Brabandt
0ced03ebf3 Merge pull request #1001 from chrisbra/master
use feedkeys() with "n" flag
2016-02-06 08:51:39 +01:00
Christian Brabandt
73f365cfb9 use feedkeys() with "n" flag 2016-02-06 08:49:50 +01:00
Christian Brabandt
de925becf6 Merge pull request #997 from chrisbra/fix_e315
update_tabline() may cause E315
2016-02-06 00:07:29 +01:00
Christian Brabandt
050945f087 update_tabline() may cause E315
This is probably a bug in Vim because redrawing might cause
Vim to actually try to access a line of the buffer, that hasn't
been loaded yet.

Therefore try to update the tabline, by performing a two :set mod!
calls.
2016-02-06 00:03:27 +01:00
Christian Brabandt
ae85179c3a Merge pull request #994 from chrisbra/neovim_fix
fix neovim color mode
2016-02-05 23:54:55 +01:00
Christian Brabandt
0022de3b78 Small improvement for untracked feature
first argument of git status is <pathspec> in git speech,
and so if you feed it a directory, that contained an untracked file,
the directory would be marked as untracked. So fix this.
2016-02-05 23:11:37 +01:00
Christian Brabandt
87d60febaf fix neovim color mode 2016-02-05 22:47:57 +01:00
Christian Brabandt
fdb74f549d Make the BOM indicator '[BOM]'
also, not-exists symbol has nothing to do with powerline fonts, so fix
that.
2016-02-05 18:19:53 +01:00
Christian Brabandt
89094025c0 Merge pull request #992 from chrisbra/bomb_indicator
Add Bomb indicator
2016-02-05 11:41:57 +01:00
Christian Brabandt
42b59a05bf Add bomb indicator to the encoding section. 2016-02-05 11:36:47 +01:00
Christian Brabandt
b2bf331d6b Merge pull request #991 from metalelf0/master
Neovim true color support
2016-02-05 09:29:19 +01:00
Andrea Schiavini
ef3746d022 Neovim support 2016-02-05 09:19:31 +01:00
Christian Brabandt
3f927b587d Revert "remove wrong backslash"
This reverts commit da3f3bf1d7.
2016-02-04 19:03:25 +01:00
Christian Brabandt
d8adbfa135 Add untracked feature to branch extension.
This will show a little not-existing sign in a buffer,
if that file lives in a git/hg repository but does not exists
there yet. Use `:let g:airline_symbols.notexists='!'` to configure
the '!' as symbol. By default, will use U+2204 symbol

To not impact performance by shelling out a lot, the result is cached
until the buffer is written or a shell command is issued.

Should work with mercurial and git.

fixes #925
2016-02-04 16:43:42 +01:00
Christian Brabandt
f57c5daf66 Fix highlighting problems with Vim
1) Make sure airline_error and airline_warning highlighting are
   different, so that the correct separator will be drawn. This
   fixes #982.

2) allow to deactivate %(%) to workaround a vim bug, that may cause
   leaking of colors from one section to the next and adding additional
   spaces. This needs to be fixed upstream:
   https://groups.google.com/d/msg/vim_dev/sb1jmVirXPU/mPhvDnZ-CwAJ
   Possibly, also related to neovim/neovim#4147
   Use `:let airline#extensions#default#section_use_groupitems = 0`
   to disable grouping of statusline items
2016-02-04 16:29:45 +01:00
Christian Brabandt
da3f3bf1d7 remove wrong backslash 2016-02-04 16:25:27 +01:00
Christian Brabandt
9d1196f40a add changelog 2016-02-02 22:42:20 +01:00
namark
d6a42528a1 Made fugitive and lawrencium coexist in peace,
meaning that branches retrieved from those are now displayed side by
side. The order can be customised with g:airline#extensions#branch#vcs_priority.
The VCS name is now prepended to the branch name to be able to tell
which is which. The VSCCommand behaviour is unchanged.
Also restructured the code a little bit, and made found_fugitive_head
variable behave as its name suggests.
2016-02-01 22:51:34 +01:00
Christian Brabandt
7c234a0139 Merge pull request #983 from adarsh/ap-update-theme-documentation
Link to new theme repository in README.md
2016-02-01 10:52:34 +01:00
Adarsh Pandit
ddbc454315 Link to new theme repository in README.md
Reason for Change
=================
* As of [this commit], themes are now in a separate repository.
* The `README.md` file does not reflect this change as of yet.

[this commit]: d7fd8ca649.

Changes
=======
* Mention the external themes when discussing them.
* Create a new "Themes" sub-section and add information on how to add them.

Note: this addresses Issue #981.
2016-01-31 21:41:15 -08:00
Christian Brabandt
dbb4d3236b Merge pull request #980 from chrisbra/test_colorscheme
updated travis
2016-01-31 21:24:50 +01:00
Christian Brabandt
2d4cb5c1ad updated travis
test switching color schemes
2016-01-31 18:15:39 +01:00
Bailey Ling
8c860b7045 Merge pull request #977 from vim-airline/theme-fix
fix load regression errors with recent theme changes
2016-01-31 08:43:55 -05:00
Bailey Ling
ffe0fafa2d fix load regression errors with recent theme changes 2016-01-31 01:41:13 -05:00
Christian Brabandt
c34b29beb4 Merge pull request #973 from chrisbra/airline_error
some more smaller updates
2016-01-30 21:02:24 +01:00
Christian Brabandt
31730c6ec8 Merge pull request #976 from tuopen/master
Fix issue when an airline theme and an external colorscheme have been defined
2016-01-30 20:45:59 +01:00
Tuomas Penttilä
905522cd8b Fix issue when an airline theme and an external colorscheme have been defined 2016-01-30 21:35:14 +02:00
Christian Brabandt
9c2c0816f5 some more smaller updates 2016-01-30 16:50:37 +01:00
Christian Brabandt
c88f04cd1a Merge pull request #972 from chrisbra/doc
small update to documentation
2016-01-30 16:50:03 +01:00
Christian Brabandt
e60611691f small update to documentation 2016-01-30 16:07:17 +01:00
Christian Brabandt
6e223196ff Merge pull request #971 from chrisbra/fix_travis
Fix travis failure because of missing simple theme
2016-01-30 15:08:04 +01:00
Christian Brabandt
5ed7c81b6d fix travis failing 2016-01-30 15:06:22 +01:00
Evgeny Firsov
e685bae41e Update documentation with YCM extension enable/disable instruction 2016-01-30 14:18:20 +01:00
Evgeny Firsov
44045bc280 Disable YCM extension by default
Move syntastic and eclim to the error section
2016-01-30 14:18:20 +01:00
Christian Brabandt
450e2535af Merge pull request #960 from chrisbra/airline_error
Airline error improvements.
2016-01-30 14:09:24 +01:00
Christian Brabandt
512d03d81b Merge pull request #970 from chrisbra/theme_init
Fix break for non-existing g:airline_theme variable. Merging now, so that the error message disappears. If there are more problems, we can fix them later.
2016-01-30 14:08:01 +01:00
Christian Brabandt
e7560025d1 Fix break for non-existing g:airline_theme
fixes #969
2016-01-30 14:03:01 +01:00
Bailey Ling
d7fd8ca649 remove all themes from the core repository except for the default.
resolves #923
2016-01-29 22:24:49 -05:00
Bailey Ling
ce44577f1b move branch variable into the extension 2016-01-29 09:29:40 -05:00
Christian Brabandt
e5c4306698 Do not add empty error section
This prevents, adding a separator in error highlighting, also there
exists no error.
2016-01-28 21:27:07 +01:00
Christian Brabandt
90af4618f5 only init ycm extension, when YCM is available 2016-01-28 17:39:15 +01:00
Bailey Ling
1887b782e3 Merge pull request #959 from rubbsdecvik/master
Make FAQ URL reflect new Org
2016-01-28 11:37:48 -05:00
Patrick Regan
392ea2b185 Make FAQ URL reflect new Org
While the URL redirect properly, having all URLs reflect the final
destination is best to present a unified message.
2016-01-28 11:30:10 -05:00
Bailey Ling
b7a74b1748 remove deprecated variables
over 2 years is more than enough warning...
2016-01-28 09:54:14 -05:00
Christian Brabandt
1d8408a7f8 Merge pull request #958 from jmoses/master
Fix typo from PR #953
2016-01-28 14:05:09 +01:00
Jon Moses
e50b34ff63 Fix typo from PR #953 2016-01-28 07:58:29 -05:00
Christian Brabandt
141f9358a2 Merge pull request #953 from chrisbra/airline_refresh
When calling :AirlineRefresh, also update branch name
2016-01-28 11:21:24 +01:00
Christian Brabandt
1f2ac998d7 Merge pull request #956 from chrisbra/fix_issue_955
fix issue #955
2016-01-28 11:19:21 +01:00
Christian Brabandt
3cc0bfc390 fix issue #955 2016-01-28 11:15:25 +01:00
Christian Brabandt
d7f4fbf529 Merge pull request #902 from efirs/ef_ycm_error_warning_count
Show YouCompleteMe error and warning count in the statusline
2016-01-28 10:11:37 +01:00
Christian Brabandt
70ca735af0 When calling :AirlineRefresh, also update branch name
fixes #584
2016-01-28 09:49:09 +01:00
Evgeny Firsov
2711863088 Added documentation for YCM extenstion
Signed-off-by: Evgeny Firsov <firs1978@gmail.com>
2016-01-28 00:40:27 -08:00
Evgeny Firsov
6d81660fd8 Show YouCompleteMe error and warning count in the statusline
Signed-off-by: Evgeny Firsov <firs1978@gmail.com>
2016-01-27 23:21:16 -08:00
Bailey Ling
3cd278ad08 add deprecation warning regarding themes #923. 2016-01-27 22:46:57 -05:00
Bailey Ling
69587e1aa0 Merge pull request #839 from yeskeen/master
add cool theme
2016-01-27 22:17:59 -05:00
Bailey Ling
87e2e578b5 Merge pull request #865 from dlanileonardo/master
Base16 Theme for Terminal with 16 colors
2016-01-27 22:17:35 -05:00
Bailey Ling
2cf0ac1230 Merge pull request #937 from chrisbra/xtermlight
add xtermlight theme
2016-01-27 22:17:21 -05:00
Christian Brabandt
94611d1091 Merge pull request #951 from chrisbra/fix_wordcount
fix stupid typo
2016-01-27 21:23:16 +01:00
Christian Brabandt
da21b97529 fix stupid typo 2016-01-27 21:22:39 +01:00
Christian Brabandt
82d1cab392 Merge pull request #950 from chrisbra/msdos_colors
Better algorightm, to get msdos colors
2016-01-27 20:46:03 +01:00
Christian Brabandt
b094374f37 Merge pull request #944 from chrisbra/wordcount_formatter
Some improvements to the wordcount plugin
2016-01-27 20:41:21 +01:00
Christian Brabandt
1be1ed8810 Merge pull request #947 from chrisbra/custom_trailing_space
Allow to customize the trailing whitespace regexp
2016-01-27 20:40:47 +01:00
Christian Brabandt
768a475add Better algorightm, to get msdos colors
currently, full 255 colors were returned, while in fact
msdos console only supports 16 colors. So fix this.
2016-01-27 20:37:58 +01:00
Christian Brabandt
1490f59e75 Merge pull request #949 from chrisbra/cmd_highlighter
cmd.exe: Check for NONE/fg/bg of color value
2016-01-27 19:13:51 +01:00
Christian Brabandt
5181d49a63 cmd.exe: Check for NONE/fg/bg of color value
Color values can have NONE/fg/bg values as well, and this would
error out.
2016-01-27 19:12:54 +01:00
Christian Brabandt
a1cb468339 Merge pull request #948 from cHoco/patch-1
base16-theme: Revert changes for active statusline
2016-01-27 17:29:56 +01:00
Enrico Ghirardi
04f4b0f778 base16-theme: Revert changes for active statusline 2016-01-27 17:13:57 +01:00
Christian Brabandt
453f4b759f Allow to customize the trailing whitespace regexp
Currently, vim-airline uses hard-coded '\s$' to check for trailing
whitespace. However you might want to check for different values.
Therefore, set the variable
g:airline#extensions#whitespace#trailing_regexp to the required regexp
value.

closes #663
2016-01-27 14:18:28 +01:00
Christian Brabandt
020ee382dc Merge pull request #945 from chrisbra/bufadd_ignore
fix issue #939
2016-01-26 20:58:10 +01:00
Christian Brabandt
889492e01c fix issue #939 2016-01-26 07:52:42 +01:00
Christian Brabandt
97e204f3b6 Some improvements to the wordcount plugin
1) allow for custom formatting of the output of the wordcount formatter
   This allows for formatting numbers correctly e.g. 1,042 in English
   locale and 1.042 in German locale.

2) cache values, so that no on every cursor move the wordcount needs to
   be recalculated.
2016-01-25 21:00:05 +01:00
Bailey Ling
c35fd1a068 Merge pull request #942 from chrisbra/hi_problem_758
Correct the comparison for given color codes
2016-01-25 09:31:28 -05:00
Christian Brabandt
349ca86c71 Correct the comparison for given color codes
this issue fixes #758

The problem was, that a given color list ['','',0,'',''] was given to
the airline#highlighter#exec() function. This resulted in the following
comparison:

if (get(colors,2,'') != '')  ? 'ctermfg='.colors[2] : ''

which, since echo 0 != '' returns falls will return a single:

:hi group

and no color codes given and therefore, Vim would output the
current highlighting group.

Use isnot# as comparison to fix this issue.
2016-01-25 12:21:34 +01:00
Christian Brabandt
fb76dfbca1 Merge pull request #941 from chrisbra/doc
clarify how to add custom parts to the statusline
2016-01-23 22:10:16 +01:00
Christian Brabandt
9e25f52c6f clarify how to add custom parts to the statusline 2016-01-23 22:09:37 +01:00
Christian Brabandt
cce3e41398 Merge pull request #940 from chrisbra/nrrwrgn
NrrwRgn: Only use Utf-8 Glyph in utf8 encoding
2016-01-23 21:35:28 +01:00
Christian Brabandt
e42c0b0f33 NrrwRgn: Only use Utf-8 Glyph in utf8 encoding
Fixes #567
2016-01-23 21:31:34 +01:00
Bailey Ling
8fb92586ee Merge pull request #938 from chrisbra/undefined_bold
Before using hlgroups make sure they exist
2016-01-23 13:50:38 -05:00
Bailey Ling
698db37591 Merge pull request #932 from chrisbra/updated-doc
clarify buffer_idx mode mappings
2016-01-23 13:47:17 -05:00
Christian Brabandt
b1c00b6cc9 define linenr with bold accent 2016-01-23 12:49:13 +01:00
Christian Brabandt
5923ced2b0 clarify buffer_idx mode mappings
Also add mappings for tabmode as suggested.
2016-01-22 20:20:18 +01:00
Bailey Ling
fb255b570d Merge pull request #935 from chrisbra/bufadd_autocmd
update tabline on bufadd events
2016-01-22 09:14:14 -05:00
Christian Brabandt
b6d65b41a0 add xtermlight theme
fixes #770
2016-01-22 11:17:20 +01:00
Christian Brabandt
8ae46e989d update tabline on bufadd events 2016-01-21 21:10:25 +01:00
Christian Brabandt
8afd72d886 Merge pull request #936 from h3xx/fix-logic-simplicity
Simplify logic on if statement
2016-01-21 20:50:14 +01:00
Dan Church
1d6ec383e4 Simplify logic on if statement
Referencing the same boolean multiple times in a logical statement is
probably not what was intended.
2016-01-21 10:46:36 -06:00
Christian Brabandt
d07799421a Merge pull request #934 from chrisbra/formatter
fix typo in documentation about formatters
2016-01-20 23:59:05 +01:00
Christian Brabandt
604f744727 fix typo in documentation about formatters
fixes #873
2016-01-20 23:53:14 +01:00
Christian Brabandt
0e6a0b9389 Merge pull request #893 from blueyed/theme-base16-vertsplit
base16 theme: use Normal/VertSplit for inactive statusline
2016-01-20 23:31:36 +01:00
Christian Brabandt
fb77c3ac27 Merge pull request #933 from chrisbra/fix_virtualenv
fix issue with virtualenv
2016-01-20 23:23:12 +01:00
Christian Brabandt
2ebe79a0d0 fix issue with virtualenv 2016-01-20 23:21:20 +01:00
Daniel Hahler
c10a072b9e base16 theme: use Normal/VertSplit for inactive statusline 2016-01-20 22:50:19 +01:00
Bailey Ling
17eff4f4b0 Merge pull request #931 from chrisbra/tabline-mappings
use silent flag for AirlineSelectTab mappings
2016-01-20 15:25:48 -05:00
Bailey Ling
b8278dc446 Merge pull request #930 from chrisbra/511
Make the virtualenv extension work better
2016-01-20 15:25:29 -05:00
Christian Brabandt
6c1fb7e275 use silent flag for AirlineSelectTab mappings 2016-01-20 20:07:45 +01:00
Christian Brabandt
7ace10651f Make the virtualenv extension work better
This fixes #511

It allows the virtualenv plugin to call back and tell the airline plugin
to update the statusline. Therefore, the new function
airline#extensions#virtualenv#update() is provided. However, to properly
fix this issue, the virtualenv plugin needs to call this function.

Second, depending on $VIRTUAL_ENV is not safe, since the virtualenv
plugin might define it itsself when calling :VirtualEnvActivate
Therefore skip this test and just test for existance of he
:VirtualEnvList command.
2016-01-20 20:02:21 +01:00
Christian Brabandt
dcfe24bc6d Merge pull request #929 from chrisbra/preview-window
Also draw a nice statusline in the preview window
2016-01-20 19:27:24 +01:00
Christian Brabandt
0a75e493a6 Also draw a nice statusline in the preview window
This fixes issue #858

previously, the the on_window_changed() function returned early when the
popupmenu was visible, which also means, that a new preview window
created by the popup menu would not be rendered correctly until one
moves into this window.

Therefore, I made it not return early, even if the popup menu was opened
to make sure, it will be rendered. However, since the popup menu is
open, this might have unwanted consequences, if some plugin or other
function from airline calls some normal mode command (e.g. wordcount
which should not be enabled for preview windows). So this might break
subtile in other areas later.

An alternative might be to just document the fact, that airline won't
color preview windows at all. But I don't like that either.
2016-01-19 20:48:56 +01:00
Bailey Ling
348663f7f8 introduce contributing.md 2016-01-18 14:01:39 -05:00
Bailey Ling
44769aab3a Merge pull request #925 from chrisbra/show_tabline
Check window size
2016-01-17 18:29:04 -05:00
Christian Brabandt
db6bf458fb Check window size
Before setting showtabline option, make sure, there is enough room
fixes #863
2016-01-17 18:35:24 +01:00
Christian Brabandt
8845f56686 Merge pull request #921 from chrisbra/doc-wordcount
use wordcount function if available
2016-01-16 12:56:51 +01:00
Christian Brabandt
06723fc82c Merge pull request #922 from mhinz/i-cant-think-of-a-good-name-for-this
Hunks: make s:source_func local to buffer
2016-01-15 13:16:05 +01:00
Marco Hinz
d85d697b5f Hunks: make s:source_func local to buffer
Prior to this change airline set the function for getting hunks only once,
which works as long as you don't use simlar plugins for different VCS at the
same time.

If that was the case, only one plugin would have won, depending on the first
buffer handled by these plugins. And although the code for the other plugin
was run every time, you would never see the actual line changes, since airline
didn't even bother checking.

Now these plugins can be used side-by-side in the same Vim instance, e.g.
gitgutter for, well, git and signify for the rest.
2016-01-15 13:05:01 +01:00
Christian Brabandt
17f5eaaa6a use wordcount function if available 2016-01-15 12:55:23 +01:00
Bailey Ling
048b24a916 happy 2016! 2016-01-14 21:38:38 -05:00
Bailey Ling
2c613a1746 update maintainers list 2016-01-14 21:36:49 -05:00
Bailey Ling
e53a77b1e6 update readme about maintainers, update badge 2016-01-14 21:01:28 -05:00
Bailey Ling
004c4259a3 Merge pull request #920 from chrisbra/doc-wordcount
adjust default value for wordcount extension
2016-01-14 19:40:00 -05:00
Christian Brabandt
f6fc6419be adjust default value for wordcount extension
document default value for wordcount extension
add text file for wordcount extension
2016-01-14 21:43:45 +01:00
Christian Brabandt
83880b9a1f Merge pull request #919 from mhinz/fix-readme
README updates
2016-01-14 15:04:35 +01:00
Marco Hinz
ae2f3dc6e2 README: add vim-plug to installation section 2016-01-14 13:25:20 +01:00
Marco Hinz
79cdd75a0c README: update URLs to reflect new repo location 2016-01-14 13:23:50 +01:00
Bailey Ling
ca6ab34e3c Merge pull request #910 from chrisbra/fix_908
autochdir is only available with big builds
2016-01-05 22:19:30 -05:00
Christian Brabandt
c1fbea46bc autochdir option is only available in big builds 2016-01-05 11:15:20 +01:00
Bailey Ling
0138313656 Merge pull request #905 from zandrmartin/master
fixed black fg in distinguished theme
2015-12-28 21:16:10 -05:00
Zandr Martin
0931311916 delete screenshot from repo 2015-12-28 17:11:04 -06:00
Zandr Martin
daafeed223 fixed black fg in distinguished theme 2015-12-28 14:47:16 -06:00
Bailey Ling
39810a33dd Merge pull request #904 from zandrmartin/master
add distinguished theme
2015-12-28 15:10:41 -05:00
Bailey Ling
2fbdbc8893 Merge pull request #888 from ohcibi/feature/add-pathshorten-as-long-branch-name-option
Add `pathshorten` as a built-in format for long branch names
2015-12-28 14:56:02 -05:00
Bailey Ling
4791dcac02 Merge pull request #884 from yousong/dconf
init.vim: use %F in section_c if autochdir is set.
2015-12-28 14:51:20 -05:00
Bailey Ling
6a9eb4d915 Merge pull request #883 from somini/wordcount_autocmd
Change format of wordcount
2015-12-28 14:50:20 -05:00
Zandr Martin
4733a92e20 add distinguished theme 2015-12-28 11:39:29 -06:00
Bailey Ling
06f2cb5a89 Merge pull request #900 from heni/fix/ctrlp-link
Change ctrlp link to more correct repository
2015-12-25 10:31:00 -05:00
Eugene Krokhalev
a0c7e1538b Change ctrlp link to more correct repository 2015-12-24 10:15:26 +03:00
Tobias Witt
b48e2390cb Add pathshorten as a built-in format for long branch names 2015-11-19 11:03:54 +01:00
Yousong Zhou
18a19532ea init.vim: use %F in section_c if autochdir is set.
The difference as per documentation of :statusline

    f S   Path to the file in the buffer, as typed or relative to current
	  directory.
    F S   Full path to the file in the buffer.
2015-11-11 12:03:28 +08:00
somini
e0841b10a7 Don't update the word count on select mode
Fixes #868
2015-11-10 20:20:53 +00:00
somini
1c498d1af3 Add format to the wordcount plugin 2015-11-10 20:11:20 +00:00
Dlani Mendes
6a14987276 Base16 True Pallete 2015-10-19 14:44:10 -02:00
Bailey Ling
14d14cf951 Merge pull request #872 from wilywampa/normal_cmd
Change normal command to normal! command
2015-10-18 14:00:34 -04:00
Jacob Niehus
a8d40a1bc3 Change normal command to normal! command 2015-10-16 15:22:53 -07:00
Bailey Ling
8c30610c5f allow wordcount filetypes to be customized. resolves #864. 2015-10-07 20:44:34 -04:00
Bailey Ling
2637e3ee58 fix error from expanding snippets. resolves #862 2015-10-06 14:44:19 -04:00
Bailey Ling
a253b68812 length guard before extracting the word count (#861) 2015-10-06 11:26:36 -04:00
Bailey Ling
e1ffd1cc30 Merge pull request #854 from kazuoteramoto/master
Add check for long lines to extensions#whitespace
2015-10-05 10:49:02 -04:00
Kazuo Teramoto
5c799511c9 Add check for long lines to extensions#whitespace
Check for lines > textwidth, disabled by default.
2015-10-05 11:40:55 -03:00
Bailey Ling
e59c3ecd6e add wordcount extension
resolves #761
2015-10-05 10:18:14 -04:00
Bailey Ling
bb4be0095d add info about theme pull requests 2015-10-05 09:13:57 -04:00
Bailey Ling
543438e482 Merge pull request #844 from actionless/add-term-theme
add 'term' colorschheme
2015-10-05 09:04:42 -04:00
Bailey Ling
8f42044cc9 Merge pull request #822 from thblt/master
Improved documentation on formatters
2015-10-05 08:57:41 -04:00
Bailey Ling
b7a2159128 Merge pull request #815 from chrisbra/disabled
fix disabled bug
2015-10-05 08:51:56 -04:00
Bailey Ling
4b4c70308a Merge pull request #838 from RsrchBoy/topic/capslock
Fix vim-capslock functionality after changes in CapsLockStatusline()
2015-10-05 08:38:49 -04:00
Bailey Ling
2659eafa3a Merge pull request #856 from poppyschmo/bufsweep
Sweep tabline of unlisted buffers on BufLeave
2015-10-05 08:30:53 -04:00
Bailey Ling
cc23d65af7 Merge pull request #832 from oblique/update_behelit
behelit theme: Add color for insert_paste warning
2015-10-05 08:28:55 -04:00
poppyschmo
a58b3cba55 Sweep tabline of unlisted buffers on each BufLeave 2015-09-25 14:11:07 -07:00
actionless
2efa4c0815 add 'term' colorschheme 2015-08-27 19:06:15 +02:00
no-name
3db2b66587 add cool theme 2015-08-20 12:14:50 +08:00
Chris Weyl
022c769494 Fix vim-capslock functionality after changes in CapsLockStatusline()
CapsLockStatusline() used to return '[caps]' when soft-capslock was
on... and now returns '[Caps]'.  As we're just using this to test for
the lock, we lower-case the return value in order to "normalize" the
value across versions.

The change in behaviour can be seen at:

tpope/vim-capslock@3a0f051373
2015-08-19 15:51:09 -07:00
oblique
4bfb57f40d behelit theme: Add color for insert_paste warning 2015-08-11 19:40:04 +03:00
Thibault
92c2ac1c14 Improved documentation on formatters
Explains how unique_tail and unique_tail_improved delegate formatting of already-unique filenames to default.
2015-07-16 18:45:59 +02:00
Christian Brabandt
c761566dcf fix disabled bug 2015-07-10 21:12:30 +02:00
Bailey Ling
cdc6d98a09 Merge pull request #788 from toupeira/patch-1
Remove trailing slashes in unique_tail formatter
2015-07-08 22:28:28 -04:00
Bailey Ling
3942ce6790 Merge pull request #797 from cHoco/master
Tabline: add exclude_preview option to hide preview buffer
2015-07-08 22:22:39 -04:00
Enrico Ghirardi
317e5fa47a Tabline: add exclude_preview option to hide preview buffer 2015-06-28 22:34:37 +02:00
Bailey Ling
78566c37ae Merge pull request #796 from jusga/typos
Fix typos in the documentation
2015-06-28 13:32:49 -04:00
Bailey Ling
9afda181dd Merge pull request #803 from oblique/master
Add behelit theme
2015-06-26 10:34:58 -04:00
oblique
373b83ee58 Add behelit theme 2015-06-25 13:36:18 +03:00
Justin Gassner
efa8edf3ae Fix typos in the documentation 2015-06-14 00:41:36 +02:00
Bailey Ling
b29e01fa22 nr2char only takes 1 parameter in 7.3
addresses regression with #791
2015-06-09 22:08:49 -04:00
Bailey Ling
22b43c909a Merge pull request #791 from 0x0dea/simpler_crypt
Simplify crypt indicator generation
2015-06-09 17:01:12 -04:00
Bailey Ling
a5a88ce662 Merge pull request #784 from NLKNguyen/papercolor_theme
Add papercolor theme
2015-06-09 16:04:26 -04:00
Bailey Ling
14759c1b57 Merge pull request #794 from hpurmann/fix_nvim_key
Add checks for existing key to make #786 work in neovim
2015-06-09 16:00:30 -04:00
Hendrik Purmann
a0110e13bd Add checks for existing key to make #786 work in neovim 2015-06-09 18:19:16 +02:00
D.E. Akers
9837c1e7c8 Simplify crypt indicator generation
nr2char() is a much simpler way to obtain UTF-8 codepoints beyond 0xFFFF.
2015-06-09 10:04:10 -04:00
Bailey Ling
540c148d31 Merge pull request #786 from chrisbra/crypt
Add crypt indicator
2015-06-09 08:46:06 -04:00
Markus Koller
312f847e73 Remove trailing slashes when getting path tail 2015-06-04 18:14:06 +03:00
Christian Brabandt
9d90e2cbfe Add crypt indicator
If editing an encrypted file, add an indicator, that the file is
encrypted
2015-06-02 20:40:19 +02:00
Nguyen Nguyen
7acfcc9aed Add papercolor theme 2015-05-29 23:17:34 -07:00
Bailey Ling
67de5f2257 Merge pull request #776 from jrtc27/master
Added support for Neovim's terminal buffer mode
2015-05-25 21:12:30 -04:00
James Clarke
0b5ef59cf5 Added support for Neovim's terminal buffer mode 2015-05-25 17:10:27 +01:00
Bailey Ling
491b3335cd Merge pull request #763 from h3xx/master
Fix grammatical error in comment
2015-05-19 21:11:48 -04:00
Bailey Ling
1e46a46bb3 Merge pull request #754 from blueyed/hunks-support-quickfixsigns
Support for quickfixsigns in hunks extension
2015-05-19 21:09:42 -04:00
Bailey Ling
673ca1ace2 Merge pull request #759 from DanielFGray/patch-1
use -bar when defining commands
2015-05-19 21:08:25 -04:00
Bailey Ling
3d3c382822 Merge pull request #751 from esmil/master
whitespace: add more lenient mixed whitespace algorithm
2015-05-19 20:54:03 -04:00
Daniel Hahler
f22fbfd41d hunks: add support for quickfixsigns
Closes: https://github.com/bling/vim-airline/pull/754
2015-05-03 19:50:11 +02:00
Dan Church
bb2d6d8436 Fix grammatical error in comment 2015-04-28 12:25:26 -05:00
Daniel Gray
be2ea5d7be use -bar when defining commands
-bar allows the user to chain commands after it
2015-04-24 13:26:44 -05:00
Emil Renner Berthing
e6ca2ac58d whitespace: add more lenient mixed whitespace algorithm 2015-04-14 19:01:08 +02:00
Bailey Ling
f45ecdac15 Merge pull request #736 from lawm/truncate
tabline: add fnametruncate option to truncate long tab/buffer names
2015-03-24 21:45:28 -04:00
Bailey Ling
f1869cc47c Merge pull request #735 from jordwalke/master
Add warnings color for base16 color schemes
2015-03-23 12:22:18 -04:00
Lawrence M
252978e4ac tabline: add fnametruncate option to truncate long tab/buffer names 2015-03-20 16:37:36 -07:00
Jordan W
8d93bc7fd4 Add warnings color for base16 color schemes
This replaces the color-clashing orange default with something more reasonable.
2015-03-20 12:25:07 -07:00
Bailey Ling
5dc0cc5418 allow displayed_head_limit to work alongside format. resolves #729. 2015-03-14 12:26:35 -04:00
Bailey Ling
5e1cc0a28b Merge pull request #728 from w0ng/upstream
Add new theme: hybridline.vim
2015-03-11 23:08:13 -04:00
Bailey Ling
837f53cf79 Merge pull request #724 from ecsousa/ConEmuColors
Dectect when vim.exe is running on ConEmu with 256 colors configured
2015-03-09 19:30:12 -04:00
Andrew Wong
57767cc320 Add new theme: hybridline.vim
update hybridline comment
2015-03-10 02:17:13 +11:00
Eduardo Antunes C. de Sousa
7ea4b510af Dectect when vim.exe is running on ConEmu with 256 colors configured, so
it will use full color scheme.

More information on http://stackoverflow.com/questions/14315519/conemu-vim-syntax-highlight
2015-03-06 11:42:04 -03:00
Bailey Ling
1b8e4b965a fix regressions introduced from recent init changes. resolves #721. 2015-03-03 22:07:55 -05:00
Bailey Ling
77c58de628 add info about g:airline_extensions to readme. 2015-03-01 10:59:53 -05:00
Bailey Ling
96a94d8c3a add option to display both tab number and splits. resolves #440. 2015-03-01 09:56:36 -05:00
Bailey Ling
3635b78448 Merge pull request #722 from lynnard/master
tabline -- added AirlineSelect{NextTab,PrevTab} commands with countable support
2015-03-01 09:34:12 -05:00
Lingnan Dai
661c5fb0c5 tabline -- added AirlineSelect{NextTab,PrevTab} commands with countable support 2015-03-01 00:18:02 +00:00
Bailey Ling
50e47ced42 add g:airline_extensions variable for manual loading 2015-02-28 17:40:23 -05:00
Bailey Ling
51095bad95 fix failing tests 2015-02-27 22:45:12 -05:00
Bailey Ling
ca44fd467c support display only tail end of a branch; as well as custom format
functions. resolves #710.
2015-02-27 22:04:13 -05:00
Bailey Ling
f0492b5aea add basic integration for vim-ctrlspace 2015-02-27 21:44:43 -05:00
Bailey Ling
8aad42644c integration with taboo.vim; resolves #476 and #575. 2015-02-27 21:12:45 -05:00
Bailey Ling
36bc297e60 fix statusline out of sync right after colorscheme change 2015-02-27 09:09:26 -05:00
Bailey Ling
b6e29a8cfb fix durant theme. resolves #704. 2015-02-27 07:35:31 -05:00
Bailey Ling
c78767a564 fix buffer mismatch in certain cases. resolves #715. 2015-02-26 23:08:59 -05:00
Bailey Ling
b08784907a eagerly bootstrap all the variables, but load extensions after vim is
loaded. #720
2015-02-26 16:15:39 -05:00
Bailey Ling
ec18e6639d initialize before VimEnter, resolves #717 and #718.
a lot of users are still using VimEnter instead of the new
AirlineAfterInit, this changes allows those configs to continue working.
2015-02-25 19:31:50 -05:00
Bailey Ling
e2a120869b fix load error for buffer_idx_mode. resolves #711 2015-02-20 19:37:55 -05:00
Bailey Ling
618851188a hide tab type as per documented variable. resolves #667. 2015-02-19 21:33:05 -05:00
Bailey Ling
59752b2659 clean up initialization code 2015-02-19 21:31:06 -05:00
Bailey Ling
5b55dd94f4 Merge pull request #709 from walterl/master
badwolf theme: make inactive status line stand out more
2015-02-19 21:30:26 -05:00
Walter Leibbrandt
83000d9a30 badwolf theme: make inactive status line stand out more - in console vim too. 2015-02-20 02:10:54 +02:00
Walter Leibbrandt
791de5a34d badwolf theme: make inactive status line stand out more 2015-02-19 16:00:25 +02:00
Bailey Ling
63e309130a account for possibility of uninitialized variable 2015-02-19 07:09:24 -05:00
Bailey Ling
7394642293 extract buffers view mode into its own file 2015-02-18 21:56:16 -05:00
Bailey Ling
987306dcaf extract tabs view mode to its own file 2015-02-18 21:56:15 -05:00
Bailey Ling
6f9d92df7c extract autoshow logic to its own file 2015-02-18 21:56:15 -05:00
Bailey Ling
8693a525b9 extract buffer listing to its own file 2015-02-18 21:56:15 -05:00
Bailey Ling
3add7b265a Merge pull request #705 from ClaudiaJ/master
Add support for 24-bit colors with +termtruecolor flag
2015-02-18 21:55:09 -05:00
Bailey Ling
065b141033 Merge pull request #703 from kmARC11/master
Base16 color fixes to resemble gui
2015-02-18 21:53:28 -05:00
Claudia Hardman
ac58bc9954 Add support for 24-bit colors with +termtruecolor flag 2015-02-16 12:00:52 -05:00
Bailey Ling
ca925efdbf move formatters into their own namespace 2015-02-13 21:50:18 -05:00
Bailey Ling
1ca6ffb6d0 happy 2015
resolves #692.
2015-02-13 21:47:43 -05:00
Bailey Ling
6efde428c6 turn on deprecation check 2015-02-13 21:47:43 -05:00
Mark Korondi
f9b5611ac8 Unnecessary newline removed 2015-02-14 00:43:01 +01:00
Mark Korondi
f820a7eb95 Base16 color fixes to resemble gui 2015-02-14 00:37:17 +01:00
Bailey Ling
1e35ad5d77 Merge pull request #701 from blueyed/fix-get_buffer_list-cache-2
Fix get_buffer_list cache 2
2015-02-11 07:27:27 -05:00
Daniel Hahler
98c2dbd04e tabline: fix cache invalidation for show_buffers=1 with :bd
Ref: https://github.com/bling/vim-airline/pull/700#issuecomment-73798679
2015-02-11 02:48:25 +01:00
Bailey Ling
b6accd91c8 Merge pull request #700 from blueyed/fix-get_buffer_list-cache
Fix get_buffer_list cache regression
2015-02-10 09:15:54 -05:00
Daniel Hahler
3c1295bb71 tabline: fix s:current_buffer_list invalidation
Use `s:current_buffer_list` always in `s:get_buffer_list()`, and
invalidate it via BufAdd and BufUnload.

Fixes regression from ce58af7191 (commitcomment-9647487).
2015-02-09 17:44:13 +01:00
Bailey Ling
925147baef add :Helptags to readme for pathogen. resolves #699. 2015-02-07 12:07:31 -05:00
Bailey Ling
7bc939bee9 Merge pull request #698 from blueyed/fix-cache-with-get_buffer_name
Fix get_buffer_list being called always via get()
2015-02-07 12:03:14 -05:00
Daniel Hahler
ce58af7191 Fix get_buffer_list being called always via get()
Vim's `get()` calls the expression for `{default}` always, not only if
the default is going to be used!

This caused `airline#extensions#tabline#get_buffer_name` to not use the
cached value.

Fixes https://github.com/bling/vim-airline/issues/697.
2015-02-07 15:38:02 +01:00
Bailey Ling
446397e006 Merge pull request #688 from changyuheng/pr-column-number
Replace column number with virtual column number
2015-01-31 13:21:26 -05:00
Bailey Ling
462ee313e7 use util getwinvar helper function 2015-01-31 12:38:46 -05:00
Bailey Ling
b55b526c65 Merge pull request #689 from chrisbra/disable
selectively disable airline for selected windows
2015-01-31 12:36:54 -05:00
Christian Brabandt
3acea37fdc selectively disable airline for selected windows
(make it work with Vim 7.3)
2015-01-23 22:45:44 +01:00
Chang Yu-heng
6d7996ff1b Replace column number with virtual column number 2015-01-19 00:04:26 +08:00
Bailey Ling
13ee9f456a address syntax errors
resolves #683
2015-01-03 19:38:17 -05:00
Bailey Ling
1fd9886219 Merge pull request #680 from psychomario/show-tabs
Added tabline#show_tabs to disable tab bar
2015-01-01 10:18:48 -05:00
PsychoMario
527e6661e6 added tabline#show_tabs to disable tab bar 2014-12-26 21:48:06 +00:00
Bailey Ling
6387268f13 Merge pull request #673 from lynnard/master
fixed bug with excludes for buffers
2014-12-23 16:40:19 -08:00
Lingnan Dai
dd587883eb fixed bug with excludes for buffers 2014-12-18 12:46:35 +00:00
Bailey Ling
401ce611c6 Merge pull request #651 from chenaren/byfname
Show the byfname toggle in status line of CtrlP
2014-12-09 22:25:41 -05:00
Bailey Ling
317fcfd295 Merge pull request #666 from blueyed/no-ft-override-for-diff
Remove 'diff' from s:filetype_overrides
2014-12-09 22:22:34 -05:00
Daniel Hahler
9650024142 Remove 'diff' from s:filetype_overrides
I would like to see the normal statusline (i.e. file name) with
diff/patch files, too.
2014-12-02 16:11:16 +01:00
Bailey Ling
4a2208821e Merge pull request #656 from michamos/patch-1
Improve Quickfix window detection
2014-11-26 09:17:42 -05:00
Bailey Ling
a323b5ba3d Merge pull request #657 from michamos/master
Add vim-plug override
2014-11-25 21:11:42 -05:00
Bailey Ling
6b4f03efbc fix seperator drawing when tabs are shown. fixes #653. 2014-11-25 21:04:18 -05:00
Micha Moskovic
96afdbc877 Add vim-plug override 2014-11-25 16:49:43 +01:00
Micha Moskovic
4c22406e28 Improve Quickfix window detection
When using a non-english locale, the name of the Quickfix window can change, making the detection of Quickfix vs Location list fail.
E.g., my locale is set to italian and the Quickfix window's name is `[Lista Quickfix]` rather than `[Quickfix List]`.
This change generalizes the pattern used to detect the Quickfix window.
2014-11-25 16:32:46 +01:00
Bailey Ling
15666d71e3 Merge pull request #652 from chenaren/venv_fallback
Add simple virtualenv fallback when vim-virtualenv is not presented
2014-11-22 10:59:01 -05:00
Kevin Chen
4878fab120 Add a virtualenv fallback when vim-virtualenv is not presented 2014-11-21 23:39:39 +08:00
Bailey Ling
eb04e25d34 Merge pull request #650 from chenaren/master
Add CtrlP style to Bubblegum
2014-11-21 09:37:14 -05:00
Kevin Chen
b4c8d43e85 Add CtrlP style to the Bubblegum theme 2014-11-20 21:27:26 +08:00
Kevin Chen
038c000f91 Show the byfname toggle in status line 2014-11-20 21:23:25 +08:00
Bailey Ling
411ae84890 Merge pull request #643 from maek/master
Improve tabline + buffer_min_count behaviour
2014-11-15 16:31:53 -05:00
Bailey Ling
d003b2450a Merge pull request #547 from kdurant/master
Create durant.vim
2014-11-15 14:52:50 -05:00
Bailey Ling
09817e0984 fix regression with serene theme, #599 2014-11-15 19:49:02 +00:00
maek
f8645fb654 Improve tabline + buffer_min_count behaviour
Use BufEnter and BufUnload in place of CursorMoved.

Fixes #479
2014-11-10 15:30:44 +01:00
Bailey Ling
be6e4d6dd6 check background of groups to determine transition. resolves #599. 2014-11-09 00:52:42 -05:00
Bailey Ling
727192ad6a refactor builder and reduce state across multiple calls 2014-11-04 14:49:02 -05:00
Bailey Ling
256dec6800 detect changes to tabline config variables after init. resolves #636 2014-11-04 14:48:00 -05:00
Bailey Ling
246c217562 Merge pull request #631 from rkannan82/master
Display warnings only when there are no errors messages.
2014-10-27 21:58:13 -04:00
Bailey Ling
3e0b5474b1 Merge pull request #628 from freeo/master
Theme kalisi: Added 256 term colors and several changes
2014-10-27 21:11:11 -04:00
Kannan Rajah
328016ce85 Exclude INFO from error/warning count.
Eclim uses signs for code reference searches and they shows up as INFO
signs. These are not errors/warnings and hence should not be included in
count.

Testing:
Verified the right count shows up.
2014-10-26 10:14:13 -07:00
Asa Jay
82a4ebb56c Theme kalisi: Added 256 term colors, several changes
Changed insert mode color 3
Changed tabline modified
Changed inactive modfied statusline
Refined visual and replace mode colors
2014-10-26 14:08:21 +01:00
Bailey Ling
64b9ae176d Merge pull request #618 from rkannan82/master
Display warnings only when there are no errors messages.
2014-10-25 22:57:45 -04:00
Bailey Ling
616daceb73 add small section about performance to readme 2014-10-18 11:45:09 -04:00
Bailey Ling
37ddb6e7da Merge pull request #622 from spacelis/master
Make tabline's left separators customizable as right separathers.
2014-10-18 11:37:55 -04:00
wangjun
78c3cd9bba Update durant.vim
remove comments
2014-10-17 14:40:42 +08:00
Bailey Ling
c85ce909df Merge pull request #619 from bchretien/master
themes: fix GUI murmur theme.
2014-10-15 21:12:15 -04:00
wenli
7c4bf0aba6 Make tabline's left separators customizable as right separathers. 2014-10-15 22:32:00 +02:00
Benjamin Chrétien
23b452d1ae themes: fix GUI murmur theme. 2014-10-14 00:17:45 +02:00
Kannan Rajah
84c242a27d Display warnings only when there are no errors messages.
In large code base, typically there will lot of warnings because the
file has been changed by many people and not everyone bothered to follow
coding conventions. So its more useful to show the errors first. Once
all errors have been fixed, we can focus on warnings.
2014-10-12 17:38:06 -07:00
Bailey Ling
0bc3a21116 Merge pull request #614 from Pychimp/two-themes
Update raven.vim
2014-10-05 18:13:08 -04:00
Pratheek
258817ff38 Update raven.vim
- Fixed the incorrect cterm background value for airline_warning
2014-10-05 20:05:17 +05:30
Bailey Ling
53e765a49d Merge pull request #582 from Pychimp/two-themes
Added two themes
2014-10-05 08:30:32 -04:00
Bailey Ling
51c788a37b Merge pull request #613 from meonkeys/patch-1
README: fix link to powerline font install docs
2014-10-05 08:29:26 -04:00
Pychimp
b16870fbf9 Added theme support for console vim
- Both themes (raven and silver) have been updated
2014-10-05 15:05:47 +05:30
Adam Monsen
6feec73d14 README: fix link to powerline font install docs 2014-10-04 20:35:10 -07:00
Bailey Ling
825a048b10 Merge pull request #603 from kballard/part_condition_special_char
Handle special characters in part conditions
2014-09-22 22:36:04 -04:00
Kevin Ballard
908f031f42 Handle special characters in part conditions 2014-09-22 01:44:23 -07:00
Bailey Ling
4dab93470f improve buffer index mode and fix usages where there's overflow 2014-09-17 09:52:08 -04:00
Bailey Ling
8421f03178 Merge pull request #598 from wesQ3/pr
Added extension for wesQ3/vim-windowswap
2014-09-15 12:31:33 -04:00
Bailey Ling
50c9ea89a5 Merge pull request #589 from paulhybryant/master
Minor enhancement for tabline
2014-09-15 12:30:08 -04:00
Yu Huang
ae472d6716 Add buffer_idx_mode to vim-airline.
Update documentation.
Keep buffer index-id map a script scope variable.
2014-09-14 18:58:20 -07:00
Bailey Ling
3eef719c4d Merge pull request #595 from mseabold/upstream
Tabline: Highlight unselected modified buffer
2014-09-11 22:40:39 -04:00
Wes Malone
d6475684b7 add windowswap extension 2014-09-10 19:05:42 -05:00
Matt Seabold
a5e5d8ab4f Tabline protect against missing palletes
If normal_modified or normal_modified.airline_c aren't present, fallback
to the default normal.airline_c.
2014-09-08 09:43:15 -04:00
Bailey Ling
3f3ae446e1 Merge pull request #591 from igorpetrovcom/tabline-close-button-flag
Show/hide setting for close button in tabline
2014-09-07 11:17:32 -04:00
Matt Seabold
bfd160a08b Tabline: Highlight unselected modified buffer
Use the modified airline_c color on unselected modified buffers in order
to highlight them as modified while unselected.
2014-09-04 15:51:40 -04:00
Igor Petrov
6e5865473c Tabline close button flag added 2014-09-04 02:48:48 +04:00
Bailey Ling
310331cfc4 Merge pull request #586 from blueyed/readonly-for-nomodifiable
Add `readonly` indicator also for &nomodifiable
2014-08-29 22:09:55 -04:00
Daniel Hahler
7c65176499 Add readonly indicator also for !&modifiable
While typically both are set (e.g. with `:help`), I am using the
modifiable setting alone to prevent editing of some files via an
autocommand (`*.css`, if `*.scss` exists).

I can also set `readonly` for this buffer, but that gets reset when
reloading the buffer, which is not the case for `modifiable`.
2014-08-28 00:23:59 +02:00
Bailey Ling
ad19d1a10f Merge pull request #577 from qstrahl/master
Don't wipe out b:airline_head if fugitive finds the head
2014-08-25 20:48:18 -04:00
Quinn Strahl
30df99a681 Don't wipe out b:airline_head if fugitive finds the head
- Fugitive can edit virtual files that represent objects in git; while
  editing these files, it still reports on the HEAD of the relevant
  repo, which should be displayed as the branch (rather than having the
  branch section disappear)
2014-08-25 09:51:52 -04:00
Pychimp
47fd63586c Added two themes
- Raven (for Dark colorschemes)
- Silver (for Light colorschemes)
2014-08-24 13:20:19 +05:30
Bailey Ling
f17927053e Merge pull request #580 from andrewgregory/detached_head
use commit hash as git branch with detached HEAD
2014-08-22 15:39:06 -04:00
Andrew Gregory
83a7e30790 use commit hash as git branch with detached HEAD
Abbreviated to 7 characters to match `git rev-parse --short HEAD`.
2014-08-20 18:59:15 -04:00
Bailey Ling
f0e00620c0 Merge pull request #576 from qstrahl/master
Preserve section c text for inactive windows
2014-08-15 22:37:44 -04:00
Quinn Strahl
ed180fda62 Preserve section c text for inactive windows
- Closes #573
2014-08-15 15:44:18 -04:00
Bailey Ling
00e4b68ee6 Merge pull request #571 from perkint/perkint-tabline-refresh
bugfix for a tabline refresh problem
2014-08-15 13:49:29 -04:00
perkint
0349f85ab0 bugfix for a tabline refresh problem 2014-08-12 17:26:52 -07:00
Bailey Ling
2114e70251 Merge pull request #564 from freeo/master
Improved my theme kalisi
2014-08-01 22:35:41 -04:00
Asa Jay
ac08bbcf26 Added CtrlP support, refined visual and replace mode colors. 2014-07-30 22:38:17 +02:00
Bailey Ling
e10ef2fb25 also redraw the statusline for :AirlineRefresh (for #563) 2014-07-30 15:29:43 -04:00
Bailey Ling
9a1dff320d Merge pull request #559 from Wraul/feature_capslock
Added extension for tpope/vim-capslock
2014-07-30 13:14:27 -04:00
Mathias Andersson
faa15c136c Added extension for tpope/vim-capslock 2014-07-29 00:55:53 +02:00
Bailey Ling
936e2b6a66 Merge pull request #549 from sunaku/cterm-reverse
cterm=reverse not honored; only term=reverse was
2014-06-29 12:18:19 -04:00
Suraj N. Kurapati
bd7220cb5b cterm=reverse not honored; only term=reverse was
This patch makes Airline honor the `cterm=reverse` syntax attribute.
2014-06-29 06:33:42 -07:00
kdurant
ea828c5a6a Create durant.vim
add airline scheme
2014-06-25 12:54:07 +08:00
Bailey Ling
3ab1bb7eb0 Merge pull request #527 from zdm/master
Always use absolute file path when comparing buffers names
2014-05-31 12:08:11 -04:00
Bailey Ling
c5a404bd62 Merge pull request #531 from chrisbra/add_changes_plugin
integrate changesPlugin for displaying hunks
2014-05-28 10:59:27 -04:00
Christian Brabandt
f2ae2bd7d0 integrate changesPlugin for displaying hunks 2014-05-27 20:22:59 +02:00
zdm
45cab177ef always use absolute file path when comparing buffers names 2014-05-22 12:29:35 +03:00
Bailey Ling
44bf6fd1c5 Merge pull request #526 from bennidhamma/master
Fix #462 - Configurable head limit.
2014-05-22 00:03:32 -04:00
Ben Joldersma
4f904ab0d4 Fix #462 - Configurable head limit. 2014-05-21 10:41:53 -07:00
Bailey Ling
bfcece76c9 add readonly mode so it can be themed independently. resolves #510 2014-05-10 14:41:21 +00:00
Bailey Ling
c5347b2f03 Merge pull request #503 from saamalik/patch-1
Fix #456 Status line text color too dim for inactive windows
2014-05-05 00:34:06 -04:00
Saad Malik
99a4b38732 Fix #456
Fix for #456 Status line text color too dim for inactive windows.
2014-05-04 12:58:04 -07:00
Bailey Ling
7b56fbdd29 Merge pull request #500 from chrisbra/updated_nrrwrgn
updated nrrwrgn integration
2014-05-03 10:47:58 -04:00
Christian Brabandt
534d8e844b updated nrrwrgn integration 2014-05-03 14:16:50 +02:00
Bailey Ling
db0ea7a970 Merge pull request #499 from steve0hh/patch-1
Update README.md vundle installation instructions
2014-04-26 11:33:06 -04:00
steve
5ff2b4b2f5 Update README.md vundle installation instructions
[vundle is undergoing interface changes](https://github.com/gmarik/Vundle.vim/blob/master/doc/vundle.txt#L372-L396)
2014-04-26 14:28:28 +08:00
Bailey Ling
3267c74a55 Merge pull request #498 from lumbric/master
fix minor typo in help text
2014-04-25 15:57:16 -04:00
Peter Regner
7bd40715d4 fix minor typo in help text 2014-04-25 18:28:49 +02:00
Bailey Ling
a222518b76 Merge pull request #497 from johnathanz/master
doesn't assume user has 'set autochdir' set
2014-04-23 21:11:33 -04:00
Bailey Ling
7372806f1d Merge pull request #496 from chrisbra/new_feature_nrrwrgn
new NrrwRgn integration
2014-04-23 19:50:04 -04:00
Johnathan
9e8fe7a98e doesn't assume user has 'set autochdir' set 2014-04-24 03:03:03 +10:00
Christian Brabandt
a90a39b4aa new NrrwRgn integration 2014-04-23 01:23:42 +02:00
Bailey Ling
81430cbdf6 append to the existing value in case the user defined it. 2014-04-20 14:52:06 +00:00
Bailey Ling
7560204212 Merge pull request #493 from chrisbra/master
Enable :AirlineToggleWhitespace,
2014-04-20 10:05:36 -04:00
Christian Brabandt
931367d9fb Enable :AirlineToggleWhitespace,
even if g:airline#extensions#whitespace#enabled is disabled
2014-04-20 00:39:43 +02:00
Bailey Ling
fafb9ea76e provide option to disable runtimepath extension loading. resolves #483 2014-04-19 14:38:02 -04:00
Bailey Ling
e49eac95a3 add support for configurable whitespace checking algorithms and default it to the simplest one. resolves #484 2014-04-19 14:27:14 -04:00
Bailey Ling
abee990d30 handle cases where the augroup has not be defined yet. resolves #492 2014-04-19 14:16:36 -04:00
Bailey Ling
66d0a47f37 Merge pull request #478 from davits/mixed_indent
Improvements in whitespace plugin
2014-04-05 16:56:02 -04:00
Davit Samvelyan
7b0d80050a Now trailing tabs are also reported, fixed bug when trailings with mixed tabs and spaces were being reported as mixed indents, case when count of spaces at the end of tabbed indentation less then tabstop does not reported as mixed indent anymore. 2014-04-05 16:41:27 +05:00
Bailey Ling
a37f0b9ae0 restore original directory change detection. also resolves #474. 2014-04-03 00:54:43 +00:00
Bailey Ling
d111e4edb3 remove usage of fugitive#detect as per request
https://github.com/tpope/vim-fugitive/issues/463
2014-04-01 16:45:06 -04:00
Bailey Ling
c374af183a Merge pull request #469 from russellhancox/patch-1
Save branch head to a buffer variable
2014-03-31 07:53:11 -04:00
Russell Hancox
13297cee03 Add CursorHold autocmd to unset airline_head 2014-03-28 10:53:13 -04:00
Russell Hancox
25059d43b1 Save branch head to a buffer variable
Save branch head to a buffer-local variable to prevent looking up the VCS head for every status line refresh.
2014-03-24 14:01:31 -04:00
Bailey Ling
5a2daf6dfb Merge pull request #468 from Pychimp/master
Fixes incorrect fg value in visual modified
2014-03-22 17:27:57 -04:00
Pychimp
496ba60984 Fixes incorrect fg value in visual modified
- changes it from white (hard to read) to dark grey-ish (easier to read)
2014-03-23 00:38:28 +05:30
Bailey Ling
42a4590948 Merge pull request #467 from xinleibird/master
filter() result error
2014-03-22 11:48:17 -04:00
xinleibird
3c66f13b9a My fault, it's a transferred error, add a '\' that' works fine. 2014-03-22 16:16:27 +08:00
xinleibird
3bde2fabd1 filter() result error 2014-03-22 14:41:48 +08:00
Bailey Ling
ab92a95969 Merge pull request #442 from blueyed/doc
Minor doc fixes
2014-03-21 23:54:30 -04:00
Bailey Ling
9291968b94 Merge pull request #466 from Pychimp/master
Improvements to Sol and Luna themes
2014-03-21 23:48:07 -04:00
Bailey Ling
9cb7366128 Merge pull request #464 from emilyst/customize-tabline-close-and-type
Customizes tabline appearance: type, close button
2014-03-21 23:47:21 -04:00
Pychimp
5a3e8852bd Improve colour highlights
- Sol: Used a less distracting color to show a modified file/buffer
- Sol: Similar change as above, to tabline as well
- Sol: Warning colour imporved (Previously was some bad shade of magenta)
- Sol: All the Above mentioned changes replicated for CTERM values as well
--------------------------------------------------------------------------
- Luna: `Inactive Modified` colour is improved (Was a shade of red
                                                that was hard to read)
2014-03-21 00:33:26 +05:30
Emily St
f196ea1f36 Customizes tabline appearance: type, close button
This commit adds a couple of new settings so that it's possible to hide
the tab type (all the way to the right) and the symbol which represents
the close button.

The settings and their defaults:

let g:airline#extensions#tabline#show_tab_type = 1
let g:airline#extensions#tabline#close_symbol = 'X'
2014-03-19 13:46:44 -07:00
Bailey Ling
799e5e028f Merge pull request #455 from taketwo/fix-empty-key-error
Fix "Cannot use empty key for Dictionary" error
2014-03-10 08:15:17 -04:00
Sergey Alexandrov
4a76132cbe Fix "Cannot use empty key for Dictionary" error
This commit resolves compatibility issue with fugitive plugin. When
using "Gdiff" command on some file, fugitive attempts to open the
current and the index version of the file. For example, if the file is

    /home/taketwo/path/to/the/project/README.md

then fugitive will use the following path to open the index version:

    fugitive:///home/taketwo/path/to/the/project/.git//0/README.md

Opening this file leads to a cascade of errors like this:

    Error detected while processing function
    airline#extensions#tabline#get..<SNR>162_get_buffers..<SNR>162_get_visible_buffers..airline#extensions#tabline#get_buffer_name..airline#extensions#tabline#unique_tail_improved#format:
    line   20:
    E713: Cannot use empty key for Dictionary

The problem is that when a filename like this is being tokenized, there
appear empty "" tokens, and an error occurs when using them as keys in
`path_tokens[token_index]` dictionary. This fix simply skips empty
tokens.
2014-03-10 12:27:22 +01:00
Bailey Ling
d99112d6c6 improve whitespace detection. resolves #452. 2014-03-09 21:58:42 -04:00
Evgeni Kolev
7857cc2345 Merge pull request #410 from coven/master
Branch extension bugs. Fix #444
2014-03-01 08:39:05 +02:00
Bailey Ling
9aea79bb99 Merge pull request #404 from blueyed/solarized-inactive-like-vertsplit
solarized: use VertSplit bg for inactive statusline
2014-02-27 22:02:35 -05:00
Bailey Ling
942c6ae382 reset current buffer when one gets deleted. resolves #399 2014-02-25 20:34:52 -05:00
Paweł Więcek
63f811e15c Enable branch extension when vcscommand is available 2014-02-25 22:43:19 +01:00
Paweł Więcek
5e25794d4b Correctly detect mercurial repos using lawrencium 2014-02-25 22:36:36 +01:00
Bailey Ling
6aac1b469d Merge pull request #441 from blueyed/tagbar_once_per_second
tagbar: only lookup tag once every second
2014-02-19 22:21:42 -05:00
Daniel Hahler
a6e304e07c minor doc fix: s/various some/various/ 2014-02-20 00:30:56 +01:00
Daniel Hahler
ffbbaa769a Clarify doc for loading custom extensions 2014-02-20 00:30:16 +01:00
Daniel Hahler
2dc416aa8f tagbar: only lookup tag once every second
This makes scrolling (holding done j/k) much smoother, and the current
tag gets pulled in via CursorHold anyway.

Fixes https://github.com/bling/vim-airline/issues/387
2014-02-20 00:06:04 +01:00
Bailey Ling
dbd6c4a71a Merge pull request #434 from yasuoza/hybrid-theme
Add new color theme: hybrid
2014-02-14 20:14:26 -05:00
Yasuharu Ozaki
0f091db08f Add new color theme: hybrid 2014-02-14 21:59:31 +09:00
Bailey Ling
b45ab384ee Merge pull request #428 from eyetracker/master
Added new color theme: Kalisi
2014-02-06 07:04:52 -05:00
Asa Jay
82efa95d94 Added new color theme: Kalisi 2014-02-06 00:25:19 +01:00
Daniel Hahler
3e044418a3 Revert changes to s:NM, add s:NMi for inactive windows 2014-01-26 12:04:30 +01:00
Bailey Ling
fae68dbcb7 account for possibilty of branch extension unavailable. resolves #419. 2014-01-20 12:39:33 -05:00
Bailey Ling
baed8ac063 happy 2014 2014-01-19 23:44:44 -05:00
Bailey Ling
ac798b0106 Merge pull request #418 from ralesi/netrw
Add deeper netrw support, including Git branch head and netrw sorting
2014-01-19 20:38:05 -08:00
ralesi
75ee42b118 Add deeper netrw support, including Git branch head and netrw sorting
options
2014-01-19 12:06:55 -07:00
Bailey Ling
b7c88b40aa Merge pull request #413 from ralesi/patch-1
Allow changes to airline_symbols.branch after init
2014-01-16 18:54:24 -08:00
Bailey Ling
4ca48ba6e2 Merge pull request #412 from gabriellim/patch-1
Minor spelling
2014-01-16 18:54:05 -08:00
Rich Alesi
6141a59278 Allow changes to airline_symbols.branch after init
If the user updates the airline_symbols.branch variable later in the vimrc, the value will not update after the initial init.  Since these variables are only used in the get_head() function, I moved them locally within the function to allow evaluation on each instance.
2014-01-15 21:31:07 -07:00
gabriellim
c638affe4f Minor spelling
5th bullet point in Features section had the word "colorschemes"

Proposed fix: color schemes
2014-01-14 23:24:29 -08:00
Bailey Ling
5f1c24528c Merge pull request #402 from edkolev/prompt-extension
Prompt extension
2014-01-10 17:53:42 -08:00
Daniel Hahler
41a148f1e6 solarized: use VertSplit bg for inactive statusline
Adjust foreground color accordingly, also for non-active modified
filename (to stand out).
2014-01-10 22:47:33 +01:00
Evgeni Kolev
1c41ce53d9 Add promptline.vim extension 2014-01-10 22:14:21 +02:00
Bailey Ling
7a1801e9c4 Merge pull request #396 from gstewart/master
Fixed modified tab/buffer not updating in tabline
2014-01-01 20:48:52 -08:00
gstewart
48f762e312 Fixed modified tab/buffer not updating in tabline 2013-12-31 17:38:16 -08:00
Bailey Ling
576d1de716 Merge pull request #394 from f/patch-1
tagbar link fixed
2013-12-28 17:48:32 -08:00
Fatih Kadir AKIN
4345a6b29a tagbar link fixed
tagbar link was going to user's url.
2013-12-29 03:19:24 +02:00
Bailey Ling
1a6c84b00a Merge pull request #388 from zdm/master
Supress tab numbers and improved uniq_tail formatter
2013-12-26 12:32:41 -08:00
zdm
225098475a docs updated 2013-12-26 08:16:30 +02:00
zdm
19861d0514 docs updated 2013-12-23 07:58:24 +02:00
zdm
50fd649110 docs updated, formatters moved to separate filenames 2013-12-23 07:41:24 +02:00
zdm
6c79004aaa show tab nr condition moved to right place 2013-12-22 05:32:06 +02:00
zdm
0714c35547 add skipped symbol fix 2013-12-22 05:17:01 +02:00
zdm
f6133e4fa1 dos path fixed 2013-12-22 04:03:07 +02:00
zdm
43c1636e36 windows path replaced 2013-12-22 03:49:30 +02:00
zdm
8d7c2ad830 uniq_tail improved formatter added 2013-12-22 02:27:42 +02:00
Bailey Ling
233e3c60ce improve performance when showing tabs in the tabline (#326). 2013-12-16 00:27:18 -05:00
Bailey Ling
df2f33d6a5 specify maximum for whitespace checking. resolves #378. 2013-12-13 16:38:32 -05:00
Bailey Ling
739a275d5d Merge pull request #379 from phy1729/master
Add comment on 'laststatus' to the README
2013-12-13 13:19:20 -08:00
Bailey Ling
414f43812a Merge pull request #380 from zeis/master
Add kolor theme
2013-12-13 13:18:05 -08:00
Alessandro Di Martino
7c10cfa73e Improve some colors 2013-12-13 21:50:00 +01:00
Alessandro Di Martino
285b4da3e5 Add kolor theme 2013-12-13 17:40:52 +01:00
Matthew Martin
ad1b23e8c3 Add comment on 'laststatus' to the README
Judging from #vim activity, few read the help all the way to the FAQs.
2013-12-13 08:57:58 -06:00
Bailey Ling
9039793343 Merge pull request #377 from blueyed/eclim-filter-signs
eclim: only consider signs placed by eclim
2013-12-11 11:48:46 -08:00
Daniel Hahler
ba899b2dde eclim: only consider signs placed by eclim
Ref: https://github.com/bling/vim-airline/pull/293
2013-12-11 09:40:50 +01:00
Bailey Ling
87951ba090 Merge pull request #375 from qstrahl/master
Correct quickfix window detection pattern
2013-12-09 17:37:39 -08:00
Quinn Strahl
fdc847c8da Correct quickfix window detection pattern 2013-12-09 15:05:10 -05:00
Bailey Ling
ce32405105 fix possibility of the branch extension being unavailable. resolves #366. 2013-12-03 20:01:26 -05:00
Bailey Ling
0966b693d9 expose cleaner api to determine empty head. 2013-12-03 05:32:54 +00:00
Bailey Ling
ed7111b1ff Merge pull request #364 from dmitrykruglov/master
Hide hunks when Git Gutter is enabled, but current file is NOT under git...
2013-12-02 21:15:40 -08:00
Dmitry Kruglov
08a57d0227 Hide hunks when Git Gutter is enabled, but current file is NOT under git version control 2013-12-02 17:29:04 -08:00
Bailey Ling
ce15809db3 improve tabline performance during scroll (#362). 2013-12-02 03:00:31 +00:00
Bailey Ling
7baedbacc0 Merge pull request #347 from edkolev/tmuxline-extension
Add tmuxline extension
2013-11-23 05:19:37 -08:00
Evgeni Kolev
63272a08ae Add tmuxline extension 2013-11-23 11:10:11 +02:00
Bailey Ling
253974506a disable vcscommand integration by default. resolves #340. 2013-11-12 09:45:04 -05:00
Bailey Ling
f2f164bda1 evaluate line number symbol. resolves #336. 2013-11-10 16:04:03 -05:00
Bailey Ling
02441be0e1 Merge pull request #335 from dzderic/master
Use VCSCommand to display revision if available
2013-11-08 05:29:40 -08:00
David Zderic
2e8f99d39b Use VCSCommand to display revision if available 2013-11-08 10:39:00 +11:00
Bailey Ling
3c9f8bb979 document section layout ordering (#164). 2013-11-03 23:14:10 -05:00
Bailey Ling
31f36740c8 look up whitespace checks all the time. resolves #330. 2013-11-03 14:03:52 -05:00
Bailey Ling
aef500c426 Merge pull request #328 from mikkeloscar/master
Adds userdefined space in tabline, workaround for #327
2013-11-02 21:13:12 -07:00
Mikkel Oscar Lyderik
47acdcb92c adds userdefined space in tabline
workaround for #327
2013-11-02 22:46:36 +01:00
Bailey Ling
99b7cdf334 improve performance with accent cache (#326). 2013-11-01 00:58:08 -04:00
Bailey Ling
de1d1e365e Merge pull request #321 from tommcdo/master
Fix typo in help
2013-10-21 14:14:26 -07:00
Tom McDonald
11950b0298 Fix typo in help
Help tag used underscore instead of hyphen.
2013-10-21 16:53:48 -04:00
Bailey Ling
c4c4be836e implement new unique_tail formatter. resolves #230. 2013-10-21 14:25:21 -04:00
Bailey Ling
dd2be8ac8d detect whether quickfix or location list is open. 2013-10-21 13:22:07 -04:00
Bailey Ling
592cc412cf fix and improve airline toggling functionality. 2013-10-13 18:01:38 -04:00
Bailey Ling
778c0f59ca Merge pull request #313 from edkolev/master
AirlineToggle should also toggle the tabline
2013-10-13 12:03:18 -07:00
Evgeni Kolev
382c000958 AirlineToggle should also toggle the tabline 2013-10-13 16:44:36 +03:00
Bailey Ling
5976cf3a48 a min tab count of 1 is the same as always showing (#304). 2013-10-08 13:05:43 -04:00
Bailey Ling
00cd0be601 fix detection of tab count. resolves #304. 2013-10-08 10:00:29 -04:00
Bailey Ling
047e40a3e1 update readme with link to sample accent configuration. 2013-10-08 09:48:06 -04:00
Bailey Ling
9e53c2c155 add more documentation about accents. resolves #299. 2013-10-06 09:22:33 -04:00
Bailey Ling
491091706f add guard for possible undefined window context (#276). 2013-10-06 09:03:47 -04:00
Bailey Ling
af330f6a47 add AirlineRefresh command. 2013-10-06 09:01:01 -04:00
Bailey Ling
a75f91baba fix luna ctrlp theming. 2013-10-06 08:50:04 -04:00
Bailey Ling
fda5be77cd Merge pull request #301 from jonathanfilip/master
Added lucius.vim to airline themes
2013-10-06 05:46:48 -07:00
U-jfilippc\jfilip
6de7c3e0fe Added lucius.vim to airline themes 2013-10-05 23:25:30 -05:00
Bailey Ling
dd967eee4d Merge pull request #298 from Pychimp/master
Spelling mistake in documentation
2013-10-05 11:48:46 -07:00
Pychimp
ccccb87671 Spelling mistake in documentation
spelling error was present in *airline-eclim* part,
integratino -> integration
2013-10-05 14:23:53 -04:00
Bailey Ling
f26c7d4143 echo warning message if duplicate statusline func gets added. 2013-10-04 10:27:49 -04:00
Bailey Ling
008eb8cd3b Merge pull request #296 from xinleibird/project_tree
Add a simple eclim's ProjectTree status line
2013-10-02 11:21:15 -07:00
xinleibird
fc6c9120e4 Add a simple eclim's ProjectTree status line 2013-10-03 00:07:57 +08:00
Bailey Ling
a8c96b6020 parse out submodule path when not in a .git directory (#273). 2013-10-02 10:18:33 -04:00
Bailey Ling
d0c6ca4577 Merge pull request #295 from xinleibird/eclim
Fix a wrong determines order name.
2013-10-02 06:28:34 -07:00
xinleibird
47ecfff9b8 Fix a wrong determines order name. It should be ':SyntasticCheck' not ':SyntasticStatuslineFlag'. 2013-10-02 13:50:04 +08:00
Bailey Ling
2735282992 account for different git submodule format. resolves #273. 2013-10-01 21:36:24 -04:00
Bailey Ling
0f23d9373c move eclim documentation into the vim doc. 2013-10-01 21:26:31 -04:00
Bailey Ling
6c66ad5dfc refactor ctrlp statusline to use builder. resolves #291. 2013-10-01 21:23:17 -04:00
Bailey Ling
6fc15ff321 Merge pull request #293 from xinleibird/eclim
add eclim's checker extension
2013-10-01 13:30:05 -07:00
xinleibird
4eec9cfa91 Add eclim extension and update documentation. 2013-10-02 04:19:15 +08:00
xinleibird
7365ccf3fe Add eclim's checker extension, now it conform to the specification 2013-10-02 02:25:43 +08:00
xinleibird
5582daf79c add eclim's checker extension, when eclim is running , it can instead of syntastic 2013-10-01 12:42:42 +08:00
Bailey Ling
e16c36eea1 default space back to 32 (#283). 2013-09-30 14:37:02 +00:00
Bailey Ling
e0f6bee10e slow down release cycle. 2013-09-28 01:55:50 +00:00
Bailey Ling
b460822c84 Merge branch 'dev' 2013-09-28 01:53:55 +00:00
Bailey Ling
a81d1cd9c7 refactor the rest of the themes to use refresh. resolves #288. 2013-09-27 21:43:32 -04:00
Bailey Ling
2f3b33daae fix solarized theme being out of sync (#288). 2013-09-27 21:36:44 -04:00
Bailey Ling
60edd20300 Merge pull request #286 from Pychimp/master
Added Sol compatiable vim-airline theme
2013-09-27 14:01:01 -07:00
Pychimp
d7c66aa377 Sol theme, Now for vim-airline !
- Colors are now pretty spot-on (with respect to gvim) ! :)
2013-09-28 01:59:29 +05:30
Bailey Ling
9d3c6506da add table of contents to help file. 2013-09-27 10:34:41 -04:00
Bailey Ling
7dd8c4705c replace powerline symbols with escaped syntax. resolves #283. 2013-09-27 02:15:49 +00:00
Pychimp
3c2fa1d16d Added Sol compatiable vim-airline theme 2013-09-26 20:59:04 +05:30
Bailey Ling
d123e3583a fix parts being undefined when referenced by sections in vimrc (#207). 2013-09-25 22:13:57 -04:00
Bailey Ling
c8ef456a25 Merge branch 'dev' 2013-09-25 20:41:40 +00:00
Bailey Ling
4d706c5f4a use columns instead of winwidth (#222). 2013-09-25 19:26:25 +00:00
Bailey Ling
e507f481a2 allow parts to be defined in the vimrc as overrides. resolves #284. 2013-09-25 18:48:18 +00:00
Bailey Ling
d9df49e38f Merge pull request #285 from ipuchkov/murmur_theme
Add new dark theme murmur
2013-09-25 10:53:15 -07:00
Ivan Puchkov
9fdb064f11 Add new dark theme murmur 2013-09-25 22:53:30 +07:00
Bailey Ling
b97f687fb1 Merge pull request #282 from Pychimp/master
Whitespace indicator color changed
2013-09-25 06:54:25 -07:00
Pychimp
46099b43da Whitespace indicator color changed
Overrides the default orange to one
that suits the theme, slightly better
2013-09-25 19:18:22 +05:30
Bailey Ling
c869665b16 guard against attempting to load invalid themes. 2013-09-25 00:25:20 -04:00
Bailey Ling
89a9b9399f add monochrome theme. 2013-09-24 22:54:20 -04:00
Bailey Ling
93a95b3fdc correct visual fg color for serene theme. 2013-09-24 20:08:00 -04:00
Bailey Ling
6cf12f7268 oops. #279. 2013-09-24 19:06:19 -04:00
Bailey Ling
1b0c260980 revert back to cursormove. resolves #279. 2013-09-24 18:50:49 -04:00
Bailey Ling
dc570de0c8 Merge pull request #278 from seletskiy/fix-solarized-warningmsg-fg
Fix fg color of warning msg section in solarized theme
2013-09-24 09:47:51 -07:00
Stanislav Seletskiy
095295b839 fix solarized warningmsg fg color 2013-09-24 23:29:39 +07:00
Bailey Ling
e2a88dd67f add screenshot for accents. 2013-09-23 18:15:49 -04:00
Bailey Ling
5dcd1e942c Merge branch 'dev' 2013-09-23 21:22:59 +00:00
Bailey Ling
66d4c8c893 prevent clobbering startup info message. resolves #156. 2013-09-23 21:18:52 +00:00
Bailey Ling
123daf2861 add info about configuring tabline separators to readme. 2013-09-23 18:54:42 +00:00
Bailey Ling
99329b0c96 default the tabline separators to powerline if defined. 2013-09-23 18:52:37 +00:00
Bailey Ling
248c9b0e29 restore highlight group with accents for all types of parts. resolves #272. 2013-09-23 15:45:44 +00:00
Bailey Ling
b07362947e do not copy section_a to section_z
this allows for the line number bolding to display nicely on all themes
2013-09-23 14:56:37 +00:00
Bailey Ling
e5fb2456d4 redefine mode as a part with a bold accent. 2013-09-23 14:52:39 +00:00
Bailey Ling
019d158a02 active winnr should always be set. 2013-09-22 19:13:08 -04:00
Bailey Ling
245fe31f80 correct tests. 2013-09-22 18:05:58 -04:00
Bailey Ling
3c1498017f missed a space (#256). 2013-09-22 17:51:16 -04:00
Bailey Ling
ccd419bb0f fix 7.2 incompatibility. 2013-09-22 17:43:14 -04:00
Bailey Ling
ad96110eef Merge branch '256' into dev 2013-09-22 17:29:37 -04:00
Bailey Ling
a6cee001e8 Merge branch 'master' into dev 2013-09-22 17:22:50 -04:00
Bailey Ling
cf643aa7fa disable arrows by default for tabline. 2013-09-22 17:21:47 -04:00
Bailey Ling
cdc951be36 bufenter is sufficient to detect buffer list changes. 2013-09-22 17:20:38 -04:00
Bailey Ling
b5e8ea275e do not render accents in inactive splits. resolves #270. 2013-09-22 17:15:02 -04:00
Bailey Ling
bb30c09371 bring back readonly by default for section_c in overrides (#270). 2013-09-22 16:19:15 -04:00
Bailey Ling
474116461f use __accent to better differentiate between a real group. 2013-09-22 15:20:06 -04:00
Bailey Ling
41192a2a65 fix broken test. 2013-09-22 15:13:59 -04:00
Bailey Ling
8e3c91e486 fix syntax error for solarized theme. resolves #269. 2013-09-22 14:30:55 -04:00
Bailey Ling
5aacb96135 Merge pull request #268 from JarrodCTaylor/master 2013-09-22 14:27:41 -04:00
JarrodCTaylor
8dcc370d94 Added new minimal dark theme understated 2013-09-22 11:25:09 -05:00
Bailey Ling
aa41683342 Merge branch '256' into dev
Conflicts:
	autoload/airline/init.vim
2013-09-22 11:34:35 -04:00
bling
bfe35ed76c replace all instance of space with the no-break space. resolves #256. 2013-09-22 11:29:27 -04:00
Bailey Ling
b39308c49b Merge branch 'dev' 2013-09-22 11:01:21 -04:00
Bailey Ling
e01b2a99c0 remove comment about file length, as it is already proper. 2013-09-22 11:01:12 -04:00
Bailey Ling
77a0d933d7 Merge pull request #266 from toupeira/222
Show current buffers in the middle of the tabline
2013-09-22 07:44:15 -07:00
Markus Koller
3cc1dcb697 Show current buffers in the middle of the tabline (bling/vim-airline#222) 2013-09-22 08:23:19 +02:00
bling
b22190400d Merge branch '256' of https://github.com/bling/vim-airline into 256 2013-09-22 00:06:02 -04:00
Bailey Ling
dfb17198da Merge pull request #263 from edkolev/solarized-improvements
Solarized improvements
2013-09-21 20:10:14 -07:00
Bailey Ling
2fa6697071 add documentation about predefined parts. resolves #267. 2013-09-21 15:35:53 -04:00
Evgeni Kolev
a3df71463e Solarized modifications.
- Remove 'reduced' option
- Use yellow for insert, red for replace mode
2013-09-20 22:14:37 +03:00
Stanislav Seletskiy
e787b570e9 Modify solarized normal mode tty colors 2013-09-20 22:12:43 +03:00
Evgeni Kolev
39cb28b7e3 Solarized improvements.
- Use gray for normal mode bg color
- Add replace mode colors
- Modify solarized dark colors
2013-09-20 22:02:25 +03:00
Bailey Ling
12ea154de8 use code 160 for space to fix rendering problems. 2013-09-20 15:24:42 +00:00
Bailey Ling
7d78fbf2cc give the line number a bold accent by default. 2013-09-20 00:01:02 -04:00
Bailey Ling
20b2ee3ac3 add bold and italic accents. 2013-09-19 23:24:31 -04:00
Bailey Ling
0860d2f525 Merge pull request #261 from pydave/add-ctrlp-hide-modes
Add option to hide previous/next modes in ctrlp
2013-09-19 11:20:49 -07:00
pydave
0b70880471 Add option to hide previous/next modes in ctrlp
New option airline#extensions#ctrlp#show_adjacent_modes allows users to
toggle showing the previous and next modes. The default is the same
behavior as before: show the modes.

Add documentation for new option.

These modes are useful if you switch forward and back through ctrlp's
functionality, but they are visual noise if you don't.
2013-09-19 10:01:10 -07:00
Bailey Ling
948a4178a8 use code 160 for space to fix rendering problems. 2013-09-18 22:23:50 -04:00
Bailey Ling
2d465afb95 tweak default truncation values so 80-width still shows all (#259). 2013-09-18 21:33:17 -04:00
Bailey Ling
9d5a1744a1 support multiple accents in the same section (#203). 2013-09-18 21:31:39 -04:00
Bailey Ling
fdbf2c05a5 Merge branch '203' into dev. Resolves #203. 2013-09-17 23:56:54 -04:00
Bailey Ling
a5fc024f3a add additional accents by default. 2013-09-17 23:55:39 -04:00
Bailey Ling
e93263538f automatically provide the red accent. 2013-09-17 23:13:32 -04:00
Bailey Ling
d833718dd9 add test for populate accent colors. 2013-09-17 22:49:28 -04:00
Bailey Ling
6442f01912 populate all modes with accent colors. 2013-09-17 22:45:12 -04:00
Bailey Ling
0a6b833e7c tests for configuring accents directly. 2013-09-15 22:52:42 -04:00
Bailey Ling
02aa620a92 correctly inject the accent highlight groups. 2013-09-15 22:47:13 -04:00
Bailey Ling
858ef19a6f fix unit tests. 2013-09-15 12:02:36 -04:00
Bailey Ling
7e7766ee45 introduce accents into the color palette. 2013-09-15 11:59:22 -04:00
Bailey Ling
e31d5f333c for the sourcerers out there... (#254) 2013-09-15 09:22:23 -04:00
Bailey Ling
256a9681cb document showing/hiding tabline based on tab count. resolves #252. 2013-09-15 08:52:13 -04:00
Bailey Ling
6f3a4daba4 add support for showing/hiding tabline based on tab count (#252). 2013-09-15 08:49:51 -04:00
Bailey Ling
0b6263844f add tests for theme generate helper functions 2013-09-15 08:41:48 -04:00
Bailey Ling
c197532b7a refactor helper function to support skinning left and right side (#176). 2013-09-14 13:07:37 -04:00
Bailey Ling
59e4ab49ce fix windows path separator parsing (#251). 2013-09-13 19:15:01 +00:00
Bailey Ling
11fe597152 Merge pull request #250 from pydave/fix-help
Minor improvements to help
2013-09-13 11:28:57 -07:00
pydave
b60004d504 Fix tagging markup in help
Vim help's help-writing describes how to use '' around options and ||
around help links. Use these where possible to give the correct syntax
highlighting (and help vim-scriptease know the correct type to jump to
for ambiguous symbols).
2013-09-13 11:03:57 -07:00
pydave
39ba0b2d6a Fix help not displaying code correctly
airline_powerline_fonts wasn't wrapped in ><, so it displayed as normal
text and threw off the syntax highlighting.
2013-09-13 10:51:48 -07:00
Bailey Ling
8606f3ebc1 use the same fugitive check as the extension. 2013-09-13 04:44:17 +00:00
Bailey Ling
a88996b170 account for possible undefined variable. 2013-09-13 00:43:02 -04:00
Bailey Ling
ebb0040ca8 Merge branch 'fix-quickfix-title' of https://github.com/pydave/vim-airline into pydave-fix-quickfix-title 2013-09-13 00:40:30 -04:00
pydave
979c81c59f Include the quickfix title in the statusline
The quickfix title often has useful information about how it was
invoked. Include it in the statusline.
2013-09-12 19:10:09 -07:00
Bailey Ling
93b9fa7c75 fix spacing when both trailing/indent occurs. 2013-09-11 21:01:25 +00:00
Bailey Ling
61de5d3949 i can't do boolean logic (#247). 2013-09-11 17:55:57 +00:00
Bailey Ling
8886ea0a23 fix guard condition for csv. resolves #247. 2013-09-11 17:08:10 +00:00
Bailey Ling
1dcdfc502e set the buffer max a bit more aggressive, add dot prefix/suffix. 2013-09-10 23:50:47 -04:00
Bailey Ling
95f83e8c5a Merge pull request #245 from farseer90718/master
Disable white space detection for unmodifiable buffers
2013-09-10 19:26:00 -07:00
farseer90718
e117af9dd0 Disable white space detection for unmodifiable buffers 2013-09-11 10:08:51 +08:00
Bailey Ling
3f67df6440 Merge pull request #243 from seletskiy/solarized-tty
solarized.vim: tty colors (fix #242)
2013-09-10 15:21:02 -07:00
Bailey Ling
80afce1eb1 exclude quickfix from tabline. resolves #244. 2013-09-10 19:23:29 +00:00
Stanislav Seletskiy
d2c70194b0 solarized.vim: tty colors (fix #242) 2013-09-10 23:50:10 +07:00
Bailey Ling
aabb85ddc2 Merge branch 'master' into dev 2013-09-10 16:05:02 +00:00
Bailey Ling
2702015544 hide errors (#241). 2013-09-10 16:00:31 +00:00
Bailey Ling
3a5a40730a check guard for all extensions. resolves #241. 2013-09-10 15:40:54 +00:00
Bailey Ling
bed11010ba make the separator optional for older vim versions. resolves #239. 2013-09-10 01:34:35 +00:00
84 changed files with 3280 additions and 1663 deletions

View File

@@ -1,4 +1,8 @@
language: ruby
before_install:
- curl -f -L "https://raw.githubusercontent.com/vim-airline/vim-airline-themes/master/autoload/airline/themes/simple.vim" -o autoload/airline/themes/simple.vim
- curl -f -L "https://raw.githubusercontent.com/vim-airline/vim-airline-themes/master/autoload/airline/themes/molokai.vim" -o autoload/airline/themes/molokai.vim
- mkdir colors && curl -f -L 'https://raw.githubusercontent.com/tomasr/molokai/master/colors/molokai.vim' -o colors/molokai.vim
rvm:
- 1.9.3
script: rake ci

120
CHANGELOG.md Normal file
View File

@@ -0,0 +1,120 @@
# Change Log
This is the Changelog for the vim-airline project.
## [Unreleased]
## [0.8] - 2016-03-09
- Changes
- Airline converted to an organization and moved to new [repository](https://github.com/vim-airline/vim-airline)
- Themes have been split into an separate repository [vim-airline-themes](https://github.com/vim-airline/vim-airline-themes)
- Improvements
- Extensions
- branch: support Git and Mercurial simultaneously, untracked files
- whitespace: new mixed-indent rule
- Windows support
- Many bug fixes
- Support for Neovim
- New features
- Many new themes
- Extensions/integration
- [taboo](https://github.com/gcmt/taboo.vim)
- [vim-ctrlspace](https://github.com/szw/vim-ctrlspace)
- [quickfixsigns](https://github.com/tomtom/quickfixsigns_vim)
- [YouCompleteMe](https://github.com/Valloric/YouCompleteMe)
- [po.vim](http://www.vim.org/scripts/script.php?script_id=695)
- [unicode.vim](https://github.com/chrisbra/unicode.vim)
- wordcount
- crypt indicator
- byte order mark indicator
- Tabline's tab mode can display splits simultaneously
## [0.7] - 2014-12-10
- New features
- accents support; allowing multiple colors/styles in the same section
- extensions: eclim
- themes: understated, monochrome, murmur, sol, lucius
- Improvements
- solarized theme; support for 8 color terminals
- tabline resizes dynamically based on number of open buffers
- miscellaneous bug fixes
## [0.6] - 2013-10-08
- New features
- accents support; allowing multiple colors/styles in the same section
- extensions: eclim
- themes: understated, monochrome, murmur, sol, lucius
- Improvements
- solarized theme; support for 8 color terminals
- tabline resizes dynamically based on number of open buffers
- miscellaneous bug fixes
## [0.5] - 2013-09-13
- New features
- smart tabline extension which displays all buffers when only one tab is visible
- automatic section truncation when the window resizes
- support for a declarative style of configuration, allowing parts to contain metadata such as minimum window width or conditional visibility
- themes: zenburn, serene
- Other
- a sizable chunk of vim-airline is now running through a unit testing suite, automated via Travis CI
## [0.4] - 2013-08-26
- New features
- integration with csv.vim and vim-virtualenv
- hunks extension for vim-gitgutter and vim-signify
- automatic theme switching with matching colorschemes
- commands: AirlineToggle
- themes: base16 (all variants)
- Improvements
- integration with undotree, tagbar, and unite
- Other
- refactored core and exposed statusline builder and pipeline
- all extension related g:airline_variables have been deprecated in favor of g:airline#extensions# variables
- extensions found in the runtimepath outside of the default distribution will be automatically loaded
## [0.3] - 2013-08-12
- New features
- first-class integration with tagbar
- white space detection for trailing spaces and mixed indentation
- introduced warning section for syntastic and white space detection
- improved ctrlp integration: colors are automatically selected based on the current airline theme
- new themes: molokai, bubblegum, jellybeans, tomorrow
- Bug fixes
- improved handling of eventignore used by other plugins
- Other
- code cleaned up for clearer separation between core functionality and extensions
- introduced color extraction from highlight groups, allowing themes to be generated off of the active colorscheme (e.g. jellybeans and tomorrow)
- License changed to MIT
## [0.2] - 2013-07-28
- New features
- iminsert detection
- integration with vimshell, vimfiler, commandt, lawrencium
- enhanced bufferline theming
- support for ctrlp theming
- support for custom window excludes
- New themes
- luna and wombat
- Bug fixes
- refresh branch name after switching with a shell command
## [0.1] - 2013-07-17
- Initial release
- integration with other plugins: netrw, unite, nerdtree, undotree, gundo, tagbar, minibufexplr, ctrlp
- support for themes: 8 included
[Unreleased]: https://github.com/vim-airline/vim-airline/compare/v0.8...HEAD
[0.8]: https://github.com/vim-airline/vim-airline/compare/v0.7...v0.8
[0.7]: https://github.com/vim-airline/vim-airline/compare/v0.6...v0.7
[0.6]: https://github.com/vim-airline/vim-airline/compare/v0.5...v0.6
[0.5]: https://github.com/vim-airline/vim-airline/compare/v0.4...v0.5
[0.4]: https://github.com/vim-airline/vim-airline/compare/v0.3...v0.4
[0.3]: https://github.com/vim-airline/vim-airline/compare/v0.2...v0.3
[0.2]: https://github.com/vim-airline/vim-airline/compare/v0.1...v0.2
[0.1]: https://github.com/vim-airline/vim-airline/releases/tag/v0.1

32
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,32 @@
# Contributions
Contributions and pull requests are welcome. Please take note of the following guidelines:
* Adhere to the existing style as much as possible; notably, 2 space indents and long-form keywords.
* Keep the history clean! Squash your branches before you submit a pull request. `pull --rebase` is your friend.
* Any changes to the core should be tested against Vim 7.2.
# Bugs
Tracking down bugs can take a very long time due to different configurations, versions, and operating systems. To ensure a timely response, please help me out by doing the following:
* Reproduce it with this [minivimrc][7] repository to rule out any configuration conflicts. Even better, create a `gist` of your vimrc that is compatible with [pathogen][11].
* And to make it easier to reproduce, please supply the following:
* the `:version` of vim
* the commit of vim-airline you're using
* the OS that you're using, including terminal emulator, GUI vs non-GUI
# Themes
* If you submit a theme, please create a screenshot so it can be added to the [Wiki][14].
* In the majority of cases, modifications to colors of existing themes will likely be rejected. Themes are a subjective thing, so while you may prefer that a particular color be darker, another user will prefer it to be lighter, or something entirely different. The more popular the theme, the more unlikely the change will be accepted. However, it's pretty simple to create your own theme; copy the theme to `~/.vim/autoload/airline/themes` under a new name with your modifications, and it can be used.
# Maintenance
If you would like to take a more active role in improving vim-airline, please consider [becoming a maintainer][43].
[7]: https://github.com/bling/minivimrc
[11]: https://github.com/tpope/vim-pathogen
[14]: https://github.com/vim-airline/vim-airline/wiki/Screenshots
[43]: https://github.com/vim-airline/vim-airline/wiki/Becoming-a-Maintainer

14
ISSUE_TEMPLATE.md Normal file
View File

@@ -0,0 +1,14 @@
#### environment
- vim: ????
- vim-airline: ????
- OS: ????
- terminal: ????
#### actual behavior
????
#### expected behavior
????

View File

@@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (C) 2013 Bailey Ling
Copyright (C) 2013-2016 Bailey Ling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the "Software"),

117
README.md
View File

@@ -1,18 +1,24 @@
# vim-airline [![Build Status](https://travis-ci.org/bling/vim-airline.png)](https://travis-ci.org/bling/vim-airline)
# vim-airline [![Build Status](https://travis-ci.org/vim-airline/vim-airline.png)](https://travis-ci.org/vim-airline/vim-airline)
Lean &amp; mean status/tabline for vim that's light as air.
![img](https://github.com/bling/vim-airline/wiki/screenshots/demo.gif)
![img](https://github.com/vim-airline/vim-airline/wiki/screenshots/demo.gif)
# Features
* Tiny core written with extensibility in mind ([open/closed principle][8]).
* Integrates with a variety of plugins, including: [vim-bufferline][6], [fugitive][4], [unite][9], [ctrlp][10], [minibufexpl][15], [gundo][16], [undotree][17], [nerdtree][18], [tagbar][19], [vim-gitgutter][29], [vim-signify][30], [syntastic][5], [lawrencium][21] and [virtualenv][31].
* Integrates with a variety of plugins, including: [vim-bufferline][6],
[fugitive][4], [unite][9], [ctrlp][10], [minibufexpl][15], [gundo][16],
[undotree][17], [nerdtree][18], [tagbar][19], [vim-gitgutter][29],
[vim-signify][30], [quickfixsigns][39], [syntastic][5], [eclim][34],
[lawrencium][21], [virtualenv][31], [tmuxline][35], [taboo.vim][37],
[ctrlspace][38] and more.
* Looks good with regular fonts and provides configuration points so you can use unicode or powerline symbols.
* Optimized for speed; it loads in under a millisecond.
* Extensive suite of themes for popular colorschemes including [solarized][23] (dark and light), [tomorrow][24] (all variants), [base16][32] (all variants), [molokai][25], [jellybeans][26] and others; have a look at the [screenshots][14] in the wiki.
* Extensive suite of themes for popular color schemes including [solarized][23] (dark and light), [tomorrow][24] (all variants), [base16][32] (all variants), [molokai][25], [jellybeans][26] and others.
Note these are now external to this plugin. See [below][46] for detail.
* Supports 7.2 as the minimum Vim version.
* Stable release cycle; bleeding edge changes happen on the `dev` branch, and after they have gone through a [full regression test][33] will eventually be merged in the stable master branch. Releases typically occur every 2 weeks.
* The master branch tries to be as stable as possible, and new features are merged in only after they have gone through a [full regression test][33].
* Unit testing suite.
## Straightforward customization
@@ -21,6 +27,20 @@ If you don't like the defaults, you can replace all sections with standard `stat
![image](https://f.cloud.github.com/assets/306502/1009429/d69306da-0b38-11e3-94bf-7c6e3eef41e9.png)
## Themes
Themes have moved to
another repository as of [this commit][45].
Install the themes as you would this plugin (Vundle example):
```vim
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
```
See https://github.com/vim-airline/vim-airline-themes for more.
## Automatic truncation
Sections and parts within sections can be configured to automatically hide when the window size shrinks.
@@ -37,6 +57,11 @@ This is disabled by default; add the following to your vimrc to enable the exten
let g:airline#extensions#tabline#enabled = 1
Separators can be configured independently for the tabline, so here is how you can define "straight" tabs:
let g:airline#extensions#tabline#left_sep = ' '
let g:airline#extensions#tabline#left_alt_sep = '|'
## Seamless integration
vim-airline integrates with a variety of plugins out of the box. These extensions will be lazily loaded if and only if you have the other plugins installed (and of course you can turn them off).
@@ -62,6 +87,15 @@ vim-airline integrates with a variety of plugins out of the box. These extensio
#### [virtualenv][31]
![image](https://f.cloud.github.com/assets/390964/1022566/cf81f830-0d98-11e3-904f-cf4fe3ce201e.png)
#### [tmuxline][35]
![image](https://f.cloud.github.com/assets/1532071/1559276/4c28fbac-4fc7-11e3-90ef-7e833d980f98.gif)
#### [promptline][36]
![airline-promptline-sc](https://f.cloud.github.com/assets/1532071/1871900/7d4b28a0-789d-11e3-90e4-16f37269981b.gif)
#### [ctrlspace][38]
![papercolor_with_ctrlspace](https://cloud.githubusercontent.com/assets/493242/12912041/7fc3c6ec-cf16-11e5-8775-8492b9c64ebf.png)
## Extras
vim-airline also supplies some supplementary stand-alone extensions. In addition to the tabline extension mentioned earlier, there is also:
@@ -77,6 +111,10 @@ Every section is composed of parts, and you can reorder and reconfigure them at
![image](https://f.cloud.github.com/assets/306502/1073278/f291dd4c-14a3-11e3-8a83-268e2753f97d.png)
Sections can contain accents, which allows for very granular control of visuals (see configuration [here](https://github.com/vim-airline/vim-airline/issues/299#issuecomment-25772886)).
![image](https://f.cloud.github.com/assets/306502/1195815/4bfa38d0-249d-11e3-823e-773cfc2ca894.png)
#### Extensible pipeline
Completely transform the statusline to your liking. Build out the statusline as you see fit by extracting colors from the current colorscheme's highlight groups.
@@ -102,11 +140,14 @@ I wrote the initial version on an airplane, and since it's light as air it turne
This plugin follows the standard runtime path structure, and as such it can be installed with a variety of plugin managers:
* [Pathogen][11]
* `git clone https://github.com/bling/vim-airline ~/.vim/bundle/vim-airline`
* `git clone https://github.com/vim-airline/vim-airline ~/.vim/bundle/vim-airline`
* Remember to run `:Helptags` to generate help tags
* [NeoBundle][12]
* `NeoBundle 'bling/vim-airline'`
* `NeoBundle 'vim-airline/vim-airline'`
* [Vundle][13]
* `Bundle 'bling/vim-airline'`
* `Plugin 'vim-airline/vim-airline'`
* [Plug][40]
* `Plug 'vim-airline/vim-airline'`
* [VAM][22]
* `call vam#ActivateAddons([ 'vim-airline' ])`
* manual
@@ -116,6 +157,9 @@ This plugin follows the standard runtime path structure, and as such it can be i
`:help airline`
The default setting of 'laststatus' is for the statusline to not appear until a split is created. If you want it to appear all the time, add the following to your vimrc:
`set laststatus=2`
# Integrating with powerline fonts
For the nice looking powerline symbols to appear, you will need to install a patched font. Instructions can be found in the official powerline [documentation][20]. Prepatched fonts can be found in the [powerline-fonts][3] repository.
@@ -126,33 +170,33 @@ Finally, you can add the convenience variable `let g:airline_powerline_fonts = 1
Solutions to common problems can be found in the [Wiki][27].
# Performance
Whoa! Everything got slow all of a sudden...
vim-airline strives to make it easy to use out of the box, which means that by default it will look for all compatible plugins that you have installed and enable the relevant extension.
Many optimizations have been made such that the majority of users will not see any performance degradation, but it can still happen. For example, users who routinely open very large files may want to disable the `tagbar` extension, as it can be very expensive to scan for the name of the current function.
The [minivimrc][7] project has some helper mappings to troubleshoot performance related issues.
If you don't want all the bells and whistles enabled by default, you can define a value for `g:airline_extensions`. When this variable is defined, only the extensions listed will be loaded; an empty array would effectively disable all extensions.
# Screenshots
A full list of screenshots for various themes can be found in the [Wiki][14].
# Bugs
# Maintainers
Tracking down bugs can take a very long time due to different configurations, versions, and operating systems. To ensure a timely response, please help me out by doing the following:
The project is currently being maintained by [Bailey Ling][41], [Christian Brabandt][42], and [Mike Hartington][44].
* Reproduce it with this [minivimrc][7] repository to rule out any configuration conflicts.
* A link to your vimrc or a gist which shows how you configured the plugin(s).
* And so I can reproduce; your `:version` of vim, and the commit of vim-airline you're using.
# Contributions
Contributions and pull requests are welcome. Please take note of the following guidelines:
* Adhere to the existing style as much as possible; notably, 2 space indents and long-form keywords.
* Keep the history clean! squash your branches before you submit a pull request. `pull --rebase` is your friend.
* Any changes to the core should be tested against Vim 7.2.
* If you submit a theme, please create a screenshot so it can be added to the [Wiki][14].
If you are interested in becoming a maintainer (we always welcome more maintainers), please [go here][43].
# License
MIT License. Copyright (c) 2013 Bailey Ling.
MIT License. Copyright (c) 2013-2016 Bailey Ling.
[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/bling/vim-airline/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/vim-airline/vim-airline/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
[1]: https://github.com/Lokaltog/vim-powerline
[2]: https://github.com/Lokaltog/powerline
@@ -163,27 +207,40 @@ MIT License. Copyright (c) 2013 Bailey Ling.
[7]: https://github.com/bling/minivimrc
[8]: http://en.wikipedia.org/wiki/Open/closed_principle
[9]: https://github.com/Shougo/unite.vim
[10]: https://github.com/kien/ctrlp.vim
[10]: https://github.com/ctrlpvim/ctrlp.vim
[11]: https://github.com/tpope/vim-pathogen
[12]: https://github.com/Shougo/neobundle.vim
[13]: https://github.com/gmarik/vundle
[14]: https://github.com/bling/vim-airline/wiki/Screenshots
[14]: https://github.com/vim-airline/vim-airline/wiki/Screenshots
[15]: https://github.com/techlivezheng/vim-plugin-minibufexpl
[16]: https://github.com/sjl/gundo.vim
[17]: https://github.com/mbbill/undotree
[18]: https://github.com/scrooloose/nerdtree
[19]: https://github.com/majutsushi/tagbar
[20]: https://powerline.readthedocs.org/en/latest/fontpatching.html
[20]: https://powerline.readthedocs.org/en/master/installation.html#patched-fonts
[21]: https://bitbucket.org/ludovicchabant/vim-lawrencium
[22]: https://github.com/MarcWeber/vim-addon-manager
[23]: https://github.com/altercation/solarized
[24]: https://github.com/chriskempson/tomorrow-theme
[25]: https://github.com/tomasr/molokai
[26]: https://github.com/nanotech/jellybeans.vim
[27]: https://github.com/bling/vim-airline/wiki/FAQ
[27]: https://github.com/vim-airline/vim-airline/wiki/FAQ
[28]: https://github.com/chrisbra/csv.vim
[29]: https://github.com/airblade/vim-gitgutter
[30]: https://github.com/mhinz/vim-signify
[31]: https://github.com/jmcantrell/vim-virtualenv
[32]: https://github.com/chriskempson/base16-vim
[33]: https://github.com/bling/vim-airline/wiki/Test-Plan
[33]: https://github.com/vim-airline/vim-airline/wiki/Test-Plan
[34]: http://eclim.org
[35]: https://github.com/edkolev/tmuxline.vim
[36]: https://github.com/edkolev/promptline.vim
[37]: https://github.com/gcmt/taboo.vim
[38]: https://github.com/szw/vim-ctrlspace
[39]: https://github.com/tomtom/quickfixsigns_vim
[40]: https://github.com/junegunn/vim-plug
[41]: https://github.com/bling
[42]: https://github.com/chrisbra
[43]: https://github.com/vim-airline/vim-airline/wiki/Becoming-a-Maintainer
[44]: https://github.com/mhartington
[45]: https://github.com/vim-airline/vim-airline/commit/d7fd8ca649e441b3865551a325b10504cdf0711b
[46]: https://github.com/vim-airline/vim-airline#themes

View File

@@ -1,9 +1,9 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let g:airline_statusline_funcrefs = get(g:, 'airline_statusline_funcrefs', [])
let s:sections = ['a','b','c','gutter','x','y','z','warning']
let s:sections = ['a','b','c','gutter','x','y','z', 'error', 'warning']
let s:inactive_funcrefs = []
function! airline#add_statusline_func(name)
@@ -11,6 +11,12 @@ function! airline#add_statusline_func(name)
endfunction
function! airline#add_statusline_funcref(function)
if index(g:airline_statusline_funcrefs, a:function) >= 0
echohl WarningMsg
echo 'The airline statusline funcref '.string(a:function).' has already been added.'
echohl NONE
return
endif
call add(g:airline_statusline_funcrefs, a:function)
endfunction
@@ -26,13 +32,11 @@ function! airline#add_inactive_statusline_func(name)
endfunction
function! airline#load_theme()
call airline#highlighter#load_theme()
call airline#extensions#load_theme()
endfunction
if exists('*airline#themes#{g:airline_theme}#refresh')
call airline#themes#{g:airline_theme}#refresh()
endif
function! airline#switch_theme(name)
let g:airline_theme = a:name
let palette = g:airline#themes#{g:airline_theme}#palette "also lazy loads the theme
let palette = g:airline#themes#{g:airline_theme}#palette
call airline#themes#patch(palette)
if exists('g:airline_theme_patch_func')
@@ -40,21 +44,48 @@ function! airline#switch_theme(name)
call Fn(palette)
endif
let w:airline_lastmode = ''
call airline#highlighter#load_theme()
call airline#extensions#load_theme()
call airline#update_statusline()
endfunction
function! airline#switch_theme(name)
try
let palette = g:airline#themes#{a:name}#palette "also lazy loads the theme
let g:airline_theme = a:name
catch
echohl WarningMsg | echo 'The specified theme cannot be found.' | echohl NONE
if exists('g:airline_theme')
return
else
let g:airline_theme = 'dark'
endif
endtry
let w:airline_lastmode = ''
call airline#load_theme()
" this is required to prevent clobbering the startup info message, i don't know why...
call airline#check_mode(winnr())
endfunction
function! airline#switch_matching_theme()
if exists('g:colors_name')
let existing = g:airline_theme
let theme = substitute(g:colors_name, '-', '_', 'g')
try
let palette = g:airline#themes#{g:colors_name}#palette
call airline#switch_theme(g:colors_name)
let palette = g:airline#themes#{theme}#palette
call airline#switch_theme(theme)
return 1
catch
for map in items(g:airline_theme_map)
if match(g:colors_name, map[0]) > -1
call airline#switch_theme(map[1])
try
let palette = g:airline#themes#{map[1]}#palette
call airline#switch_theme(map[1])
catch
call airline#switch_theme(existing)
endtry
return 1
endif
endfor
@@ -64,7 +95,13 @@ function! airline#switch_matching_theme()
endfunction
function! airline#update_statusline()
if airline#util#getwinvar(winnr(), 'airline_disabled', 0)
return
endif
for nr in filter(range(1, winnr('$')), 'v:val != winnr()')
if airline#util#getwinvar(nr, 'airline_disabled', 0)
continue
endif
call setwinvar(nr, 'airline_active', 0)
let context = { 'winnr': nr, 'active': 0, 'bufnr': winbufnr(nr) }
call s:invoke_funcrefs(context, s:inactive_funcrefs)
@@ -96,7 +133,12 @@ function! s:invoke_funcrefs(context, funcrefs)
endfunction
function! airline#statusline(winnr)
return '%{airline#check_mode('.a:winnr.')}'.s:contexts[a:winnr].line
if has_key(s:contexts, a:winnr)
return '%{airline#check_mode('.a:winnr.')}'.s:contexts[a:winnr].line
endif
" in rare circumstances this happens...see #276
return ''
endfunction
function! airline#check_mode(winnr)
@@ -110,6 +152,8 @@ function! airline#check_mode(winnr)
let l:mode = ['replace']
elseif l:m =~# '\v(v|V||s|S|)'
let l:mode = ['visual']
elseif l:m ==# "t"
let l:mode = ['terminal']
else
let l:mode = ['normal']
endif
@@ -119,16 +163,22 @@ function! airline#check_mode(winnr)
let w:airline_current_mode = get(g:airline_mode_map, '__')
endif
if g:airline_detect_modified
if &modified
call add(l:mode, 'modified')
endif
if g:airline_detect_modified && &modified
call add(l:mode, 'modified')
endif
if g:airline_detect_paste && &paste
call add(l:mode, 'paste')
endif
if g:airline_detect_crypt && exists("+key") && !empty(&key)
call add(l:mode, 'crypt')
endif
if &readonly || ! &modifiable
call add(l:mode, 'readonly')
endif
let mode_string = join(l:mode)
if get(w:, 'airline_lastmode', '') != mode_string
call airline#highlighter#highlight_modified_inactive(context.bufnr)

View File

@@ -1,49 +1,127 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:prototype = {}
function! s:prototype.split(...)
let self._side = 0
let self._line .= '%#'.self._curgroup.'#'.(a:0 ? a:1 : '%=')
call add(self._sections, ['|', a:0 ? a:1 : '%='])
endfunction
function! s:prototype.add_section_spaced(group, contents)
call self.add_section(a:group, (g:airline_symbols.space).a:contents.(g:airline_symbols.space))
endfunction
function! s:prototype.add_section(group, contents)
if self._curgroup != ''
if self._curgroup == a:group
let self._line .= self._side ? self._context.left_alt_sep : self._context.right_alt_sep
else
call airline#highlighter#add_separator(self._curgroup, a:group, self._side)
let self._line .= '%#'.self._curgroup.'_to_'.a:group.'#'
let self._line .= self._side ? self._context.left_sep : self._context.right_sep
endif
endif
if self._curgroup != a:group
let self._line .= '%#'.a:group.'#'
endif
let self._line .= a:contents
let self._curgroup = a:group
call add(self._sections, [a:group, a:contents])
endfunction
function! s:prototype.add_raw(text)
let self._line .= a:text
call add(self._sections, ['', a:text])
endfunction
function! s:get_prev_group(sections, i)
let x = a:i - 1
while x >= 0
let group = a:sections[x][0]
if group != '' && group != '|'
return group
endif
let x = x - 1
endwhile
return ''
endfunction
function! s:prototype.build()
let side = 1
let line = ''
let i = 0
let length = len(self._sections)
let split = 0
while i < length
let section = self._sections[i]
let group = section[0]
let contents = section[1]
let prev_group = s:get_prev_group(self._sections, i)
if group == ''
let line .= contents
elseif group == '|'
let side = 0
let line .= contents
let split = 1
else
if prev_group == ''
let line .= '%#'.group.'#'
elseif split
let line .= s:get_transitioned_seperator(self, prev_group, group, side)
let split = 0
else
let line .= s:get_seperator(self, prev_group, group, side)
endif
let line .= s:get_accented_line(self, group, contents)
endif
let i = i + 1
endwhile
if !self._context.active
let self._line = substitute(self._line, '%#.\{-}\ze#', '\0_inactive', 'g')
let line = substitute(line, '%#.\{-}\ze#', '\0_inactive', 'g')
endif
return self._line
return line
endfunction
function! s:should_change_group(group1, group2)
if a:group1 == a:group2
return 0
endif
let color1 = airline#highlighter#get_highlight(a:group1)
let color2 = airline#highlighter#get_highlight(a:group2)
if g:airline_gui_mode ==# 'gui'
return color1[1] != color2[1] || color1[0] != color2[0]
else
return color1[3] != color2[3] || color1[2] != color2[2]
endif
endfunction
function! s:get_transitioned_seperator(self, prev_group, group, side)
let line = ''
call airline#highlighter#add_separator(a:prev_group, a:group, a:side)
let line .= '%#'.a:prev_group.'_to_'.a:group.'#'
let line .= a:side ? a:self._context.left_sep : a:self._context.right_sep
let line .= '%#'.a:group.'#'
return line
endfunction
function! s:get_seperator(self, prev_group, group, side)
if s:should_change_group(a:prev_group, a:group)
return s:get_transitioned_seperator(a:self, a:prev_group, a:group, a:side)
else
return a:side ? a:self._context.left_alt_sep : a:self._context.right_alt_sep
endif
endfunction
function! s:get_accented_line(self, group, contents)
if a:self._context.active
let contents = []
let content_parts = split(a:contents, '__accent')
for cpart in content_parts
let accent = matchstr(cpart, '_\zs[^#]*\ze')
call add(contents, cpart)
endfor
let line = join(contents, a:group)
let line = substitute(line, '__restore__', a:group, 'g')
else
let line = substitute(a:contents, '%#__accent[^#]*#', '', 'g')
let line = substitute(line, '%#__restore__#', '', 'g')
endif
return line
endfunction
function! airline#builder#new(context)
let builder = copy(s:prototype)
let builder._context = a:context
let builder._side = 1
let builder._curgroup = ''
let builder._line = ''
let builder._sections = []
call extend(builder._context, {
\ 'left_sep': g:airline_left_sep,

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
function! airline#debug#profile1()

View File

@@ -1,31 +0,0 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
function! airline#deprecation#check()
if exists('g:airline_enable_fugitive') || exists('g:airline_fugitive_prefix')
echom 'The g:airline_enable_fugitive and g:airline_fugitive_prefix variables are obsolete. Please read the documentation about the branch extension.'
endif
let tests = [
\ [ 'g:airline_paste_symbol', 'g:airline_symbols.paste' ],
\ [ 'g:airline_readonly_symbol', 'g:airline_symbols.readonly' ],
\ [ 'g:airline_linecolumn_prefix', 'g:airline_symbols.linenr' ],
\ [ 'g:airline_branch_prefix', 'g:airline_symbols.branch' ],
\ [ 'g:airline_branch_empty_message', 'g:airline#extensions#branch#empty_message' ],
\ [ 'g:airline_detect_whitespace', 'g:airline#extensions#whitespace#enabled|show_message' ],
\ [ 'g:airline_enable_hunks', 'g:airline#extensions#hunks#enabled' ],
\ [ 'g:airline_enable_tagbar', 'g:airline#extensions#tagbar#enabled' ],
\ [ 'g:airline_enable_csv', 'g:airline#extensions#csv#enabled' ],
\ [ 'g:airline_enable_branch', 'g:airline#extensions#branch#enabled' ],
\ [ 'g:airline_enable_bufferline', 'g:airline#extensions#bufferline#enabled' ],
\ [ 'g:airline_enable_syntastic', 'g:airline#extensions#syntastic#enabled' ],
\ ]
for test in tests
if exists(test[0])
let max = winwidth(0) - 16
let msg = printf('The variable %s is deprecated and may not work in the future. It has been replaced with %s. Please read the documentation.', test[0], test[1])
echom msg[:max].'...'
endif
endfor
endfunction

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:ext = {}
@@ -20,13 +20,12 @@ endfunction
let s:script_path = tolower(resolve(expand('<sfile>:p:h')))
let s:filetype_overrides = {
\ 'netrw': [ 'netrw', '%f' ],
\ 'nerdtree': [ 'NERD', '' ],
\ 'gundo': [ 'Gundo', '' ],
\ 'diff': [ 'diff', '' ],
\ 'vimfiler': [ 'vimfiler', '%{vimfiler#get_status_string()}' ],
\ 'minibufexpl': [ 'MiniBufExplorer', '' ],
\ 'startify': [ 'startify', '' ],
\ 'vim-plug': [ 'Plugins', '' ],
\ }
let s:filetype_regex_overrides = {}
@@ -50,25 +49,20 @@ endfunction
function! airline#extensions#apply_left_override(section1, section2)
let w:airline_section_a = a:section1
let w:airline_section_b = a:section2
let w:airline_section_c = ''
let w:airline_section_c = airline#section#create(['readonly'])
let w:airline_render_left = 1
let w:airline_render_right = 0
endfunction
let s:active_winnr = -1
function! airline#extensions#apply(...)
let s:active_winnr = winnr()
if s:is_excluded_window()
return -1
endif
let s:active_winnr = winnr()
if &buftype == 'quickfix'
let w:airline_section_a = '%q'
let w:airline_section_b = ''
let w:airline_section_c = ''
let w:airline_section_x = ''
elseif &buftype == 'help'
if &buftype == 'help'
call airline#extensions#apply_left_override('Help', '%f')
let w:airline_section_x = ''
let w:airline_section_y = ''
@@ -127,10 +121,27 @@ function! airline#extensions#load()
" non-trivial number of external plugins use eventignore=all, so we need to account for that
autocmd CursorMoved * call <sid>sync_active_winnr()
if exists('g:airline_extensions')
for ext in g:airline_extensions
call airline#extensions#{ext}#init(s:ext)
endfor
return
endif
call airline#extensions#quickfix#init(s:ext)
if get(g:, 'loaded_unite', 0)
call airline#extensions#unite#init(s:ext)
endif
if exists(':NetrwSettings')
call airline#extensions#netrw#init(s:ext)
endif
if get(g:, 'airline#extensions#ycm#enabled', 0)
call airline#extensions#ycm#init(s:ext)
endif
if get(g:, 'loaded_vimfiler', 0)
let g:vimfiler_force_overwrite_statusline = 0
endif
@@ -139,6 +150,10 @@ function! airline#extensions#load()
call airline#extensions#ctrlp#init(s:ext)
endif
if get(g:, 'CtrlSpaceLoaded', 0)
call airline#extensions#ctrlspace#init(s:ext)
endif
if get(g:, 'command_t_loaded', 0)
call airline#extensions#commandt#init(s:ext)
endif
@@ -147,17 +162,17 @@ function! airline#extensions#load()
call airline#extensions#undotree#init(s:ext)
endif
if (get(g:, 'airline#extensions#hunks#enabled', 1) && get(g:, 'airline_enable_hunks', 1))
\ && (exists('g:loaded_signify') || exists('g:loaded_gitgutter'))
if get(g:, 'airline#extensions#hunks#enabled', 1)
\ && (exists('g:loaded_signify') || exists('g:loaded_gitgutter') || exists('g:loaded_changes') || exists('g:loaded_quickfixsigns'))
call airline#extensions#hunks#init(s:ext)
endif
if (get(g:, 'airline#extensions#tagbar#enabled', 1) && get(g:, 'airline_enable_tagbar', 1))
if get(g:, 'airline#extensions#tagbar#enabled', 1)
\ && exists(':TagbarToggle')
call airline#extensions#tagbar#init(s:ext)
endif
if (get(g:, 'airline#extensions#csv#enabled', 1) && get(g:, 'airline_enable_csv', 1))
if get(g:, 'airline#extensions#csv#enabled', 1)
\ && (get(g:, 'loaded_csv', 0) || exists(':Table'))
call airline#extensions#csv#init(s:ext)
endif
@@ -167,45 +182,88 @@ function! airline#extensions#load()
let s:filetype_regex_overrides['^int-'] = ['vimshell','%{substitute(&ft, "int-", "", "")}']
endif
if (get(g:, 'airline#extensions#branch#enabled', 1) && get(g:, 'airline_enable_branch', 1))
\ && (get(g:, 'loaded_fugitive', 0) || get(g:, 'loaded_lawrencium', 0))
if get(g:, 'airline#extensions#branch#enabled', 1)
\ && (exists('*fugitive#head') || exists('*lawrencium#statusline') ||
\ (get(g:, 'airline#extensions#branch#use_vcscommand', 0) && exists('*VCSCommandGetStatusLine')))
call airline#extensions#branch#init(s:ext)
endif
if (get(g:, 'airline#extensions#bufferline#enabled', 1) && get(g:, 'airline_enable_bufferline', 1))
if get(g:, 'airline#extensions#bufferline#enabled', 1)
\ && exists('*bufferline#get_status_string')
call airline#extensions#bufferline#init(s:ext)
endif
if get(g:, 'virtualenv_loaded', 0) && get(g:, 'airline#extensions#virtualenv#enabled', 1)
if (get(g:, 'airline#extensions#virtualenv#enabled', 1) && (exists(':VirtualEnvList') || isdirectory($VIRTUAL_ENV)))
call airline#extensions#virtualenv#init(s:ext)
endif
if (get(g:, 'airline#extensions#syntastic#enabled', 1) && get(g:, 'airline_enable_syntastic', 1))
if (get(g:, 'airline#extensions#eclim#enabled', 1) && exists(':ProjectCreate'))
call airline#extensions#eclim#init(s:ext)
endif
if get(g:, 'airline#extensions#syntastic#enabled', 1)
\ && exists(':SyntasticCheck')
call airline#extensions#syntastic#init(s:ext)
endif
if (get(g:, 'airline#extensions#whitespace#enabled', 1) && get(g:, 'airline_detect_whitespace', 1))
if get(g:, 'airline#extensions#whitespace#enabled', 1)
call airline#extensions#whitespace#init(s:ext)
endif
if get(g:, 'airline#extensions#po#enabled', 1) && executable('msgfmt')
call airline#extensions#po#init(s:ext)
endif
if get(g:, 'airline#extensions#wordcount#enabled', 1)
call airline#extensions#wordcount#init(s:ext)
endif
if get(g:, 'airline#extensions#tabline#enabled', 0)
call airline#extensions#tabline#init(s:ext)
endif
" load all other extensions not part of the default distribution
for file in split(globpath(&rtp, "autoload/airline/extensions/*.vim"), "\n")
" we have to check both resolved and unresolved paths, since it's possible
" that they might not get resolved properly (see #187)
if stridx(tolower(resolve(fnamemodify(file, ':p'))), s:script_path) < 0
\ && stridx(tolower(fnamemodify(file, ':p')), s:script_path) < 0
let name = fnamemodify(file, ':t:r')
if !get(g:, 'airline#extensions#'.name.'#enabled', 1)
continue
if get(g:, 'airline#extensions#tmuxline#enabled', 1) && exists(':Tmuxline')
call airline#extensions#tmuxline#init(s:ext)
endif
if get(g:, 'airline#extensions#promptline#enabled', 1) && exists(':PromptlineSnapshot') && len(get(g:, 'airline#extensions#promptline#snapshot_file', ''))
call airline#extensions#promptline#init(s:ext)
endif
if get(g:, 'airline#extensions#nrrwrgn#enabled', 1) && exists(':NR') == 2
call airline#extensions#nrrwrgn#init(s:ext)
endif
if get(g:, 'airline#extensions#unicode#enabled', 1) && exists(':UnicodeTable') == 2
call airline#extensions#unicode#init(s:ext)
endif
if (get(g:, 'airline#extensions#capslock#enabled', 1) && exists('*CapsLockStatusline'))
call airline#extensions#capslock#init(s:ext)
endif
if (get(g:, 'airline#extensions#windowswap#enabled', 1) && get(g:, 'loaded_windowswap', 0))
call airline#extensions#windowswap#init(s:ext)
endif
if !get(g:, 'airline#extensions#disable_rtp_load', 0)
" load all other extensions, which are not part of the default distribution.
" (autoload/airline/extensions/*.vim outside of our s:script_path).
for file in split(globpath(&rtp, "autoload/airline/extensions/*.vim"), "\n")
" we have to check both resolved and unresolved paths, since it's possible
" that they might not get resolved properly (see #187)
if stridx(tolower(resolve(fnamemodify(file, ':p'))), s:script_path) < 0
\ && stridx(tolower(fnamemodify(file, ':p')), s:script_path) < 0
let name = fnamemodify(file, ':t:r')
if !get(g:, 'airline#extensions#'.name.'#enabled', 1)
continue
endif
try
call airline#extensions#{name}#init(s:ext)
catch
endtry
endif
call airline#extensions#{name}#init(s:ext)
endif
endfor
endfor
endif
endfunction

View File

@@ -1,50 +1,215 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:empty_message = get(g:, 'airline#extensions#branch#empty_message',
\ get(g:, 'airline_branch_empty_message', ''))
let s:symbol = get(g:, 'airline#extensions#branch#symbol', g:airline_symbols.branch)
let s:has_fugitive = exists('*fugitive#head')
let s:has_fugitive_detect = exists('*fugitive#detect')
let s:has_lawrencium = exists('*lawrencium#statusline')
let s:has_vcscommand = get(g:, 'airline#extensions#branch#use_vcscommand', 0) && exists('*VCSCommandGetStatusLine')
if !s:has_fugitive && !s:has_lawrencium && !s:has_vcscommand
finish
endif
let s:git_dirs = {}
let s:untracked_git = {}
let s:untracked_hg = {}
let s:head_format = get(g:, 'airline#extensions#branch#format', 0)
if s:head_format == 1
function! s:format_name(name)
return fnamemodify(a:name, ':t')
endfunction
elseif s:head_format == 2
function! s:format_name(name)
return pathshorten(a:name)
endfunction
elseif type(s:head_format) == type('')
function! s:format_name(name)
return call(s:head_format, [a:name])
endfunction
else
function! s:format_name(name)
return a:name
endfunction
endif
function! s:get_git_branch(path)
if !s:has_fugitive
return ''
endif
let name = fugitive#head(7)
if empty(name)
if has_key(s:git_dirs, a:path)
return s:git_dirs[a:path]
endif
let dir = fugitive#extract_git_dir(a:path)
if empty(dir)
let name = ''
else
try
let line = join(readfile(dir . '/HEAD'))
if strpart(line, 0, 16) == 'ref: refs/heads/'
let name = strpart(line, 16)
else
" raw commit hash
let name = strpart(line, 0, 7)
endif
catch
let name = ''
endtry
endif
endif
let s:git_dirs[a:path] = name
return name
endfunction
function! s:get_git_untracked(file)
let untracked = ''
if empty(a:file)
return untracked
endif
if has_key(s:untracked_git, a:file)
let untracked = s:untracked_git[a:file]
else
let output = system('git status --porcelain -- '. a:file)
if output[0:1] is# '??' && output[3:-2] is? a:file
let untracked = get(g:, 'airline#extensions#branch#notexists', g:airline_symbols.notexists)
endif
let s:untracked_git[a:file] = untracked
endif
return untracked
endfunction
function! s:get_hg_untracked(file)
if s:has_lawrencium
" delete cache when unlet b:airline head?
let untracked = ''
if empty(a:file)
return untracked
endif
if has_key(s:untracked_hg, a:file)
let untracked = s:untracked_hg[a:file]
else
let untracked = (system('hg status -u -- '. a:file)[0] is# '?' ?
\ get(g:, 'airline#extensions#branch#notexists', g:airline_symbols.notexists) : '')
let s:untracked_hg[a:file] = untracked
endif
return untracked
endif
endfunction
function! s:get_hg_branch()
if s:has_lawrencium
return lawrencium#statusline()
endif
return ''
endfunction
function! airline#extensions#branch#head()
if exists('b:airline_head') && !empty(b:airline_head)
return b:airline_head
endif
let b:airline_head = ''
let l:heads = {}
let l:vcs_priority = get(g:, "airline#extensions#branch#vcs_priority", ["git", "mercurial"])
let found_fugitive_head = 0
let l:git_head = s:get_git_branch(expand("%:p:h"))
let l:hg_head = s:get_hg_branch()
if !empty(l:git_head)
let found_fugitive_head = 1
let l:heads.git = (!empty(l:hg_head) ? "git:" : '') . s:format_name(l:git_head)
let l:git_untracked = s:get_git_untracked(expand("%:p"))
let l:heads.git .= l:git_untracked
endif
if !empty(l:hg_head)
let l:heads.mercurial = (!empty(l:git_head) ? "hg:" : '') . s:format_name(l:hg_head)
let l:hg_untracked = s:get_hg_untracked(expand("%:p"))
let l:heads.mercurial.= l:hg_untracked
endif
if empty(l:heads)
if s:has_vcscommand
call VCSCommandEnableBufferSetup()
if exists('b:VCSCommandBufferInfo')
let b:airline_head = s:format_name(get(b:VCSCommandBufferInfo, 0, ''))
endif
endif
else
for vcs in l:vcs_priority
if has_key(l:heads, vcs)
if !empty(b:airline_head)
let b:airline_head = b:airline_head . " | "
endif
let b:airline_head = b:airline_head . l:heads[vcs]
endif
endfor
endif
if exists("g:airline#extensions#branch#displayed_head_limit")
let w:displayed_head_limit = g:airline#extensions#branch#displayed_head_limit
if len(b:airline_head) > w:displayed_head_limit - 1
let b:airline_head = b:airline_head[0:(w:displayed_head_limit - 1)].(&encoding ==? 'utf-8' ? '…' : '.')
endif
endif
if empty(b:airline_head) || !found_fugitive_head && !s:check_in_path()
let b:airline_head = ''
endif
return b:airline_head
endfunction
function! airline#extensions#branch#get_head()
let head = ''
if s:has_fugitive && !exists('b:mercurial_dir')
let head = fugitive#head()
if empty(head) && s:has_fugitive_detect && !exists('b:git_dir')
call fugitive#detect(getcwd())
let head = fugitive#head()
endif
endif
if empty(head)
if s:has_lawrencium
let head = lawrencium#statusline()
endif
endif
return empty(head) || !s:check_in_path()
\ ? s:empty_message
\ : printf('%s%s', empty(s:symbol) ? '' : s:symbol.' ', head)
let head = airline#extensions#branch#head()
let empty_message = get(g:, 'airline#extensions#branch#empty_message', '')
let symbol = get(g:, 'airline#extensions#branch#symbol', g:airline_symbols.branch)
return empty(head)
\ ? empty_message
\ : printf('%s%s', empty(symbol) ? '' : symbol.(g:airline_symbols.space), head)
endfunction
function! s:check_in_path()
if !exists('b:airline_branch_path')
let root = get(b:, 'git_dir', get(b:, 'mercurial_dir', ''))
let bufferpath = resolve(fnamemodify(expand('%'), ':p:h'))
let root = fnamemodify(root, ':h')
let bufferpath = resolve(fnamemodify(expand('%'), ':p'))
if !filereadable(root) "not a file
" if .git is a directory, it's the old submodule format
if match(root, '\.git$') >= 0
let root = expand(fnamemodify(root, ':h'))
else
" else it's the newer format, and we need to guesstimate
let pattern = '\.git\(\\\|\/\)modules\(\\\|\/\)'
if match(root, pattern) >= 0
let root = substitute(root, pattern, '', '')
endif
endif
endif
let b:airline_file_in_root = stridx(bufferpath, root) > -1
endif
return b:airline_file_in_root
endfunction
function! s:reset_untracked_cache()
if exists("s:untracked_git")
let s:untracked_git={}
endif
if exists("s:untracked_hg")
let s:untracked_hg={}
endif
endfunction
function! airline#extensions#branch#init(ext)
call airline#parts#define_function('branch', 'airline#extensions#branch#get_head')
autocmd BufReadPost * unlet! b:airline_file_in_root
autocmd CursorHold,ShellCmdPost,CmdwinLeave * unlet! b:airline_head
autocmd User AirlineBeforeRefresh unlet! b:airline_head
autocmd BufWritePost,ShellCmdPost * call s:reset_untracked_cache()
endfunction

View File

@@ -1,6 +1,10 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !exists('*bufferline#get_status_string')
finish
endif
let s:overwrite = get(g:, 'airline#extensions#bufferline#overwrite_variables', 1)
function! airline#extensions#bufferline#init(ext)
@@ -11,7 +15,7 @@ function! airline#extensions#bufferline#init(ext)
let g:bufferline_active_highlight = 'bufferline_selected'
let g:bufferline_active_buffer_left = ''
let g:bufferline_active_buffer_right = ''
let g:bufferline_separator = ' '
let g:bufferline_separator = g:airline_symbols.space
endif
call airline#parts#define_raw('file', '%{bufferline#refresh_status()}'.bufferline#get_status_string())

View File

@@ -0,0 +1,14 @@
" MIT License. Copyright (c) 2014 Mathias Andersson.
" vim: et ts=2 sts=2 sw=2
if !exists('*CapsLockStatusline')
finish
endif
function! airline#extensions#capslock#status()
return tolower(CapsLockStatusline()) == '[caps]' ? 'CAPS' : ''
endfunction
function! airline#extensions#capslock#init(ext)
call airline#parts#define_function('capslock', 'airline#extensions#capslock#status')
endfunction

View File

@@ -1,6 +1,10 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !get(g:, 'command_t_loaded', 0)
finish
endif
function! airline#extensions#commandt#apply(...)
if bufname('%') ==# 'GoToFile'
call airline#extensions#apply_left_override('CommandT', '')

View File

@@ -1,6 +1,10 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !get(g:, 'loaded_csv', 0) && !exists(':Table')
finish
endif
let s:column_display = get(g:, 'airline#extensions#csv#column_display', 'Number')
function! airline#extensions#csv#get_column()

View File

@@ -1,6 +1,10 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !get(g:, 'loaded_ctrlp', 0)
finish
endif
let s:color_template = get(g:, 'airline#extensions#ctrlp#color_template', 'insert')
function! airline#extensions#ctrlp#generate_color_map(dark, light, white)
@@ -29,17 +33,28 @@ function! airline#extensions#ctrlp#load_theme(palette)
endfor
endfunction
" Arguments: focus, byfname, s:regexp, prv, item, nxt, marked
" Arguments: focus, byfname, regexp, prv, item, nxt, marked
function! airline#extensions#ctrlp#ctrlp_airline(...)
let regex = a:3 ? '%#CtrlPlight# regex %*' : ''
let prv = '%#CtrlPlight# '.a:4.' %#Ctrlparrow1#'.g:airline_left_sep
let item = '%#CtrlPwhite# '.a:5.' %#CtrlParrow2#'.g:airline_left_sep
let nxt = '%#CtrlPlight# '.a:6.' %#CtrlParrow3#'.g:airline_left_sep
let marked = '%#CtrlPdark# '.a:7.' '
let focus = '%=%<%#CtrlPdark# '.a:1.' %*'
let byfname = '%#CtrlParrow3#'.g:airline_right_alt_sep.'%#CtrlPdark# '.a:2.' %*'
let dir = '%#CtrlParrow3#'.g:airline_right_sep.'%#CtrlPlight# '.getcwd().' %*'
return regex.prv.item.nxt.marked.focus.byfname.dir
let b = airline#builder#new({'active': 1})
if a:2 == 'file'
call b.add_section_spaced('CtrlPlight', 'by fname')
endif
if a:3
call b.add_section_spaced('CtrlPlight', 'regex')
endif
if get(g:, 'airline#extensions#ctrlp#show_adjacent_modes', 1)
call b.add_section_spaced('CtrlPlight', a:4)
call b.add_section_spaced('CtrlPwhite', a:5)
call b.add_section_spaced('CtrlPlight', a:6)
else
call b.add_section_spaced('CtrlPwhite', a:5)
endif
call b.add_section_spaced('CtrlPdark', a:7)
call b.split()
call b.add_section_spaced('CtrlPdark', a:1)
call b.add_section_spaced('CtrlPdark', a:2)
call b.add_section_spaced('CtrlPlight', '%{getcwd()}')
return b.build()
endfunction
" Argument: len
@@ -51,7 +66,7 @@ endfunction
function! airline#extensions#ctrlp#apply(...)
" disable statusline overwrite if ctrlp already did it
return match(&statusline, 'CtrlPlight') >= 0 ? -1 : 0
return match(&statusline, 'CtrlPwhite') >= 0 ? -1 : 0
endfunction
function! airline#extensions#ctrlp#init(ext)

View File

@@ -0,0 +1,17 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:spc = g:airline_symbols.space
let s:padding = s:spc . s:spc . s:spc
function! airline#extensions#ctrlspace#statusline(...)
let b = airline#builder#new({ 'active': 1 })
call b.add_section('airline_b', '⌗' . s:padding . ctrlspace#api#StatuslineModeSegment(s:padding))
call b.split()
call b.add_section('airline_x', s:spc . ctrlspace#api#StatuslineTabSegment() . s:spc)
return b.build()
endfunction
function! airline#extensions#ctrlspace#init(ext)
let g:CtrlSpaceStatuslineFunction = "airline#extensions#ctrlspace#statusline()"
endfunction

View File

@@ -1,15 +1,18 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:section_use_groups = get(g:, 'airline#extensions#default#section_use_groupitems', 1)
let s:section_truncate_width = get(g:, 'airline#extensions#default#section_truncate_width', {
\ 'b': 88,
\ 'b': 79,
\ 'x': 60,
\ 'y': 88,
\ 'z': 45,
\ 'warning': 80,
\ 'error': 80,
\ })
let s:layout = get(g:, 'airline#extensions#default#layout', [
\ [ 'a', 'b', 'c' ],
\ [ 'x', 'y', 'z', 'warning' ]
\ [ 'x', 'y', 'z', 'warning', 'error' ]
\ ])
function! s:get_section(winnr, key, ...)
@@ -18,43 +21,73 @@ function! s:get_section(winnr, key, ...)
return ''
endif
endif
let spc = g:airline_symbols.space
let text = airline#util#getwinvar(a:winnr, 'airline_section_'.a:key, g:airline_section_{a:key})
let [prefix, suffix] = [get(a:000, 0, '%( '), get(a:000, 1, ' %)')]
let [prefix, suffix] = [get(a:000, 0, '%('.spc), get(a:000, 1, spc.'%)')]
return empty(text) ? '' : prefix.text.suffix
endfunction
function! s:build_sections(builder, context, keys)
for key in a:keys
if key == 'warning' && !a:context.active
if (key == 'warning' || key == 'error') && !a:context.active
continue
endif
" i have no idea why the warning section needs special treatment, but it's
" needed to prevent separators from showing up
if key == 'warning'
call a:builder.add_raw('%(')
endif
call a:builder.add_section('airline_'.key, s:get_section(a:context.winnr, key))
if key == 'warning'
call a:builder.add_raw('%)')
endif
call s:add_section(a:builder, a:context, key)
endfor
endfunction
" There still is a highlighting bug when using groups %(%) in the statusline,
" deactivate it, until this is properly fixed:
" https://groups.google.com/d/msg/vim_dev/sb1jmVirXPU/mPhvDnZ-CwAJ
if s:section_use_groups && (v:version >= 704 || (v:version >= 703 && has('patch81')))
function s:add_section(builder, context, key)
" i have no idea why the warning section needs special treatment, but it's
" needed to prevent separators from showing up
if ((a:key == 'error' || a:key == 'warning') && empty(s:get_section(a:context.winnr, a:key)))
return
endif
if (a:key == 'warning' || a:key == 'error')
call a:builder.add_raw('%(')
endif
call a:builder.add_section('airline_'.a:key, s:get_section(a:context.winnr, a:key))
if (a:key == 'warning' || a:key == 'error')
call a:builder.add_raw('%)')
endif
endfunction
else
" older version don't like the use of %(%)
function s:add_section(builder, context, key)
if ((a:key == 'error' || a:key == 'warning') && empty(s:get_section(a:context.winnr, a:key)))
return
endif
if a:key == 'warning'
call a:builder.add_raw('%#airline_warning#'.s:get_section(a:context.winnr, a:key))
elseif a:key == 'error'
call a:builder.add_raw('%#airline_error#'.s:get_section(a:context.winnr, a:key))
else
call a:builder.add_section('airline_'.a:key, s:get_section(a:context.winnr, a:key))
endif
endfunction
endif
function! airline#extensions#default#apply(builder, context)
let winnr = a:context.winnr
let active = a:context.active
if airline#util#getwinvar(winnr, 'airline_render_left', active || (!active && !g:airline_inactive_collapse))
call <sid>build_sections(a:builder, a:context, s:layout[0])
call s:build_sections(a:builder, a:context, s:layout[0])
else
call a:builder.add_section('airline_c'.(a:context.bufnr), ' %f%m ')
let text = s:get_section(winnr, 'c')
if empty(text)
let text = ' %f%m '
endif
call a:builder.add_section('airline_c'.(a:context.bufnr), text)
endif
call a:builder.split(s:get_section(winnr, 'gutter', '', ''))
if airline#util#getwinvar(winnr, 'airline_render_right', 1)
call <sid>build_sections(a:builder, a:context, s:layout[1])
call s:build_sections(a:builder, a:context, s:layout[1])
endif
return 1

View File

@@ -0,0 +1,53 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !exists(':ProjectCreate')
finish
endif
function! airline#extensions#eclim#creat_line(...)
if &filetype == "tree"
let builder = a:1
call builder.add_section('airline_a', ' Project ')
call builder.add_section('airline_b', ' %f ')
call builder.add_section('airline_c', '')
return 1
endif
endfunction
function! airline#extensions#eclim#get_warnings()
let eclimList = eclim#display#signs#GetExisting()
if !empty(eclimList)
" Remove any non-eclim signs (see eclim#display#signs#Update)
" First check for just errors since they are more important.
" If there are no errors, then check for warnings.
let errorList = filter(copy(eclimList), 'v:val.name =~ "^\\(qf_\\)\\?\\(error\\)$"')
if (empty(errorList))
" use the warnings
call filter(eclimList, 'v:val.name =~ "^\\(qf_\\)\\?\\(warning\\)$"')
let type = 'W'
else
" Use the errors
let eclimList = errorList
let type = 'E'
endif
if !empty(eclimList)
let errorsLine = eclimList[0]['line']
let errorsNumber = len(eclimList)
let errors = "[Eclim:" . type . " line:".string(errorsLine)." (".string(errorsNumber).")]"
if !exists(':SyntasticCheck') || SyntasticStatuslineFlag() == ''
return errors.(g:airline_symbols.space)
endif
endif
endif
return ''
endfunction
function! airline#extensions#eclim#init(ext)
call airline#parts#define_function('eclim', 'airline#extensions#eclim#get_warnings')
call a:ext.add_statusline_func('airline#extensions#eclim#creat_line')
endfunction

View File

@@ -1,6 +1,13 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
" we don't actually want this loaded :P
finish
" Due to some potential rendering issues, the use of the `space` variable is
" recommended.
let s:spc = g:airline_symbols.space
" Extension specific variables can be defined the usual fashion.
if !exists('g:airline#extensions#example#number_of_cats')
let g:airline#extensions#example#number_of_cats = 42
@@ -32,7 +39,7 @@ function! airline#extensions#example#apply(...)
let w:airline_section_c = get(w:, 'airline_section_c', g:airline_section_c)
" Then we just append this extenion to it, optionally using separators.
let w:airline_section_c .= ' '.g:airline_left_alt_sep.' %{airline#extensions#example#get_cats()}'
let w:airline_section_c .= s:spc.g:airline_left_alt_sep.s:spc.'%{airline#extensions#example#get_cats()}'
endif
endfunction

View File

@@ -1,6 +1,10 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !get(g:, 'loaded_signify', 0) && !get(g:, 'loaded_gitgutter', 0) && !get(g:, 'loaded_changes', 0) && !get(g:, 'loaded_quickfixsigns', 0)
finish
endif
let s:non_zero_only = get(g:, 'airline#extensions#hunks#non_zero_only', 0)
let s:hunk_symbols = get(g:, 'airline#extensions#hunks#hunk_symbols', ['+', '~', '-'])
@@ -12,29 +16,49 @@ function! s:get_hunks_signify()
return []
endfunction
function! s:is_branch_empty()
return exists('*airline#extensions#branch#head') && empty(airline#extensions#branch#head())
endfunction
function! s:get_hunks_gitgutter()
if !get(g:, 'gitgutter_enabled', 0)
if !get(g:, 'gitgutter_enabled', 0) || s:is_branch_empty()
return ''
endif
return GitGutterGetHunkSummary()
endfunction
function! s:get_hunks_changes()
if !get(b:, 'changes_view_enabled', 0) || s:is_branch_empty()
return []
endif
let hunks = changes#GetStats()
for i in hunks
if i > 0
return hunks
endif
endfor
return []
endfunction
function! s:get_hunks_empty()
return ''
endfunction
let s:source_func = ''
function! s:get_hunks()
if empty(s:source_func)
if get(g:, 'loaded_signify', 0)
let s:source_func = 's:get_hunks_signify'
if !exists('b:source_func')
if get(g:, 'loaded_signify') && sy#buffer_is_active()
let b:source_func = 's:get_hunks_signify'
elseif exists('*GitGutterGetHunkSummary')
let s:source_func = 's:get_hunks_gitgutter'
let b:source_func = 's:get_hunks_gitgutter'
elseif exists('*changes#GetStats')
let b:source_func = 's:get_hunks_changes'
elseif exists('*quickfixsigns#vcsdiff#GetHunkSummary')
let b:source_func = 'quickfixsigns#vcsdiff#GetHunkSummary'
else
let s:source_func = 's:get_hunks_empty'
let b:source_func = 's:get_hunks_empty'
endif
endif
return {s:source_func}()
return {b:source_func}()
endfunction
function! airline#extensions#hunks#get_hunks()

View File

@@ -0,0 +1,32 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !exists(':NetrwSettings')
finish
endif
function! airline#extensions#netrw#apply(...)
if &ft == 'netrw'
let spc = g:airline_symbols.space
call a:1.add_section('airline_a', spc.'netrw'.spc)
if exists('*airline#extensions#branch#get_head')
call a:1.add_section('airline_b', spc.'%{airline#extensions#branch#get_head()}'.spc)
endif
call a:1.add_section('airline_c', spc.'%f'.spc)
call a:1.split()
call a:1.add_section('airline_y', spc.'%{airline#extensions#netrw#sortstring()}'.spc)
return 1
endif
endfunction
function! airline#extensions#netrw#init(ext)
let g:netrw_force_overwrite_statusline = 0
call a:ext.add_statusline_func('airline#extensions#netrw#apply')
endfunction
function! airline#extensions#netrw#sortstring()
let order = (g:netrw_sort_direction =~ 'n') ? '+' : '-'
return g:netrw_sort_by . (g:airline_symbols.space) . '[' . order . ']'
endfunction

View File

@@ -0,0 +1,55 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !get(g:, 'loaded_nrrw_rgn', 0)
finish
endif
function! airline#extensions#nrrwrgn#apply(...)
if exists(":WidenRegion") == 2
let spc = g:airline_symbols.space
if !exists("*nrrwrgn#NrrwRgnStatus()") || empty(nrrwrgn#NrrwRgnStatus())
call a:1.add_section('airline_a', printf('%s[Narrowed%s#%d]', spc, spc, b:nrrw_instn))
let bufname=(get(b:, 'orig_buf', 0) ? bufname(b:orig_buf) : substitute(bufname('%'), '^Nrrwrgn_\zs.*\ze_\d\+$', submatch(0), ''))
call a:1.add_section('airline_c', spc.bufname.spc)
call a:1.split()
else
let dict=nrrwrgn#NrrwRgnStatus()
let vmode = { 'v': 'Char ', 'V': 'Line ', '': 'Block '}
let mode = dict.visual ? vmode[dict.visual] : vmode['V']
let winwidth = winwidth(0)
if winwidth < 80
let mode = mode[0]
endif
let title = (winwidth < 80 ? "Nrrw" : "Narrowed ")
let multi = (winwidth < 80 ? 'M' : 'Multi')
call a:1.add_section('airline_a', printf('[%s%s%s#%d]%s', (dict.multi ? multi : ""),
\ title, mode, b:nrrw_instn, spc))
let name = dict.fullname
if name !=# '[No Name]'
if winwidth > 100
" need some space
let name = fnamemodify(dict.fullname, ':~')
if strlen(name) > 8
" shorten name
let name = substitute(name, '\(.\)[^/\\]*\([/\\]\)', '\1\2', 'g')
endif
else
let name = fnamemodify(dict.fullname, ':t')
endif
endif
let range=(dict.multi ? '' : printf("[%d-%d]", dict.start[1], dict.end[1]))
call a:1.add_section('airline_c', printf("%s %s %s", name, range,
\ dict.enabled ? (&encoding ==? 'utf-8' ? "\u2713" : '') : '!'))
call a:1.split()
call a:1.add_section('airline_x', get(g:, 'airline_section_x').spc)
call a:1.add_section('airline_y', spc.get(g:, 'airline_section_y').spc)
call a:1.add_section('airline_z', spc.get(g:, 'airline_section_z'))
endif
return 1
endif
endfunction
function! airline#extensions#nrrwrgn#init(ext)
call a:ext.add_statusline_func('airline#extensions#nrrwrgn#apply')
endfunction

View File

@@ -0,0 +1,36 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
function! airline#extensions#po#apply(...)
if &ft ==# 'po'
call airline#extensions#prepend_to_section('z', '%{airline#extensions#po#stats()}')
autocmd airline BufWritePost * unlet! b:airline_po_stats
endif
endfunction
function! airline#extensions#po#stats()
if exists('b:airline_po_stats') && !empty(b:airline_po_stats)
return b:airline_po_stats
endif
let airline_po_stats = system('msgfmt --statistics -o /dev/null -- '. expand('%:p'))
if v:shell_error
return ''
endif
try
let b:airline_po_stats = '['. split(airline_po_stats, '\n')[0]. ']'
catch
let b:airline_po_stats = ''
endtry
if exists("g:airline#extensions#po#displayed_limit")
let w:displayed_po_limit = g:airline#extensions#po#displayed_limit
if len(b:airline_po_stats) > w:displayed_po_limit - 1
let b:airline_po_stats = b:airline_po_stats[0:(w:displayed_po_limit - 1)].(&encoding==?'utf-8' ? '…' : '.')
endif
endif
return b:airline_po_stats
endfunction
function! airline#extensions#po#init(ext)
call a:ext.add_statusline_func('airline#extensions#po#apply')
endfunction

View File

@@ -0,0 +1,33 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !exists(':PromptlineSnapshot')
finish
endif
if !exists('airline#extensions#promptline#snapshot_file') || !len('airline#extensions#promptline#snapshot_file')
finish
endif
let s:prompt_snapshot_file = get(g:, 'airline#extensions#promptline#snapshot_file', '')
let s:color_template = get(g:, 'airline#extensions#promptline#color_template', 'normal')
function! airline#extensions#promptline#init(ext)
call a:ext.add_theme_func('airline#extensions#promptline#set_prompt_colors')
endfunction
function! airline#extensions#promptline#set_prompt_colors(palette)
let color_template = has_key(a:palette, s:color_template) ? s:color_template : 'normal'
let mode_palette = a:palette[color_template]
if !has_key(g:, 'promptline_symbols')
let g:promptline_symbols = {
\ 'left' : g:airline_left_sep,
\ 'right' : g:airline_right_sep,
\ 'left_alt' : g:airline_left_alt_sep,
\ 'right_alt' : g:airline_right_alt_sep}
endif
let promptline_theme = promptline#api#create_theme_from_airline(mode_palette)
call promptline#api#create_snapshot_with_theme(s:prompt_snapshot_file, promptline_theme)
endfunction

View File

@@ -0,0 +1,37 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let g:airline#extensions#quickfix#quickfix_text = 'Quickfix'
let g:airline#extensions#quickfix#location_text = 'Location'
function! airline#extensions#quickfix#apply(...)
if &buftype == 'quickfix'
let w:airline_section_a = s:get_text()
let w:airline_section_b = '%{get(w:, "quickfix_title", "")}'
let w:airline_section_c = ''
let w:airline_section_x = ''
endif
endfunction
function! airline#extensions#quickfix#init(ext)
call a:ext.add_statusline_func('airline#extensions#quickfix#apply')
endfunction
function! s:get_text()
redir => buffers
silent ls
redir END
let nr = bufnr('%')
for buf in split(buffers, '\n')
if match(buf, '\v^\s*'.nr) > -1
if match(buf, '\cQuickfix') > -1
return g:airline#extensions#quickfix#quickfix_text
else
return g:airline#extensions#quickfix#location_text
endif
endif
endfor
return ''
endfunction

View File

@@ -1,10 +1,14 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !exists(':SyntasticCheck')
finish
endif
function! airline#extensions#syntastic#get_warnings()
let errors = SyntasticStatuslineFlag()
if strlen(errors) > 0
return errors.' '
return errors.(g:airline_symbols.space)
endif
return ''
endfunction

View File

@@ -1,170 +1,182 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:formatter = get(g:, 'airline#extensions#tabline#formatter', 'default')
let s:excludes = get(g:, 'airline#extensions#tabline#excludes', [])
let s:tab_nr_type = get(g:, 'airline#extensions#tabline#tab_nr_type', 0)
let s:show_buffers = get(g:, 'airline#extensions#tabline#show_buffers', 1)
let s:show_tabs = get(g:, 'airline#extensions#tabline#show_tabs', 1)
let s:ignore_bufadd_pat = get(g:, 'airline#extensions#tabline#ignore_bufadd_pat', '\c\vgundo|undotree|vimfiler|tagbar|nerd_tree')
let s:builder_context = {
\ 'active' : 1,
\ 'left_sep' : get(g:, 'airline#extensions#tabline#left_sep' , g:airline_left_sep),
\ 'left_alt_sep' : get(g:, 'airline#extensions#tabline#left_alt_sep' , g:airline_left_alt_sep),
\ 'right_sep' : get(g:, 'airline#extensions#tabline#right_sep' , g:airline_right_sep),
\ 'right_alt_sep' : get(g:, 'airline#extensions#tabline#right_alt_sep', g:airline_right_alt_sep),
\ }
let s:taboo = get(g:, 'airline#extensions#taboo#enabled', 1) && get(g:, 'loaded_taboo', 0)
if s:taboo
let g:taboo_tabline = 0
endif
let s:buf_min_count = get(g:, 'airline#extensions#tabline#buffer_min_count', 0)
let s:buf_len = 0
" TODO: temporary
let s:buf_max = get(g:, 'airline#extensions#tabline#buffer_max', winwidth(0) / 16)
let s:ctrlspace = get(g:, 'CtrlSpaceLoaded', 0)
function! airline#extensions#tabline#init(ext)
if has('gui_running')
set guioptions-=e
endif
set tabline=%!airline#extensions#tabline#get()
if s:buf_min_count <= 0
set showtabline=2
else
autocmd CursorMoved * call <sid>cursormove()
endif
autocmd User AirlineToggledOn call s:toggle_on()
autocmd User AirlineToggledOff call s:toggle_off()
call s:toggle_on()
call a:ext.add_theme_func('airline#extensions#tabline#load_theme')
endfunction
function! s:toggle_off()
call airline#extensions#tabline#autoshow#off()
call airline#extensions#tabline#tabs#off()
call airline#extensions#tabline#buffers#off()
call airline#extensions#tabline#ctrlspace#off()
endfunction
function! s:toggle_on()
call airline#extensions#tabline#autoshow#on()
call airline#extensions#tabline#tabs#on()
call airline#extensions#tabline#buffers#on()
call airline#extensions#tabline#ctrlspace#on()
set tabline=%!airline#extensions#tabline#get()
endfunction
function! s:update_tabline()
if get(g:, 'airline#extensions#tabline#disable_refresh', 0)
return
endif
let match = expand('<afile>')
if pumvisible()
return
elseif !get(g:, 'airline#extensions#tabline#enabled', 0)
return
" return, if buffer matches ignore pattern or is directory (netrw)
elseif empty(match)
\ || match(match, s:ignore_bufadd_pat) > -1
\ || isdirectory(expand("<afile>"))
return
endif
doautocmd User BufMRUChange
endfunction
function! airline#extensions#tabline#load_theme(palette)
if pumvisible()
return
endif
let colors = get(a:palette, 'tabline', {})
" Theme for tabs on the left
let l:tab = get(colors, 'airline_tab', a:palette.normal.airline_b)
let l:tabsel = get(colors, 'airline_tabsel', a:palette.normal.airline_a)
let l:tabtype = get(colors, 'airline_tabtype', a:palette.visual.airline_a)
let l:tabfill = get(colors, 'airline_tabfill', a:palette.normal.airline_c)
let l:tabmod = get(colors, 'airline_tabmod', a:palette.insert.airline_a)
let l:tabhid = get(colors, 'airline_tabhid', a:palette.normal.airline_c)
if has_key(a:palette, 'normal_modified') && has_key(a:palette.normal_modified, 'airline_c')
let l:tabmodu = get(colors, 'airline_tabmod_unsel', a:palette.normal_modified.airline_c)
else
"Fall back to normal airline_c if modified airline_c isn't present
let l:tabmodu = get(colors, 'airline_tabmod_unsel', a:palette.normal.airline_c)
endif
call airline#highlighter#exec('airline_tab', l:tab)
call airline#highlighter#exec('airline_tabsel', l:tabsel)
call airline#highlighter#exec('airline_tabtype', l:tabtype)
call airline#highlighter#exec('airline_tabfill', l:tabfill)
call airline#highlighter#exec('airline_tabmod', l:tabmod)
call airline#highlighter#exec('airline_tabmod_unsel', l:tabmodu)
call airline#highlighter#exec('airline_tabhid', l:tabhid)
endfunction
function! s:cursormove()
let c = len(s:get_buffer_list())
if c > s:buf_min_count
if &showtabline != 2
set showtabline=2
endif
" Theme for tabs on the right
let l:tabsel_right = get(colors, 'airline_tabsel_right', a:palette.normal.airline_a)
let l:tab_right = get(colors, 'airline_tab_right', a:palette.inactive.airline_c)
let l:tabmod_right = get(colors, 'airline_tabmod_right', a:palette.insert.airline_a)
let l:tabhid_right = get(colors, 'airline_tabhid_right', a:palette.normal.airline_c)
if has_key(a:palette, 'normal_modified') && has_key(a:palette.normal_modified, 'airline_c')
let l:tabmodu_right = get(colors, 'airline_tabmod_unsel_right', a:palette.normal_modified.airline_c)
else
if &showtabline != 0
set showtabline=0
endif
"Fall back to normal airline_c if modified airline_c isn't present
let l:tabmodu_right = get(colors, 'airline_tabmod_unsel_right', a:palette.normal.airline_c)
endif
call airline#highlighter#exec('airline_tab_right', l:tab_right)
call airline#highlighter#exec('airline_tabsel_right', l:tabsel_right)
call airline#highlighter#exec('airline_tabmod_right', l:tabmod_right)
call airline#highlighter#exec('airline_tabhid_right', l:tabhid_right)
call airline#highlighter#exec('airline_tabmod_unsel_right', l:tabmodu_right)
endfunction
let s:current_tabcnt = -1
function! airline#extensions#tabline#get()
if s:show_buffers && tabpagenr('$') == 1
return s:get_buffers()
let curtabcnt = tabpagenr('$')
if curtabcnt != s:current_tabcnt
let s:current_tabcnt = curtabcnt
call airline#extensions#tabline#tabs#invalidate()
call airline#extensions#tabline#buffers#invalidate()
call airline#extensions#tabline#ctrlspace#invalidate()
endif
if !exists('#airline#BufAdd#*')
autocmd airline BufAdd * call <sid>update_tabline()
endif
if s:ctrlspace
return airline#extensions#tabline#ctrlspace#get()
elseif s:show_buffers && curtabcnt == 1 || !s:show_tabs
return airline#extensions#tabline#buffers#get()
else
return s:get_tabs()
return airline#extensions#tabline#tabs#get()
endif
endfunction
function! airline#extensions#tabline#title(n)
let buflist = tabpagebuflist(a:n)
let winnr = tabpagewinnr(a:n)
return airline#extensions#tabline#get_buffer_name(buflist[winnr - 1])
let title = ''
if s:taboo
let title = TabooTabTitle(a:n)
endif
if empty(title)
let buflist = tabpagebuflist(a:n)
let winnr = tabpagewinnr(a:n)
return airline#extensions#tabline#get_buffer_name(buflist[winnr - 1])
endif
return title
endfunction
function! airline#extensions#tabline#get_buffer_name(nr)
return airline#extensions#tabline#formatters#{s:formatter}(a:nr, get(s:, 'current_buffer_list', []))
return airline#extensions#tabline#formatters#{s:formatter}#format(a:nr, airline#extensions#tabline#buflist#list())
endfunction
function! s:get_buffer_list()
let buffers = []
let cur = bufnr('%')
for nr in range(1, bufnr('$'))
if buflisted(nr) && bufexists(nr)
for ex in s:excludes
if match(bufname(nr), ex)
continue
endif
endfor
call add(buffers, nr)
endif
endfor
" TODO: temporary fix; force the active buffer to be first when there are many buffers open
if len(buffers) > s:buf_max && index(buffers, cur) > -1
while buffers[1] != cur
let first = remove(buffers, 0)
call add(buffers, first)
endwhile
let buffers = buffers[:s:buf_max]
function! airline#extensions#tabline#new_builder()
let builder_context = {
\ 'active' : 1,
\ 'right_sep' : get(g:, 'airline#extensions#tabline#right_sep' , g:airline_right_sep),
\ 'right_alt_sep' : get(g:, 'airline#extensions#tabline#right_alt_sep', g:airline_right_alt_sep),
\ }
if get(g:, 'airline_powerline_fonts', 0)
let builder_context.left_sep = get(g:, 'airline#extensions#tabline#left_sep' , g:airline_left_sep)
let builder_context.left_alt_sep = get(g:, 'airline#extensions#tabline#left_alt_sep' , g:airline_left_alt_sep)
else
let builder_context.left_sep = get(g:, 'airline#extensions#tabline#left_sep' , ' ')
let builder_context.left_alt_sep = get(g:, 'airline#extensions#tabline#left_alt_sep' , '|')
endif
let s:current_buffer_list = buffers
return buffers
return airline#builder#new(builder_context)
endfunction
function! s:get_buffers()
let b = airline#builder#new(s:builder_context)
function! airline#extensions#tabline#group_of_bufnr(tab_bufs, bufnr)
let cur = bufnr('%')
let tab_bufs = tabpagebuflist(tabpagenr())
for nr in s:get_buffer_list()
if cur == nr
if g:airline_detect_modified && getbufvar(nr, '&modified')
let group = 'airline_tabmod'
else
let group = 'airline_tabsel'
endif
if cur == a:bufnr
if g:airline_detect_modified && getbufvar(a:bufnr, '&modified')
let group = 'airline_tabmod'
else
if index(tab_bufs, nr) > -1
let group = 'airline_tab'
else
let group = 'airline_tabhid'
endif
endif
call b.add_section(group, '%( %{airline#extensions#tabline#get_buffer_name('.nr.')} %)')
endfor
call b.add_section('airline_tabfill', '')
call b.split()
call b.add_section('airline_tabtype', ' buffers ')
return b.build()
endfunction
function! s:get_tabs()
let b = airline#builder#new(s:builder_context)
for i in range(1, tabpagenr('$'))
if i == tabpagenr()
let group = 'airline_tabsel'
if g:airline_detect_modified
for bi in tabpagebuflist(i)
if getbufvar(bi, '&modified')
let group = 'airline_tabmod'
endif
endfor
endif
else
endif
else
if g:airline_detect_modified && getbufvar(a:bufnr, '&modified')
let group = 'airline_tabmod_unsel'
elseif index(a:tab_bufs, a:bufnr) > -1
let group = 'airline_tab'
endif
let val = '%('
if s:tab_nr_type == 0
let val .= ' %{len(tabpagebuflist('.i.'))}'
else
let val .= ' '.i
let group = 'airline_tabhid'
endif
call b.add_section(group, val.'%'.i.'T %{airline#extensions#tabline#title('.i.')} %)')
endfor
call b.add_raw('%T')
call b.add_section('airline_tabfill', '')
call b.split()
call b.add_section('airline_tab', ' %999XX ')
call b.add_section('airline_tabtype', ' tabs ')
return b.build()
endif
return group
endfunction

View File

@@ -0,0 +1,53 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:show_buffers = get(g:, 'airline#extensions#tabline#show_buffers', 1)
let s:buf_min_count = get(g:, 'airline#extensions#tabline#buffer_min_count', 0)
let s:tab_min_count = get(g:, 'airline#extensions#tabline#tab_min_count', 0)
function! airline#extensions#tabline#autoshow#off()
if exists('s:original_tabline')
let &tabline = s:original_tabline
let &showtabline = s:original_showtabline
endif
augroup airline_tabline_autoshow
autocmd!
augroup END
endfunction
function! airline#extensions#tabline#autoshow#on()
let [ s:original_tabline, s:original_showtabline ] = [ &tabline, &showtabline ]
augroup airline_tabline_autoshow
autocmd!
if s:buf_min_count <= 0 && s:tab_min_count <= 1
if &lines > 3
set showtabline=2
endif
else
if s:show_buffers == 1
autocmd BufEnter * call <sid>show_tabline(s:buf_min_count, len(airline#extensions#tabline#buflist#list()))
autocmd BufUnload * call <sid>show_tabline(s:buf_min_count, len(airline#extensions#tabline#buflist#list()) - 1)
else
autocmd TabEnter * call <sid>show_tabline(s:tab_min_count, tabpagenr('$'))
endif
endif
" Invalidate cache. This has to come after the BufUnload for
" s:show_buffers, to invalidate the cache for BufEnter.
autocmd BufLeave,BufAdd,BufUnload * call airline#extensions#tabline#buflist#invalidate()
augroup END
endfunction
function! s:show_tabline(min_count, total_count)
if a:total_count >= a:min_count
if &showtabline != 2 && &lines > 3
set showtabline=2
endif
else
if &showtabline != 0
set showtabline=0
endif
endif
endfunction

View File

@@ -0,0 +1,205 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
let s:buffer_idx_mode = get(g:, 'airline#extensions#tabline#buffer_idx_mode', 0)
let s:show_tab_type = get(g:, 'airline#extensions#tabline#show_tab_type', 1)
let s:buffers_label = get(g:, 'airline#extensions#tabline#buffers_label', 'buffers')
let s:spc = g:airline_symbols.space
let s:current_bufnr = -1
let s:current_modified = 0
let s:current_tabline = ''
let s:current_visible_buffers = []
let s:number_map = &encoding == 'utf-8'
\ ? {
\ '0': '⁰',
\ '1': '¹',
\ '2': '²',
\ '3': '³',
\ '4': '⁴',
\ '5': '⁵',
\ '6': '⁶',
\ '7': '⁷',
\ '8': '⁸',
\ '9': '⁹'
\ }
\ : {}
function! airline#extensions#tabline#buffers#off()
augroup airline_tabline_buffers
autocmd!
augroup END
endfunction
function! airline#extensions#tabline#buffers#on()
augroup airline_tabline_buffers
autocmd!
autocmd BufDelete * call airline#extensions#tabline#buffers#invalidate()
autocmd User BufMRUChange call airline#extensions#tabline#buflist#invalidate()
autocmd User BufMRUChange call airline#extensions#tabline#buffers#invalidate()
augroup END
endfunction
function! airline#extensions#tabline#buffers#invalidate()
let s:current_bufnr = -1
endfunction
function! airline#extensions#tabline#buffers#get()
call <sid>map_keys()
let cur = bufnr('%')
if cur == s:current_bufnr
if !g:airline_detect_modified || getbufvar(cur, '&modified') == s:current_modified
return s:current_tabline
endif
endif
let l:index = 1
let b = airline#extensions#tabline#new_builder()
let tab_bufs = tabpagebuflist(tabpagenr())
for nr in s:get_visible_buffers()
if nr < 0
call b.add_raw('%#airline_tabhid#...')
continue
endif
let group = airline#extensions#tabline#group_of_bufnr(tab_bufs, nr)
if nr == cur
let s:current_modified = (group == 'airline_tabmod') ? 1 : 0
endif
" Neovim feature: Have clickable buffers
if has("tablineat")
call b.add_raw('%'.nr.'@airline#extensions#tabline#buffers#switchbuf@')
endif
if s:buffer_idx_mode
if len(s:number_map) > 0
call b.add_section(group, s:spc . get(s:number_map, l:index, '') . '%(%{airline#extensions#tabline#get_buffer_name('.nr.')}%)' . s:spc)
else
call b.add_section(group, '['.l:index.s:spc.'%(%{airline#extensions#tabline#get_buffer_name('.nr.')}%)'.']')
endif
let l:index = l:index + 1
else
call b.add_section(group, s:spc.'%(%{airline#extensions#tabline#get_buffer_name('.nr.')}%)'.s:spc)
endif
if has("tablineat")
call b.add_raw('%X')
endif
endfor
call b.add_section('airline_tabfill', '')
call b.split()
call b.add_section('airline_tabfill', '')
if s:show_tab_type
call b.add_section_spaced('airline_tabtype', s:buffers_label)
endif
let s:current_bufnr = cur
let s:current_tabline = b.build()
return s:current_tabline
endfunction
function! s:get_visible_buffers()
let buffers = airline#extensions#tabline#buflist#list()
let cur = bufnr('%')
let total_width = 0
let max_width = 0
for nr in buffers
let width = len(airline#extensions#tabline#get_buffer_name(nr)) + 4
let total_width += width
let max_width = max([max_width, width])
endfor
" only show current and surrounding buffers if there are too many buffers
let position = index(buffers, cur)
let vimwidth = &columns
if total_width > vimwidth && position > -1
let buf_count = len(buffers)
" determine how many buffers to show based on the longest buffer width,
" use one on the right side and put the rest on the left
let buf_max = vimwidth / max_width
let buf_right = 1
let buf_left = max([0, buf_max - buf_right])
let start = max([0, position - buf_left])
let end = min([buf_count, position + buf_right])
" fill up available space on the right
if position < buf_left
let end += (buf_left - position)
endif
" fill up available space on the left
if end > buf_count - 1 - buf_right
let start -= max([0, buf_right - (buf_count - 1 - position)])
endif
let buffers = eval('buffers[' . start . ':' . end . ']')
if start > 0
call insert(buffers, -1, 0)
endif
if end < buf_count - 1
call add(buffers, -1)
endif
endif
let s:current_visible_buffers = buffers
return buffers
endfunction
function! s:select_tab(buf_index)
" no-op when called in the NERDTree buffer
if exists('t:NERDTreeBufName') && bufname('%') == t:NERDTreeBufName
return
endif
let idx = a:buf_index
if s:current_visible_buffers[0] == -1
let idx = idx + 1
endif
let buf = get(s:current_visible_buffers, idx, 0)
if buf != 0
exec 'b!' . buf
endif
endfunction
function! s:jump_to_tab(offset)
let l = s:current_visible_buffers
let i = index(l, bufnr('%'))
if i > -1
exec 'b!' . l[float2nr(fmod(i + a:offset, len(l)))]
endif
endfunction
function s:map_keys()
if s:buffer_idx_mode
noremap <silent> <Plug>AirlineSelectTab1 :call <SID>select_tab(0)<CR>
noremap <silent> <Plug>AirlineSelectTab2 :call <SID>select_tab(1)<CR>
noremap <silent> <Plug>AirlineSelectTab3 :call <SID>select_tab(2)<CR>
noremap <silent> <Plug>AirlineSelectTab4 :call <SID>select_tab(3)<CR>
noremap <silent> <Plug>AirlineSelectTab5 :call <SID>select_tab(4)<CR>
noremap <silent> <Plug>AirlineSelectTab6 :call <SID>select_tab(5)<CR>
noremap <silent> <Plug>AirlineSelectTab7 :call <SID>select_tab(6)<CR>
noremap <silent> <Plug>AirlineSelectTab8 :call <SID>select_tab(7)<CR>
noremap <silent> <Plug>AirlineSelectTab9 :call <SID>select_tab(8)<CR>
noremap <silent> <Plug>AirlineSelectPrevTab :<C-u>call <SID>jump_to_tab(-v:count1)<CR>
noremap <silent> <Plug>AirlineSelectNextTab :<C-u>call <SID>jump_to_tab(v:count1)<CR>
endif
endfunction
function airline#extensions#tabline#buffers#switchbuf(minwid, clicks, button, modifiers) abort
" Run the following code only on a single left mouse button click without modifiers pressed
" works only in recent NeoVim with has('tablineat')
if a:clicks == 1 && a:button is# 'l' && a:modifiers !~# '[^ ]'
sil execute 'buffer' a:minwid
endif
endfunction

View File

@@ -0,0 +1,42 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:excludes = get(g:, 'airline#extensions#tabline#excludes', [])
let s:exclude_preview = get(g:, 'airline#extensions#tabline#exclude_preview', 1)
function! airline#extensions#tabline#buflist#invalidate()
unlet! s:current_buffer_list
endfunction
function! airline#extensions#tabline#buflist#list()
if exists('s:current_buffer_list')
return s:current_buffer_list
endif
let list = (exists('g:did_bufmru') && g:did_bufmru) ? BufMRUList() : range(1, bufnr("$"))
let buffers = []
" If this is too slow, we can switch to a different algorithm.
" Basically branch 535 already does it, but since it relies on
" BufAdd autocommand, I'd like to avoid this if possible.
for nr in list
if buflisted(nr)
" Do not add to the bufferlist, if either
" 1) buffername matches exclude pattern
" 2) buffer is a quickfix buffer
" 3) exclude preview windows (if 'bufhidden' == wipe
" and 'buftype' == nofile
if (!empty(s:excludes) && match(bufname(nr), join(s:excludes, '\|')) > -1) ||
\ (getbufvar(nr, 'current_syntax') == 'qf') ||
\ (s:exclude_preview && getbufvar(nr, '&bufhidden') == 'wipe'
\ && getbufvar(nr, '&buftype') == 'nofile')
continue
endif
call add(buffers, nr)
endif
endfor
let s:current_buffer_list = buffers
return buffers
endfunction

View File

@@ -0,0 +1,144 @@
" MIT License. Copyright (c) 2016 Kevin Sapper
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
let s:current_bufnr = -1
let s:current_tabnr = -1
let s:current_tabline = ''
let s:buffers_label = get(g:, 'airline#extensions#tabline#buffers_label', 'buffers')
let s:tabs_label = get(g:, 'airline#extensions#tabline#tabs_label', 'tabs')
let s:switch_buffers_and_tabs = get(g:, 'airline#extensions#tabline#switch_buffers_and_tabs', 0)
let s:show_buffers = get(g:, 'airline#extensions#tabline#show_buffers', 1)
let s:show_tabs = get(g:, 'airline#extensions#tabline#show_tabs', 1)
function! airline#extensions#tabline#ctrlspace#off()
augroup airline_tabline_ctrlspace
autocmd!
augroup END
endfunction
function! airline#extensions#tabline#ctrlspace#on()
augroup airline_tabline_ctrlspace
autocmd!
autocmd BufDelete * call airline#extensions#tabline#ctrlspace#invalidate()
augroup END
endfunction
function! airline#extensions#tabline#ctrlspace#invalidate()
let s:current_bufnr = -1
let s:current_tabnr = -1
endfunction
function! airline#extensions#tabline#ctrlspace#add_buffer_section(builder, cur_tab, cur_buf, pos)
if a:pos == 0
let pos_extension = ''
else
let pos_extension = '_right'
endif
let s:buffer_list = ctrlspace#api#BufferList(a:cur_tab)
for buffer in s:buffer_list
if a:cur_buf == buffer.index
if buffer.modified
let group = 'airline_tabmod'.pos_extension
else
let group = 'airline_tabsel'.pos_extension
endif
else
if buffer.modified
let group = 'airline_tabmod_unsel'.pos_extension
elseif buffer.visible
let group = 'airline_tab'.pos_extension
else
let group = 'airline_tabhid'.pos_extension
endif
endif
let buf_name = '%(%{airline#extensions#tabline#get_buffer_name('.buffer.index.')}%)'
call a:builder.add_section_spaced(group, buf_name)
endfor
endfunction
function! airline#extensions#tabline#ctrlspace#add_tab_section(builder, pos)
if a:pos == 0
let pos_extension = ''
else
let pos_extension = '_right'
endif
for tab in s:tab_list
if tab.current
if tab.modified
let group = 'airline_tabmod'.pos_extension
else
let group = 'airline_tabsel'.pos_extension
endif
else
if tab.modified
let group = 'airline_tabmod_unsel'.pos_extension
else
let group = 'airline_tabhid'.pos_extension
endif
endif
call a:builder.add_section_spaced(group, tab.title.ctrlspace#api#TabBuffersNumber(tab.index))
endfor
endfunction
function! airline#extensions#tabline#ctrlspace#get()
let cur_buf = bufnr('%')
let s:tab_list = ctrlspace#api#TabList()
for tab in s:tab_list
if tab.current
let cur_tab = tab.index
endif
endfor
if cur_buf == s:current_bufnr && cur_tab == s:current_tabnr
return s:current_tabline
endif
let builder = airline#extensions#tabline#new_builder()
" Add left tabline content
if s:show_buffers == 0
call airline#extensions#tabline#ctrlspace#add_tab_section(builder, 0)
elseif s:show_tabs == 0
call airline#extensions#tabline#ctrlspace#add_buffer_section(builder, cur_tab, cur_buf, 0)
else
if s:switch_buffers_and_tabs == 0
call builder.add_section_spaced('airline_tabtype', s:buffers_label)
call airline#extensions#tabline#ctrlspace#add_buffer_section(builder, cur_tab, cur_buf, 0)
else
call builder.add_section_spaced('airline_tabtype', s:tabs_label)
call airline#extensions#tabline#ctrlspace#add_tab_section(builder, 0)
endif
endif
call builder.add_section('airline_tabfill', '')
call builder.split()
call builder.add_section('airline_tabfill', '')
" Add right tabline content
if s:show_buffers == 0
call builder.add_section_spaced('airline_tabtype', s:tabs_label)
elseif s:show_tabs == 0
call builder.add_section_spaced('airline_tabtype', s:buffers_label)
else
if s:switch_buffers_and_tabs == 0
call airline#extensions#tabline#ctrlspace#add_tab_section(builder, 1)
call builder.add_section_spaced('airline_tabtype', s:tabs_label)
else
call airline#extensions#tabline#ctrlspace#add_buffer_section(builder, cur_tab, cur_buf, 1)
call builder.add_section_spaced('airline_tabtype', s:buffers_label)
endif
endif
let s:current_bufnr = cur_buf
let s:current_tabnr = cur_tab
let s:current_tabline = builder.build()
return s:current_tabline
endfunction

View File

@@ -1,19 +1,16 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:fmod = get(g:, 'airline#extensions#tabline#fnamemod', ':~:.')
let s:fnamecollapse = get(g:, 'airline#extensions#tabline#fnamecollapse', 1)
let s:fnametruncate = get(g:, 'airline#extensions#tabline#fnametruncate', 0)
let s:buf_nr_format = get(g:, 'airline#extensions#tabline#buffer_nr_format', '%s: ')
let s:buf_nr_show = get(g:, 'airline#extensions#tabline#buffer_nr_show', 0)
let s:buf_modified_symbol = g:airline_symbols.modified
function! airline#extensions#tabline#formatters#default(bufnr, buffers)
function! airline#extensions#tabline#formatters#default#format(bufnr, buffers)
let _ = ''
if s:buf_nr_show
let _ .= printf(s:buf_nr_format, a:bufnr)
endif
let name = bufname(a:bufnr)
if empty(name)
let _ .= '[No Name]'
@@ -23,12 +20,20 @@ function! airline#extensions#tabline#formatters#default(bufnr, buffers)
else
let _ .= fnamemodify(name, s:fmod)
endif
if a:bufnr != bufnr('%') && s:fnametruncate && strlen(_) > s:fnametruncate
let _ = strpart(_, 0, s:fnametruncate)
endif
endif
return airline#extensions#tabline#formatters#default#wrap_name(a:bufnr, _)
endfunction
function! airline#extensions#tabline#formatters#default#wrap_name(bufnr, buffer_name)
let _ = s:buf_nr_show ? printf(s:buf_nr_format, a:bufnr) : ''
let _ .= substitute(a:buffer_name, '\\', '/', 'g')
if getbufvar(a:bufnr, '&modified') == 1
let _ .= s:buf_modified_symbol
endif
return _
endfunction

View File

@@ -0,0 +1,32 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
function! airline#extensions#tabline#formatters#unique_tail#format(bufnr, buffers)
let duplicates = {}
let tails = {}
let map = {}
for nr in a:buffers
let name = bufname(nr)
if empty(name)
let map[nr] = '[No Name]'
else
let tail = fnamemodify(name, ':s?/\+$??:t')
if has_key(tails, tail)
let duplicates[nr] = nr
endif
let tails[tail] = 1
let map[nr] = airline#extensions#tabline#formatters#default#wrap_name(nr, tail)
endif
endfor
for nr in values(duplicates)
let map[nr] = airline#extensions#tabline#formatters#default#wrap_name(nr, fnamemodify(bufname(nr), ':p:.'))
endfor
if has_key(map, a:bufnr)
return map[a:bufnr]
endif
" if we get here, the buffer list isn't in sync with the selected buffer yet, fall back to the default
return airline#extensions#tabline#formatters#default#format(a:bufnr, a:buffers)
endfunction

View File

@@ -0,0 +1,91 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
let s:skip_symbol = '…'
function! airline#extensions#tabline#formatters#unique_tail_improved#format(bufnr, buffers)
if len(a:buffers) <= 1 " don't need to compare bufnames if has less than one buffer opened
return airline#extensions#tabline#formatters#default#format(a:bufnr, a:buffers)
endif
let curbuf_tail = fnamemodify(bufname(a:bufnr), ':t')
let do_deduplicate = 0
let path_tokens = {}
for nr in a:buffers
let name = bufname(nr)
if !empty(name) && nr != a:bufnr && fnamemodify(name, ':t') == curbuf_tail " only perform actions if curbuf_tail isn't unique
let do_deduplicate = 1
let tokens = reverse(split(substitute(fnamemodify(name, ':p:h'), '\\', '/', 'g'), '/'))
let token_index = 0
for token in tokens
if token == '' | continue | endif
if token == '.' | break | endif
if !has_key(path_tokens, token_index)
let path_tokens[token_index] = {}
endif
let path_tokens[token_index][token] = 1
let token_index += 1
endfor
endif
endfor
if do_deduplicate == 1
let path = []
let token_index = 0
for token in reverse(split(substitute(fnamemodify(bufname(a:bufnr), ':p:h'), '\\', '/', 'g'), '/'))
if token == '.' | break | endif
let duplicated = 0
let uniq = 1
let single = 1
if has_key(path_tokens, token_index)
let duplicated = 1
if len(keys(path_tokens[token_index])) > 1 | let single = 0 | endif
if has_key(path_tokens[token_index], token) | let uniq = 0 | endif
endif
call insert(path, {'token': token, 'duplicated': duplicated, 'uniq': uniq, 'single': single})
let token_index += 1
endfor
let buf_name = [curbuf_tail]
let has_uniq = 0
let has_skipped = 0
for token1 in reverse(path)
if !token1['duplicated'] && len(buf_name) > 1
call insert(buf_name, s:skip_symbol)
let has_skipped = 0
break
endif
if has_uniq == 1
call insert(buf_name, s:skip_symbol)
let has_skipped = 0
break
endif
if token1['uniq'] == 0 && token1['single'] == 1
let has_skipped = 1
else
if has_skipped == 1
call insert(buf_name, s:skip_symbol)
let has_skipped = 0
endif
call insert(buf_name, token1['token'])
endif
if token1['uniq'] == 1
let has_uniq = 1
endif
endfor
if has_skipped == 1
call insert(buf_name, s:skip_symbol)
endif
return airline#extensions#tabline#formatters#default#wrap_name(a:bufnr, join(buf_name, '/'))
else
return airline#extensions#tabline#formatters#default#format(a:bufnr, a:buffers)
endif
endfunction

View File

@@ -0,0 +1,110 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:show_close_button = get(g:, 'airline#extensions#tabline#show_close_button', 1)
let s:show_tab_type = get(g:, 'airline#extensions#tabline#show_tab_type', 1)
let s:show_tab_nr = get(g:, 'airline#extensions#tabline#show_tab_nr', 1)
let s:tab_nr_type = get(g:, 'airline#extensions#tabline#tab_nr_type', 0)
let s:close_symbol = get(g:, 'airline#extensions#tabline#close_symbol', 'X')
let s:tabs_label = get(g:, 'airline#extensions#tabline#tabs_label', 'tabs')
let s:show_splits = get(g:, 'airline#extensions#tabline#show_splits', 1)
let s:spc = g:airline_symbols.space
let s:current_bufnr = -1
let s:current_tabnr = -1
let s:current_modified = 0
function! airline#extensions#tabline#tabs#off()
augroup airline_tabline_tabs
autocmd!
augroup END
endfunction
function! airline#extensions#tabline#tabs#on()
augroup airline_tabline_tabs
autocmd!
autocmd BufDelete * call airline#extensions#tabline#tabs#invalidate()
augroup END
endfunction
function! airline#extensions#tabline#tabs#invalidate()
let s:current_bufnr = -1
endfunction
function! airline#extensions#tabline#tabs#get()
let curbuf = bufnr('%')
let curtab = tabpagenr()
call s:map_keys()
if curbuf == s:current_bufnr && curtab == s:current_tabnr
if !g:airline_detect_modified || getbufvar(curbuf, '&modified') == s:current_modified
return s:current_tabline
endif
endif
let b = airline#extensions#tabline#new_builder()
for i in range(1, tabpagenr('$'))
if i == curtab
let group = 'airline_tabsel_right'
if g:airline_detect_modified
for bi in tabpagebuflist(i)
if getbufvar(bi, '&modified')
let group = 'airline_tabmod_right'
endif
endfor
endif
let s:current_modified = (group == 'airline_tabmod_right') ? 1 : 0
else
let group = 'airline_tab_right'
endif
let val = '%('
if s:show_tab_nr
if s:tab_nr_type == 0
let val .= (g:airline_symbols.space).'%{len(tabpagebuflist('.i.'))}'
elseif s:tab_nr_type == 1
let val .= (g:airline_symbols.space).i
else "== 2
let val .= (g:airline_symbols.space).i.'.%{len(tabpagebuflist('.i.'))}'
endif
endif
call b.add_section(group, val.'%'.i.'T %{airline#extensions#tabline#title('.i.')} %)')
endfor
call b.add_section('airline_tabfill', '')
call b.split()
call b.add_section('airline_tabfill', '')
if s:show_close_button
call b.add_section('airline_tab_right', ' %999X'.s:close_symbol.' ')
endif
if s:show_splits == 1
let buffers = tabpagebuflist(curtab)
for nr in buffers
let group = airline#extensions#tabline#group_of_bufnr(buffers, nr)
call b.add_section_spaced(group, '%(%{airline#extensions#tabline#get_buffer_name('.nr.')}%)')
endfor
elseif s:show_tab_type == 1
call b.add_section_spaced('airline_tabtype', s:tabs_label)
endif
let s:current_bufnr = curbuf
let s:current_tabnr = curtab
let s:current_tabline = b.build()
return s:current_tabline
endfunction
function s:map_keys()
noremap <silent> <Plug>AirlineSelectTab1 :1tabn<CR>
noremap <silent> <Plug>AirlineSelectTab2 :2tabn<CR>
noremap <silent> <Plug>AirlineSelectTab3 :3tabn<CR>
noremap <silent> <Plug>AirlineSelectTab4 :4tabn<CR>
noremap <silent> <Plug>AirlineSelectTab5 :5tabn<CR>
noremap <silent> <Plug>AirlineSelectTab6 :6tabn<CR>
noremap <silent> <Plug>AirlineSelectTab7 :7tabn<CR>
noremap <silent> <Plug>AirlineSelectTab8 :8tabn<CR>
noremap <silent> <Plug>AirlineSelectTab9 :9tabn<CR>
noremap <silent> <Plug>AirlineSelectPrevTab gT
" tabn {count} goes to count tab does not go {count} tab pages forward!
noremap <silent> <Plug>AirlineSelectNextTab :<C-U>exe repeat(':tabn\|', v:count1)<cr>
endfunction

View File

@@ -1,14 +1,19 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !exists(':TagbarToggle')
finish
endif
let s:flags = get(g:, 'airline#extensions#tagbar#flags', '')
let s:spc = g:airline_symbols.space
" Arguments: current, sort, fname
function! airline#extensions#tagbar#get_status(...)
let builder = airline#builder#new({ 'active': a:1 })
call builder.add_section('airline_a', ' Tagbar ')
call builder.add_section('airline_b', ' '.a:2.' ')
call builder.add_section('airline_c', ' '.a:3.' ')
call builder.add_section('airline_a', s:spc.'Tagbar'.s:spc)
call builder.add_section('airline_b', s:spc.a:2.s:spc)
call builder.add_section('airline_c', s:spc.a:3.s:spc)
return builder.build()
endfunction
@@ -18,9 +23,15 @@ function! airline#extensions#tagbar#inactive_apply(...)
endif
endfunction
let s:airline_tagbar_last_lookup_time = 0
let s:airline_tagbar_last_lookup_val = ''
function! airline#extensions#tagbar#currenttag()
if get(w:, 'airline_active', 0)
return tagbar#currenttag('%s', '', s:flags)
if s:airline_tagbar_last_lookup_time != localtime()
let s:airline_tagbar_last_lookup_val = tagbar#currenttag('%s', '', s:flags)
let s:airline_tagbar_last_lookup_time = localtime()
endif
return s:airline_tagbar_last_lookup_val
endif
return ''
endfunction

View File

@@ -0,0 +1,26 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !exists(':Tmuxline')
finish
endif
let s:tmuxline_snapshot_file = get(g:, 'airline#extensions#tmuxline#snapshot_file', '')
let s:color_template = get(g:, 'airline#extensions#tmuxline#color_template', 'normal')
function! airline#extensions#tmuxline#init(ext)
call a:ext.add_theme_func('airline#extensions#tmuxline#set_tmux_colors')
endfunction
function! airline#extensions#tmuxline#set_tmux_colors(palette)
let color_template = has_key(a:palette, s:color_template) ? s:color_template : 'normal'
let mode_palette = a:palette[color_template]
let tmuxline_theme = tmuxline#api#create_theme_from_airline(mode_palette)
call tmuxline#api#set_theme(tmuxline_theme)
if strlen(s:tmuxline_snapshot_file)
call tmuxline#api#snapshot(s:tmuxline_snapshot_file)
endif
endfunction

View File

@@ -1,6 +1,10 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !exists(':UndotreeToggle')
finish
endif
function! airline#extensions#undotree#apply(...)
if exists('t:undotree')
if &ft == 'undotree'

View File

@@ -0,0 +1,22 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !get(g:, 'loaded_unicodePlugin', 0)
finish
endif
function! airline#extensions#unicode#apply(...)
if exists(":UnicodeTable") == 2 && bufname('') ==# 'UnicodeTable'
call airline#parts#define('unicode', {
\ 'text': '[UnicodeTable]',
\ 'accent': 'bold' })
let w:airline_section_a = airline#section#create(['unicode'])
let w:airline_section_b = ''
let w:airline_section_c = ''
let w:airline_section_y = ''
endif
endfunction
function! airline#extensions#unicode#init(ext)
call a:ext.add_statusline_func('airline#extensions#unicode#apply')
endfunction

View File

@@ -1,6 +1,10 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !get(g:, 'loaded_unite', 0)
finish
endif
function! airline#extensions#unite#apply(...)
if &ft == 'unite'
call a:1.add_section('airline_a', ' Unite ')

View File

@@ -1,13 +1,29 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:spc = g:airline_symbols.space
function! airline#extensions#virtualenv#init(ext)
call a:ext.add_statusline_func('airline#extensions#virtualenv#apply')
endfunction
function! airline#extensions#virtualenv#apply(...)
if &filetype =~ "python"
call airline#extensions#append_to_section('x', ' '.g:airline_right_alt_sep.' %{virtualenv#statusline()}')
if &filetype =~# "python"
if get(g:, 'virtualenv_loaded', 0)
let statusline = virtualenv#statusline()
else
let statusline = fnamemodify($VIRTUAL_ENV, ':t')
endif
if !empty(statusline)
call airline#extensions#append_to_section('x',
\ s:spc.g:airline_right_alt_sep.s:spc.statusline)
endif
endif
endfunction
function! airline#extensions#virtualenv#update()
if &filetype =~# "python"
call airline#extensions#virtualenv#apply()
call airline#update_statusline()
endif
endfunction

View File

@@ -1,67 +1,133 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
" http://got-ravings.blogspot.com/2008/10/vim-pr0n-statusline-whitespace-flags.html
" for backwards compatibility
if exists('g:airline_detect_whitespace')
let s:show_message = g:airline_detect_whitespace == 1
else
let s:show_message = get(g:, 'airline#extensions#whitespace#show_message', 1)
endif
let s:show_message = get(g:, 'airline#extensions#whitespace#show_message', 1)
let s:symbol = get(g:, 'airline#extensions#whitespace#symbol', g:airline_symbols.whitespace)
let s:checks = get(g:, 'airline#extensions#whitespace#checks', ['indent', 'trailing'])
let s:default_checks = ['indent', 'trailing', 'mixed-indent-file']
let s:trailing_format = get(g:, 'airline#extensions#whitespace#trailing_format', 'trailing[%s]')
let s:mixed_indent_format = get(g:, 'airline#extensions#whitespace#mixed_indent_format', 'mixed-indent[%s]')
let s:long_format = get(g:, 'airline#extensions#whitespace#long_format', 'long[%s]')
let s:mixed_indent_file_format = get(g:, 'airline#extensions#whitespace#mixed_indent_file_format', 'mix-indent-file[%s]')
let s:indent_algo = get(g:, 'airline#extensions#whitespace#mixed_indent_algo', 0)
let s:skip_check_ft = {'make': ['indent', 'mixed-indent-file'] }
let s:enabled = 1
let s:max_lines = get(g:, 'airline#extensions#whitespace#max_lines', 20000)
let s:enabled = get(g:, 'airline#extensions#whitespace#enabled', 1)
function! s:check_mixed_indent()
if s:indent_algo == 1
" [<tab>]<space><tab>
" spaces before or between tabs are not allowed
let t_s_t = '(^\t* +\t\s*\S)'
" <tab>(<space> x count)
" count of spaces at the end of tabs should be less than tabstop value
let t_l_s = '(^\t+ {' . &ts . ',}' . '\S)'
return search('\v' . t_s_t . '|' . t_l_s, 'nw')
elseif s:indent_algo == 2
return search('\v(^\t* +\t\s*\S)', 'nw')
else
return search('\v(^\t+ +)|(^ +\t+)', 'nw')
endif
endfunction
function! s:check_mixed_indent_file()
if stridx(&ft, 'c') == 0 || stridx(&ft, 'cpp') == 0 || stridx(&ft, 'javascript') == 0
" for C/CPP only allow /** */ comment style with one space before the '*'
let head_spc = '\v(^ +\*@!)'
else
let head_spc = '\v(^ +)'
endif
let indent_tabs = search('\v(^\t+)', 'nw')
let indent_spc = search(head_spc, 'nw')
if indent_tabs > 0 && indent_spc > 0
return printf("%d:%d", indent_tabs, indent_spc)
else
return ''
endif
endfunction
function! airline#extensions#whitespace#check()
if &readonly || !s:enabled
if &readonly || !&modifiable || !s:enabled || line('$') > s:max_lines
return ''
endif
if !exists('b:airline_whitespace_check')
let b:airline_whitespace_check = ''
let checks = get(g:, 'airline#extensions#whitespace#checks', s:default_checks)
let trailing = 0
if index(s:checks, 'trailing') > -1
let trailing = search(' $', 'nw')
if index(checks, 'trailing') > -1
try
let regexp = get(g:, 'airline#extensions#whitespace#trailing_regexp', '\s$')
let trailing = search(regexp, 'nw')
catch
echomsg 'airline#whitespace: error occured evaluating '. regexp
echomsg v:exception
return ''
endtry
endif
let mixed = 0
if index(s:checks, 'indent') > -1
let indents = [search('^ \{2,}', 'nb'), search('^ \{2,}', 'n'), search('^\t', 'nb'), search('^\t', 'n')]
let mixed = indents[0] != 0 && indents[1] != 0 && indents[2] != 0 && indents[3] != 0
let check = 'indent'
if index(checks, check) > -1 && index(get(s:skip_check_ft, &ft, []), check) < 0
let mixed = s:check_mixed_indent()
endif
if trailing != 0 || mixed
let b:airline_whitespace_check = s:symbol.' '
let mixed_file = ''
let check = 'mixed-indent-file'
if index(checks, check) > -1 && index(get(s:skip_check_ft, &ft, []), check) < 0
let mixed_file = s:check_mixed_indent_file()
endif
let long = 0
if index(checks, 'long') > -1 && &tw > 0
let long = search('\%>'.&tw.'v.\+', 'nw')
endif
if trailing != 0 || mixed != 0 || long != 0 || !empty(mixed_file)
let b:airline_whitespace_check = s:symbol
if s:show_message
if trailing != 0
let b:airline_whitespace_check .= printf(s:trailing_format, trailing)
let b:airline_whitespace_check .= (g:airline_symbols.space).printf(s:trailing_format, trailing)
endif
if mixed
let mixnr = indents[0] == indents[1] ? indents[0] : indents[2]
let b:airline_whitespace_check .= printf(s:mixed_indent_format, mixnr)
if mixed != 0
let b:airline_whitespace_check .= (g:airline_symbols.space).printf(s:mixed_indent_format, mixed)
endif
if long != 0
let b:airline_whitespace_check .= (g:airline_symbols.space).printf(s:long_format, long)
endif
if !empty(mixed_file)
let b:airline_whitespace_check .= (g:airline_symbols.space).printf(s:mixed_indent_file_format, mixed_file)
endif
endif
endif
endif
return b:airline_whitespace_check
endfunction!
endfunction
function! airline#extensions#whitespace#toggle()
if s:enabled
autocmd! airline_whitespace CursorHold,BufWritePost
augroup airline_whitespace
autocmd!
augroup END
augroup! airline_whitespace
let s:enabled = 0
else
call airline#extensions#whitespace#init()
let s:enabled = 1
endif
if exists("g:airline#extensions#whitespace#enabled")
let g:airline#extensions#whitespace#enabled = s:enabled
if s:enabled && match(g:airline_section_warning, '#whitespace#check') < 0
let g:airline_section_warning .= airline#section#create(['whitespace'])
call airline#update_statusline()
endif
endif
echo 'Whitespace checking: '.(s:enabled ? 'Enabled' : 'Disabled')
endfunction

View File

@@ -0,0 +1,23 @@
" vim: et ts=2 sts=2 sw=2
if !exists('g:loaded_windowswap')
finish
endif
let s:spc = g:airline_symbols.space
if !exists('g:airline#extensions#windowswap#indicator_text')
let g:airline#extensions#windowswap#indicator_text = 'WS'
endif
function! airline#extensions#windowswap#init(ext)
call airline#parts#define_function('windowswap', 'airline#extensions#windowswap#get_status')
endfunction
function! airline#extensions#windowswap#get_status()
if WindowSwap#HasMarkedWindow() && WindowSwap#GetMarkedWindowNum() == winnr()
return g:airline#extensions#windowswap#indicator_text.s:spc
endif
return ''
endfunction

View File

@@ -0,0 +1,36 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:filetypes = get(g:, 'airline#extensions#wordcount#filetypes', '\vhelp|markdown|rst|org|text')
let s:format = get(g:, 'airline#extensions#wordcount#format', '%d words')
let s:formatter = get(g:, 'airline#extensions#wordcount#formatter', 'default')
function! s:update()
if match(&ft, s:filetypes) > -1
let l:mode = mode()
if l:mode ==# 'v' || l:mode ==# 'V' || l:mode ==# 's' || l:mode ==# 'S'
let b:airline_wordcount = airline#extensions#wordcount#formatters#{s:formatter}#format()
let b:airline_change_tick = b:changedtick
else
if get(b:, 'airline_wordcount_cache', '') is# '' ||
\ b:airline_wordcount_cache isnot# get(b:, 'airline_wordcount', '') ||
\ get(b:, 'airline_change_tick', 0) != b:changedtick
" cache data
let b:airline_wordcount = airline#extensions#wordcount#formatters#{s:formatter}#format()
let b:airline_wordcount_cache = b:airline_wordcount
let b:airline_change_tick = b:changedtick
endif
endif
endif
endfunction
function! airline#extensions#wordcount#apply(...)
if &ft =~ s:filetypes
call airline#extensions#prepend_to_section('z', '%{get(b:, "airline_wordcount", "")}')
endif
endfunction
function! airline#extensions#wordcount#init(ext)
call a:ext.add_statusline_func('airline#extensions#wordcount#apply')
autocmd BufReadPost,CursorMoved,CursorMovedI * call s:update()
endfunction

View File

@@ -0,0 +1,58 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
function! airline#extensions#wordcount#formatters#default#format()
let words = string(s:wordcount())
if empty(words)
return
endif
let separator = s:get_decimal_group()
if words > 999 && !empty(separator)
" Format number according to locale, e.g. German: 1.245 or English: 1,245
let a = join(reverse(split(words, '.\zs')),'')
let a = substitute(a, '...', '&'.separator, 'g')
let words = join(reverse(split(a, '.\zs')),'')
endif
return words . " words" . g:airline_symbols.space . g:airline_right_alt_sep . g:airline_symbols.space
endfunction
function! s:wordcount()
if exists("*wordcount")
let l:mode = mode()
if l:mode ==# 'v' || l:mode ==# 'V' || l:mode ==# 's' || l:mode ==# 'S'
let l:visual_words = wordcount()['visual_words']
if l:visual_words != ''
return l:visual_words
else
return 0
endif
else
return wordcount()['words']
endif
elseif mode() =~? 's'
return
else
let old_status = v:statusmsg
let position = getpos(".")
exe "silent normal! g\<c-g>"
let stat = v:statusmsg
call setpos('.', position)
let v:statusmsg = old_status
let parts = split(stat)
if len(parts) > 11
return str2nr(parts[11])
else
return
endif
endif
endfunction
function s:get_decimal_group()
if match(v:lang, '\v\cC|en') > -1
return ','
elseif match(v:lang, '\v\cde|dk|fr|pt') > -1
return '.'
endif
return ''
endfunction

View File

@@ -0,0 +1,36 @@
" MIT License. Copyright (c) 2015 Evgeny Firsov.
" vim: et ts=2 sts=2 sw=2
let s:spc = g:airline_symbols.space
let s:error_symbol = get(g:, 'airline#extensions#ycm#error_symbol', 'E:')
let s:warning_symbol = get(g:, 'airline#extensions#ycm#warning_symbol', 'W:')
function! airline#extensions#ycm#init(ext)
call airline#parts#define_function('ycm_error_count', 'airline#extensions#ycm#get_error_count')
call airline#parts#define_function('ycm_warning_count', 'airline#extensions#ycm#get_warning_count')
endfunction
function! airline#extensions#ycm#get_error_count()
if exists(':YcmDiag')
let cnt = youcompleteme#GetErrorCount()
if cnt != 0
return s:error_symbol.cnt
endif
endif
return ''
endfunction
function! airline#extensions#ycm#get_warning_count()
if exists(':YcmDiag')
let cnt = youcompleteme#GetWarningCount()
if cnt != 0
return s:warning_symbol.cnt.s:spc
endif
endif
return ''
endfunction

View File

@@ -1,31 +1,31 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:is_win32term = (has('win32') || has('win64')) && !has('gui_running')
let s:is_win32term = (has('win32') || has('win64')) && !has('gui_running') && (empty($CONEMUBUILD) || &term !=? 'xterm')
let s:separators = {}
let s:accents = {}
function! s:gui2cui(rgb, fallback)
if a:rgb == ''
return a:fallback
elseif match(a:rgb, '^\%(NONE\|[fb]g\)$') > -1
return a:rgb
endif
let rgb = map(matchlist(a:rgb, '#\(..\)\(..\)\(..\)')[1:3], '0 + ("0x".v:val)')
let rgb = [rgb[0] > 127 ? 4 : 0, rgb[1] > 127 ? 2 : 0, rgb[2] > 127 ? 1 : 0]
return rgb[0]+rgb[1]+rgb[2]
let rgb = map(split(a:rgb[1:], '..\zs'), '0 + ("0x".v:val)')
return airline#msdos#round_msdos_colors(rgb)
endfunction
function! s:get_syn(group, what)
" need to pass in mode, known to break on 7.3.547
let mode = has('gui_running') ? 'gui' : 'cterm'
let color = synIDattr(synIDtrans(hlID(a:group)), a:what, mode)
if !exists("g:airline_gui_mode")
let g:airline_gui_mode = airline#init#gui_mode()
endif
let color = synIDattr(synIDtrans(hlID(a:group)), a:what, g:airline_gui_mode)
if empty(color) || color == -1
let color = synIDattr(synIDtrans(hlID('Normal')), a:what, mode)
let color = synIDattr(synIDtrans(hlID('Normal')), a:what, g:airline_gui_mode)
endif
if empty(color) || color == -1
if has('gui_running')
let color = a:what ==# 'fg' ? '#000000' : '#FFFFFF'
else
let color = a:what ==# 'fg' ? 0 : 1
endif
let color = 'NONE'
endif
return color
endfunction
@@ -33,7 +33,7 @@ endfunction
function! s:get_array(fg, bg, opts)
let fg = a:fg
let bg = a:bg
return has('gui_running')
return g:airline_gui_mode ==# 'gui'
\ ? [ fg, bg, '', '', join(a:opts, ',') ]
\ : [ '', '', fg, bg, join(a:opts, ',') ]
endfunction
@@ -41,7 +41,10 @@ endfunction
function! airline#highlighter#get_highlight(group, ...)
let fg = s:get_syn(a:group, 'fg')
let bg = s:get_syn(a:group, 'bg')
let reverse = synIDattr(synIDtrans(hlID(a:group)), 'reverse', has('gui_running') ? 'gui' : 'term')
let reverse = g:airline_gui_mode ==# 'gui'
\ ? synIDattr(synIDtrans(hlID(a:group)), 'reverse', 'gui')
\ : synIDattr(synIDtrans(hlID(a:group)), 'reverse', 'cterm')
\|| synIDattr(synIDtrans(hlID(a:group)), 'reverse', 'term')
return reverse ? s:get_array(bg, fg, a:000) : s:get_array(fg, bg, a:000)
endfunction
@@ -52,23 +55,40 @@ function! airline#highlighter#get_highlight2(fg, bg, ...)
endfunction
function! airline#highlighter#exec(group, colors)
if pumvisible()
return
endif
let colors = a:colors
if s:is_win32term
let colors[2] = s:gui2cui(get(colors, 0, ''), get(colors, 2, ''))
let colors[3] = s:gui2cui(get(colors, 1, ''), get(colors, 3, ''))
endif
exec printf('hi %s %s %s %s %s %s %s %s',
\ a:group,
\ get(colors, 0, '') != '' ? 'guifg='.colors[0] : '',
\ get(colors, 1, '') != '' ? 'guibg='.colors[1] : '',
\ get(colors, 2, '') != '' ? 'ctermfg='.colors[2] : '',
\ get(colors, 3, '') != '' ? 'ctermbg='.colors[3] : '',
\ get(colors, 4, '') != '' ? 'gui='.colors[4] : '',
\ get(colors, 4, '') != '' ? 'cterm='.colors[4] : '',
\ get(colors, 4, '') != '' ? 'term='.colors[4] : '')
let cmd= printf('hi %s %s %s %s %s %s %s %s',
\ a:group, s:Get(colors, 0, 'guifg=', ''), s:Get(colors, 1, 'guibg=', ''),
\ s:Get(colors, 2, 'ctermfg=', ''), s:Get(colors, 3, 'ctermbg=', ''),
\ s:Get(colors, 4, 'gui=', ''), s:Get(colors, 4, 'cterm=', ''),
\ s:Get(colors, 4, 'term=', ''))
let old_hi = airline#highlighter#get_highlight(a:group)
if len(colors) == 4
call add(colors, '')
endif
if old_hi != colors
exe cmd
endif
endfunction
function! s:Get(dict, key, prefix, default)
if get(a:dict, a:key, a:default) isnot# a:default
return a:prefix. get(a:dict, a:key)
else
return ''
endif
endfunction
function! s:exec_separator(dict, from, to, inverse, suffix)
if pumvisible()
return
endif
let l:from = airline#themes#get_highlight(a:from.a:suffix)
let l:to = airline#themes#get_highlight(a:to.a:suffix)
let group = a:from.'_to_'.a:to.a:suffix
@@ -82,6 +102,9 @@ function! s:exec_separator(dict, from, to, inverse, suffix)
endfunction
function! airline#highlighter#load_theme()
if pumvisible()
return
endif
for winnr in filter(range(1, winnr('$')), 'v:val != winnr()')
call airline#highlighter#highlight_modified_inactive(winbufnr(winnr))
endfor
@@ -94,6 +117,10 @@ function! airline#highlighter#add_separator(from, to, inverse)
call <sid>exec_separator({}, a:from, a:to, a:inverse, '')
endfunction
function! airline#highlighter#add_accent(accent)
let s:accents[a:accent] = 1
endfunction
function! airline#highlighter#highlight_modified_inactive(bufnr)
if getbufvar(a:bufnr, '&modified')
let colors = exists('g:airline#themes#{g:airline_theme}#palette.inactive_modified.airline_c')
@@ -109,6 +136,8 @@ function! airline#highlighter#highlight_modified_inactive(bufnr)
endfunction
function! airline#highlighter#highlight(modes)
let p = g:airline#themes#{g:airline_theme}#palette
" draw the base mode, followed by any overrides
let mapped = map(a:modes, 'v:val == a:modes[0] ? v:val : a:modes[0]."_".v:val')
let suffix = a:modes[0] == 'inactive' ? '_inactive' : ''
@@ -116,7 +145,27 @@ function! airline#highlighter#highlight(modes)
if exists('g:airline#themes#{g:airline_theme}#palette[mode]')
let dict = g:airline#themes#{g:airline_theme}#palette[mode]
for kvp in items(dict)
call airline#highlighter#exec(kvp[0].suffix, kvp[1])
let mode_colors = kvp[1]
call airline#highlighter#exec(kvp[0].suffix, mode_colors)
for accent in keys(s:accents)
if !has_key(p.accents, accent)
continue
endif
let colors = copy(mode_colors)
if p.accents[accent][0] != ''
let colors[0] = p.accents[accent][0]
endif
if p.accents[accent][2] != ''
let colors[2] = p.accents[accent][2]
endif
if len(colors) >= 5
let colors[4] = get(p.accents[accent], 4, '')
else
call add(colors, get(p.accents[accent], 4, ''))
endif
call airline#highlighter#exec(kvp[0].suffix.'_'.accent, colors)
endfor
endfor
" TODO: optimize this

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
function! s:check_defined(variable, default)
@@ -9,19 +9,25 @@ endfunction
let s:loaded = 0
function! airline#init#bootstrap()
if s:loaded | return | endif | let s:loaded = 1
if s:loaded
return
endif
let s:loaded = 1
call s:check_defined('g:airline_left_sep', get(g:, 'airline_powerline_fonts', 0)?"":">")
call s:check_defined('g:airline_left_alt_sep', get(g:, 'airline_powerline_fonts', 0)?"":">")
call s:check_defined('g:airline_right_sep', get(g:, 'airline_powerline_fonts', 0)?"":"<")
call s:check_defined('g:airline_right_alt_sep', get(g:, 'airline_powerline_fonts', 0)?"":"<")
let g:airline#init#bootstrapping = 1
call s:check_defined('g:airline_left_sep', get(g:, 'airline_powerline_fonts', 0)?"\ue0b0":">")
call s:check_defined('g:airline_left_alt_sep', get(g:, 'airline_powerline_fonts', 0)?"\ue0b1":">")
call s:check_defined('g:airline_right_sep', get(g:, 'airline_powerline_fonts', 0)?"\ue0b2":"<")
call s:check_defined('g:airline_right_alt_sep', get(g:, 'airline_powerline_fonts', 0)?"\ue0b3":"<")
call s:check_defined('g:airline_detect_modified', 1)
call s:check_defined('g:airline_detect_paste', 1)
call s:check_defined('g:airline_detect_crypt', 1)
call s:check_defined('g:airline_detect_iminsert', 0)
call s:check_defined('g:airline_inactive_collapse', 1)
call s:check_defined('g:airline_exclude_filenames', ['DebuggerWatch','DebuggerStack','DebuggerStatus'])
call s:check_defined('g:airline_exclude_filetypes', [])
call s:check_defined('g:airline_exclude_preview', 0)
call s:check_defined('g:airline_gui_mode', airline#init#gui_mode())
call s:check_defined('g:airline_mode_map', {})
call extend(g:airline_mode_map, {
@@ -36,53 +42,80 @@ function! airline#init#bootstrap()
\ 's' : 'SELECT',
\ 'S' : 'S-LINE',
\ '' : 'S-BLOCK',
\ 't' : 'TERMINAL',
\ }, 'keep')
call s:check_defined('g:airline_theme_map', {})
call extend(g:airline_theme_map, {
\ 'Tomorrow.*': 'tomorrow',
\ 'base16.*': 'base16',
\ '\CTomorrow': 'tomorrow',
\ 'base16': 'base16',
\ 'mo[l|n]okai': 'molokai',
\ 'wombat.*': 'wombat',
\ '.*zenburn.*': 'zenburn',
\ '.*solarized.*': 'solarized',
\ 'wombat': 'wombat',
\ 'zenburn': 'zenburn',
\ 'solarized': 'solarized',
\ }, 'keep')
call s:check_defined('g:airline_symbols', {})
call extend(g:airline_symbols, {
\ 'paste': get(g:, 'airline_paste_symbol', 'PASTE'),
\ 'readonly': get(g:, 'airline_readonly_symbol', get(g:, 'airline_powerline_fonts', 0) ? '' : 'RO'),
\ 'whitespace': get(g:, 'airline_powerline_fonts', 0) ? '✹' : '!',
\ 'linenr': get(g:, 'airline_linecolumn_prefix', get(g:, 'airline_powerline_fonts', 0) ? '' : ':' ),
\ 'branch': get(g:, 'airline_branch_prefix', get(g:, 'airline_powerline_fonts', 0) ? '' : ''),
\ 'paste': 'PASTE',
\ 'readonly': get(g:, 'airline_powerline_fonts', 0) ? "\ue0a2" : 'RO',
\ 'whitespace': get(g:, 'airline_powerline_fonts', 0) ? "\u2739" : '!',
\ 'linenr': get(g:, 'airline_powerline_fonts', 0) ? "\ue0a1" : ':',
\ 'branch': get(g:, 'airline_powerline_fonts', 0) ? "\ue0a0" : '',
\ 'notexists': "\u2204",
\ 'modified': '+',
\ 'space': ' ',
\ 'crypt': get(g:, 'airline_crypt_symbol', nr2char(0x1F512)),
\ }, 'keep')
call airline#parts#define_function('mode', 'airline#parts#mode')
call airline#parts#define('mode', {
\ 'function': 'airline#parts#mode',
\ 'accent': 'bold',
\ })
call airline#parts#define_function('iminsert', 'airline#parts#iminsert')
call airline#parts#define_function('paste', 'airline#parts#paste')
call airline#parts#define_function('crypt', 'airline#parts#crypt')
call airline#parts#define_function('filetype', 'airline#parts#filetype')
call airline#parts#define('readonly', {
\ 'function': 'airline#parts#readonly',
\ 'highlight': 'airline_file',
\ 'accent': 'red',
\ })
call airline#parts#define_raw('file', '%f%m')
call airline#parts#define_raw('path', '%F%m')
call airline#parts#define('linenr', {
\ 'raw': '%{g:airline_symbols.linenr}%#__accent_bold#%4l%#__restore__#',
\ 'accent': 'bold'})
call airline#parts#define_function('ffenc', 'airline#parts#ffenc')
call airline#parts#define_empty(['hunks', 'branch', 'tagbar', 'syntastic', 'whitespace'])
call airline#parts#define_empty(['hunks', 'branch', 'tagbar', 'syntastic',
\ 'eclim', 'whitespace','windowswap', 'ycm_error_count', 'ycm_warning_count'])
call airline#parts#define_text('capslock', '')
unlet g:airline#init#bootstrapping
endfunction
function! airline#init#gui_mode()
return ((has('nvim') && exists('$NVIM_TUI_ENABLE_TRUE_COLOR'))
\ || has('gui_running') || (has("termtruecolor") && &guicolors == 1)) ?
\ 'gui' : 'cterm'
endfunction
function! airline#init#sections()
let spc = g:airline_symbols.space
if !exists('g:airline_section_a')
let g:airline_section_a = airline#section#create_left(['mode', 'paste', 'iminsert'])
let g:airline_section_a = airline#section#create_left(['mode', 'crypt', 'paste', 'capslock', 'iminsert'])
endif
if !exists('g:airline_section_b')
let g:airline_section_b = airline#section#create(['hunks', 'branch'])
endif
if !exists('g:airline_section_c')
let g:airline_section_c = airline#section#create(['%<', 'file'])
if exists("+autochdir") && &autochdir == 1
let g:airline_section_c = airline#section#create(['%<', 'path', spc, 'readonly'])
else
let g:airline_section_c = airline#section#create(['%<', 'file', spc, 'readonly'])
endif
endif
if !exists('g:airline_section_gutter')
let g:airline_section_gutter = airline#section#create([' ', 'readonly', '%='])
let g:airline_section_gutter = airline#section#create(['%='])
endif
if !exists('g:airline_section_x')
let g:airline_section_x = airline#section#create_right(['tagbar', 'filetype'])
@@ -91,10 +124,13 @@ function! airline#init#sections()
let g:airline_section_y = airline#section#create_right(['ffenc'])
endif
if !exists('g:airline_section_z')
let g:airline_section_z = airline#section#create_right(['%3p%% %{g:airline_symbols.linenr} %3l:%3c '])
let g:airline_section_z = airline#section#create(['windowswap', '%3p%%'.spc, 'linenr', ':%3v '])
endif
if !exists('g:airline_section_error')
let g:airline_section_error = airline#section#create(['ycm_error_count', 'syntastic', 'eclim'])
endif
if !exists('g:airline_section_warning')
let g:airline_section_warning = airline#section#create(['syntastic', 'whitespace'])
let g:airline_section_warning = airline#section#create(['ycm_warning_count', 'whitespace'])
endif
endfunction

View File

@@ -0,0 +1,57 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
" basic 16 msdos from MSDOS
" see output of color, should be
" 0 Black
" 1 DarkBlue
" 2 DarkGreen
" 3 DarkCyan
" 4 DarkRed
" 5 DarkMagenta
" 6 Brown
" 7 LightGray
" 8 DarkGray
" 9 Blue
" 10 Green
" 11 Cyan
" 12 Red
" 13 Magenta
" 14 Yellow
" 15 White
let s:basic16 = [
\ [ 0x00, 0x00, 0x00 ],
\ [ 0x00, 0x00, 0x80 ],
\ [ 0x00, 0x80, 0x00 ],
\ [ 0x00, 0x80, 0x80 ],
\ [ 0x80, 0x00, 0x00 ],
\ [ 0x80, 0x00, 0x80 ],
\ [ 0x80, 0x80, 0x00 ],
\ [ 0xC0, 0xC0, 0xC0 ],
\ [ 0x80, 0x80, 0x80 ],
\ [ 0x00, 0x00, 0xFF ],
\ [ 0x00, 0xFF, 0x00 ],
\ [ 0x00, 0xFF, 0xFF ],
\ [ 0xFF, 0x00, 0x00 ],
\ [ 0xFF, 0x00, 0xFF ],
\ [ 0xFF, 0xFF, 0x00 ],
\ [ 0xFF, 0xFF, 0xFF ]
\ ]
function! airline#msdos#round_msdos_colors(rgblist)
" Check for values from MSDOS 16 color terminal
let best = []
let min = 100000
let list = s:basic16
for value in list
let t = abs(value[0] - a:rgblist[0]) +
\ abs(value[1] - a:rgblist[1]) +
\ abs(value[2] - a:rgblist[2])
if min > t
let min = t
let best = value
endif
endfor
return index(s:basic16, best)
endfunction

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:parts = {}
@@ -7,7 +7,11 @@ let s:parts = {}
function! airline#parts#define(key, config)
let s:parts[a:key] = get(s:parts, a:key, {})
call extend(s:parts[a:key], a:config)
if exists('g:airline#init#bootstrapping')
call extend(s:parts[a:key], a:config, 'keep')
else
call extend(s:parts[a:key], a:config, 'force')
endif
endfunction
function! airline#parts#define_function(key, name)
@@ -30,6 +34,10 @@ function! airline#parts#define_condition(key, predicate)
call airline#parts#define(a:key, { 'condition': a:predicate })
endfunction
function! airline#parts#define_accent(key, accent)
call airline#parts#define(a:key, { 'accent': a:accent })
endfunction
function! airline#parts#define_empty(keys)
for key in a:keys
call airline#parts#define_raw(key, '')
@@ -46,6 +54,10 @@ function! airline#parts#mode()
return get(w:, 'airline_current_mode', '')
endfunction
function! airline#parts#crypt()
return g:airline_detect_crypt && exists("+key") && !empty(&key) ? g:airline_symbols.crypt : ''
endfunction
function! airline#parts#paste()
return g:airline_detect_paste && &paste ? g:airline_symbols.paste : ''
endfunction
@@ -58,7 +70,11 @@ function! airline#parts#iminsert()
endfunction
function! airline#parts#readonly()
return &readonly ? g:airline_symbols.readonly : ''
if &readonly && &modifiable && !filereadable(bufname('%'))
return '[noperm]'
else
return &readonly ? g:airline_symbols.readonly : ''
endif
endfunction
function! airline#parts#filetype()
@@ -66,6 +82,6 @@ function! airline#parts#filetype()
endfunction
function! airline#parts#ffenc()
return printf('%s%s', &fenc, strlen(&ff) > 0 ? '['.&ff.']' : '')
return printf('%s%s%s', &fenc, &l:bomb ? '[BOM]' : '', strlen(&ff) > 0 ? '['.&ff.']' : '')
endfunction

View File

@@ -1,17 +1,22 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
call airline#init#bootstrap()
let s:spc = g:airline_symbols.space
function! s:wrap_accent(part, value)
if exists('a:part.accent')
call airline#highlighter#add_accent(a:part.accent)
return '%#__accent_'.(a:part.accent).'#'.a:value.'%#__restore__#'
endif
return a:value
endfunction
function! s:create(parts, append)
let _ = ''
for idx in range(len(a:parts))
let part = airline#parts#get(a:parts[idx])
let val = ''
if exists('part.highlight')
let val .= '%#'.(part.highlight).'#'
endif
if exists('part.function')
let func = (part.function).'()'
@@ -19,16 +24,16 @@ function! s:create(parts, append)
let func = '"'.(part.text).'"'
else
if a:append > 0 && idx != 0
let val .= ' '.g:airline_left_alt_sep.' '
let val .= s:spc.g:airline_left_alt_sep.s:spc
endif
if a:append < 0 && idx != 0
let val = ' '.g:airline_right_alt_sep.' '.val
let val = s:spc.g:airline_right_alt_sep.s:spc.val
endif
if exists('part.raw')
let _ .= val.(part.raw)
let _ .= s:wrap_accent(part, val.(part.raw))
continue
else
let _ .= val.a:parts[idx]
let _ .= s:wrap_accent(part, val.a:parts[idx])
continue
endif
endif
@@ -44,11 +49,11 @@ function! s:create(parts, append)
endif
if exists('part.condition')
let partval = substitute(partval, '{', '{'.(part.condition).' ? ', '')
let partval = substitute(partval, '{', '\="{".(part.condition)." ? "', '')
let partval = substitute(partval, '}', ' : ""}', '')
endif
let val .= partval
let val .= s:wrap_accent(part, partval)
let _ .= val
endfor
return _

View File

@@ -1,18 +1,29 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" vim: ts=2 sts=2 sw=2 fdm=indent
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
" generates a dictionary which defines the colors for each highlight group
function! airline#themes#generate_color_map(section1, section2, section3, file)
" guifg guibg ctermfg ctermbg gui/term
return {
\ 'airline_a': [ a:section1[0] , a:section1[1] , a:section1[2] , a:section1[3] , get(a:section1 , 4 , 'bold') ] ,
\ 'airline_b': [ a:section2[0] , a:section2[1] , a:section2[2] , a:section2[3] , get(a:section2 , 4 , '' ) ] ,
\ 'airline_c': [ a:section3[0] , a:section3[1] , a:section3[2] , a:section3[3] , get(a:section3 , 4 , '' ) ] ,
\ 'airline_file': [ a:file[0] , a:file[1] , a:file[2] , a:file[3] , get(a:file , 4 , '' ) ] ,
\ 'airline_x': [ a:section3[0] , a:section3[1] , a:section3[2] , a:section3[3] , get(a:section3 , 4 , '' ) ] ,
\ 'airline_y': [ a:section2[0] , a:section2[1] , a:section2[2] , a:section2[3] , get(a:section2 , 4 , '' ) ] ,
\ 'airline_z': [ a:section1[0] , a:section1[1] , a:section1[2] , a:section1[3] , get(a:section1 , 4 , '' ) ] ,
\ }
function! airline#themes#generate_color_map(sect1, sect2, sect3, ...)
let palette = {
\ 'airline_a': [ a:sect1[0] , a:sect1[1] , a:sect1[2] , a:sect1[3] , get(a:sect1 , 4 , '') ] ,
\ 'airline_b': [ a:sect2[0] , a:sect2[1] , a:sect2[2] , a:sect2[3] , get(a:sect2 , 4 , '') ] ,
\ 'airline_c': [ a:sect3[0] , a:sect3[1] , a:sect3[2] , a:sect3[3] , get(a:sect3 , 4 , '') ] ,
\ }
if a:0 > 0
call extend(palette, {
\ 'airline_x': [ a:1[0] , a:1[1] , a:1[2] , a:1[3] , get(a:1 , 4 , '' ) ] ,
\ 'airline_y': [ a:2[0] , a:2[1] , a:2[2] , a:2[3] , get(a:2 , 4 , '' ) ] ,
\ 'airline_z': [ a:3[0] , a:3[1] , a:3[2] , a:3[3] , get(a:3 , 4 , '' ) ] ,
\ })
else
call extend(palette, {
\ 'airline_x': [ a:sect3[0] , a:sect3[1] , a:sect3[2] , a:sect3[3] , '' ] ,
\ 'airline_y': [ a:sect2[0] , a:sect2[1] , a:sect2[2] , a:sect2[3] , '' ] ,
\ 'airline_z': [ a:sect1[0] , a:sect1[1] , a:sect1[2] , a:sect1[3] , '' ] ,
\ })
endif
return palette
endfunction
function! airline#themes#get_highlight(group, ...)
@@ -28,27 +39,32 @@ function! airline#themes#patch(palette)
if !has_key(a:palette[mode], 'airline_warning')
let a:palette[mode]['airline_warning'] = [ '#000000', '#df5f00', 232, 166 ]
endif
endfor
" this is a pretty heavy handed, but it works...
" basically, look for the 'airline_file' group and copy the bg
" colors from 'airline_c' into it.
for mode in keys(a:palette)
let overrides = split(mode, '_')
let mode_colors = a:palette[overrides[0]]
if exists('mode_colors.airline_file')
let file_colors = mode_colors.airline_file
let file_colors[1] = mode_colors.airline_c[1]
let file_colors[3] = mode_colors.airline_c[3]
if len(overrides) > 1
let override_colors = a:palette[overrides[0].'_'.overrides[1]]
let override_colors.airline_file = copy(file_colors)
let override_status_colors = get(override_colors, 'airline_c', mode_colors.airline_c)
let override_colors.airline_file[1] = override_status_colors[1]
let override_colors.airline_file[3] = override_status_colors[3]
endif
if !has_key(a:palette[mode], 'airline_error')
let a:palette[mode]['airline_error'] = [ '#000000', '#990000', 232, 160 ]
endif
endfor
let a:palette.accents = get(a:palette, 'accents', {})
let a:palette.accents.bold = [ '', '', '', '', 'bold' ]
let a:palette.accents.italic = [ '', '', '', '', 'italic' ]
if !has_key(a:palette.accents, 'red')
let a:palette.accents.red = [ '#ff0000' , '' , 160 , '' ]
endif
if !has_key(a:palette.accents, 'green')
let a:palette.accents.green = [ '#008700' , '' , 22 , '' ]
endif
if !has_key(a:palette.accents, 'blue')
let a:palette.accents.blue = [ '#005fff' , '' , 27 , '' ]
endif
if !has_key(a:palette.accents, 'yellow')
let a:palette.accents.yellow = [ '#dfff00' , '' , 190 , '' ]
endif
if !has_key(a:palette.accents, 'orange')
let a:palette.accents.orange = [ '#df5f00' , '' , 166 , '' ]
endif
if !has_key(a:palette.accents, 'purple')
let a:palette.accents.purple = [ '#af00df' , '' , 128 , '' ]
endif
endfunction

View File

@@ -1,49 +0,0 @@
let s:N1 = [ '#141413' , '#aeee00' , 232 , 154 ] " blackestgravel & lime
let s:N2 = [ '#f4cf86' , '#45413b' , 222 , 238 ] " dirtyblonde & deepgravel
let s:N3 = [ '#8cffba' , '#242321' , 121 , 235 ] " saltwatertaffy & darkgravel
let s:N4 = [ '#666462' , 241 ] " mediumgravel
let s:I1 = [ '#141413' , '#0a9dff' , 232 , 39 ] " blackestgravel & tardis
let s:I2 = [ '#f4cf86' , '#005fff' , 222 , 27 ] " dirtyblonde & facebook
let s:I3 = [ '#0a9dff' , '#242321' , 39 , 235 ] " tardis & darkgravel
let s:V1 = [ '#141413' , '#ffa724' , 232 , 214 ] " blackestgravel & orange
let s:V2 = [ '#000000' , '#fade3e' , 16 , 221 ] " coal & dalespale
let s:V3 = [ '#000000' , '#b88853' , 16 , 137 ] " coal & toffee
let s:V4 = [ '#c7915b' , 173 ] " coffee
let s:PA = [ '#f4cf86' , 222 ] " dirtyblonde
let s:RE = [ '#ff9eb8' , 211 ] " dress
let s:file = [ '#ff2c4b' , '' , 196 , '' , '' ]
let s:IA = [ s:N2[1] , s:N3[1] , s:N2[3] , s:N3[3] , '' ]
let g:airline#themes#badwolf#palette = {}
let g:airline#themes#badwolf#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let g:airline#themes#badwolf#palette.normal_modified = {
\ 'airline_b': [ s:N2[0] , s:N4[0] , s:N2[2] , s:N4[1] , '' ] ,
\ 'airline_c': [ s:V1[1] , s:N2[1] , s:V1[3] , s:N2[3] , '' ] }
let g:airline#themes#badwolf#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3, s:file)
let g:airline#themes#badwolf#palette.insert_modified = {
\ 'airline_c': [ s:V1[1] , s:N2[1] , s:V1[3] , s:N2[3] , '' ] }
let g:airline#themes#badwolf#palette.insert_paste = {
\ 'airline_a': [ s:I1[0] , s:PA[0] , s:I1[2] , s:PA[1] , '' ] }
let g:airline#themes#badwolf#palette.replace = copy(airline#themes#badwolf#palette.insert)
let g:airline#themes#badwolf#palette.replace.airline_a = [ s:I1[0] , s:RE[0] , s:I1[2] , s:RE[1] , '' ]
let g:airline#themes#badwolf#palette.replace_modified = g:airline#themes#badwolf#palette.insert_modified
let g:airline#themes#badwolf#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3, s:file)
let g:airline#themes#badwolf#palette.visual_modified = {
\ 'airline_c': [ s:V3[0] , s:V4[0] , s:V3[2] , s:V4[1] , '' ] }
let g:airline#themes#badwolf#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA, s:file)
let g:airline#themes#badwolf#palette.inactive_modified = {
\ 'airline_c': [ s:V1[1] , '' , s:V1[3] , '' , '' ] }

View File

@@ -1,115 +0,0 @@
function! s:load_constant()
let g:airline#themes#base16#palette = {}
" Color palette
let s:gui_dark_gray = '#202020'
let s:cterm_dark_gray = 234
let s:gui_med_gray_hi = '#303030'
let s:cterm_med_gray_hi = 236
let s:gui_med_gray_lo = '#3a3a3a'
let s:cterm_med_gray_lo = 237
let s:gui_light_gray = '#505050'
let s:cterm_light_gray = 239
let s:gui_green = '#99cc99'
let s:cterm_green = 151
let s:gui_blue = '#6a9fb5'
let s:cterm_blue = 67
let s:gui_purple = '#aa759f'
let s:cterm_purple = 139
let s:gui_orange = '#d28445'
let s:cterm_orange = 173
let s:gui_red = '#ac4142'
let s:cterm_red = 131
let s:gui_pink = '#d7afd7'
let s:cterm_pink = 182
let s:file = ['#ff0000', '', 160, '', '']
" Normal mode
let s:N1 = [s:gui_dark_gray, s:gui_green, s:cterm_dark_gray, s:cterm_green]
let s:N2 = [s:gui_light_gray, s:gui_med_gray_lo, s:cterm_light_gray, s:cterm_med_gray_lo]
let s:N3 = [s:gui_green, s:gui_med_gray_hi, s:cterm_green, s:cterm_med_gray_hi]
let g:airline#themes#base16#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let g:airline#themes#base16#palette.normal_modified = {
\ 'airline_c': [s:gui_orange, s:gui_med_gray_hi, s:cterm_orange, s:cterm_med_gray_hi, ''],
\ }
" Insert mode
let s:I1 = [s:gui_med_gray_hi, s:gui_blue, s:cterm_med_gray_hi, s:cterm_blue]
let s:I3 = [s:gui_blue, s:gui_med_gray_hi, s:cterm_blue, s:cterm_med_gray_hi]
let g:airline#themes#base16#palette.insert = airline#themes#generate_color_map(s:I1, s:N2, s:I3, s:file)
let g:airline#themes#base16#palette.insert_modified = copy(g:airline#themes#base16#palette.normal_modified)
let g:airline#themes#base16#palette.insert_paste = {
\ 'airline_a': [s:gui_dark_gray, s:gui_orange, s:cterm_dark_gray, s:cterm_orange, ''],
\ }
" Replace mode
let g:airline#themes#base16#palette.replace = {
\ 'airline_a': [s:gui_dark_gray, s:gui_red, s:cterm_dark_gray, s:cterm_red, ''],
\ 'airline_c': [s:gui_red, s:gui_med_gray_hi, s:cterm_red, s:cterm_med_gray_hi, ''],
\ }
let g:airline#themes#base16#palette.replace_modified = copy(g:airline#themes#base16#palette.insert_modified)
" Visual mode
let s:V1 = [s:gui_dark_gray, s:gui_pink, s:cterm_dark_gray, s:cterm_pink]
let s:V3 = [s:gui_pink, s:gui_med_gray_hi, s:cterm_pink, s:cterm_med_gray_hi]
let g:airline#themes#base16#palette.visual = airline#themes#generate_color_map(s:V1, s:N2, s:V3, s:file)
let g:airline#themes#base16#palette.visual_modified = copy(g:airline#themes#base16#palette.insert_modified)
" Inactive window
let s:IA = [s:gui_dark_gray, s:gui_med_gray_hi, s:cterm_dark_gray, s:cterm_med_gray_hi, '']
let g:airline#themes#base16#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA, s:file)
let g:airline#themes#base16#palette.inactive_modified = {
\ 'airline_c': [s:gui_orange, '', s:cterm_orange, '', ''],
\ }
endfunction
function! s:load_dynamic()
let g:airline#themes#base16#palette = {}
let s:file = airline#themes#get_highlight('Constant')
let s:N1 = airline#themes#get_highlight2(['DiffText', 'bg'], ['DiffText', 'fg'], 'bold')
let s:N2 = airline#themes#get_highlight('Visual')
let s:N3 = airline#themes#get_highlight('CursorLine')
let g:airline#themes#base16#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let group = airline#themes#get_highlight('vimCommand')
let g:airline#themes#base16#palette.normal_modified = {
\ 'statusline': [ group[0], '', group[2], '', '' ]
\ }
let s:I1 = airline#themes#get_highlight2(['DiffAdded', 'bg'], ['DiffAdded', 'fg'], 'bold')
let s:I2 = airline#themes#get_highlight2(['DiffAdded', 'fg'], ['Normal', 'bg'])
let s:I3 = s:N3
let g:airline#themes#base16#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3, s:file)
let g:airline#themes#base16#palette.insert_modified = g:airline#themes#base16#palette.normal_modified
let s:R1 = airline#themes#get_highlight2(['WarningMsg', 'bg'], ['WarningMsg', 'fg'], 'bold')
let s:R2 = s:N2
let s:R3 = s:N3
let g:airline#themes#base16#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3, s:file)
let g:airline#themes#base16#palette.replace_modified = g:airline#themes#base16#palette.normal_modified
let s:V1 = airline#themes#get_highlight2(['Normal', 'bg'], ['Constant', 'fg'], 'bold')
let s:V2 = airline#themes#get_highlight2(['Constant', 'fg'], ['Normal', 'bg'])
let s:V3 = s:N3
let g:airline#themes#base16#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3, s:file)
let g:airline#themes#base16#palette.visual_modified = g:airline#themes#base16#palette.normal_modified
let s:IA = airline#themes#get_highlight2(['NonText', 'fg'], ['CursorLine', 'bg'])
let g:airline#themes#base16#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA, s:file)
let g:airline#themes#base16#palette.inactive_modified = {
\ 'airline_c': [ group[0], '', group[2], '', '' ]
\ }
endfunction
if get(g:, 'airline#themes#base16#constant', 0)
call s:load_constant()
else
call s:load_dynamic()
augroup airline_base16
autocmd!
autocmd ColorScheme * call <sid>load_dynamic() | call airline#load_theme()
augroup END
endif

View File

@@ -1,64 +0,0 @@
" Color palette
let s:gui_dark_gray = '#303030'
let s:cterm_dark_gray = 236
let s:gui_med_gray_hi = '#444444'
let s:cterm_med_gray_hi = 238
let s:gui_med_gray_lo = '#3a3a3a'
let s:cterm_med_gray_lo = 237
let s:gui_light_gray = '#b2b2b2'
let s:cterm_light_gray = 249
let s:gui_green = '#afd787'
let s:cterm_green = 150
let s:gui_blue = '#87afd7'
let s:cterm_blue = 110
let s:gui_purple = '#afafd7'
let s:cterm_purple = 146
let s:gui_orange = '#d7af5f'
let s:cterm_orange = 179
let s:gui_red = '#d78787'
let s:cterm_red = 174
let s:gui_pink = '#d7afd7'
let s:cterm_pink = 182
let s:file = ['#ff0000', '', 160, '', '']
let g:airline#themes#bubblegum#palette = {}
" Normal mode
let s:N1 = [s:gui_dark_gray, s:gui_green, s:cterm_dark_gray, s:cterm_green]
let s:N2 = [s:gui_light_gray, s:gui_med_gray_lo, s:cterm_light_gray, s:cterm_med_gray_lo]
let s:N3 = [s:gui_green, s:gui_med_gray_hi, s:cterm_green, s:cterm_med_gray_hi]
let g:airline#themes#bubblegum#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let g:airline#themes#bubblegum#palette.normal_modified = {
\ 'airline_c': [s:gui_orange, s:gui_med_gray_hi, s:cterm_orange, s:cterm_med_gray_hi, ''],
\ }
" Insert mode
let s:I1 = [s:gui_med_gray_hi, s:gui_blue, s:cterm_med_gray_hi, s:cterm_blue]
let s:I3 = [s:gui_blue, s:gui_med_gray_hi, s:cterm_blue, s:cterm_med_gray_hi]
let g:airline#themes#bubblegum#palette.insert = airline#themes#generate_color_map(s:I1, s:N2, s:I3, s:file)
let g:airline#themes#bubblegum#palette.insert_modified = copy(g:airline#themes#bubblegum#palette.normal_modified)
let g:airline#themes#bubblegum#palette.insert_paste = {
\ 'airline_a': [s:gui_dark_gray, s:gui_orange, s:cterm_dark_gray, s:cterm_orange, ''],
\ }
" Replace mode
let g:airline#themes#bubblegum#palette.replace = {
\ 'airline_a': [s:gui_dark_gray, s:gui_red, s:cterm_dark_gray, s:cterm_red, ''],
\ 'airline_c': [s:gui_red, s:gui_med_gray_hi, s:cterm_red, s:cterm_med_gray_hi, ''],
\ }
let g:airline#themes#bubblegum#palette.replace_modified = copy(g:airline#themes#bubblegum#palette.insert_modified)
" Visual mode
let s:V1 = [s:gui_dark_gray, s:gui_pink, s:cterm_dark_gray, s:cterm_pink]
let s:V3 = [s:gui_pink, s:gui_med_gray_hi, s:cterm_pink, s:cterm_med_gray_hi]
let g:airline#themes#bubblegum#palette.visual = airline#themes#generate_color_map(s:V1, s:N2, s:V3, s:file)
let g:airline#themes#bubblegum#palette.visual_modified = copy(g:airline#themes#bubblegum#palette.insert_modified)
" Inactive window
let s:IA = [s:gui_dark_gray, s:gui_med_gray_hi, s:cterm_dark_gray, s:cterm_med_gray_hi, '']
let g:airline#themes#bubblegum#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA, s:file)
let g:airline#themes#bubblegum#palette.inactive_modified = {
\ 'airline_c': [s:gui_orange, '', s:cterm_orange, '', ''],
\ }

View File

@@ -16,35 +16,22 @@
" simply overwrite the previous colors. If you want simultaneous overrides,
" then they will need to change different parts of the statusline so they do
" not conflict with each other.
" First let's define some arrays. The s: is just a VimL thing for scoping the
" variables to the current script. Without this, these variables would be
" declared globally.
"
" The array is in the format [ guifg, guibg, ctermfg, ctermbg, opts ].
" The opts takes in values from ":help attr-list".
" First, let's define an empty dictionary and assign it to the "palette"
" variable. The # is a separator that maps with the directory structure. If
" you get this wrong, Vim will complain loudly.
let g:airline#themes#dark#palette = {}
" First let's define some arrays. The s: is just a VimL thing for scoping the
" variables to the current script. Without this, these variables would be
" declared globally. Now let's declare some colors for normal mode and add it
" to the dictionary. The array is in the format:
" [ guifg, guibg, ctermfg, ctermbg, opts ]. See "help attr-list" for valid
" values for the "opt" value.
let s:N1 = [ '#00005f' , '#dfff00' , 17 , 190 ]
let s:N2 = [ '#ffffff' , '#444444' , 255 , 238 ]
let s:N3 = [ '#9cffd3' , '#202020' , 85 , 234 ]
" The file array is a special case, where only the foreground colors are
" specified. The background colors are automatically filled.
let s:file = [ '#ff0000' , '' , 160 , '' ]
" vim-airline is made up of multiple sections, but for theming purposes there
" is only 3 sections: the mode, the branch indicator, and the gutter (which
" then get mirrored on the right side). generate_color_map is a helper
" function which generates a dictionary which declares the full colorscheme
" for the statusline. See the source code of "autoload/airline/themes.vim"
" for the full set of keys available for theming.
" First, let's define a palette. Airline will search for this variable.
" The # is a separator that maps with the directory structure. If you get
" this wrong, Vim will complain loudly.
let g:airline#themes#dark#palette = {}
" Now let's declare some colors for normal mode and add it to the dictionary.
let g:airline#themes#dark#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let g:airline#themes#dark#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
" Here we define overrides for when the buffer is modified. This will be
" applied after g:airline#themes#dark#palette.normal, hence why only certain keys are
@@ -57,7 +44,7 @@ let g:airline#themes#dark#palette.normal_modified = {
let s:I1 = [ '#00005f' , '#00dfff' , 17 , 45 ]
let s:I2 = [ '#ffffff' , '#005fff' , 255 , 27 ]
let s:I3 = [ '#ffffff' , '#000080' , 15 , 17 ]
let g:airline#themes#dark#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3, s:file)
let g:airline#themes#dark#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#dark#palette.insert_modified = {
\ 'airline_c': [ '#ffffff' , '#5f005f' , 255 , 53 , '' ] ,
\ }
@@ -74,7 +61,7 @@ let g:airline#themes#dark#palette.replace_modified = g:airline#themes#dark#palet
let s:V1 = [ '#000000' , '#ffaf00' , 232 , 214 ]
let s:V2 = [ '#000000' , '#ff5f00' , 232 , 202 ]
let s:V3 = [ '#ffffff' , '#5f0000' , 15 , 52 ]
let g:airline#themes#dark#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3, s:file)
let g:airline#themes#dark#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
let g:airline#themes#dark#palette.visual_modified = {
\ 'airline_c': [ '#ffffff' , '#5f005f' , 255 , 53 , '' ] ,
\ }
@@ -83,12 +70,24 @@ let g:airline#themes#dark#palette.visual_modified = {
let s:IA1 = [ '#4e4e4e' , '#1c1c1c' , 239 , 234 , '' ]
let s:IA2 = [ '#4e4e4e' , '#262626' , 239 , 235 , '' ]
let s:IA3 = [ '#4e4e4e' , '#303030' , 239 , 236 , '' ]
let g:airline#themes#dark#palette.inactive = airline#themes#generate_color_map(s:IA1, s:IA2, s:IA3, s:file)
let g:airline#themes#dark#palette.inactive = airline#themes#generate_color_map(s:IA1, s:IA2, s:IA3)
let g:airline#themes#dark#palette.inactive_modified = {
\ 'airline_c': [ '#875faf' , '' , 97 , '' , '' ] ,
\ }
" Accents are used to give parts within a section a slightly different look or
" color. Here we are defining a "red" accent, which is used by the 'readonly'
" part by default. Only the foreground colors are specified, so the background
" colors are automatically extracted from the underlying section colors. What
" this means is that regardless of which section the part is defined in, it
" will be red instead of the section's foreground color. You can also have
" multiple parts with accents within a section.
let g:airline#themes#dark#palette.accents = {
\ 'red': [ '#ff0000' , '' , 160 , '' ]
\ }
" Here we define the color map for ctrlp. We check for the g:loaded_ctrlp
" variable so that related functionality is loaded iff the user is using
" ctrlp. Note that this is optional, and if you do not define ctrlp colors

View File

@@ -1,51 +0,0 @@
let g:airline#themes#jellybeans#palette = {}
function! s:generate()
" This theme is an example of how to use helper functions to extract highlight
" values from the corresponding colorscheme. It was written in a hurry, so it
" is very minimalistic. If you are a jellybeans user and want to make updates,
" please send pull requests.
" Here are examples where the entire highlight group is copied and an airline
" compatible color array is generated.
let s:N1 = airline#themes#get_highlight('DbgCurrent', 'bold')
let s:N2 = airline#themes#get_highlight('Folded')
let s:N3 = airline#themes#get_highlight('NonText')
let s:file = airline#themes#get_highlight('Constant')
let g:airline#themes#jellybeans#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let g:airline#themes#jellybeans#palette.normal_modified = {
\ 'airline_c': [ '#ffb964', '', 215, '', '' ]
\ }
let s:I1 = airline#themes#get_highlight('DiffAdd', 'bold')
let s:I2 = s:N2
let s:I3 = s:N3
let g:airline#themes#jellybeans#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3, s:file)
let g:airline#themes#jellybeans#palette.insert_modified = g:airline#themes#jellybeans#palette.normal_modified
let s:R1 = airline#themes#get_highlight('WildMenu', 'bold')
let s:R2 = s:N2
let s:R3 = s:N3
let g:airline#themes#jellybeans#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3, s:file)
let g:airline#themes#jellybeans#palette.replace_modified = g:airline#themes#jellybeans#palette.normal_modified
" Sometimes you want to mix and match colors from different groups, you can do
" that with this method.
let s:V1 = airline#themes#get_highlight2(['TabLineSel', 'bg'], ['DiffDelete', 'bg'], 'bold')
let s:V2 = s:N2
let s:V3 = s:N3
let g:airline#themes#jellybeans#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3, s:file)
let g:airline#themes#jellybeans#palette.visual_modified = g:airline#themes#jellybeans#palette.normal_modified
" And of course, you can always do it manually as well.
let s:IA = [ '#444444', '#1c1c1c', 237, 234 ]
let g:airline#themes#jellybeans#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA, s:file)
let g:airline#themes#jellybeans#palette.inactive_modified = g:airline#themes#jellybeans#palette.normal_modified
endfunction
call s:generate()
augroup airline_jellybeans
autocmd!
autocmd ColorScheme * call <sid>generate()
augroup END

View File

@@ -1,59 +0,0 @@
" vim-airline companion theme of Laederon
" (https://github.com/Donearm/Laederon)
" Normal mode
let s:N1 = [ '#1a1a18' , '#ffffff' , 232 , 255 ] " blackestgravel & snow
let s:N2 = [ '#ffffff' , '#44403a' , 255, 238 ] " snow & deepgravel
let s:N3 = [ '#90a680' , '#2e2d2a' , 64, 235 ] " dilutedpaint & darkgravel
let s:N4 = [ '#777470' , 240 ] " gravel
" Insert mode
let s:I1 = [ '#1a1a18' , '#1693a5' , 232 , 62 ] " blackestgravel & crystallake
let s:I2 = [ '#515744' , '#44403a' , 101 , 238 ] " lichen & deepgravel
let s:I3 = [ '#1693a5' , '#2e2d2a' , 39 , 235 ] " crystallake & darkgravel
" Visual mode
let s:V1 = [ '#1a1a18' , '#ab3e5d' , 232 , 161 ] " blackestgravel & raspberry
let s:V2 = [ '#000000' , '#908571' , 16 , 252 ] " coal & winterterrain
let s:V3 = [ '#ab3e5d' , '#8c7f77' , 161 , 245 ] " raspberry & wetcoldterrain
let s:V4 = [ '#515744' , 101 ] " lichen
" Replace mode
let s:RE = [ '#233e09' , 22 ] " oakleaf
" Paste mode
let s:PA = [ '#ab3e5d' , 161 ] " raspberry
let s:file = [ '#ef393d' , '' , 196 , '' , '' ]
let s:IA = [ s:N2[1] , s:N3[1] , s:N2[3], s:N3[3] , '' ]
let g:airline#themes#laederon#palette = {}
let g:airline#themes#laederon#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let g:airline#themes#laederon#palette.normal_modified = {
\ 'airline_a' : [ s:N2[0] , s:N4[0] , s:N2[2] , s:N4[1] , '' ] ,
\ 'airline_c' : [ s:V1[1] , s:N2[1] , s:V1[3] , s:N2[3] , '' ] }
let g:airline#themes#laederon#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3, s:file)
let g:airline#themes#laederon#palette.insert_modified = {
\ 'airline_c' : [ s:V2[1] , s:N2[1] , s:V2[3] , s:N2[3] , '' ] }
let g:airline#themes#laederon#palette.insert_paste = {
\ 'airline_a' : [ s:I1[0] , s:PA[0] , s:I1[2] , s:PA[1] , '' ] }
let g:airline#themes#laederon#palette.replace = copy(airline#themes#laederon#palette.insert)
let g:airline#themes#laederon#palette.replace.airline_a = [ s:I1[0] , s:RE[0] , s:I1[2] , s:RE[1] , '' ]
let g:airline#themes#laederon#palette.replace_modified = g:airline#themes#laederon#palette.insert_modified
let g:airline#themes#laederon#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3, s:file)
let g:airline#themes#laederon#palette.visual_modified = {
\ 'airline_c' : [ s:V3[0] , s:V4[0] , s:V3[2] , s:V4[1] , '' ] }
let g:airline#themes#laederon#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA, s:file)
let g:airline#themes#laederon#palette.inactive_modified = {
\ 'airline_c' : [ s:V1[1] , '' , s:V1[3] , '' , '' ] }

View File

@@ -1,46 +0,0 @@
let g:airline#themes#light#palette = {}
let s:file = [ '#df0000' , '' , 160 , '' ]
let s:N1 = [ '#ffffff' , '#005fff' , 255 , 27 ]
let s:N2 = [ '#000087' , '#00dfff' , 18 , 45 ]
let s:N3 = [ '#005fff' , '#afffff' , 27 , 159 ]
let g:airline#themes#light#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let g:airline#themes#light#palette.normal_modified = {
\ 'airline_c': [ '#df0000' , '#ffdfdf' , 160 , 224 , '' ] ,
\ }
let s:I1 = [ '#ffffff' , '#00875f' , 255 , 29 ]
let s:I2 = [ '#005f00' , '#00df87' , 22 , 42 ]
let s:I3 = [ '#005f5f' , '#afff87' , 23 , 156 ]
let g:airline#themes#light#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3, s:file)
let g:airline#themes#light#palette.insert_modified = {
\ 'airline_c': [ '#df0000' , '#ffdfdf' , 160 , 224 , '' ] ,
\ }
let g:airline#themes#light#palette.insert_paste = {
\ 'airline_a': [ s:I1[0] , '#d78700' , s:I1[2] , 172 , '' ] ,
\ }
let g:airline#themes#light#palette.replace = copy(g:airline#themes#light#palette.insert)
let g:airline#themes#light#palette.replace.airline_a = [ s:I2[0] , '#ff0000' , s:I1[2] , 196 , '' ]
let g:airline#themes#light#palette.replace_modified = g:airline#themes#light#palette.insert_modified
let s:V1 = [ '#ffffff' , '#ff5f00' , 255 , 202 ]
let s:V2 = [ '#5f0000' , '#ffaf00' , 52 , 214 ]
let s:V3 = [ '#df5f00' , '#ffff87' , 166 , 228 ]
let g:airline#themes#light#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3, s:file)
let g:airline#themes#light#palette.visual_modified = {
\ 'airline_c': [ '#df0000' , '#ffdfdf' , 160 , 224 , '' ] ,
\ }
let s:IA1 = [ '#666666' , '#b2b2b2' , 242 , 249 , '' ]
let s:IA2 = [ '#8a8a8a' , '#d0d0d0' , 245 , 252 , '' ]
let s:IA3 = [ '#a8a8a8' , '#ffffff' , 248 , 255 , '' ]
let g:airline#themes#light#palette.inactive = airline#themes#generate_color_map(s:IA1, s:IA2, s:IA3, s:file)
let g:airline#themes#light#palette.inactive_modified = {
\ 'airline_c': [ '#df0000' , '' , 160 , '' , '' ] ,
\ }

View File

@@ -1,62 +0,0 @@
" vim-airline companion theme of Luna
" (https://github.com/Pychimp/vim-luna)
let g:airline#themes#luna#palette = {}
let s:file = [ '#ffffff' , '' , 231 , '' , '' ]
let s:N1 = [ '#ffffff' , '#005252' , 231 , 36 ]
let s:N2 = [ '#ffffff' , '#003f3f' , 231 , 29 ]
let s:N3 = [ '#ffffff' , '#002b2b' , 231 , 23 ]
let g:airline#themes#luna#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let g:airline#themes#luna#palette.normal_modified = {
\ 'airline_c': [ '#ffffff' , '#450000' , 231 , 52 , '' ] ,
\ }
let s:I1 = [ '#ffffff' , '#789f00' , 231 , 106 ]
let s:I2 = [ '#ffffff' , '#003f3f' , 231 , 29 ]
let s:I3 = [ '#ffffff' , '#002b2b' , 231 , 23 ]
let g:airline#themes#luna#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3, s:file)
let g:airline#themes#luna#palette.insert_modified = {
\ 'airline_c': [ '#ffffff' , '#005e5e' , 255 , 52 , '' ] ,
\ }
let g:airline#themes#luna#palette.insert_paste = {
\ 'airline_a': [ s:I1[0] , '#789f00' , s:I1[2] , 106 , '' ] ,
\ }
let g:airline#themes#luna#palette.replace = copy(g:airline#themes#luna#palette.insert)
let g:airline#themes#luna#palette.replace.airline_a = [ s:I2[0] , '#920000' , s:I2[2] , 88 , '' ]
let g:airline#themes#luna#palette.replace_modified = g:airline#themes#luna#palette.insert_modified
let s:V1 = [ '#ffff9a' , '#ff8036' , 222 , 208 ]
let s:V2 = [ '#ffffff' , '#003f3f' , 231 , 29 ]
let s:V3 = [ '#ffffff' , '#002b2b' , 231 , 23 ]
let g:airline#themes#luna#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3, s:file)
let g:airline#themes#luna#palette.visual_modified = {
\ 'airline_c': [ '#ffffff' , '#450000' , 231 , 52 , '' ] ,
\ }
let s:IA = [ '#4e4e4e' , '#002b2b' , 59 , 23 , '' ]
let g:airline#themes#luna#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA, s:file)
let g:airline#themes#luna#palette.inactive_modified = {
\ 'airline_c': [ '#450000' , '' , 52 , '' , '' ] ,
\ }
if !get(g:, 'loaded_ctrlp', 0)
finish
endif
let g:airline#themes#luna#palette.ctrlp = airline#extensions#ctrlp#generate_color_map(
\ [ '#ffffff' , '#002b2b' , 231 , 23 , '' ] ,
\ [ '#ffffff' , '#005252' , 231 , 36 , '' ] ,
\ [ '#ffffff' , '#973d45' , 231 , 95 , '' ] )
let g:airline#themes#luna#palette.tabline = {
\ 'airline_tab': ['#2aa198', '#003f3f', 231, 29, ''],
\ 'airline_tabsel': ['#ffffff', '#2e8b57', 231, 36, ''],
\ 'airline_tabtype': ['#ffffff', '#005252', 231, 36, ''],
\ 'airline_tabfill': ['#ffffff', '#002b2b', 231, 23, ''],
\ 'airline_tabmod': ['#ffffff', '#780000', 231, 88, ''],
\ }

View File

@@ -1,63 +0,0 @@
let g:airline#themes#molokai#palette = {}
let s:file = [ '#66d9ef' , '' , 81 , '' , '' ]
" Normal mode
let s:N1 = [ '#080808' , '#e6db74' , 232 , 144 ] " mode
let s:N2 = [ '#f8f8f0' , '#232526' , 253 , 16 ] " info
let s:N3 = [ '#f8f8f0' , '#465457' , 253 , 67 ] " statusline
let g:airline#themes#molokai#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let g:airline#themes#molokai#palette.normal_modified = {
\ 'airline_c': [ '#080808' , '#e6db74' , 232 , 144 , '' ] ,
\ }
" Insert mode
let s:I1 = [ '#080808' , '#66d9ef' , 232 , 81 ]
let s:I2 = [ '#f8f8f0' , '#232526' , 253 , 16 ]
let s:I3 = [ '#f8f8f0' , '#465457' , 253 , 67 ]
let g:airline#themes#molokai#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3, s:file)
let g:airline#themes#molokai#palette.insert_modified = {
\ 'airline_c': [ '#080808' , '#66d9ef' , 232 , 81 , '' ] ,
\ }
" Replace mode
let g:airline#themes#molokai#palette.replace = copy(g:airline#themes#molokai#palette.insert)
let g:airline#themes#molokai#palette.replace.airline_a = [ s:I1[0] , '#ef5939' , s:I1[2] , 166 , '' ]
let g:airline#themes#molokai#palette.replace_modified = {
\ 'airline_c': [ '#080808' , '#ef5939' , 232 , 166 , '' ] ,
\ }
" Visual mode
let s:V1 = [ '#080808' , '#fd971f' , 232 , 208 ]
let s:V2 = [ '#f8f8f0' , '#232526' , 253 , 16 ]
let s:V3 = [ '#f8f8f0' , '#465457' , 253 , 67 ]
let g:airline#themes#molokai#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3, s:file)
let g:airline#themes#molokai#palette.visual_modified = {
\ 'airline_c': [ '#080808' , '#fd971f' , 232 , 208 , '' ] ,
\ }
" Inactive
let s:IA = [ '#1b1d1e' , '#465457' , 233 , 67 , '' ]
let g:airline#themes#molokai#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA, s:file)
let g:airline#themes#molokai#palette.inactive_modified = {
\ 'airline_c': [ '#f8f8f0' , '' , 253 , '' , '' ] ,
\ }
" CtrlP
if !get(g:, 'loaded_ctrlp', 0)
finish
endif
let g:airline#themes#molokai#palette.ctrlp = airline#extensions#ctrlp#generate_color_map(
\ [ '#f8f8f0' , '#465457' , 253 , 67 , '' ] ,
\ [ '#f8f8f0' , '#232526' , 253 , 16 , '' ] ,
\ [ '#080808' , '#e6db74' , 232 , 144 , 'bold' ] )

View File

@@ -1,48 +0,0 @@
" Theme to mimic the default colorscheme of powerline
" Not 100% the same so it's powerline... ish.
"
" Differences from default powerline:
" * Paste indicator isn't colored different
" * Far right hand section matches the color of the mode indicator
"
" Differences from other airline themes:
" * No color differences when you're in a modified buffer
" * Visual mode only changes the mode section. Otherwise
" it appears the same as normal mode
" Normal mode " fg & bg
let s:N1 = [ '#005f00' , '#afd700' , 22 , 148 ] " darkestgreen & brightgreen
let s:N2 = [ '#9e9e9e' , '#303030' , 247 , 236 ] " gray8 & gray2
let s:N3 = [ '#ffffff' , '#121212' , 231 , 233 ] " white & gray4
" Insert mode " fg & bg
let s:I1 = [ '#005f5f' , '#ffffff' , 23 , 231 ] " darkestcyan & white
let s:I2 = [ '#5fafd7' , '#0087af' , 74 , 31 ] " darkcyan & darkblue
let s:I3 = [ '#87d7ff' , '#005f87' , 117 , 24 ] " mediumcyan & darkestblue
" Visual mode " fg & bg
let s:V1 = [ '#080808' , '#ffaf00' , 232 , 214 ] " gray3 & brightestorange
" Replace mode " fg & bg
let s:RE = [ '#ffffff' , '#d70000' , 231 , 160 ] " white & brightred
let s:file = copy(s:N3)
let g:airline#themes#powerlineish#palette = {}
let g:airline#themes#powerlineish#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let g:airline#themes#powerlineish#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3, s:file)
let g:airline#themes#powerlineish#palette.insert_replace = {
\ 'airline_a': [ s:RE[0] , s:I1[1] , s:RE[1] , s:I1[3] , '' ] }
let g:airline#themes#powerlineish#palette.visual = {
\ 'airline_a': [ s:V1[0] , s:V1[1] , s:V1[2] , s:V1[3] , '' ] }
let g:airline#themes#powerlineish#palette.replace = copy(airline#themes#powerlineish#palette.normal)
let g:airline#themes#powerlineish#palette.replace.airline_a = [ s:RE[0] , s:RE[1] , s:RE[2] , s:RE[3] , '' ]
let s:IA = [ s:N2[1] , s:N3[1] , s:N2[3] , s:N3[3] , '' ]
let g:airline#themes#powerlineish#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA, s:file)

View File

@@ -1,41 +0,0 @@
let g:airline#themes#serene#palette = {}
let s:guibg = '#080808'
let s:termbg = 232
let s:termsep = 236
let s:guisep = '#303030'
let s:file = [ '#ff0000' , s:guibg , 160 , s:termbg , '' ]
let s:N1 = [ '#00dfff' , s:guibg , 45 , s:termbg ]
let s:N2 = [ '#ff5f00' , s:guibg, 202 , s:termbg ]
let s:N3 = [ '#767676' , s:guibg, 7 , s:termbg ]
let g:airline#themes#serene#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let g:airline#themes#serene#palette.normal_modified = {
\ 'airline_c': [ '#df0000' , s:guibg, 160 , s:termbg , '' ] ,
\ }
let s:I1 = [ '#5fff00' , s:guibg, 82 , s:termbg ]
let s:I2 = [ '#ff5f00' , s:guibg, 202 , s:termbg ]
let s:I3 = [ '#767676' , s:guibg, 7 , s:termbg ]
let g:airline#themes#serene#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3, s:file)
let g:airline#themes#serene#palette.insert_modified = copy(g:airline#themes#serene#palette.normal_modified)
let g:airline#themes#serene#palette.insert_paste = {
\ 'airline_a': [ s:I1[0] , '#d78700' , s:I1[2] , 172 , '' ] ,
\ }
let g:airline#themes#serene#palette.replace = {
\ 'airline_a': [ s:I1[0] , '#af0000' , s:I1[2] , 124 , '' ] ,
\ }
let g:airline#themes#serene#palette.replace_modified = copy(g:airline#themes#serene#palette.normal_modified)
let s:V1 = [ '#dfdf00' , s:guibg, 184 , s:termbg ]
let s:V2 = [ '#ff5f00' , s:guibg, 202 , s:termbg ]
let s:V3 = [ '#767676' , s:guibg, 243 , s:termbg ]
let g:airline#themes#serene#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3, s:file)
let g:airline#themes#serene#palette.visual_modified = copy(g:airline#themes#serene#palette.normal_modified)
let s:IA = [ '#4e4e4e' , s:guibg , 239 , s:termbg , '' ]
let s:IA2 = [ '#4e4e4e' , s:guisep , 239 , s:termsep , '' ]
let g:airline#themes#serene#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA2, s:IA2, s:file)
let g:airline#themes#serene#palette.inactive_modified = copy(g:airline#themes#serene#palette.normal_modified)

View File

@@ -1,47 +0,0 @@
let g:airline#themes#simple#palette = {}
let s:guibg = '#080808'
let s:guibg2 = '#1c1c1c'
let s:termbg = 232
let s:termbg2= 234
let s:file = [ '#ff0000' , '' , 160 , '' , '' ]
let s:N1 = [ s:guibg , '#00dfff' , s:termbg , 45 ]
let s:N2 = [ '#ff5f00' , s:guibg2, 202 , s:termbg2 ]
let s:N3 = [ '#767676' , s:guibg, 243 , s:termbg]
let g:airline#themes#simple#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let g:airline#themes#simple#palette.normal_modified = {
\ 'airline_c': [ '#df0000' , s:guibg, 160 , s:termbg , '' ] ,
\ }
let s:I1 = [ s:guibg, '#5fff00' , s:termbg , 82 ]
let s:I2 = [ '#ff5f00' , s:guibg2, 202 , s:termbg2 ]
let s:I3 = [ '#767676' , s:guibg, 243 , s:termbg ]
let g:airline#themes#simple#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3, s:file)
let g:airline#themes#simple#palette.insert_modified = copy(g:airline#themes#simple#palette.normal_modified)
let g:airline#themes#simple#palette.insert_paste = {
\ 'airline_a': [ s:I1[0] , '#d78700' , s:I1[2] , 172 , '' ] ,
\ }
let g:airline#themes#simple#palette.replace = {
\ 'airline_a': [ s:I1[0] , '#af0000' , s:I1[2] , 124 , '' ] ,
\ }
let g:airline#themes#simple#palette.replace_modified = copy(g:airline#themes#simple#palette.normal_modified)
let s:V1 = [ s:guibg, '#dfdf00' , s:termbg , 184 ]
let s:V2 = [ '#ff5f00' , s:guibg2, 202 , s:termbg2 ]
let s:V3 = [ '#767676' , s:guibg, 243 , s:termbg ]
let g:airline#themes#simple#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3, s:file)
let g:airline#themes#simple#palette.visual_modified = copy(g:airline#themes#simple#palette.normal_modified)
let s:IA = [ '#4e4e4e' , s:guibg , 239 , s:termbg , '' ]
let s:IA2 = [ '#4e4e4e' , s:guibg2 , 239 , s:termbg2 , '' ]
let g:airline#themes#simple#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA2, s:IA2, s:file)
let g:airline#themes#simple#palette.inactive_modified = {
\ 'airline_c': [ '#df0000', '', 160, '', '' ] ,
\ }

View File

@@ -1,163 +0,0 @@
let g:airline#themes#solarized#palette = {}
function! s:generate()
""""""""""""""""""""""""""""""""""""""""""""""""
" Options
""""""""""""""""""""""""""""""""""""""""""""""""
let s:reduced = get(g:, 'airline_solarized_reduced', 1)
let s:background = get(g:, 'airline_solarized_bg', &background)
let s:ansi_colors = get(g:, 'solarized_termcolors', 16) != 256 && &t_Co >= 16 ? 1 : 0
""""""""""""""""""""""""""""""""""""""""""""""""
" Colors
""""""""""""""""""""""""""""""""""""""""""""""""
" Base colors
let s:base03 = {'t': s:ansi_colors ? 8 : 234, 'g': '#002b36'}
let s:base02 = {'t': s:ansi_colors ? '0' : 235, 'g': '#073642'}
let s:base01 = {'t': s:ansi_colors ? 10 : 240, 'g': '#586e75'}
let s:base00 = {'t': s:ansi_colors ? 11 : 241, 'g': '#657b83'}
let s:base0 = {'t': s:ansi_colors ? 12 : 244, 'g': '#839496'}
let s:base1 = {'t': s:ansi_colors ? 14 : 245, 'g': '#93a1a1'}
let s:base2 = {'t': s:ansi_colors ? 7 : 254, 'g': '#eee8d5'}
let s:base3 = {'t': s:ansi_colors ? 15 : 230, 'g': '#fdf6e3'}
let s:yellow = {'t': s:ansi_colors ? 3 : 136, 'g': '#b58900'}
let s:orange = {'t': s:ansi_colors ? 9 : 166, 'g': '#cb4b16'}
let s:red = {'t': s:ansi_colors ? 1 : 160, 'g': '#dc322f'}
let s:magenta = {'t': s:ansi_colors ? 5 : 125, 'g': '#d33682'}
let s:violet = {'t': s:ansi_colors ? 13 : 61 , 'g': '#6c71c4'}
let s:blue = {'t': s:ansi_colors ? 4 : 33 , 'g': '#268bd2'}
let s:cyan = {'t': s:ansi_colors ? 6 : 37 , 'g': '#2aa198'}
let s:green = {'t': s:ansi_colors ? 2 : 64 , 'g': '#859900'}
let s:color236= {'t': s:ansi_colors ? '0' : 236, 'g': '#303030'}
let s:color251= {'t': s:ansi_colors ? 14 : 251, 'g': '#c6c6c6'}
""""""""""""""""""""""""""""""""""""""""""""""""
" Simple mappings
" NOTE: These are easily tweakable mappings. The actual mappings get
" the specific gui and terminal colors from the base color dicts.
""""""""""""""""""""""""""""""""""""""""""""""""
" Normal mode
let s:N1 = [s:base2, s:blue, 'bold']
if s:background == 'dark'
let s:N2 = [s:base2, s:base01, '']
let s:N3 = [s:base1, s:base02, '']
else
let s:N2 = [s:base2, s:base00, '']
let s:N3 = [s:base00, s:base2, '']
endif
let s:NF = [s:orange, s:N3[1], '']
let s:NM = [s:orange, s:N3[1], '']
let s:NW = [s:base3, s:orange, '']
if s:background == 'dark'
let s:NM = [s:orange, s:N3[1], '']
else
let s:NM = [s:red, s:N3[1], '']
endif
" Insert mode
if s:reduced
let s:I1 = [s:N1[0], s:green, 'bold']
let s:I2 = s:N2
else
let s:I1 = [s:N1[0], s:orange, 'bold']
if s:background == 'dark'
let s:I2 = [s:base00, s:color236, '']
else
let s:I2 = [s:base00, s:color251, '']
endif
endif
let s:I3 = s:N3
let s:IF = s:NF
let s:IM = s:NM
" Visual mode
if s:reduced
let s:V1 = [s:N1[0], s:orange, 'bold']
let s:V2 = s:N2
let s:V3 = s:N3
else
let s:V1 = [s:N1[0], s:green, 'bold']
let s:V2 = s:I2
let s:V3 = s:I3
endif
let s:VF = s:NF
if s:reduced
let s:VM = s:NM
else
let s:VM = s:IM
endif
" Inactive
if s:background == 'dark'
let s:IA = [s:base00, s:base02, '']
else
let s:IA = [s:base1, s:base2, '']
endif
""""""""""""""""""""""""""""""""""""""""""""""""
" Actual mappings
" WARNING: Don't modify this section unless necessary.
""""""""""""""""""""""""""""""""""""""""""""""""
let s:NFa = [s:NF[0].g, s:NF[1].g, s:NF[0].t, s:NF[1].t, s:NF[2]]
let s:IFa = [s:IF[0].g, s:IF[1].g, s:IF[0].t, s:IF[1].t, s:IF[2]]
let s:VFa = [s:VF[0].g, s:VF[1].g, s:VF[0].t, s:VF[1].t, s:VF[2]]
let g:airline#themes#solarized#palette.inactive = airline#themes#generate_color_map(
\ [s:IA[0].g, s:IA[1].g, s:IA[0].t, s:IA[1].t, s:IA[2]],
\ [s:IA[0].g, s:IA[1].g, s:IA[0].t, s:IA[1].t, s:IA[2]],
\ [s:IA[0].g, s:IA[1].g, s:IA[0].t, s:IA[1].t, s:IA[2]],
\ s:NFa)
let g:airline#themes#solarized#palette.inactive_modified = {
\ 'airline_c': [s:NM[0].g, '', s:NM[0].t, '', s:NM[2]]}
let g:airline#themes#solarized#palette.normal = airline#themes#generate_color_map(
\ [s:N1[0].g, s:N1[1].g, s:N1[0].t, s:N1[1].t, s:N1[2]],
\ [s:N2[0].g, s:N2[1].g, s:N2[0].t, s:N2[1].t, s:N2[2]],
\ [s:N3[0].g, s:N3[1].g, s:N3[0].t, s:N3[1].t, s:N3[2]],
\ s:NFa)
let g:airline#themes#solarized#palette.normal.airline_warning = [
\ s:NW[0].g, s:NW[1].g, s:NW[0].t, s:NW[1].t, s:NW[2]]
let g:airline#themes#solarized#palette.normal_modified = {
\ 'airline_c': [s:NM[0].g, s:NM[1].g,
\ s:NM[0].t, s:NM[1].t, s:NM[2]]}
let g:airline#themes#solarized#palette.normal_modified.airline_warning =
\ g:airline#themes#solarized#palette.normal.airline_warning
let g:airline#themes#solarized#palette.insert = airline#themes#generate_color_map(
\ [s:I1[0].g, s:I1[1].g, s:I1[0].t, s:I1[1].t, s:I1[2]],
\ [s:I2[0].g, s:I2[1].g, s:I2[0].t, s:I2[1].t, s:I2[2]],
\ [s:I3[0].g, s:I3[1].g, s:I3[0].t, s:I3[1].t, s:I3[2]],
\ s:IFa)
let g:airline#themes#solarized#palette.insert_modified = {
\ 'airline_c': [s:IM[0].g, s:IM[1].g,
\ s:IM[0].t, s:IM[1].t, s:IM[2]]}
let g:airline#themes#solarized#palette.visual = airline#themes#generate_color_map(
\ [s:V1[0].g, s:V1[1].g, s:V1[0].t, s:V1[1].t, s:V1[2]],
\ [s:V2[0].g, s:V2[1].g, s:V2[0].t, s:V2[1].t, s:V2[2]],
\ [s:V3[0].g, s:V3[1].g, s:V3[0].t, s:V3[1].t, s:V3[2]],
\ s:VFa)
let g:airline#themes#solarized#palette.visual_modified = {
\ 'airline_c': [s:VM[0].g, s:VM[1].g,
\ s:VM[0].t, s:VM[1].t, s:VM[2]]}
let g:airline#themes#solarized#palette.tabline = {}
let g:airline#themes#solarized#palette.tabline.airline_tab = [
\ s:I2[0].g, s:I2[1].g, s:I2[0].t, s:I2[1].t, s:I2[2]]
let g:airline#themes#solarized#palette.tabline.airline_tabtype = [
\ s:N2[0].g, s:N2[1].g, s:N2[0].t, s:N2[1].t, s:N2[2]]
endfunction
call s:generate()
augroup airline_solarized
autocmd!
autocmd ColorScheme * call <sid>generate() | call airline#load_theme()
augroup END

View File

@@ -1,45 +0,0 @@
let g:airline#themes#tomorrow#palette = {}
function! s:generate()
let s:file = airline#themes#get_highlight('Constant')
let s:N1 = airline#themes#get_highlight2(['Normal', 'bg'], ['Directory', 'fg'], 'bold')
let s:N2 = airline#themes#get_highlight('Pmenu')
let s:N3 = airline#themes#get_highlight('CursorLine')
let g:airline#themes#tomorrow#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let group = airline#themes#get_highlight('vimCommand')
let g:airline#themes#tomorrow#palette.normal_modified = {
\ 'airline_c': [ group[0], '', group[2], '', '' ]
\ }
let s:I1 = airline#themes#get_highlight2(['Normal', 'bg'], ['MoreMsg', 'fg'], 'bold')
let s:I2 = airline#themes#get_highlight2(['MoreMsg', 'fg'], ['Normal', 'bg'])
let s:I3 = s:N3
let g:airline#themes#tomorrow#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3, s:file)
let g:airline#themes#tomorrow#palette.insert_modified = g:airline#themes#tomorrow#palette.normal_modified
let s:R1 = airline#themes#get_highlight('Error', 'bold')
let s:R2 = s:N2
let s:R3 = s:N3
let g:airline#themes#tomorrow#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3, s:file)
let g:airline#themes#tomorrow#palette.replace_modified = g:airline#themes#tomorrow#palette.normal_modified
let s:V1 = airline#themes#get_highlight2(['Normal', 'bg'], ['Constant', 'fg'], 'bold')
let s:V2 = airline#themes#get_highlight2(['Constant', 'fg'], ['Normal', 'bg'])
let s:V3 = s:N3
let g:airline#themes#tomorrow#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3, s:file)
let g:airline#themes#tomorrow#palette.visual_modified = g:airline#themes#tomorrow#palette.normal_modified
let s:IA = airline#themes#get_highlight2(['NonText', 'fg'], ['CursorLine', 'bg'])
let g:airline#themes#tomorrow#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA, s:file)
let g:airline#themes#tomorrow#palette.inactive_modified = {
\ 'airline_c': [ group[0], '', group[2], '', '' ]
\ }
endfunction
call s:generate()
augroup airline_tomorrow
autocmd!
autocmd ColorScheme * call <sid>generate() | call airline#load_theme()
augroup END

View File

@@ -1,60 +0,0 @@
" vim-airline companion theme of Ubaryd
" (https://github.com/Donearm/Ubaryd)
" Normal mode
let s:N1 = [ '#141413' , '#c7b386' , 232 , 252 ] " blackestgravel & bleaksand
let s:N2 = [ '#c7b386' , '#45413b' , 252, 238 ] " bleaksand & deepgravel
let s:N3 = [ '#b88853' , '#242321' , 137, 235 ] " toffee & darkgravel
let s:N4 = [ '#857f78' , 243 ] " gravel
" Insert mode
let s:I1 = [ '#1a1a18' , '#fade3e' , 232 , 221 ] " blackestgravel & warmcorn
let s:I2 = [ '#c7b386' , '#45413b' , 252 , 238 ] " bleaksand & deepgravel
let s:I3 = [ '#f4cf86' , '#242321' , 222 , 235 ] " lighttannedskin & darkgravel
" Visual mode
let s:V1 = [ '#1c1b1a' , '#9a4820' , 233 , 88 ] " blackgravel & warmadobe
let s:V2 = [ '#000000' , '#88633f' , 16 , 95 ] " coal & cappuccino
let s:V3 = [ '#88633f' , '#c7b386' , 95 , 252 ] " cappuccino & bleaksand
let s:V4 = [ '#c14c3d' , 160 ] " tannedumbrella
" Replace mode
let s:RE = [ '#c7915b' , 173 ] " nut
" Paste mode
let s:PA = [ '#f9ef6d' , 154 ] " bleaklemon
let s:file = [ '#ff7400' , '' , 196 , '' , '' ]
let s:IA = [ s:N2[1], s:N3[1], s:N2[3], s:N3[3], '' ]
let g:airline#themes#ubaryd#palette = {}
let g:airline#themes#ubaryd#palette.inactive = {
\ 'airline_a' : [ s:N2[1] , s:N3[1] , s:N2[3] , s:N3[3] , '' ] }
let g:airline#themes#ubaryd#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let g:airline#themes#ubaryd#palette.normal_modified = {
\ 'airline_a' : [ s:N2[0] , s:N4[0] , s:N2[2] , s:N4[1] , '' ] ,
\ 'airline_c' : [ s:V1[1] , s:N2[1] , s:V1[3] , s:N2[3] , '' ] }
let g:airline#themes#ubaryd#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3, s:file)
let g:airline#themes#ubaryd#palette.insert_modified = {
\ 'airline_c' : [ s:V2[1] , s:N2[1] , s:V2[3] , s:N2[3] , '' ] }
let g:airline#themes#ubaryd#palette.insert_paste = {
\ 'airline_a' : [ s:I1[0] , s:PA[0] , s:I1[2] , s:PA[1] , '' ] }
let g:airline#themes#ubaryd#palette.replace = copy(airline#themes#ubaryd#palette.insert)
let g:airline#themes#ubaryd#palette.replace.airline_a = [ s:I1[0] , s:RE[0] , s:I1[2] , s:RE[1] , '' ]
let g:airline#themes#ubaryd#palette.replace_modified = g:airline#themes#ubaryd#palette.insert_modified
let g:airline#themes#ubaryd#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3, s:file)
let g:airline#themes#ubaryd#palette.visual_modified = {
\ 'airline_c' : [ s:V3[0] , s:V4[0] , s:V3[2] , s:V4[1] , '' ] }
let g:airline#themes#ubaryd#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA, s:file)
let g:airline#themes#ubaryd#palette.inactive_modified = {
\ 'airline_c' : [ s:V1[1] , '' , s:V1[3] , '' , '' ] }

View File

@@ -1,91 +0,0 @@
" vim-airline companion theme of Wombat
" looks great with wombat256 vim colorscheme
" Normal mode
" [ guifg, guibg, ctermfg, ctermbg, opts ]
let s:N1 = [ '#141413' , '#CAE682' , 232 , 192 ] " mode
let s:N2 = [ '#CAE682' , '#32322F' , 192 , 236 ] " info
let s:N3 = [ '#CAE682' , '#242424' , 192 , 234 ] " statusline
let s:N4 = [ '#86CD74' , 113 ] " mode modified
" Insert mode
let s:I1 = [ '#141413' , '#FDE76E' , 232 , 227 ]
let s:I2 = [ '#FDE76E' , '#32322F' , 227 , 236 ]
let s:I3 = [ '#FDE76E' , '#242424' , 227 , 234 ]
let s:I4 = [ '#FADE3E' , 221 ]
" Visual mode
let s:V1 = [ '#141413' , '#B5D3F3' , 232 , 153 ]
let s:V2 = [ '#B5D3F3' , '#32322F' , 153 , 236 ]
let s:V3 = [ '#B5D3F3' , '#242424' , 153 , 234 ]
let s:V4 = [ '#7CB0E6' , 111 ]
" Replace mode
let s:R1 = [ '#141413' , '#E5786D' , 232 , 173 ]
let s:R2 = [ '#E5786D' , '#32322F' , 173 , 236 ]
let s:R3 = [ '#E5786D' , '#242424' , 173 , 234 ]
let s:R4 = [ '#E55345' , 203 ]
" Paste mode
let s:PA = [ '#94E42C' , 47 ]
" Info modified
let s:IM = [ '#40403C' , 238 ]
" File permissions (RO, etc)
let s:file = [ '#E5786D' , '' , 203 , '' , '' ]
" Inactive mode
let s:IA = [ '#767676' , s:N3[1] , 243 , s:N3[3] , '' ]
let g:airline#themes#wombat#palette = {}
let g:airline#themes#wombat#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let g:airline#themes#wombat#palette.normal_modified = {
\ 'airline_a': [ s:N1[0] , s:N4[0] , s:N1[2] , s:N4[1] , '' ] ,
\ 'airline_b': [ s:N4[0] , s:IM[0] , s:N4[1] , s:IM[1] , '' ] ,
\ 'airline_c': [ s:N4[0] , s:N3[1] , s:N4[1] , s:N3[3] , '' ] }
let g:airline#themes#wombat#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3, s:file)
let g:airline#themes#wombat#palette.insert_modified = {
\ 'airline_a': [ s:I1[0] , s:I4[0] , s:I1[2] , s:I4[1] , '' ] ,
\ 'airline_b': [ s:I4[0] , s:IM[0] , s:I4[1] , s:IM[1] , '' ] ,
\ 'airline_c': [ s:I4[0] , s:N3[1] , s:I4[1] , s:N3[3] , '' ] }
let g:airline#themes#wombat#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3, s:file)
let g:airline#themes#wombat#palette.visual_modified = {
\ 'airline_a': [ s:V1[0] , s:V4[0] , s:V1[2] , s:V4[1] , '' ] ,
\ 'airline_b': [ s:V4[0] , s:IM[0] , s:V4[1] , s:IM[1] , '' ] ,
\ 'airline_c': [ s:V4[0] , s:N3[1] , s:V4[1] , s:N3[3] , '' ] }
let g:airline#themes#wombat#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3, s:file)
let g:airline#themes#wombat#palette.replace_modified = {
\ 'airline_a': [ s:R1[0] , s:R4[0] , s:R1[2] , s:R4[1] , '' ] ,
\ 'airline_b': [ s:R4[0] , s:IM[0] , s:R4[1] , s:IM[1] , '' ] ,
\ 'airline_c': [ s:R4[0] , s:N3[1] , s:R4[1] , s:N3[3] , '' ] }
let g:airline#themes#wombat#palette.insert_paste = {
\ 'airline_a': [ s:I1[0] , s:PA[0] , s:I1[2] , s:PA[1] , '' ] ,
\ 'airline_b': [ s:PA[0] , s:IM[0] , s:PA[1] , s:IM[1] , '' ] ,
\ 'airline_c': [ s:PA[0] , s:N3[1] , s:PA[1] , s:N3[3] , '' ] }
let g:airline#themes#wombat#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA, s:file)
let g:airline#themes#wombat#palette.inactive_modified = {
\ 'airline_c': [ s:N4[0] , '' , s:N4[1] , '' , '' ] }
if !get(g:, 'loaded_ctrlp', 0)
finish
endif
let g:airline#themes#wombat#palette.ctrlp = airline#extensions#ctrlp#generate_color_map(
\ [ '#DADADA' , '#242424' , 253 , 234 , '' ] ,
\ [ '#DADADA' , '#40403C' , 253 , 238 , '' ] ,
\ [ '#141413' , '#DADADA' , 232 , 253 , 'bold' ] )

View File

@@ -1,45 +0,0 @@
let g:airline#themes#zenburn#palette = {}
function! s:generate()
let s:N1 = airline#themes#get_highlight2(['DbgCurrent', 'bg'], ['Folded', 'fg'], 'bold')
let s:N2 = airline#themes#get_highlight('Folded')
let s:N3 = airline#themes#get_highlight('NonText')
let s:file = airline#themes#get_highlight('Constant')
let g:airline#themes#zenburn#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let s:Nmod = airline#themes#get_highlight('Comment')
let g:airline#themes#zenburn#palette.normal_modified = {
\ 'airline_c': s:Nmod
\ }
let s:I1 = airline#themes#get_highlight2(['DbgCurrent', 'bg'], ['String', 'fg'], 'bold')
let s:I2 = airline#themes#get_highlight2(['String', 'fg'], ['Folded', 'bg'])
let s:I3 = s:N3
let g:airline#themes#zenburn#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3, s:file)
let g:airline#themes#zenburn#palette.insert_modified = g:airline#themes#zenburn#palette.normal_modified
let s:R1 = airline#themes#get_highlight2(['DbgCurrent', 'bg'], ['Comment', 'fg'], 'bold')
let s:R2 = airline#themes#get_highlight2(['Comment', 'fg'], ['Folded', 'bg'])
let s:R3 = s:N3
let g:airline#themes#zenburn#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3, s:file)
let g:airline#themes#zenburn#palette.replace_modified = g:airline#themes#zenburn#palette.normal_modified
let s:V1 = airline#themes#get_highlight2(['DbgCurrent', 'bg'], ['Identifier', 'fg'], 'bold')
let s:V2 = airline#themes#get_highlight2(['Identifier', 'fg'], ['Folded', 'bg'])
let s:V3 = s:N3
let g:airline#themes#zenburn#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3, s:file)
let g:airline#themes#zenburn#palette.visual_modified = g:airline#themes#zenburn#palette.normal_modified
let s:IA = airline#themes#get_highlight('NonText')
let g:airline#themes#zenburn#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA, s:file)
let g:airline#themes#zenburn#palette.inactive_modified = {
\ 'airline_c': s:Nmod
\ }
endfunction
call s:generate()
augroup airline_zenburn
autocmd!
autocmd ColorScheme * call <sid>generate()
augroup END

View File

@@ -1,7 +1,8 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
call airline#init#bootstrap()
let s:spc = g:airline_symbols.space
function! airline#util#wrap(text, minwidth)
if a:minwidth > 0 && winwidth(0) < a:minwidth
@@ -14,14 +15,15 @@ function! airline#util#append(text, minwidth)
if a:minwidth > 0 && winwidth(0) < a:minwidth
return ''
endif
return empty(a:text) ? '' : ' '.g:airline_left_alt_sep.' '.a:text
let prefix = s:spc == "\ua0" ? s:spc : s:spc.s:spc
return empty(a:text) ? '' : prefix.g:airline_left_alt_sep.s:spc.a:text
endfunction
function! airline#util#prepend(text, minwidth)
if a:minwidth > 0 && winwidth(0) < a:minwidth
return ''
endif
return empty(a:text) ? '' : a:text.' '.g:airline_right_alt_sep.' '
return empty(a:text) ? '' : a:text.s:spc.g:airline_right_alt_sep.s:spc
endfunction
if v:version >= 704

View File

@@ -1,4 +1,5 @@
*airline.txt* Lean and mean status/tabline that's light as air
*airline*
_ _ _ _ ~
__ _(_)_ __ ___ __ _(_)_ __| (_)_ __ ___ ~
\ \ / / | '_ ` _ \ _____ / _` | | '__| | | '_ \ / _ \ ~
@@ -6,7 +7,27 @@
\_/ |_|_| |_| |_| \__,_|_|_| |_|_|_| |_|\___| ~
~
==============================================================================
INTRODUCTION *airline*
CONTENTS *airline-contents*
01. Intro ............................................... |airline-intro|
02. Features ......................................... |airline-features|
03. Name ................................................. |airline-name|
04. Configuration ............................... |airline-configuration|
05. Commands ......................................... |airline-commands|
06. Autocommands ................................. |airline-autocommands|
07. Customization ............................... |airline-customization|
08. Extensions ..................................... |airline-extensions|
09. Advanced Customization ............. |airline-advanced-customization|
10. Funcrefs ......................................... |airline-funcrefs|
11. Pipeline ......................................... |airline-pipeline|
12. Writing Extensions ..................... |airline-writing-extensions|
13. Writing Themes ..................................... |airline-themes|
14. Troubleshooting ........................... |airline-troubleshooting|
15. Contributions ............................... |airline-contributions|
16. License ........................................... |airline-license|
==============================================================================
INTRODUCTION *airline-intro*
vim-airline is a fast and lightweight alternative to powerline, written
in 100% vimscript with no outside dependencies.
@@ -19,7 +40,7 @@ FEATURES *airline-features*
* looks good with regular fonts, and provides configuration points so you
can use unicode or powerline symbols.
* optimized for speed; it loads in under a millisecond.
* fully customizable; if you know a little |statusline| syntax you can
* fully customizable; if you know a little 'statusline' syntax you can
tweak it to your needs.
* extremely easy to write themes.
@@ -49,6 +70,9 @@ values):
* enable paste detection >
let g:airline_detect_paste=1
<
* enable crypt detection >
let g:airline_detect_crypt=1
<
* enable iminsert detection >
let g:airline_detect_iminsert=0
<
@@ -58,8 +82,12 @@ values):
<
* themes are automatically selected based on the matching colorscheme. this
can be overridden by defining a value. >
let g:airline_theme=
let g:airline_theme='dark'
<
Note: Only the dark theme is distributed with vim-airline. For more themes,
checkout the vim-airline-themes repository
(github.com/vim-airline/vim-airline-themes)
* if you want to patch the airline theme before it gets applied, you can
supply the name of a function where you can modify the palette. >
let g:airline_theme_patch_func = 'AirlineThemePatch'
@@ -72,7 +100,7 @@ values):
endfunction
<
* enable/disable automatic population of the `g:airline_symbols` dictionary
with powerline symbols.
with powerline symbols. >
let g:airline_powerline_fonts=0
<
* define the set of text to display for each mode. >
@@ -106,6 +134,11 @@ values):
heavily) >
let g:airline_exclude_preview = 0
<
* disable the Airline customization for selective windows (this is a
window-local variable so you can disable it for only some windows) >
let w:airline_disabled = 1
<
==============================================================================
COMMANDS *airline-commands*
@@ -116,22 +149,41 @@ COMMANDS *airline-commands*
Toggles whitespace detection.
:AirlineToggle *:AirlineToggle*
Toggles between the standard `statusline`
Toggles between the standard 'statusline' and airline.
:AirlineRefresh *:AirlineRefresh*
Refreshes all highlight groups and redraws the statusline.
==============================================================================
AUTOCOMMANDS *airline-autocommands*
Airline comes with some user-defined autocommands.
|AirlineAfterInit| after plugin is initialized, but before the statusline
is replaced
|AirlineToggledOn| after airline is activated and replaced the statusline
|AirlineToggledOff| after airline is deactivated and the statusline is
restored to the original
==============================================================================
CUSTOMIZATION *airline-customization*
The following are some unicode symbols for customizing the left/right
separators, as well as the powerline font glyths.
separators, as well as the powerline font glyphs.
Note: You must define the dictionary first before setting values. Also, it's a
good idea to check whether it exists as to avoid accidentally overwriting
its contents. >
if !exists('g:airline_symbols')
let g:airline_symbols = {}
endif
Note: You must define the dictionary first before setting values: >
let g:airline_symbols = {}
>
" unicode symbols
let g:airline_left_sep = '»'
let g:airline_left_sep = '▶'
let g:airline_right_sep = '«'
let g:airline_right_sep = '◀'
let g:airline_symbols.crypt = '🔒'
let g:airline_symbols.linenr = '␊'
let g:airline_symbols.linenr = '␤'
let g:airline_symbols.linenr = '¶'
@@ -139,6 +191,7 @@ Note: You must define the dictionary first before setting values: >
let g:airline_symbols.paste = 'ρ'
let g:airline_symbols.paste = 'Þ'
let g:airline_symbols.paste = '∥'
let g:airline_symbols.notexists = '∄'
let g:airline_symbols.whitespace = 'Ξ'
" powerline symbols
@@ -165,19 +218,20 @@ with the usual statusline syntax.
Note: If you define any section variables it will replace the default values
entirely. If you want to disable only certain parts of a section you can try
using variables defined in the |airline-configuration| or |airline_extensions|
using variables defined in the |airline-configuration| or |airline-extensions|
section.
>
variable names default contents
----------------------------------------------------------------------------
let g:airline_section_a (mode, paste, iminsert)
let g:airline_section_a (mode, crypt, paste, iminsert)
let g:airline_section_b (hunks, branch)
let g:airline_section_c (bufferline or filename)
let g:airline_section_gutter (readonly, csv)
let g:airline_section_x (tagbar, filetype, virtualenv)
let g:airline_section_y (fileencoding, fileformat)
let g:airline_section_z (percentage, line number, column number)
let g:airline_section_warning (syntastic, whitespace)
let g:airline_section_error (ycm_error_count, syntastic, eclim)
let g:airline_section_warning (ycm_warning_count, whitespace)
" here is an example of how you could replace the branch indicator with
" the current working directory, followed by the filename.
@@ -190,6 +244,23 @@ EXTENSIONS *airline-extensions*
Most extensions are enabled by default and lazily loaded when the
corresponding plugin (if any) is detected.
By default, airline will attempt to load any extension it can find in the
'runtimepath'. On some systems this can result in an undesirable startup
cost. You can disable the check with the following flag. >
let g:airline#extensions#disable_rtp_load = 1
<
Note: Third party plugins that rely on this behavior will be affected. You
will need to manually load them.
Alternatively, if you want a minimalistic setup and would rather opt-in which
extensions get loaded instead of disabling each individually, you can declare
the following list variable: >
" an empty list disables all extensions
let g:airline_extensions = []
" or only load what you want
let g:airline_extensions = ['branch', 'tabline']
<
------------------------------------- *airline-default*
The default extension understands all of the `g:` variables in the
|airline-configuration| section, however it also has some more fine-tuned
@@ -197,15 +268,40 @@ configuration values that you can use.
* control which sections get truncated and at what width. >
let g:airline#extensions#default#section_truncate_width = {
\ 'b': 88,
\ 'b': 79,
\ 'x': 60,
\ 'y': 88,
\ 'z': 45,
\ })
\ 'warning': 80,
\ 'error': 80,
\ }
" Note: set to an empty dictionary to disable truncation.
let g:airline#extensions#default#section_truncate_width = {}
<
* configure the layout of the sections by specifying an array of two arrays
(first array is the left side, second array is the right side). >
let g:airline#extensions#default#layout = [
\ [ 'a', 'b', 'c' ],
\ [ 'x', 'y', 'z', 'error', 'warning' ]
\ ]
<
* configure the layout to not use %(%) grouping items in the statusline.
Try setting this to zero, if you notice bleeding color artifacts >
let airline#extensions#default#section_use_groupitems = 1
<
------------------------------------- *airline-quickfix*
The quickfix extension is a simple built-in extension which determines
whether the buffer is a quickfix or location list buffer, and adjusts the
title accordingly.
* configure the title text for quickfix buffers >
let g:airline#extensions#quickfix#quickfix_text = 'Quickfix'
<
* configure the title text for location list buffers >
let g:airline#extensions#quickfix#location_text = 'Location'
<
------------------------------------- *airline-bufferline*
vim-bufferline <https://github.com/bling/vim-bufferline>
@@ -218,6 +314,7 @@ vim-bufferline <https://github.com/bling/vim-bufferline>
------------------------------------- *airline-branch*
fugitive.vim <https://github.com/tpope/vim-fugitive>
lawrencium <https://bitbucket.org/ludovicchabant/vim-lawrencium>
vcscommand <http://www.vim.org/scripts/script.php?script_id=90>
* enable/disable fugitive/lawrencium integration >
let g:airline#extensions#branch#enabled = 1
@@ -225,6 +322,34 @@ lawrencium <https://bitbucket.org/ludovicchabant/vim-lawrencium>
* change the text for when no branch is detected >
let g:airline#extensions#branch#empty_message = ''
<
* define the order in which the branches of different vcs systems will be
displayed on the statusline (currently only for fugitive and lawrencium) >
let g:airline#extensions#branch#vcs_priority = ["git", "mercurial"]
<
* use vcscommand.vim if available >
let g:airline#extensions#branch#use_vcscommand = 0
<
* truncate long branch names to a fixed length >
let g:airline#extensions#branch#displayed_head_limit = 10
<
* customize formatting of branch name >
" default value leaves the name unmodifed
let g:airline#extensions#branch#format = 0
" to only show the tail, e.g. a branch 'feature/foo' becomes 'foo', use
let g:airline#extensions#branch#format = 1
" to truncate all path sections but the last one, e.g. a branch
" 'foo/bar/baz' becomes 'f/b/baz', use
let g:airline#extensions#branch#format = 2
" if a string is provided, it should be the name of a function that
" takes a string and returns the desired value
let g:airline#extensions#branch#format = 'CustomBranchName'
function! CustomBranchName(name)
return '[' . a:name . ']'
endfunction
<
------------------------------------- *airline-syntastic*
syntastic <https://github.com/scrooloose/syntastic>
@@ -232,13 +357,13 @@ syntastic <https://github.com/scrooloose/syntastic>
let g:airline#extensions#syntastic#enabled = 1
<
------------------------------------- *airline-tagbar*
tagbar <https://github.com/majutsushi/>
tagbar <https://github.com/majutsushi/tagbar>
* enable/disable tagbar integration >
let g:airline#extensions#tagbar#enabled = 1
<
* change how tags are displayed (:help tagbar-statusline) >
let g:airline#extensions#tagbar#flags = '' "default
let g:airline#extensions#tagbar#flags = '' (default)
let g:airline#extensions#tagbar#flags = 'f'
let g:airline#extensions#tagbar#flags = 's'
let g:airline#extensions#tagbar#flags = 'p'
@@ -256,6 +381,8 @@ csv.vim <https://github.com/chrisbra/csv.vim>
------------------------------------- *airline-hunks*
vim-gitgutter <https://github.com/airblade/vim-gitgutter>
vim-signify <https://github.com/mhinz/vim-signify>
changesPlugin <https://github.com/chrisbra/changesPlugin>
quickfixsigns <https://github.com/tomtom/quickfixsigns_vim>
* enable/disable showing a summary of changed hunks under source control. >
let g:airline#extensions#hunks#enabled = 1
@@ -276,21 +403,78 @@ ctrlp <https://github.com/kien/ctrlp.vim>
let g:airline#extensions#ctrlp#color_template = 'visual'
let g:airline#extensions#ctrlp#color_template = 'replace'
<
* configure whether to show the previous and next modes (mru, buffer, etc...)
>
let g:airline#extensions#ctrlp#show_adjacent_modes = 1
<
------------------------------------- *airline-virtualenv*
virtualenv <https://github.com/jmcantrell/vim-virtualenv>
* enable/disable virtualenv integration >
let g:airline#extensions#virtualenv#enabled = 1
<
------------------------------------- *airline-eclim*
eclim <https://eclim.org>
* enable/disable eclim integration, which works well with the
|airline-syntastic| extension. >
let g:airline#extensions#eclim#enabled = 1
------------------------------------- *airline-wordcount*
* enable/disable word counting. >
let g:airline#extensions#wordcount#enabled = 1
<
* regex of filetypes to enable word counting. >
" the default value matches filetypes typically used for documentation
" such as markdown and help files.
let g:airline#extensions#wordcount#filetypes = ...
(default: markdown,rst,org,help,text)
* defines the name of a formatter for word count will be displayed: >
" The default will try to guess LC_NUMERIC and format number accordingly
" e.g. 1,042 in English and 1.042 in German locale
let g:airline#extensions#wordcount#formatter = 'default'
" here is how you can define a 'foo' formatter:
" create a file in the dir autoload/airline/extensions/wordcount/formatters/
" called foo.vim
" this example needs at least Vim > 7.4.1042
function! airline#extensions#wordcount#formatters#foo#format()
return (wordcount()['words'] == 0 ? 'NONE' :
\ wordcount()['words'] > 100 ? 'okay' : 'not enough')
endfunction
let g:airline#extensions#wordline#formatter = 'foo'
<
------------------------------------- *airline-whitespace*
* enable/disable detection of whitespace errors. >
let g:airline#extensions#whitespace#enabled = 1
<
* customize the type of mixed indent checking to perform. >
" must be all spaces or all tabs before the first non-whitespace character
let g:airline#extensions#whitespace#mixed_indent_algo = 0 (default)
" certain number of spaces are allowed after tabs, but not in between
" this algorithm works well for /** */ style comments in a tab-indented file
let g:airline#extensions#whitespace#mixed_indent_algo = 1
" spaces are allowed after tabs, but not in between
" this algorithm works well with programming styles that use tabs for
" indentation and spaces for alignment
let g:airline#extensions#whitespace#mixed_indent_algo = 2
<
* customize the whitespace symbol. >
let g:airline#extensions#whitespace#symbol = '!'
<
* configure which whitespace checks to enable. >
let g:airline#extensions#whitespace#checks = [ 'indent', 'trailing' ]
" indent: mixed indent within a line
" long: overlong lines
" trailing: trailing whitespace
" mixed-indent-file: different indentation in different lines
let g:airline#extensions#whitespace#checks = [ 'indent', 'trailing', 'long', 'mixed-indent-file' ]
<
* configure the maximum number of lines where whitespace checking is enabled. >
let g:airline#extensions#whitespace#max_lines = 20000
<
* configure whether a message should be displayed. >
let g:airline#extensions#whitespace#show_message = 1
@@ -298,36 +482,101 @@ virtualenv <https://github.com/jmcantrell/vim-virtualenv>
* configure the formatting of the warning messages. >
let g:airline#extensions#whitespace#trailing_format = 'trailing[%s]'
let g:airline#extensions#whitespace#mixed_indent_format = 'mixed-indent[%s]'
let g:airline#extensions#whitespace#long_format = 'long[%s]'
let g:airline#extensions#whitespace#mixed_indent_file_format = 'mix-indent-file[%s]'
* configure custom trailing whitespace regexp rule >
let g:airline#extensions#whitespace#trailing_regexp = '\s$'
<
------------------------------------- *airline-tabline*
* enable/disable enhanced tabline. >
Note: If you're using the ctrlspace tabline only the option marked with (c)
are supported!
* enable/disable enhanced tabline. (c)
let g:airline#extensions#tabline#enabled = 0
<
* enable/disable displaying buffers with a single tab. >
* enable/disable displaying open splits per tab (only when tabs are opened). >
let g:airline#extensions#tabline#show_splits = 1
*
* switch position of buffers and tabs on splited tabline (c)
let g:airline#extensions#tabline#switch_buffers_and_tabs = 0
* enable/disable displaying buffers with a single tab. (c)
let g:airline#extensions#tabline#show_buffers = 1
<
* enable/disable displaying tabs, regardless of number. (c)
let g:airline#extensions#tabline#show_tabs = 1
<
* configure filename match rules to exclude from the tabline. >
let g:airline#extensions#tabline#excludes = []
<
* configure how numbers are calculated in tab mode. >
* enable/disable display preview window buffer in the tabline. >
let g:airline#extensions#tabline#exclude_preview = 1
* configure how numbers are displayed in tab mode. >
let g:airline#extensions#tabline#tab_nr_type = 0 " # of splits (default)
let g:airline#extensions#tabline#tab_nr_type = 1 " tab number
let g:airline#extensions#tabline#tab_nr_type = 2 " splits and tab number
<
* defines the name of a formatter for how buffer names are displayed. >
* enable/disable displaying tab number in tabs mode. >
let g:airline#extensions#tabline#show_tab_nr = 1
* enable/disable displaying tab type (far right) >
let g:airline#extensions#tabline#show_tab_type = 1
* rename label for buffers (default: 'buffers') (c)
let g:airline#extensions#tabline#buffers_label = 'b'
* rename label for tabs (default: 'tabs') (c)
let g:airline#extensions#tabline#tabs_label = 't'
* enable/disable displaying index of the buffer.
When enabled, numbers will be displayed in the tabline and mappings will be
exposed to allow you to select a buffer directly. Up to 9 mappings will be
exposed. >
let g:airline#extensions#tabline#buffer_idx_mode = 1
nmap <leader>1 <Plug>AirlineSelectTab1
nmap <leader>2 <Plug>AirlineSelectTab2
nmap <leader>3 <Plug>AirlineSelectTab3
nmap <leader>4 <Plug>AirlineSelectTab4
nmap <leader>5 <Plug>AirlineSelectTab5
nmap <leader>6 <Plug>AirlineSelectTab6
nmap <leader>7 <Plug>AirlineSelectTab7
nmap <leader>8 <Plug>AirlineSelectTab8
nmap <leader>9 <Plug>AirlineSelectTab9
nmap <leader>- <Plug>AirlineSelectPrevTab
nmap <leader>+ <Plug>AirlineSelectNextTab
Note: Mappings will be ignored within a NERDTree buffer.
Note: In buffer_idx_mode these mappings won't change the
current tab, but switch to the buffer visible in that tab.
Use |gt| for switching tabs.
In tabmode, those mappings will switch to the specified tab.
* defines the name of a formatter for how buffer names are displayed. (c)
let g:airline#extensions#tabline#formatter = 'default'
" here is how you can define a 'foo' formatter:
function! airline#extensions#tabline#formatters#foo(bufnr, buffers)
" create a file in the dir autoload/airline/extensions/tabline/formatters/
" called foo.vim
function! airline#extensions#tabline#formatters#foo#format(bufnr, buffers)
return fnamemodify(bufname(a:bufnr), ':t')
endfunction
let g:airline#extensions#tabline#formatter = 'foo'
<
Note: the following variables are only used by the 'default' formatter.
When no disambiguation is needed, both 'unique_tail_improved' and
'unique_tail' delegate formatting to 'default', so these variables also
control rendering of unique filenames when using these formatters.
* configure whether buffer numbers should be shown. >
let g:airline#extensions#tabline#buffer_nr_show = 0
<
* configure how buffer numbers should be formatted with |printf|. >
* configure how buffer numbers should be formatted with |printf()|. >
let g:airline#extensions#tabline#buffer_nr_format = '%s: '
<
* configure the formatting of filenames (see |filename-modifiers|). >
@@ -335,24 +584,157 @@ virtualenv <https://github.com/jmcantrell/vim-virtualenv>
<
* configure collapsing parent directories in buffer name. >
let g:airline#extensions#tabline#fnamecollapse = 1
<
* configure truncating non-active buffer names to specified length. >
let g:airline#extensions#tabline#fnametruncate = 0
" The `unique_tail` algorithm will display the tail of the filename, unless
" there is another file of the same name, in which it will display it along
" with the containing parent directory.
let g:airline#extensions#tabline#formatter = 'unique_tail'
" The `unique_tail_improved` - another algorithm, that will smartly uniquify
" buffers names with similar filename, suppressing common parts of paths.
let g:airline#extensions#tabline#formatter = 'unique_tail_improved'
<
* configure the minimum number of buffers needed to show the tabline. >
let g:airline#extensions#tabline#buffer_min_count = 0
<
Note: this setting only applies to a single tab.
Note: this setting only applies to a single tab and when `show_buffers` is
true.
* configure the minimum number of tabs needed to show the tabline. >
let g:airline#extensions#tabline#tab_min_count = 0
<
Note: this setting only applies when `show_buffers` is false.
* configure separators for the tabline only. >
let g:airline#extensions#tabline#left_sep = ''
let g:airline#extensions#tabline#left_alt_sep = ''
let g:airline#extensions#tabline#right_sep = ''
let g:airline#extensions#tabline#right_alt_sep = ''
<
Note: Enabling this extension will modify |showtabline| and |guioptions|.
* configure whether close button should be shown: >
let g:airline#extensions#tabline#show_close_button = 1
* configure symbol used to represent close button >
let g:airline#extensions#tabline#close_symbol = 'X'
* configure pattern to be ignored on BufAdd autocommand >
" fixes unneccessary redraw, when e.g. opening Gundo window
let airline#extensions#tabline#ignore_bufadd_pat =
\ '\c\vgundo|undotree|vimfiler|tagbar|nerd_tree'
Note: Enabling this extension will modify 'showtabline' and 'guioptions'.
* enable Refresh of tabline buffers on |BufAdd| autocommands
(set this to one, if you note 'AirlineTablineRefresh', however, this
won't update airline on |:badd| commands) >
let airline#extensions#tabline#disable_refresh = 0
------------------------------------- *airline-tmuxline*
tmuxline <https://github.com/edkolev/tmuxline.vim>
* enable/disable tmuxline integration >
let g:airline#extensions#tmuxline#enabled = 0
<
* configure which mode colors should be used in tmux statusline >
let airline#extensions#tmuxline#color_template = 'normal' (default)
let airline#extensions#tmuxline#color_template = 'insert'
let airline#extensions#tmuxline#color_template = 'visual'
let airline#extensions#tmuxline#color_template = 'replace'
<
* if specified, setting this option will trigger writing to the file whenever the
airline theme is applied, i.e. when :AirlineTheme is executed and on vim
startup >
airline#extensions#tmuxline#snapshot_file = "~/.tmux-statusline-colors.conf"
<
------------------------------------- *airline-promptline*
promptline <https://github.com/edkolev/promptline.vim>
* configure the path to the snapshot .sh file. Mandatory option. The created
file should be sourced by the shell on login >
" in .vimrc
airline#extensions#promptline#snapshot_file = "~/.shell_prompt.sh"
" in .bashrc/.zshrc
[ -f ~/.shell_prompt.sh ] && source ~/.shell_prompt.sh
<
* enable/disable promptline integration >
let g:airline#extensions#promptline#enabled = 0
<
* configure which mode colors should be used in prompt >
let airline#extensions#promptline#color_template = 'normal' (default)
let airline#extensions#promptline#color_template = 'insert'
let airline#extensions#promptline#color_template = 'visual'
let airline#extensions#promptline#color_template = 'replace'
<
------------------------------------- *airline-nrrwrgn*
NrrwRgn <https://github.com/chrisbra/NrrwRgn>
* enable/disable NrrwRgn integration >
let g:airline#extensions#nrrwrgn#enabled = 1
------------------------------------- *airline-capslock*
vim-capslock <https://github.com/tpope/vim-capslock>
* enable/disable vim-capslock integration >
let g:airline#extensions#capslock#enabled = 1
------------------------------------- *airline-windowswap*
vim-windowswap <https://github.com/wesQ3/vim-windowswap>
* enable/disable vim-windowswap integration >
let g:airline#extensions#windowswap#enabled = 1
* set marked window indicator string >
let g:airline#extensions#windowswap#indicator_text = 'WS'
<
------------------------------------- *airline-taboo*
taboo.vim <https://github.com/gcmt/taboo.vim>
* enable/disable taboo.vim integration >
let g:airline#extensions#taboo#enabled = 1
<
------------------------------------- *airline-ctrlspace*
vim-ctrlspace <https://github.com/szw/vim-ctrlspace>
* enable/disable vim-ctrlspace integration >
let g:airline#extensions#ctrlspace#enabled = 1
To make the vim-ctrlspace integration work you will need to make the
ctrlspace statusline function call the correct airline function. Therefore
add the following line into your .vimrc:
let g:CtrlSpaceStatuslineFunction = "airline#extensions#ctrlspace#statusline()"
<
------------------------------------- *airline-ycm*
YouCompleteMe <https://github.com/Valloric/YouCompleteMe>
Shows number of errors and warnings in the current file detected by YCM.
* enable/disable YCM integration >
let g:airline#extensions#ycm#enabled = 1
* set error count prefix >
let g:airline#extensions#ycm#error_symbol = 'E:'
* set warning count prefix >
let g:airline#extensions#ycm#warning_symbol = 'W:'
<
------------------------------------- *airline-po*
po.vim <http://www.vim.org/scripts/script.php?script_id=2530>
* enable/disable po integration >
let g:airline#extensions#po#enabled = 1
<
* truncate width names to a fixed length >
let g:airline#extensions#po#displayed_limit = 0
<
==============================================================================
ADVANCED CUSTOMIZATION *airline-advanced-customization*
The defaults will accomodate the mass majority of users with minimal
The defaults will accommodate the mass majority of users with minimal
configuration. However, if you want to reposition sections or contents you can
do so with built-in helper functions, which makes it possible to create
sections in a more declarative style.
@@ -373,11 +755,47 @@ greater than a minimum width. >
Parts can be configured to be visible conditionally. >
call airline#parts#define_condition('foo', 'getcwd() =~ "work_dir"')
<
Now add part "foo" to section section airline_section_y: >
let g:airline_section_y = airline#section#create_right(['ffenc','foo'])
<
Note: Part definitions are combinative; e.g. the two examples above modify the
same `foo` part.
Note: Look at the source code and tests for the full API.
------------------------------------- *airline-predefined-parts*
Before is a list of parts that are predefined by vim-airline.
* `mode` displays the current mode
* `iminsert` displays the current insert method
* `paste` displays the paste indicator
* `crypt` displays the crypted indicator
* `filetype` displays the file type
* `readonly` displays the read only indicator
* `file` displays the filename and modified indicator
* `ffenc` displays the file format and encoding
And the following are defined for their respective extensions:
`hunks`, `branch`, `tagbar`, `syntastic`, `whitespace`
------------------------------------- *airline-accents*
Accents can be defined on any part, like so: >
call airline#parts#define_accent('foo', 'red')
<
This will override the colors of that part by using what is defined in that
particular accent. In the above example, the `red` accent is used, which means
regardless of which section the part is used in, it will have red foreground
colors instead of the section's default foreground color.
The following accents are defined by default. Themes can define their variants
of the colors, but defaults will be provided if missing. >
bold, italic, red, green, blue, yellow, orange, purple
<
The defaults configure the mode and line number parts to be bold, and the
readonly part to be red.
------------------------------------- *airline-sections*
Once a part is defined, you can use helper functions to generate the
statuslines for each section. For example, to use the part above, we could
@@ -387,7 +805,7 @@ define a section like this: >
let g:airline_section_b = airline#section#create_left(['ffenc','file'])
let g:airline_section_c = airline#section#create(['%{getcwd()}'])
endfunction
autocmd VimEnter * call AirlineInit()
autocmd User AirlineAfterInit call AirlineInit()
<
This will create a section with the `mode`, followed by a space, and our `foo`
part in section `a`. Section `b` will have two parts with a left-side
@@ -396,13 +814,13 @@ the space and cwd are not defined parts. For convenience, if a part of that
key does not exist, it will be inserted as is. The unit tests will be a good
resource for possibilities.
Note: The use of `VimEnter` is important, because most extensions are lazily
Note: The use of |VimEnter| is important, because most extensions are lazily
loaded, so we must give them a chance to define their parts before we can use
them.
Note: The `airline#section#create` function and friends will do its best to
create a section with the appropriate separators, but it only works for
function and text parts. Special |statusline| items like %f or raw/undefined
function and text parts. Special 'statusline' items like %f or raw/undefined
parts will not work as it is not possible to inspect their widths/contents
before rendering to the statusline.
@@ -415,7 +833,7 @@ the most powerful way to customize the statusline, and sometimes it may be
easier to go this route than the above methods.
Every section can have two values. The default value is the global `g:`
variable which is used in the absense of a `w:` value. This makes it very easy
variable which is used in the absence of a `w:` value. This makes it very easy
to override only certain parts of the statusline by only defining window-local
variables for a subset of all sections.
@@ -463,7 +881,7 @@ to your liking. Here is an example: >
return 1
endfunction
<
The above example uses various some example highlight groups to demonstrate
The above example uses various example highlight groups to demonstrate
that you can use any combination from the loaded colorscheme. However, if
you want colors to change between modes, you should use one of the section
highlight groups, e.g. `airline_a` and `airline_b`.
@@ -492,15 +910,15 @@ WRITING EXTENSIONS *airline-writing-extensions*
For contributions into the plugin, here are the following guidelines:
1. For simple |&filetype| checks, they can be added directly into the
1. For simple 'filetype' checks, they can be added directly into the
`extensions.vim` file.
2. Pretty much everything else should live as a separate file under the
`extensions/` directory.
a. Inside `extensions.vim`, add a check for some variable or command that
is always available (these must be defined in `plugin`, and _not_
`autoload` of the other plugin). If it exists, then initialize the
is always available (these must be defined in `plugin/`, and _not_
`autoload/` of the other plugin). If it exists, then initialize the
extension. This ensures that the extension is loaded if and only if the
user has the other plugin installed. Also, a check to
`airline#extensions#foo_plugin#enabled` should be performed to allow the
@@ -520,9 +938,12 @@ VimL syntax to write a theme, but if you've written in any programming
language before it will be easy to pick up.
The |dark.vim| theme fully documents this procedure and will guide you through
the process. The |jellybeans.vim| theme is another example of how to write a
theme, but instead of manually declaring colors, it extracts the values from
highlight groups.
the process.
For other examples, you can visit the official themes repository at
<https://github.com/vim-airline/vim-airline-themes>. It also includes
examples such as |jellybeans.vim| which define colors by extracting highlight
groups from the underlying colorscheme.
==============================================================================
TROUBLESHOOTING *airline-troubleshooting*
@@ -535,7 +956,7 @@ A. You need to set up your terminal correctly. For more details, see
set t_Co=256
<
Q. The statusline does not appear until I create a split.
A. This is the default setting of |laststatus|. If you want it to appear all
A. This is the default setting of 'laststatus'. If you want it to appear all
the time, add the following to your vimrc: >
set laststatus=2
<
@@ -554,9 +975,14 @@ A. Certain themes are derived from the active colorscheme by extracting colors
their intended matching colorschemes, but will be hit or miss when loaded
with other colorschemes.
Q. Themes are missing
A. Themes have been extracted into the vim-airlines-themes repository. Simply
clone https://github.com/vim-airline/vim-airline-themes and everything
should work again.
Solutions to other common problems can be found in the Wiki:
<https://github.com/bling/vim-airline/wiki/FAQ>
<https://github.com/vim-airline/vim-airline/wiki/FAQ>
==============================================================================
CONTRIBUTIONS *airline-contributions*
@@ -566,7 +992,6 @@ Contributions and pull requests are welcome.
==============================================================================
LICENSE *airline-license*
MIT License. Copyright © 2013 Bailey Ling.
MIT License. Copyright © 2013-2016 Bailey Ling.
vim:tw=78:ts=8:ft=help:norl:

View File

@@ -1,4 +1,4 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if &cp || v:version < 702 || (exists('g:loaded_airline') && g:loaded_airline)
@@ -6,40 +6,46 @@ if &cp || v:version < 702 || (exists('g:loaded_airline') && g:loaded_airline)
endif
let g:loaded_airline = 1
" autocmd VimEnter * call airline#deprecation#check()
let s:airline_initialized = 0
let s:airline_theme_defined = 0
function! s:init()
if !s:airline_initialized
let s:airline_initialized = 1
call airline#init#bootstrap()
call airline#extensions#load()
call airline#init#sections()
let s:airline_theme_defined = exists('g:airline_theme')
if s:airline_theme_defined || !airline#switch_matching_theme()
let g:airline_theme = get(g:, 'airline_theme', 'dark')
call airline#switch_theme(g:airline_theme)
endif
if s:airline_initialized
return
endif
let s:airline_initialized = 1
call airline#extensions#load()
call airline#init#sections()
let s:theme_in_vimrc = exists('g:airline_theme')
if s:theme_in_vimrc
try
let palette = g:airline#themes#{g:airline_theme}#palette
catch
echom 'Could not resolve airline theme "' . g:airline_theme . '". Themes have been migrated to github.com/vim-airline/vim-airline-themes.'
let g:airline_theme = 'dark'
endtry
silent call airline#switch_theme(g:airline_theme)
else
let g:airline_theme = 'dark'
silent call s:on_colorscheme_changed()
endif
silent doautocmd User AirlineAfterInit
endfunction
function! s:on_window_changed()
if pumvisible()
if pumvisible() && (!&previewwindow || g:airline_exclude_preview)
return
endif
call <sid>init()
call s:init()
call airline#update_statusline()
endfunction
function! s:on_colorscheme_changed()
call <sid>init()
if !s:airline_theme_defined
if airline#switch_matching_theme()
return
endif
call s:init()
let g:airline_gui_mode = airline#init#gui_mode()
if !s:theme_in_vimrc
call airline#switch_matching_theme()
endif
" couldn't find a match, or theme was defined, just refresh
@@ -60,8 +66,10 @@ function! s:airline_toggle()
if exists("s:stl")
let &stl = s:stl
endif
silent doautocmd User AirlineToggledOff
else
let s:stl = &stl
let s:stl = &statusline
augroup airline
autocmd!
@@ -70,17 +78,21 @@ function! s:airline_toggle()
\ | call <sid>on_window_changed()
autocmd CmdwinLeave * call airline#remove_statusline_func('airline#cmdwinenter')
autocmd ColorScheme * call <sid>on_colorscheme_changed()
autocmd GUIEnter,ColorScheme * call <sid>on_colorscheme_changed()
autocmd VimEnter,WinEnter,BufWinEnter,FileType,BufUnload,VimResized *
\ call <sid>on_window_changed()
autocmd TabEnter * :unlet! w:airline_lastmode
autocmd BufWritePost */autoload/airline/themes/*.vim
\ exec 'source '.split(globpath(&rtp, 'autoload/airline/themes/'.g:airline_theme.'.vim', 1), "\n")[0]
\ | call airline#load_theme()
augroup END
if s:airline_initialized
call <sid>on_window_changed()
call s:on_window_changed()
endif
silent doautocmd User AirlineToggledOn
endif
endfunction
@@ -88,6 +100,7 @@ function! s:get_airline_themes(a, l, p)
let files = split(globpath(&rtp, 'autoload/airline/themes/'.a:a.'*'), "\n")
return map(files, 'fnamemodify(v:val, ":t:r")')
endfunction
function! s:airline_theme(...)
if a:0
call airline#switch_theme(a:1)
@@ -95,9 +108,17 @@ function! s:airline_theme(...)
echo g:airline_theme
endif
endfunction
command! -nargs=? -complete=customlist,<sid>get_airline_themes AirlineTheme call <sid>airline_theme(<f-args>)
command! AirlineToggleWhitespace call airline#extensions#whitespace#toggle()
command! AirlineToggle call <sid>airline_toggle()
call <sid>airline_toggle()
function! s:airline_refresh()
silent doautocmd User AirlineBeforeRefresh
call airline#load_theme()
call airline#update_statusline()
endfunction
command! -bar -nargs=? -complete=customlist,<sid>get_airline_themes AirlineTheme call <sid>airline_theme(<f-args>)
command! -bar AirlineToggleWhitespace call airline#extensions#whitespace#toggle()
command! -bar AirlineToggle call s:airline_toggle()
command! -bar AirlineRefresh call s:airline_refresh()
call airline#init#bootstrap()
call s:airline_toggle()

View File

@@ -1,7 +1,7 @@
let g:airline_theme = 'dark'
call airline#init#bootstrap()
call airline#init#sections()
source plugin/airline.vim
doautocmd VimEnter
function! MyFuncref(...)
call a:1.add_raw('hello world')
@@ -49,7 +49,7 @@ describe 'airline'
it 'should allow users to redefine sections'
let g:airline_section_a = airline#section#create(['mode', 'mode'])
call airline#update_statusline()
Expect airline#statusline(1) =~ '%{airline#util#wrap(airline#parts#mode(),0)}%{airline#util#wrap(airline#parts#mode(),0)}'
Expect airline#statusline(1) =~ '%{airline#util#wrap(airline#parts#mode(),0)}%#airline_a#%#airline_a_bold#%{airline#util#wrap(airline#parts#mode(),0)}%#airline_a#'
end
it 'should remove funcrefs properly'

View File

@@ -1,3 +1,4 @@
let g:airline_theme = 'dark'
call airline#init#bootstrap()
describe 'active builder'
@@ -12,9 +13,27 @@ describe 'active builder'
it 'should transition colors from one to the next'
call s:builder.add_section('Normal', 'hello')
call s:builder.add_section('NonText', 'world')
call s:builder.add_section('Search', 'world')
let stl = s:builder.build()
Expect stl =~ '%#Normal#hello%#Normal_to_NonText#>%#NonText#world'
Expect stl =~ '%#Normal#hello%#Normal_to_Search#>%#Search#world'
end
it 'should reuse highlight group if background colors match'
highlight Foo1 ctermfg=1 ctermbg=2
highlight Foo2 ctermfg=1 ctermbg=2
call s:builder.add_section('Foo1', 'hello')
call s:builder.add_section('Foo2', 'world')
let stl = s:builder.build()
Expect stl =~ '%#Foo1#hello>world'
end
it 'should switch highlight groups if foreground colors differ'
highlight Foo1 ctermfg=1 ctermbg=2
highlight Foo2 ctermfg=2 ctermbg=2
call s:builder.add_section('Foo1', 'hello')
call s:builder.add_section('Foo2', 'world')
let stl = s:builder.build()
Expect stl =~ '%#Foo1#hello%#Foo1_to_Foo2#>%#Foo2#world'
end
it 'should split left/right sections'
@@ -26,9 +45,9 @@ describe 'active builder'
it 'after split, sections use the right separator'
call s:builder.split()
call s:builder.add_section('Normal', 'hello')
call s:builder.add_section('NonText', 'world')
call s:builder.add_section('Search', 'world')
let stl = s:builder.build()
Expect stl =~ '%#Normal#hello%#Normal_to_NonText#<%#NonText#world'
Expect stl =~ 'hello%#Normal_to_Search#<%#Search#world'
end
it 'should not repeat the same highlight group'
@@ -37,6 +56,33 @@ describe 'active builder'
let stl = s:builder.build()
Expect stl == '%#Normal#hello>hello'
end
it 'should replace accent groups with the specified group'
call s:builder.add_section('Normal', '%#__accent_foo#hello')
let stl = s:builder.build()
Expect stl == '%#Normal#%#Normal_foo#hello'
end
it 'should replace two accent groups with correct groups'
call s:builder.add_section('Normal', '%#__accent_foo#hello%#__accent_bar#world')
let stl = s:builder.build()
Expect stl =~ '%#Normal_foo#hello%#Normal_bar#world'
end
it 'should special restore group should go back to previous group'
call s:builder.add_section('Normal', '%#__restore__#')
let stl = s:builder.build()
Expect stl !~ '%#__restore__#'
Expect stl =~ '%#Normal#'
end
it 'should blend colors from the left through the split to the right'
call s:builder.add_section('Normal', 'hello')
call s:builder.split()
call s:builder.add_section('Search', 'world')
let stl = s:builder.build()
Expect stl =~ 'Normal_to_Search'
end
end
describe 'inactive builder'
@@ -46,9 +92,15 @@ describe 'inactive builder'
it 'should transition colors from one to the next'
call s:builder.add_section('Normal', 'hello')
call s:builder.add_section('NonText', 'world')
call s:builder.add_section('Search', 'world')
let stl = s:builder.build()
Expect stl =~ '%#Normal_inactive#hello%#Normal_to_NonText_inactive#>%#NonText_inactive#world'
Expect stl =~ '%#Normal_inactive#hello%#Normal_to_Search_inactive#>%#Search_inactive#world'
end
it 'should not render accents'
call s:builder.add_section('Normal', '%#__accent_foo#hello%#foo#foo%#__accent_bar#world')
let stl = s:builder.build()
Expect stl == '%#Normal_inactive#hello%#foo_inactive#fooworld'
end
end

View File

@@ -1,7 +1,5 @@
call airline#init#bootstrap()
call airline#init#sections()
source plugin/airline.vim
doautocmd VimEnter
describe 'commands'
it 'should toggle off and on'
@@ -24,6 +22,14 @@ describe 'commands'
Expect g:airline_theme == 'simple'
execute 'AirlineTheme dark'
Expect g:airline_theme == 'dark'
execute 'AirlineTheme doesnotexist'
Expect g:airline_theme == 'dark'
colors molokai
Expect g:airline_theme == 'molokai'
end
it 'should have a refresh command'
Expect exists(':AirlineRefresh') to_be_true
end
end

View File

@@ -1,6 +1,10 @@
call airline#init#bootstrap()
call airline#init#sections()
let g:airline#extensions#default#layout = [
\ [ 'c', 'a', 'b', 'warning' ],
\ [ 'x', 'z', 'y' ]
\ ]
source plugin/airline.vim
doautocmd VimEnter
describe 'default'
before
@@ -8,10 +12,6 @@ describe 'default'
end
it 'should use the layout'
let g:airline#extensions#default#layout = [
\ [ 'c', 'a', 'b', 'warning' ],
\ [ 'x', 'z', 'y' ]
\ ]
call airline#extensions#default#apply(s:builder, { 'winnr': 1, 'active': 1 })
let stl = s:builder.build()
Expect stl =~ 'airline_c_to_airline_a'

View File

@@ -1,10 +0,0 @@
describe 'highlighter'
it 'should create separator highlight groups'
hi Foo1 ctermfg=1 ctermbg=2
hi Foo2 ctermfg=3 ctermbg=4
call airline#highlighter#add_separator('Foo1', 'Foo2', 0)
let hl = airline#highlighter#get_highlight('Foo1_to_Foo2')
Expect hl == [ '', '', '4', '2', '' ]
end
end

21
t/highlighter.vim Normal file
View File

@@ -0,0 +1,21 @@
let g:airline_theme = 'dark'
describe 'highlighter'
it 'should create separator highlight groups'
hi Foo1 ctermfg=1 ctermbg=2
hi Foo2 ctermfg=3 ctermbg=4
call airline#highlighter#add_separator('Foo1', 'Foo2', 0)
let hl = airline#highlighter#get_highlight('Foo1_to_Foo2')
Expect hl == [ '', '', '4', '2', '' ]
end
it 'should populate accent colors'
Expect exists('g:airline#themes#dark#palette.normal.airline_c_red') to_be_false
Expect hlID('airline_c_red') == 0
call airline#themes#patch(g:airline#themes#dark#palette)
call airline#highlighter#add_accent('red')
call airline#highlighter#highlight(['normal'])
Expect hlID('airline_c_red') != 0
end
end

View File

@@ -6,10 +6,11 @@ function! s:clear()
endfor
endfunction
describe 'init'
call airline#init#bootstrap()
describe 'init sections'
before
call s:clear()
call airline#init#bootstrap()
call airline#init#sections()
end
@@ -28,7 +29,7 @@ describe 'init'
end
it 'section c should be file'
Expect g:airline_section_c == '%<%f%m'
Expect g:airline_section_c == '%<%f%m %#__accent_red#%{airline#util#wrap(airline#parts#readonly(),0)}%#__restore__#'
end
it 'section x should be filetype'
@@ -42,8 +43,8 @@ describe 'init'
it 'section z should be line numbers'
Expect g:airline_section_z =~ '%3p%%'
Expect g:airline_section_z =~ '%3l'
Expect g:airline_section_z =~ '%3c'
Expect g:airline_section_z =~ '%4l'
Expect g:airline_section_z =~ '%3v'
end
it 'should not redefine sections already defined'
@@ -61,7 +62,16 @@ describe 'init'
Expect airline#parts#get('branch').raw == ''
Expect airline#parts#get('tagbar').raw == ''
Expect airline#parts#get('syntastic').raw == ''
Expect airline#parts#get('eclim').raw == ''
Expect airline#parts#get('whitespace').raw == ''
end
end
describe 'init parts'
it 'should not redefine parts already defined'
call airline#parts#define_raw('linenr', 'bar')
call airline#init#sections()
Expect g:airline_section_z =~ 'bar'
end
end

View File

@@ -30,5 +30,10 @@ describe 'parts'
call airline#parts#define_condition('part', '1')
Expect airline#parts#get('part').condition == '1'
end
it 'can define a accent'
call airline#parts#define_accent('part', 'red')
Expect airline#parts#get('part').accent == 'red'
end
end

View File

@@ -1,6 +1,3 @@
call airline#init#bootstrap()
call airline#extensions#load()
function! SectionSpec()
endfunction
@@ -11,6 +8,11 @@ describe 'section'
call airline#parts#define_function('func', 'SectionSpec')
end
it 'should be able to reference default parts'
let s = airline#section#create(['paste'])
Expect s == '%{airline#util#wrap(airline#parts#paste(),0)}'
end
it 'should create sections with no separators'
let s = airline#section#create(['text', 'raw', 'func'])
Expect s == '%{airline#util#wrap("text",0)}raw%{airline#util#wrap(SectionSpec(),0)}'
@@ -26,16 +28,24 @@ describe 'section'
Expect s == '%{airline#util#prepend("text",0)}%{airline#util#wrap("text",0)}'
end
it 'should prefix with highlight group if provided'
it 'should prefix with accent group if provided and restore afterwards'
call airline#parts#define('hi', {
\ 'raw': 'hello',
\ 'highlight': 'hlgroup',
\ 'accent': 'red',
\ })
let s = airline#section#create(['hi'])
Expect s == '%#hlgroup#hello'
Expect s == '%#__accent_red#hello%#__restore__#'
end
it 'should accent functions'
call airline#parts#define_function('hi', 'Hello')
call airline#parts#define_accent('hi', 'bold')
let s = airline#section#create(['hi'])
Expect s == '%#__accent_bold#%{airline#util#wrap(Hello(),0)}%#__restore__#'
end
it 'should parse out a section from the distro'
call airline#extensions#load()
let s = airline#section#create(['whitespace'])
Expect s =~ 'airline#extensions#whitespace#check'
end

View File

@@ -28,10 +28,41 @@ describe 'themes'
it 'should pass args through correctly'
let hl = airline#themes#get_highlight('Foo', 'bold', 'italic')
Expect hl == ['', '', 0, 1, 'bold,italic']
Expect hl == ['', '', 'NONE', 'NONE', 'bold,italic']
let hl = airline#themes#get_highlight2(['Foo','bg'], ['Foo','fg'], 'italic', 'bold')
Expect hl == ['', '', 1, 0, 'italic,bold']
Expect hl == ['', '', 'NONE', 'NONE', 'italic,bold']
end
it 'should generate color map with mirroring'
let map = airline#themes#generate_color_map(
\ [ 1, 1, 1, 1, '1' ],
\ [ 2, 2, 2, 2, '2' ],
\ [ 3, 3, 3, 3, '3' ],
\ )
Expect map.airline_a[0] == 1
Expect map.airline_b[0] == 2
Expect map.airline_c[0] == 3
Expect map.airline_x[0] == 3
Expect map.airline_y[0] == 2
Expect map.airline_z[0] == 1
end
it 'should generate color map with full set of colors'
let map = airline#themes#generate_color_map(
\ [ 1, 1, 1, 1, '1' ],
\ [ 2, 2, 2, 2, '2' ],
\ [ 3, 3, 3, 3, '3' ],
\ [ 4, 4, 4, 4, '4' ],
\ [ 5, 5, 5, 5, '5' ],
\ [ 6, 6, 6, 6, '6' ],
\ )
Expect map.airline_a[0] == 1
Expect map.airline_b[0] == 2
Expect map.airline_c[0] == 3
Expect map.airline_x[0] == 4
Expect map.airline_y[0] == 5
Expect map.airline_z[0] == 6
end
end