1376 Commits

Author SHA1 Message Date
Christian Brabandt
0f78ad819a Calculate section width dynamically 2017-06-26 14:04:54 +02:00
Christian Brabandt
f86f1e8103 whitespace: Only refresh on changes to buffer
Should prevent too many redraws of Vim
2017-06-26 10:04:43 +02:00
Christian Brabandt
811360a095 Merge pull request #1497 from w0rp/update-ale-extension
Update the ALE extension
2017-06-26 09:56:32 +02:00
w0rp
c8a5efc11e Update the ALE extension so it loads better and uses the new count format 2017-06-25 19:49:18 +01:00
Christian Brabandt
e7d18fe427 Updated README.md mention correct Vundle repo 2017-06-24 17:05:24 +02:00
Christian Brabandt
0a352c9f5b branch: don't check untracked status for files in vcs dir
Currently, vim-airline will check untracked status for files e.g. living
in .git. So when editing .git/config it will show as being untracked.

While technically, this is correct I prefer not to see this for those
files. So skip the check for those files.
2017-06-24 14:03:40 +02:00
Christian Brabandt
ac032b752a Fix missing backquote 2017-06-24 13:43:46 +02:00
Christian Brabandt
b101175683 Mention minpac installation 2017-06-24 13:42:13 +02:00
Christian Brabandt
fde2511201 Syntastic: remove unused variable 2017-06-22 09:47:01 +02:00
Christian Brabandt
57e564b227 Add termguicolor check for is_win32term
closes #1259
2017-06-21 15:44:58 +02:00
Christian Brabandt
7d082c03b2 Do not clear intro screen
if airline is initialized too early and some :hi commands are run,
this will force a redraw in Vim which will result in the intro screen
being cleared.

Currently, this does not work for gvim, not sure why.

closes #1476 (well only partly, until i have discovered, why for gvim it
doesn't work).
2017-06-21 13:21:13 +02:00
Christian Brabandt
87cdf8f6c4 highlighter: Make sure hi group exists and is valid
previously we only checked, that the group exists, however
if loading a new color scheme, this might lead to the group becoming
cleared. That means it still exists, but the highlighting group would
not show anything. Therefore, also check that the group is not cleared.

closes #1483
2017-06-21 09:19:51 +02:00
Christian Brabandt
52c0afadb9 Merge pull request #1413 from chrisbra/wordformat
Improvements to wordcount formatting
2017-06-20 23:31:15 +02:00
Christian Brabandt
258f3e5630 fix failing test by defining all default sections
previous commit 2e3055541e broke the unit tests, since it renamed
the syntastic section. Fix that and also test correctly the other
sections, that have been added (and which have not been tested until
now).
2017-06-20 22:38:56 +02:00
Christian Brabandt
2e3055541e syntastic: distinguis errors and warnings
Currently the syntastic results are simply dumped into the error
section, however syntastic does internally distinguish between error and
warning sections.

Therefore change the syntastic extension to dump errors into the error
section and warnings into the warning section.

closes #1480
2017-06-20 22:26:22 +02:00
Christian Brabandt
d2b697d27b ale ext: fix syntax error 2017-06-20 22:23:46 +02:00
Christian Brabandt
ed95adea1e update doc: Mention and document ale/neomake extensions 2017-06-20 21:34:35 +02:00
Christian Brabandt
7f3d6287b5 ale ext: simplify logic 2017-06-20 21:20:24 +02:00
Christian Brabandt
1891933e59 branch: better display of branch for both hg and git
If a file is edited inside a git repository, which lies within a git
repository, the branch extensions shows 'gitmaster | hgdefault'

To make it more obvious, that we are looking into both repositories
here, use 'git:master | hg:default'

closes #1482
2017-06-20 17:47:07 +02:00
Christian Brabandt
9168b73411 update doc example, clarify how to truncate string 2017-06-20 14:14:09 +02:00
Christian Brabandt
c436592559 bufferline: take 'acd' into account
vim-airline does use a different section (path/file) depending on
whether 'acd' is set. Later in the bufferline extesion however, it
unconditionally overwrites the 'file' section, regardless of whether
this section is actually used.

Therefore the bufferline section needs to check this option as well.

fixes #1487
2017-06-20 13:58:39 +02:00
Christian Brabandt
e16ff7cc88 Do not error out, if a netrw variable is not defined
This should not happen, however being a bit more error tolerant
shouldn't hurt, so let's just fall back to 'normal' for the
g:netrw_sort_direction in case it is not defined (which should be the
default anyhow).

fixes #1492
2017-06-19 15:56:17 +02:00
Christian Brabandt
9eb51f48f4 Merge pull request #1489 from ozelentok/master
Improve denite extension performance
2017-06-12 21:11:41 +02:00
Oz Elentok
7865dc8149 Improve denite extension performance 2017-06-12 22:00:25 +03:00
Christian Brabandt
466198adc0 Merge pull request #1462 from maxfl/airline-vimtex
Add vimtex support
2017-05-08 12:10:38 +02:00
Maxim Gonchar
8e64138ef4 Add vimtex support
Indicates:
- whether the file is considered to be main or local
- whether the viewer is opened
- whether the compilation is running
- whether the compilation is continuous

Added:

* `vimtex` existence check
* variables documentation

TODO: readme and a screenshot

Update readme.md

Update doc

Update screenshot url
2017-05-08 13:07:13 +03:00
Christian Brabandt
d593359500 shorten filetype only when winwidth is < 90 2017-05-02 22:06:36 +02:00
Christian Brabandt
b3722b1e82 Merge pull request #1474 from mtn/readme
Add dein.vim to plugins-managers
2017-05-02 21:23:45 +02:00
Christian Brabandt
a950a2938a shorten tagbar extension on short windows 2017-05-02 21:22:47 +02:00
Christian Brabandt
0c368681dd Add some intro documentation
closes #1473
2017-05-02 20:43:08 +02:00
Michael Noronha
bcb52a1feb Add dein.vim to plugins-managers 2017-05-02 12:58:52 -05:00
Christian Brabandt
13bd4701ed Updates to the documentation 2017-04-21 07:41:22 +02:00
Christian Brabandt
4a47cd70cd correctly check w:airline_skip_empty_sections var 2017-04-11 22:10:43 +02:00
Christian Brabandt
f76ede3b28 Make skip_empty variable overridable per window
The denite extension functions return the content of some buffer-local
variables. Those variables are not defined, the first time the they are
accessed and therefore, the statusline is not updated later when
g:airline_skip_empty_sections is set.

So disable this variable in this window, by setting the
w:airline_skip_empty_section=0 variable in the denite window.

closes #1454
2017-04-10 09:29:27 +02:00
Christian Brabandt
396b49be4c Merge pull request #1455 from graysonwright/patch-1
[readme] Display install instructions in a table
2017-03-26 22:30:37 +02:00
Grayson Wright
e14f6579d7 [format] Display install instructions in a table
Previously, the instructions were displayed in a list without nesting,
and were hard to follow.

Since all the install commands are essentially one-liners,
a table makes it easy to look them up by package manager.
2017-03-26 13:19:09 -07:00
Christian Brabandt
b4ad02f906 fix wrong variable name 2017-03-20 08:56:35 +01:00
Christian Brabandt
703241942a Add filetype to chache, disable cache for fugitive
#1452 (partly)
2017-03-20 08:37:48 +01:00
Christian Brabandt
7813a54912 Merge pull request #1449 from shivrai/master
Update icon spacings
2017-03-17 14:46:33 +01:00
Shivansh Rai
223624d3e9 Update icon spacings
The line numbers start to merge with icons when they get large
Reference: https://image.ibb.co/e7KGaa/airline.jpg
2017-03-17 19:08:47 +05:30
Christian Brabandt
3a23eeac42 Check that 'statusline' option is correct
statusline of quickfix window will be reset in the ftplugin of
$VIMRUNTIME, therefore check that airline is still active

fixes #1447
2017-03-17 12:03:19 +01:00
Christian Brabandt
b57022bfc2 update to the documentation
Mention, that the variable
g:airline#extensions#tabline#switch_buffers_and_tabs only works
with the ctrlspace integration.

closes #1390
2017-03-16 21:18:23 +01:00
Christian Brabandt
70dd0655d2 Do not trigger on SessionLoadPost autocommand
This basically reverts commit 64a3bfd

closes #1444
2017-03-16 13:15:17 +01:00
Christian Brabandt
46b0b6bf5a Merge pull request #1427 from thatsmydoing/denite
Add support for denite
2017-03-15 10:06:19 +01:00
Thomas Dy
c9a0c62b1b Add support for denite 2017-03-15 16:41:50 +08:00
Christian Brabandt
17d2db93fd Check, that fg color can't be negative 2017-03-13 18:50:19 +01:00
Christian Brabandt
ba7d8c59f7 Call hg qtop with locale set to C
closes #1438
2017-03-13 09:49:02 +01:00
Christian Brabandt
d46fb524bd Merge pull request #1439 from cxw42/master
Permit appending content to a theme copied from dark.vim
2017-03-13 07:39:07 +01:00
Chris White
fb6231b479 Permit appending content to a theme
When ctrlp is not loaded, do not finish (terminate script execution).
Instead, just skip assigning the ctrlp colors.
2017-03-12 18:16:26 -04:00
Christian Brabandt
134c0204f3 Do not return a negative background color
fixes #1429 and similar
2017-03-05 22:18:04 +01:00
Christian Brabandt
fbd791e7f0 Merge pull request #1424 from tweekmonster/powerline
Fix g:airline_powerline_fonts check
2017-02-28 08:51:08 +01:00
Christian Brabandt
52663545a9 Only reset to Normal highlighting if it is actually defined
closes #1415 and similar
2017-02-28 08:33:44 +01:00
Tommy Allen
9876a0a2de Fix g:airline_powerline_fonts check 2017-02-27 22:32:06 -05:00
Christian Brabandt
ac9e4092ef Add paranthesis to function call in documentation 2017-02-26 10:49:52 +01:00
Alexey Zhikhartsev
3c6135d75f Add a function to disable whitespace-detection
Useful to call for particular file types (e.g., .tex files):
ftplugin/tex.vim:
    call airline#extensions#whitespace#disable()
2017-02-26 10:35:17 +01:00
Christian Brabandt
2ea22c1aaa Also cache filetype
The cache currently prevents e.g. that the wordcount() extensions kicks in the
first time you open a help window. Therefore take the filetype into
consideration as well.
2017-02-26 10:30:02 +01:00
Christian Brabandt
9d89375b8f Do not update wordcount on unknown buffers 2017-02-26 10:25:21 +01:00
Christian Brabandt
727a2b48d9 Rename wordcount update function 2017-02-26 10:24:08 +01:00
Christian Brabandt
7e6986651c Fix stupid typo 2017-02-25 22:13:16 +01:00
Christian Brabandt
f8c85e3e53 for airline ascii symbols set g:airline_symbols_ascii 2017-02-25 17:39:32 +01:00
Christian Brabandt
d624a44500 Fix tests for the changed default separators 2017-02-24 22:49:39 +01:00
Jorrit Visser
078537f1e2 Add interface fallback (Powerline>Unicode>ASCII)
Basically what the title says. First check if the user has Powerline,
fall back to Unicode symbols if he doesn't and fall back to ASCII
symbols if he doesn't have that either.
2017-02-24 22:23:41 +01:00
Jorrit Visser
72478dee02 Make vim-airline pretty without Powerline
Vim-airline is not a looker without a Powerline font. This fixes that!

* Ugly separator symbols are hidden
* New branch (ᚠ), line (㏑), maxline (☰) and whitespace (☲) symbols
* Replace old whitespace (✹) symbol in Powerline with the new (☲) more logical one
2017-02-24 22:23:41 +01:00
Christian Brabandt
dd2740f510 Merge pull request #1408 from chrisbra/highlight_improvements
Highlight improvements
2017-02-24 18:32:25 +01:00
Christian Brabandt
db01efd508 Better reformat wordcount format in with separator 2017-02-24 18:28:48 +01:00
Christian Brabandt
b2bbe7dbc2 Small wordcount format output on windows < 80 2017-02-24 18:25:29 +01:00
Christian Brabandt
562d060b08 Reset wordcount cache on window size
so the format can make a better guess what to display on different
window sizes.
2017-02-24 18:24:30 +01:00
Christian Brabandt
d8b62aa426 Remove unused variable 2017-02-24 18:22:25 +01:00
Christian Brabandt
f1574c4e0a define highlighting group, if it not exists
previously, it could have been skipped, if the old highlighting
attribute was the same as the current one. However, if the group does
not exist, it should still be defined

closes #1404
2017-02-20 21:30:10 +01:00
Christian Brabandt
69b132a6f4 Make sure, the highlighting group will be defined
If a color value of ['', '', 'NONE', 'NONE', ''] is given as value to
the highlighting group, the resulting group definition would look like
this:

hi Normal ctermfg=NONE ctermbg=NONE

which would result in the highlighting group being cleared (or even no
set at all), therefore check that at least one other value exists and if
not fall back to the highlighting definition of the Normal group.
2017-02-20 21:30:10 +01:00
Christian Brabandt
583121bbc9 before trying to return hi attributes, check the group exists
This prevents trying to access twice the highlighting groups
and should slightly speed up airline.
2017-02-20 21:29:37 +01:00
Christian Brabandt
b66c1ef070 Redraw statusline on CompleteDone event
closes #1402
2017-02-11 20:11:59 +01:00
Christian Brabandt
8a01eff1c2 Merge pull request #1396 from originalpositron/master
Truncation fix for whitespace extension
2017-02-07 14:48:02 +01:00
Jorrit Visser
8776a3e058 Truncation fix
Line numbers are now displayed before the error, instead of after, preventing truncation (and thus making the whitespace/indent section essentially useless in smaller terminals)
2017-02-07 14:20:56 +01:00
Christian Brabandt
7df411d59b Add missing comma
fixes #1386
2017-01-27 12:10:07 +01:00
Christian Brabandt
1a79d148dc do not add two bold accents to linenr and maxlinenr 2017-01-27 11:25:37 +01:00
Christian Brabandt
b56a064377 Use get() to access members of getwininfo() function
And add default value, in case the 'loclist' and 'quickfix' entry is not
available (can happen on versions without +quickfix feature).

Fixes #1379
2017-01-21 22:02:40 +01:00
Jerome Reybert
9a95964256 Fix typo in doc/airline.txt
Add tag for vim-airline
2017-01-19 15:15:05 +01:00
Christian Brabandt
e7e4769dc1 Merge pull request #1375 from jreybert/master
Add vimagit extension to display current mode
2017-01-19 15:09:00 +01:00
Jerome Reybert
a1db013d3f Add vimagit extension 2017-01-19 14:02:53 +01:00
Christian Brabandt
92d3637384 Merge pull request #1376 from aisk/master
Remove .swp files and add it to gitignore
2017-01-19 08:58:42 +01:00
Long Ang
3a857617e3 Remove .swp files and add it to gitignore 2017-01-19 11:30:35 +08:00
Christian Brabandt
85cbdd8de3 Add link to xkblayout extension 2017-01-18 09:58:33 +01:00
Christian Brabandt
9b1770f246 hg extension did not work on Windows
remove extra file argument

closes #1367
2016-12-31 23:50:39 +01:00
Christian Brabandt
bfac656da9 Merge pull request #1372 from dalguji/master
Add vim-xkblayout extension to display keyboard layout
2017-01-18 08:00:52 +01:00
YoungHoon Rhiu
d60323d623 Add vim-xkblayout extension to display keyboard layout 2017-01-18 12:34:14 +09:00
Christian Brabandt
a2431f2adb Check s:jobs dictionary before trying to remove jobid
fixes #1363
2016-12-29 11:22:55 +01:00
Christian Brabandt
e83ed24088 Merge pull request #1358 from chrisbra/1329
Add tab indicator for tabline when buffers are shown
2016-12-19 11:54:38 +01:00
Christian Brabandt
706cee277a Add tab indicator for tabline when buffers are shown
closes #1329
2016-12-16 23:42:58 +01:00
Christian Brabandt
73a1238205 wrong quoting of condition 2016-12-14 16:10:33 +01:00
Christian Brabandt
a69834f7dc Make fileformat output truncatable
closes #1309
2016-12-13 21:47:09 +01:00
Christian Brabandt
a0ea8db1fc Make the wordcount ext more flexible for the def. filetypes
This allows the user to further adjust the
g:airline#extensions#wordcount#filetypes configuration variable even
after Vim has started up.
2016-12-13 21:27:53 +01:00
Christian Brabandt
5e2ef0cd83 document how to format the wordcount ext. output 2016-12-13 21:23:56 +01:00
Christian Brabandt
c375d050a8 Do not add extra %( %) in the statusline
This was used as a workaround to fix a highlighting bug, which was fixed
in Vim 7.4.1511 and therefore, we need to correctly detect that the
patch was applied and in that case skip adding those extra groups.

As a bonus, when not using those empty %( %) groups, the
skip_empty_section test will correctly handle this and therefore this
closes #1351
2016-12-13 21:14:51 +01:00
Christian Brabandt
7cd7972bbe cleanup unlet calls
Instead of looping through the list and unletting each value separately,
join the list and their names together and unlet them all together.
2016-12-13 20:28:30 +01:00
Hirokazu Hata
dfc0cb772a Add dict to function refferencing self
This is no explicit problem in Vim, however Neovim diverged in this
behaviour from Vim and requires the dict attribute to be present before
accessing the self attribute.

See neovim/neovim#5763
2016-12-12 19:26:52 +01:00
Sam Fuller
7cb5c24151 prevent windows from closing on middle_click
Adding an option to prevent windows from being closed when a buffer in
the tabline is middle clicked and the clicked buffer is currently open
in a window.

When this option is enabled, instead of closing the window a new buffer
will be opened in all of the windows editing the clicked buffer instead.

This is my first pull request AND my first experience with vimscript, so
my apologies if this is a bit sloppy 😄
2016-12-09 13:20:48 +01:00
Christian Brabandt
781b4ea6a2 Merge pull request #1321 from chrisbra/getwininfo
Use getwininfo() for checking quickfix window
2016-12-09 12:59:46 +01:00
Nate Soares
17b6bd9c8f Fixed bug where highlighting on inactive windows wouldn't refresh.
This seems to be an omission/regression from #afb75adc, where inactive
highlight updating was accidentally removed when fixing another bug.

Solution: Add back the deleted statement. closes #1339

Repro steps:
1. Install some theme that depends on the background color
   (Soares/base16.nvim has a bunch)
2. `set background=dark` in your vimrc, and `colorscheme` one of the
   aforementioned schemes.
3. Open a split window. Note the colors on the inactive window's airline.
4. `set background=light` manually. note the colors on the inactive
   window's airline. Note how they have not updated. (In particular,
   airline_c_inactive has updated, but all the other inactive groups
   have not.)
5. Enter the inactive window. Exit the inactive window. Observe that the
   colors are now correct (showing that it is in fact a problem with the
   airline load_theme code, and not with the theme).

It seems strange that the code as written only expects
airline_c_inactive to have styling; perhaps there is some norm that
themes are supposed to handle inactive windows in a particular way? For
the record, my theme dis omething like this:

```
let s:IA1   = s:airlist('similar1', 'similar2')
let s:IA2   = s:airlist('similar1', 'similar2')
let s:IA3   = s:airlist('similar1', 'similar2')
let g:airline#themes#{s:palette}#palette.inactive = airline#themes#generate_color_map(s:IA1, s:IA2, s:IA3)
let g:airline#themes#{s:palette}#palette.inactive.airline_warning = s:airlist('base', 'contrast3')
let g:airline#themes#{s:palette}#palette.inactive.airline_error = s:airlist('base', 'antibase')
```
2016-12-09 12:53:35 +01:00
Christian Brabandt
0357b4fcbe Merge pull request #1348 from shaunbrady/exclude_at_runtime
Make ...#excludes|exclude_preview runtime configurable
2016-12-06 21:18:38 +01:00
Christian Brabandt
4c39344cc1 Merge pull request #1334 from chrisbra/worktrees
Add Worktrees support
2016-12-06 21:17:51 +01:00
Shaun Brady
718107c107 Make ...#excludes|exclude_preview runtime configurable
airline#extensions#tabline#excludes and
airline#extensions#tabline#exclude_preview previously had no impact if
changed after vim load.  This fixes that.
2016-12-03 23:40:15 -05:00
Christian Brabandt
04be981de9 make ...#fnamemod configurable during runtime
airline#extensions#tabline#fnamemod would be initialized and could not
be changed during runtime, so fix that.

closes #1347
2016-12-02 13:40:34 +01:00
Christian Brabandt
ccdc3d6c60 Merge pull request #1337 from mhartington/master
feat(): allow for buffer index formatting
2016-11-26 14:26:47 +01:00
mhartington
ee8173e41d feat(): allow for buffer index formatting 2016-11-25 12:36:55 -05:00
Christian Brabandt
53c8aa4fd6 enable wordcount for mail and tex filetypes 2016-11-24 15:20:38 +01:00
Christian Brabandt
b67509189b check for correct variable 2016-11-23 16:35:01 +01:00
Christian Brabandt
d4a239f14a Make airline aware of git worktrees
Currently vim-airline assumes, that the git_dir is part of the path for
the file being edited. This has changed, since git supports worktrees.

So take care of b:git_dir (which is set by fugitive) being a path
differently from the absolute path of the file being edited (however, it
should include the substring worktree in that case).
2016-11-23 16:33:12 +01:00
Christian Brabandt
3ebd7ad64b Merge pull request #1331 from flatcap/master
Abbreviate the text for 'po' translation files.
2016-11-23 08:15:19 +01:00
Richard Russon
4e93a90441 Abbreviate the text for 'po' translation files.
A typical status line for a 'po' (Portable Object) translation file is:

  1152 translated messages, 91 fuzzy translations, 42 untranslated messages.

Adding a substitute(), tidies this to:

  1152 translated, 91 fuzzy, 42 untranslated

which is still informative, but less verbose.
2016-11-22 11:24:10 +00:00
Christian Brabandt
c02d774b05 Merge pull request #1327 from gregorias/nvim_git_issue
Do not forward v:shell_error on command fail.
2016-11-20 16:47:32 +01:00
Grzegorz Milka
241f324b39 Do not forward v:shell_error on command fail.
airline#system#util for nvim used to fall back to 'system' implementation on
command error. This behavior caused conflict with other plugins if 'util' was
executed with a failing command as part of a ShellCmdPost event.

This commit makes 'util' interpret command error as persistent and not call
'system' in such a case.

This commit fixes #1317.
2016-11-20 10:16:13 +01:00
Christian Brabandt
cebfc9a64b Use getwininfo() for checking quickfix window
Since Vim8 we have win_getid() and getwininfo() functions to get
information about the current window. So we can use those functions to
find out, whether the current window is a quickfix or location list
window.

This avoids using a redir() over the :ls command and trying to
manually match the string quickfix and should be faster and also be more
robust, as the redir may fail if done recursively.

fixes #1319
2016-11-16 20:14:27 +01:00
Christian Brabandt
2dae2b364e Merge pull request #1314 from tbodt/patch-1
add vim-bufmru to the list of integrated plugins
2016-11-15 18:58:03 +01:00
Theodore Dubois
a314038280 add vim-bufmru to the list of integrated plugins 2016-11-05 09:16:03 -07:00
Christian Brabandt
258430db82 Merge pull request #1312 from gregorias/async
Use neovim's async job's instead of system
2016-11-04 21:22:32 +01:00
Grzegorz Milka
433d5d8f97 Use neovim's async job's instead of system
This commit makes branch.vim use neovim's async jobs instead of a system()
function. This way we avoid the v:shell_error overwrite bug and allow live
updates of the untracked status.
2016-11-04 19:09:05 +01:00
Christian Brabandt
545617f4f4 Merge pull request #1311 from watagashi/fix_lawrencium
Fix when using vim-lawrencium
2016-11-04 07:52:32 +01:00
WADA Takashi
e7056db27a Fix when using vim-lawrencium 2016-11-04 10:54:39 +09:00
Grzegorz Milka
3899f848a7 Adapt data structures of branch.vim to async
* The head string is now calculated iff it has changed.
* The not exists symbol for current file appears as soon as its status is known.
* Fixes various problems with asynchronous status checking, such as:
  * The not exists symbol keeps appearing and disapearing. This happened when
    file was marked as not existing, the untracked cache was invalidated, and
    the cache update is started, but in the meantime, the head string
    calculation used the current (empty) value of the cache.
  * The not exists symbol never appears, because cache keeps getting invalidated
    before b:airline_head is emptied and updated.

closes #1306
2016-11-03 21:03:13 +01:00
Christian Brabandt
02ecb8631d fix missing part of commit 3bd6cb5ee4
There was a part missing of #3bd6cb5ee4981227
add it back
2016-11-03 17:54:50 +01:00
Christian Brabandt
6dae3452db Fix order of statements
Commit #3bd6cb5ee498 causes an error, because a variable was used
before it was declared. Fix this.
2016-11-03 17:26:32 +01:00
Grzegorz Milka
3bd6cb5ee4 Refactor branch.vim to avoid code duplication
* Introduce a config variable that holds the vcs-dependent parts of code.
* Removes `get_*_untracked` duplication by merging their logic together.
* Removes custom checks for 'git' or 'hg'. Functions now rely on provided config
  argument.
* Use loops instead of manually specifying each handled VCS.

closes #1303
2016-11-03 17:19:17 +01:00
Christian Brabandt
b97d7a11f4 mention notexists symbol in documentation 2016-11-03 14:01:27 +01:00
Christian Brabandt
516870bf9f Check for correct async condition
fixes #1308
2016-11-02 16:43:47 +01:00
Christian Brabandt
0ea4daa103 Merge pull request #1297 from chrisbra/mq
Add mq status for hg repositories
2016-10-26 20:47:45 +02:00
Christian Brabandt
98fe4eabd4 Merge pull request #1299 from gregorias/fix_git_untracked
Display not exists symbol correctly in Git repos
2016-10-26 20:47:28 +02:00
Grzegorz Milka
2af2bdb424 Display not exists symbol correctly in Git repos
This commit fixes a bug, where untracked files in Git repos did not get the not
exists symbol displayed. The fix works by replacing the previous check for
whether currently edited file is a directory or not with a check based on
`findfile`. More detailed explanation follows.

VCS extension to vim-airline checks whether currently edited file is untracked.
The previous `s:get_git_untracked` implementation, which was used for the
aforementioned purpose for Git repos, was buggy, because it did not return the
untracked symbol in most situations, i.e. the edited file is untracked, but it
was treated as if it wasn't.
The root cause was the second clause in boolean expression checking the output
of `git status`:

    if output[0:1] is# '??' && output[3:-2] is? a:file

It was added to make sure we are not checking a directory, but at this point in
the program `a:file` is an absolute path, while output of `git status` is a
relative path from the root of git repo. So the `is?` expression failed in most
situations.
2016-10-25 19:26:44 +02:00
Christian Brabandt
5fe511c20b Merge pull request #1298 from chrisbra/shorten_mode
Shorten mode message for small windows
2016-10-25 08:01:07 +02:00
Christian Brabandt
58e7e276fa Merge pull request #1302 from chrisbra/loaded_extensions
guard against loading extensions twice
2016-10-25 08:00:25 +02:00
Christian Brabandt
6a155fabda guard against loading extensions twice
fixes #1300
2016-10-24 12:14:30 +02:00
Christian Brabandt
69020706b2 Shorten mode message for small windows 2016-10-20 22:57:26 +02:00
Christian Brabandt
14ab47cae6 Add mq status for hg repositories
Now that we have async feature for Vim 8, we can add the output of 'hg
qtop' back to the statusline if it is supported
2016-10-20 22:46:24 +02:00
Christian Brabandt
64d91665fe Merge pull request #1294 from asbhat/master
on_exit function fix if self.file is missing
2016-10-19 08:08:06 +02:00
Aditya
be6e3db68b on_exit function fix if self.file is missing 2016-10-18 22:23:07 -04:00
Christian Brabandt
8964603844 fix missing declaration 2016-10-14 11:14:33 +02:00
Misha Brukman
2dc2748804 Remove Bitdeli as it's defunct. 2016-10-14 10:36:21 +02:00
Bjorn Neergaard
06351e86df Add support for ALE, the Async Linting Engine
Ale is a plugin that lints text in the background, as you type!

It is new, but under [rapid development](https://github.com/w0rp/ale).
2016-10-14 10:36:21 +02:00
Bjorn Neergaard
45e5c907be Add support for flattened and NeoSolarized themes
These are forks/alternate versions of Solarized, without many of the
dynamic elements or the extensive terminal support.

[flattened](https://github.com/romainl/flattened) is a basic, totally
static version of Solarized with only ansi and GUI support.

[NeoSolarized](https://github.com/iCyMind/NeoSolarized) is a version
focusing on true/24-bit color support and NeoVim support, with limited
dynamic options.

[solarized8](https://github.com/lifepillar/vim-solarized8) is a version
focusing on vim/neovim true color support and limited dynamics. It is
already supported (`match()` matches it), but it is at least worth
noting.

Many users, including myself, use these themes over the original
Solarized for performance or technical reasons. Many users believe they
are incompatible with airline because automatic theming no longer
functions. While they can manually override the theme, most people seem
to miss this option in the documentation and give up.

It would be a nice quality of live improvement if airline detected these
themes and enabled its own Solarized theme automatically to match.
2016-10-14 10:36:21 +02:00
Christian Brabandt
4f8a16c31e fixup for async feature 2016-10-14 10:36:21 +02:00
Christian Brabandt
81ccd3bdf6 po-extension: Make asyncable 2016-10-14 10:36:21 +02:00
Christian Brabandt
c39e5f82cc check for existence of git/hg before calling them 2016-10-14 10:36:21 +02:00
Christian Brabandt
f706edee9f init async global variables 2016-10-14 10:36:21 +02:00
Christian Brabandt
57ca6c9e78 include workaround from c1704a2de0
add workaround from commit c1704a2de0 to prevent overwriting
v:shell_error
2016-10-14 10:36:21 +02:00
Christian Brabandt
ffa3d59af2 branch ext: use async functions for system() commands
Make use of vim 8 async functionality and use it to get the vcs status
for the branch extension.

Won't work with neovim.

fixes #1266
2016-10-14 10:36:21 +02:00
Christian Brabandt
75a0199a7d Merge pull request #1279 from bentomas/master
Fix whitespace symbol empty string has extra space
2016-10-07 09:04:39 +02:00
Benjamin Thomas
78439b2b35 Fix whitespace symbol empty string has extra space
This makes it so if the whitespace symbol (g:airline#extensions#whitespace#symbol) is an empty string, we don't end up wth two characters at the beginning of the message.
2016-10-02 01:22:50 -07:00
Christian Brabandt
2be9a044e0 Updated Issue template 2016-09-28 22:13:54 +02:00
Christian Brabandt
7a736021ee Merge pull request #1276 from chrisbra/tabline_bug
do not skip empty sections for the tabline
2016-09-27 22:46:04 +02:00
Christian Brabandt
f5359f9177 do not skip empty sections for the tabline
commit #3d667c32d3ac04 fixed a bug, that a section was not considered
empty for the statusline, also g:airline_skip_empty was set.

However unfortunately, this lead to a regression, makeing the tabline
ugly, because sections, that contained a single highlighting group would
be considered empty and would therefore be skipped. Since this is not
what is expected, make s:section_is_empty() return zero, when it notices
we are looking at a tabline.

fixes #1273
2016-09-27 21:44:00 +02:00
Saad Malik
3c33251ee7 Support for neomake
Added support for neomake plugin; similar to syntastic.
Shows warning and error counts in the airline statusbar.
2016-09-27 21:21:35 +02:00
Christian Brabandt
1c052e39b1 Merge pull request #1271 from chrisbra/highlighter_bug
Use the correct highlighting for the inactive window
2016-09-26 21:13:02 +02:00
Christian Brabandt
29c556dba4 use correct groupname for inactive windows
airline_c (which contains the filename) usually is used together with
the buffer number, so that several windows showing the a different
buffer do not share the same highlighting group.

This was fixed in 73aea86a, but unfortunately it was forgotten to not
only add this to the current group, but also modify the previous group
accordingly. This is what this patch does.

fixes #1268
2016-09-26 21:12:15 +02:00
Christian Brabandt
5ee2cd9acf Merge pull request #1269 from chrisbra/1231
for empty sections, make test return true
2016-09-25 20:25:08 +02:00
Christian Brabandt
3d667c32d3 for empty sections, make test return true
fixes #1231
2016-09-24 22:06:41 +02:00
Christian Brabandt
513afd25bc Merge pull request #1263 from thawk/master
Set script encoding to avoid script parsing problem in non UTF-8 VIM
2016-09-24 21:55:50 +02:00
thawk
45d77ca909 Add 'scriptencoding utf-8' to all scripts 2016-09-24 08:16:30 +08:00
Christian Brabandt
c1704a2de0 Do not overwrite v:shell_overwrite after ShellCmdPost
Prevents resetting v:shell_error from the followin system() call in
get_git_untracked.

Fixes #1266
2016-09-23 16:11:53 +02:00
Christian Brabandt
73152217fb Merge pull request #1265 from Robzz/per_buffer_whitespace_checks
Implement per buffer configuration of whitespace checks
2016-09-22 22:02:39 +02:00
R.Chavignat
da457ae5ea Add support for b:airline_whitespace_checks variable and documentation 2016-09-22 14:27:07 +02:00
Christian Brabandt
7a720bbbd7 Merge pull request #1256 from chrisbra/1253
do not cache status of statusline per tabpage
2016-09-15 16:42:06 +02:00
Christian Brabandt
6e3c0c1c14 do not cache status of statusline per tabpage
When cacheing the values of buffer number, window number per tabpage, we
might forget to update the statusline when it is actually needed, e.g.
on `:tab help h | norm! gt` which would then still display "Help" also
we are not in a help window anymore.

Therefore cache those values (including current tabpage number)
globally.

fixes #1253
2016-09-14 19:05:57 +02:00
Christian Brabandt
65b9aa4856 Check for existence of key in context dict before using it
fixes #1251
2016-09-09 08:07:07 +02:00
Christian Brabandt
c058922358 do not use utf-8 chars, if encoding is different
fixes #1234 #1248
2016-09-08 21:33:39 +02:00
Christian Brabandt
afee79bbe0 Merge pull request #1250 from chrisbra/1233
Do not unconditionally modify airline_c_inactive
2016-09-08 21:30:20 +02:00
Simon Ratner
0b1df0c524 Add null accent, to allow accents to be removed 2016-09-08 21:24:04 +02:00
Christian Brabandt
73aea86a7a Do not unconditionally modify airline_c_inactive
consider a window with these splits:
,----
| file1
| ---
| file2
| ---
| file1
`----

If the top buffer is the active one and you start modifying this buffer,
this will also reset the highlighting for the inactive buffer2, since
the highlighting group 'airline_c_inactive' is used for both windows
(one having the unmodified buffer 'file2' and one having the modified
'file1').

This lead to the incorrect highlighting of the buffer name of file2.

Airline basically already created different airline_c<bufnr>_inactive
highlighting groups, but unfortunately did not use them.

Therefore, make the builder aware of this and always append the buffer
number to the group 'airline_c' if it is in an inactive window.

2) we need to make sure, the highlighting won't get overwritten, so
make the highlighter aware of this situation as well, by appending the
buffer number to the group name, if it creates the 'inactive' mode
groups and a buffer number has been given.

this fixes #1233
2016-09-08 18:46:11 +02:00
Christian Brabandt
168b18ff0a Merge pull request #1223 from chrisbra/fix_prepend_sep
don't add a second separator if not needed
2016-09-05 20:22:28 +02:00
Christian Brabandt
c0cb03f48b don't add a second separator if not needed
Using let g:airline_section_y = airline#section#create_right(['ffenc','%{strftime("%H:%M")}'])
will result in an output string of `utf-8[unix] < < 00:00`

This happens, because the function util#prepend() will eventually add an
extra separator, if the width is zero. Therefore, when building the
string, remember, if the last section added an extra separator and only
add one, if there hasn't been added one before.

fixes #1220
2016-09-05 20:20:44 +02:00
Christian Brabandt
54e4772ef8 Merge pull request #1239 from chrisbra/1230
Do not cache gitgutter values
2016-09-05 19:32:24 +02:00
Christian Brabandt
5eaf658b9c Merge pull request #1240 from chrisbra/1226
Add User autocommand for Theme changing
2016-09-05 19:32:13 +02:00
Christian Brabandt
f6155d11fb Merge pull request #1242 from JulienPivard/correctionRefresh
`:AirlineRefresh` not work correctly
2016-09-05 19:31:54 +02:00
Ythildyr
afb75adc11 :AirlineRefresh not work correctly
If active buffer is modified, `:AirlineRefresh` apply `normal` highlight
instead of `normal_modified` highlight.

No particular config is requiered to reproduce this bug.

I see this bug with option `g:airline_skip_empty_sections` set.
Add any modification at the active buffer return to normal mode,
**do not save** and wait a few seconds, you can see highlight change to
normal but file is modified.

Without option `g:airline_skip_empty_sections`, add any modification at
the active buffer return to normal mode and type `:AirlineRefresh` you
can see change to bad highlight .
2016-08-28 14:41:45 +02:00
Christian Brabandt
ea98b42a0d Note on adjusting statusline for syntastic
The syntastic plugin recommends to adjust the statusline.
This does not apply for vim-airline for obvious reasons. Therefore
mention that this recommendation does not apply for us.
2016-08-24 21:32:38 +02:00
Christian Brabandt
7612aaf701 Add User autocommand for Theme changing
fixes #1226
2016-08-24 21:27:49 +02:00
Christian Brabandt
43e3ef5428 Do not cache gitgutter values
fixes #1230
2016-08-24 21:22:28 +02:00
Christian Brabandt
d00f7b35d2 Merge pull request #1224 from S3RB31/master
Updated documentation
2016-08-03 21:57:36 +02:00
͏
36c7f5a2a3 Updated documentation
Added notice regarding issue #1219
2016-08-02 15:57:44 +02:00
Christian Brabandt
62fa44f8b3 Merge pull request #1217 from wcn3/master
Add Go to the list of C-like languages.
2016-07-26 19:21:33 +02:00
Bill Neubauer
460ed02864 Add Go to the list of C-like languages. 2016-07-26 10:06:40 +09:00
Christian Brabandt
4b5441a8f7 Merge pull request #1211 from JulienPivard/patch-1
Hunks not show in airline with signify and option g:airline#extension…
2016-07-25 10:00:48 +02:00
Julien Pivard
53dcd8a49c Hunks won't appear if g:airline_skip_empty_sections = 1 2016-07-24 21:15:10 +02:00
Christian Brabandt
657cf773ad Merge pull request #1206 from chrisbra/width
Cache hunk values, shorten for small windows
2016-07-24 10:08:40 +02:00
Christian Brabandt
797ad1ea79 Merge pull request #1207 from chrisbra/ctrlspace
Map keys in ctrlspace mode
2016-07-24 10:07:36 +02:00
Christian Brabandt
64188c395f Merge pull request #1216 from chrisbra/skip_empty_sections
disable refresh function, if airline has been disabled
2016-07-24 10:01:20 +02:00
Christian Brabandt
62eb44a9d6 disable refresh function, if airline has been disabled
fixes #1213
2016-07-24 09:58:52 +02:00
Christian Brabandt
4d0c4f6b1e Merge pull request #1197 from chrisbra/eclim
Cache eclim errorlist
2016-07-04 20:29:08 +02:00
Christian Brabandt
fdd29caef4 shorten filetype for smaller screens 2016-07-03 21:32:33 +02:00
Christian Brabandt
a6c04644ef Map keys in ctrlspace mode
fixes #1181
2016-07-03 21:09:42 +02:00
Christian Brabandt
8fda614d0d Cache hunk values, shorten for small windows
Cache the hunk values. In case of short windows, shorten the hunk string
a little bit and make the branch extension take the hunk value into
account when deciding how much to shorten it.
2016-07-03 20:44:05 +02:00
Christian Brabandt
a710cb99dd Merge pull request #1205 from blueyed/fix-1204
tabline: do not change the signature of get_buffer_name
2016-07-02 20:19:47 +02:00
Daniel Hahler
63dc4ba2a4 tabline: do not change the signature of get_buffer_name
Thanks to @wsdjeg about notifying me in
https://github.com/vim-airline/vim-airline/commit/e1f7bf#commitcomment-18104843.

Fixes: https://github.com/vim-airline/vim-airline/issues/1204.
2016-07-02 16:24:47 +02:00
Christian Brabandt
e1f7bffe71 Merge pull request #1189 from blueyed/tabline-only-handle-visible-buffer-names
Tabline performance: only pass in visible buffers to formatters
2016-07-02 10:57:50 +02:00
Christian Brabandt
c6f5d8b823 Merge pull request #1202 from chrisbra/resolve_symlink
Try to resolve symlinks for git
2016-07-02 10:55:49 +02:00
Christian Brabandt
98b329daf1 Merge pull request #1203 from chrisbra/small_screen
small screen adjustments
2016-07-02 10:55:27 +02:00
Christian Brabandt
e715bce77b Shorten section z in small windows 2016-07-02 10:20:19 +02:00
Christian Brabandt
409e8b0cbd refactor shortening code 2016-07-02 10:20:07 +02:00
Christian Brabandt
5b00d54cd6 If window is too small, shorten branch name 2016-07-02 10:19:43 +02:00
Christian Brabandt
fadd737a29 Merge pull request #1201 from chrisbra/ycm
call YCM function only if they are defined
2016-07-01 11:54:09 +02:00
Christian Brabandt
ece61f346e Try to resolve symlinks for git 2016-07-01 11:52:07 +02:00
Christian Brabandt
fbfea6daee Merge pull request #1200 from chrisbra/width
limit whitespace check output for smaller screens
2016-07-01 11:17:16 +02:00
Christian Brabandt
39f046664d Merge pull request #1196 from chrisbra/tabenter
Reset w:airline_active on TabEnter
2016-07-01 11:11:35 +02:00
Christian Brabandt
bc095bcde1 limit whitespace check output for smaller screens
Sometimes, if a buffer triggers many whitespace check warnings,
and the Vim window size is too small, other parts of the statusline
might become unreadable.

Therefore, if the window size is smaller than say 120 characters
and the whitespace warning > 9 chars, limit it to 10 characters
and inidicate, that there is more to come
2016-07-01 11:10:51 +02:00
Christian Brabandt
5c24c3c504 call YCM function only if they are defined
fixes #1187 by making sure, we only call functions, that actually exist.

Should make vim-airline work with lady loaded YCM, e.g. using vim-plug:

```viml
" Code to execute when the plugin is loaded on demand
Plug 'Valloric/YouCompleteMe', { 'for': 'cpp' }
autocmd! User YouCompleteMe if !has('vim_starting') | call youcompleteme#Enable() | endif
```
2016-06-24 11:49:53 +02:00
Christian Brabandt
72b316c871 Cache eclim errorlist
fixes #1193
2016-06-24 11:43:20 +02:00
Christian Brabandt
41df6668c7 Reset w:airline_active on TabEnter
fixes #1182
2016-06-23 18:09:01 +02:00
Daniel Hahler
8d681c7119 Tabline performance: only pass in visible buffers to formatters
This only passes in the list of visible buffers on that tab, which
reduces the processing a lot if you have a lot of buffers opened.
2016-06-17 15:07:55 +02:00
Christian Brabandt
7b9b68f15d Merge pull request #1185 from blueyed/performance-highlight
Some minor performance fixes for the highlighter
2016-06-07 19:58:27 +02:00
Daniel Hahler
f51f73773d airline#highlighter#exec: do not build cmd always 2016-06-06 20:41:33 +02:00
Daniel Hahler
429cfcd71e minor: do not copy args in s:get_array 2016-06-06 20:40:51 +02:00
Christian Brabandt
6c8f33f192 Merge pull request #1183 from HarmtH/ctrlspace-clickbuf
update ctrlspace bufferline to use clickbuf()
2016-06-02 21:41:53 +02:00
Harm te Hennepe
74aacca55d update ctrlspace bufferline to use clickbuf() 2016-06-02 16:00:00 +02:00
Christian Brabandt
64f06309b1 Merge pull request #1180 from ratijas/master
add obsession extension
2016-05-30 19:58:07 +02:00
ivan tkachenko
5a170c5ef0 add obsession extension 2016-05-30 03:44:39 +08:00
Christian Brabandt
4d39cb6f20 Merge pull request #1175 from chrisbra/1174
vim 7.3 does not allow getwinvar with 3 args
2016-05-22 21:37:10 +02:00
Christian Brabandt
985f3d3eca b:airline_head sometimes undefined
Make sure, b:airline_head variable is set, also it is initially set in
this function earlier. But see #1171 for an error.

Therefore, before checking if the variable is empty, make sure it
exists.

fixes #1171
2016-05-22 21:29:00 +02:00
Christian Brabandt
83b6dd11a8 vim 7.3 does not allow getwinvar with 3 args
use airline#util#getwinvar instead, fixes #1174
2016-05-22 21:26:34 +02:00
Christian Brabandt
70c16f4c46 Reset mode when resizing
fixes #1156
2016-05-15 11:13:29 +02:00
Christian Brabandt
8d8d9afaef Merge pull request #1170 from drmikehenry/master
Add the b:airline_whitespace_disabled feature.
2016-05-15 11:11:41 +02:00
Michael Henry
e67b2847ea Add the b:airline_whitespace_disabled feature.
If the per-buffer variable b:airline_whitespace_disabled is defined
and non-zero, whitespace checking will be disabled for that buffer.
2016-05-14 15:56:48 -04:00
Christian Brabandt
ba94fa12b9 Merge pull request #1165 from chrisbra/1162
Add quickfix title to inactive statusline
2016-05-13 20:41:51 +02:00
Christian Brabandt
eef069d7bc reset w:airline_active variable on TabEnter
fixes #1159
2016-05-13 14:41:31 +02:00
Christian Brabandt
99cd26cda4 Merge pull request #1166 from chrisbra/nomodeline
Use <nomodeline> if possible in :doautocmd
2016-05-13 11:24:29 +02:00
Christian Brabandt
46f854fc83 Use <nomodeline> if possible in :doautocmd
prevents closing of folds on CursorHold autocommand
when skip_empty sections is true
2016-05-13 11:22:12 +02:00
Christian Brabandt
bd4cb97e85 Add quickfix title to inactive statusline
fixes #1162
2016-05-13 10:08:54 +02:00
Christian Brabandt
0d05196426 Merge pull request #1160 from wsdjeg/master
Fix neovim true color support
2016-05-13 08:24:58 +02:00
Christian Brabandt
4ca34804b2 Merge pull request #1161 from chrisbra/1157
fix adding space padding to section caused by PR1157
2016-05-12 21:42:37 +02:00
Christian Brabandt
727208d766 Do not draw separators for empty sections
This is a little bit a hack, because by the time the separators are
added, it is not clear, if the following section is empty, therefore
we need to parse the content of the following section and eval the
expressions to find out, if this is empty

Remarks:
- catch all exceptions when eval'ing statusline

- make sure, that the seperators are highlighted
  even when skipping empty regions (highlight group
  names need to be adjusted)

- if a section is defined as empty, it will be removed completly from
  the statusline. This means, it won't be called on the next update
  and may not refresh properly (e.g. when the whitespace check
  triggers, therefore, the whitesapce extension has to call an
  explicit redraw whenever it is supposed to be refreshed)
2016-05-12 21:40:56 +02:00
Christian Brabandt
a4840f1585 fix adding space padding to section caused by PR1157
fixes #1158
2016-05-12 21:35:28 +02:00
wsdjeg
62dfab26de Fix old version neovim support 2016-05-12 23:06:35 +08:00
wsdjeg
8171fcaf2e Fix neovim true color support 2016-05-12 22:32:04 +08:00
Christian Brabandt
811e51575c Merge pull request #1157 from cenk/padding
do not add padding to section name if empty
2016-05-10 22:58:53 +02:00
Cenk Alti
2d7f5b2cc1 do not add padding to section name if empty 2016-05-08 04:52:35 +03:00
Christian Brabandt
30f078daf5 Document g:airline_symbols.maxlinenr 2016-04-30 15:08:29 +02:00
Christian Brabandt
eaf2034163 Merge pull request #1148 from chrisbra/1131
Make sure the statusline option is correct
2016-04-29 09:18:41 +02:00
Christian Brabandt
cf5632bb94 Merge pull request #1152 from chrisbra/1146
Check that default value exists, before accessing it
2016-04-29 09:17:35 +02:00
Christian Brabandt
9bcb6ae64e Merge pull request #1147 from hanxueluo/master
put file path in quotes when call "system()"
2016-04-29 09:12:42 +02:00
hanhuanle
a8dfdd40b7 shellescape file path when call "system()"
"system()" called by "get_git_untracked" and "get_hg_untracked" fails
sometimes. It reports error "Can't open file /tmp/***".
The root cause is that the file path for system() contains some unordinary
character and lacks quotes.
2016-04-28 23:14:32 +08:00
Christian Brabandt
64a3bfd439 Make sure the statusline option is correct
should fix #1131 completely, but literally comparing the
statusline option with the expected value
2016-04-28 07:17:44 +02:00
Christian Brabandt
d36085a5b0 Merge pull request #1145 from chrisbra/1144
call refresh function on window resize event
2016-04-27 21:29:02 +02:00
Christian Brabandt
9dfc4d0c04 Merge pull request #1136 from chrisbra/pr1103
add total line next to line number
2016-04-27 20:52:04 +02:00
oldratlee
ad3eee7e72 add total line next to line number
An alternative approach to PR1103
2016-04-27 20:49:49 +02:00
Christian Brabandt
057b429b02 Check that default value exists, before accessing it
closes #1146
2016-04-27 20:11:40 +02:00
Christian Brabandt
b91f729586 call refresh function on window resize event
fixes #1144
2016-04-26 21:05:03 +02:00
Christian Brabandt
81b58028f0 Merge pull request #1140 from chrisbra/1131
Check the value of the 'stl' setting on SessionLoadPost
2016-04-21 20:09:48 +02:00
Christian Brabandt
a5f7b9520a Check the value of the 'stl' setting on SessionLoadPost
Restoring a session using vim -S with 'sessionopts' including options,
might overwrite the statusline function.

fixes #1131
2016-04-21 20:03:42 +02:00
Christian Brabandt
86e7d19df1 Merge pull request #1138 from chrisbra/1127
don't throw error if bufferline is not installed
2016-04-21 09:41:47 +02:00
Christian Brabandt
e1627d2144 Merge pull request #1139 from chrisbra/doc
Updated issue template
2016-04-21 09:41:11 +02:00
Christian Brabandt
1b9035cc51 Updated issue template
ask more terminal related questions
2016-04-21 09:40:37 +02:00
Christian Brabandt
b8c1b26f0e don't throw error if bufferline is not installed
airline#extensions#load() tries to load all extensions,
the user has specified in g:airline_extensions.
However, if e.g. bufferline is requested to be loaded, but
is not installed, it will throw an error
E117: Unknown function: airline#extensions#bufferline#init

Therefore, catch E117 and show a warning.

closes #1127
2016-04-21 09:30:23 +02:00
Christian Brabandt
1e77e6cbcc Merge pull request #1133 from blueyed/on_window_changed-only-once
Update each window only once in s:on_window_changed.
2016-04-20 21:31:52 +02:00
Christian Brabandt
39039aceb2 Merge pull request #1134 from blueyed/function-bang
Add bang to function definitions
2016-04-20 21:31:02 +02:00
Daniel Hahler
5652b576b0 Add bang to function definitions
This makes it easier to reload the files, e.g. via vim-scriptease's
`:Runtime`.
2016-04-20 21:10:28 +02:00
Daniel Hahler
abcb3c4bb3 Update each window only once in s:on_window_changed.
We might come there several times for different autocommands.

The key uses bufnr/winnr and the number of total windows, and is stored
for the tab.
2016-04-20 21:06:04 +02:00
Christian Brabandt
95237f6604 Merge pull request #1132 from chrisbra/pr1110
Made c_like_langs customisable via g:airline#extenstions#c_like_langs
2016-04-20 20:46:04 +02:00
John Byrne
a5fab144aa Made c_like_langs customisable via g:airline#extenstions#c_like_langs 2016-04-20 20:44:50 +02:00
Christian Brabandt
3f2247593a Merge pull request #1117 from 987poiuytrewq/middle_click_buffers
Make middle clickable buffers (only Neovim)
2016-04-19 23:33:11 +02:00
Duncan Williams
0c251e20a7 Add middle click to close buffer functionality
Extended the left click to switch buffer functionality to also
support middle click to delete buffer

documentation of clickable buffers
2016-04-19 20:49:01 +01:00
Christian Brabandt
1bb8b6278e Merge pull request #1119 from shanesmith/tabsOnLeftColour
Fix tabs theming
2016-04-12 09:15:35 +02:00
Shane Smith
a79e35b5e3 Fix tabs theming 2016-04-11 18:22:42 -04:00
Christian Brabandt
168dd7970a Merge pull request #1116 from othrayte/java-mixed-indent
Add Java as an exception in mixed-indent-file
2016-04-07 16:30:57 +02:00
Adrian Cowan
066d936076 Add Java as an exception in mixed-indent-file
Java allows "/** */"-style comments; add it as an exception in mixed-indent-file.
2016-04-07 14:55:39 +10:00
Christian Brabandt
377010ea6e Merge pull request #1105 from octurion/cuda-patch
Add CUDA as an exception in mixed-indent-file
2016-04-05 21:44:09 +02:00
Christian Brabandt
f402b78be9 Merge pull request #1113 from SevereOverfl0w/patch-1
Add asciidoc to default wordcount filetype
2016-04-05 21:43:22 +02:00
Dominic Monroe
8f83231078 Add asciidoc to default wordcount filetype 2016-04-05 13:14:48 +01:00
Alexandros Tasos
dba50e9eea Add CUDA as an exception in mixed-indent-file 2016-03-24 23:53:13 +02:00
Christian Brabandt
842e562359 Merge pull request #1092 from tamul/mixed-indent-ld
extensions#whitespace: fix .ld mixed indent false positive
2016-03-23 15:09:05 +01:00
Christian Brabandt
5ee24f5d87 Merge pull request #1093 from wesQ3/windowswap-update
windowswap: use new tab-aware API if WS is up to date
2016-03-23 15:08:32 +01:00
Christian Brabandt
9afebc9233 Merge pull request #1097 from HarmtH/tablineat-for-ctrlspace
tablineat() support for ctrlspace tabline
2016-03-23 15:08:07 +01:00
Christian Brabandt
79899c76bf Merge pull request #1101 from dterei/master
Add spell detection
2016-03-23 15:07:31 +01:00
Christian Brabandt
b2461f612e Merge pull request #1102 from joshuarubin/patch-1
Add support for getting tab title from t:title
2016-03-23 14:56:29 +01:00
Joshua Rubin
73146e3e73 Add support for getting tab title from t:title
Uses `gettabvar` to get tab name.
2016-03-22 12:14:47 -06:00
David Terei
ae4a978509 Add spell detection 2016-03-21 23:52:04 -07:00
Harm te Hennepe
bc7aa0c812 tablineat() support with ctrlspace tabline 2016-03-19 17:38:53 +01:00
Wes Malone
582958d6c5 windowswap: use new tab-aware API if WS is current 2016-03-16 19:27:54 -05:00
Tayler Mulligan
c8048973cd extensions#whitespace: fix .ld mixed indent false positive
Similar to #1065 and #1081, adds link scripts to be excluded.

Adds a list containing C-like languages to ignore, which implement
multiline comments as:
/*
 *
 ...
 */

Comment below filetype check reflects all exclusions (c-like)
2016-03-16 16:19:55 -07:00
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
Bailey Ling
55f524de77 support for conditional parts. resolves #238. 2013-09-08 19:06:57 -04:00
Bailey Ling
4c6aa4401b check the git/hg root when changing buffers. resolves #237. 2013-09-08 14:03:49 +00:00
Bailey Ling
b4cff305b1 Merge pull request #234 from ompugao/theme-serene
add the old type of 'simple' theme and change the name of it to 'serene'
2013-09-08 06:33:00 -07:00
Shohei Fujii
5e5414dac6 tiny fix 2013-09-08 08:32:40 +09:00
Bailey Ling
71a4b2f595 shorten path name as much as possible. 2013-09-07 19:06:01 +00:00
Bailey Ling
9c416f28d4 tidy up documentation 2013-09-07 18:33:47 +00:00
Bailey Ling
697e08a83c redefine ffenc as a function (#235). 2013-09-07 18:14:41 +00:00
Shohei Fujii
d26ca50a97 add new theme named 'serene' 2013-09-08 00:19:00 +09:00
Bailey Ling
dbd9121c05 allow collapsing to be configurable. also fix win paths. 2013-09-07 15:09:19 +00:00
Bailey Ling
e1062c5f84 update docs 2013-09-07 13:50:55 +00:00
Bailey Ling
87c999358c add profile method for mode switching 2013-09-07 13:21:04 +00:00
Bailey Ling
8cfb43fe32 refresh inactive modified colors on theme switch. resolves #233. 2013-09-07 13:03:15 +00:00
Bailey Ling
d74b3bfdbf fix inactive modified arrow colors (#233). 2013-09-07 13:00:10 +00:00
Bailey Ling
ad3556d243 remove redundant highlight group. 2013-09-07 03:43:23 +00:00
Bailey Ling
db58294871 Merge branch 'master' into dev 2013-09-07 01:57:39 +00:00
Bailey Ling
bfb091c3ca minor cleanup of documentation. 2013-09-07 01:52:53 +00:00
Bailey Ling
22f1701a2e keep fmod as a valid configuration variable. 2013-09-07 01:36:15 +00:00
Bailey Ling
f11e133c1a take window size into account before restricting the limit. 2013-09-07 01:33:07 +00:00
Bailey Ling
2e46190034 pass in buffers to the formatter. 2013-09-07 00:51:58 +00:00
Bailey Ling
0ac25ecc30 extract buffer name logic into a formatter.
hold off on deprecation warnings for now...
2013-09-07 00:43:51 +00:00
Bailey Ling
65efb89145 turn on deprecation warnings. 2013-09-06 21:50:43 +00:00
Bailey Ling
7a2f6525c3 implement customizable file name formatting (#230). 2013-09-06 21:50:06 +00:00
Bailey Ling
b636c28ae2 Merge branch 'master' into dev 2013-09-06 20:33:51 +00:00
Bailey Ling
2391ed0579 show hidden buffers with a different color. resolves #229. 2013-09-06 20:32:10 +00:00
Bailey Ling
8b71285c6b fill in inactive modified colors. 2013-09-06 20:32:09 +00:00
Bailey Ling
46db9b9bdf check existence of inactive modified colors before using them. 2013-09-06 20:32:09 +00:00
Bailey Ling
3c49b9cf3d use airline_c for better predicability. 2013-09-06 20:32:09 +00:00
Bailey Ling
29972ef857 basic working independent inactive modified highlights. 2013-09-06 20:32:08 +00:00
Bailey Ling
c5a0374b4c Merge pull request #231 from Pychimp/master
Luna now supports Tabline :)
2013-09-06 09:40:14 -07:00
Pychimp
a1eca0a06a Luna theme support for Tabline
Slightly better theming, than the automatically genenrated one by
Airline.
2013-09-06 21:41:22 +05:30
Bailey Ling
e16d728e36 show hidden buffers with a different color. resolves #229. 2013-09-05 22:34:15 +00:00
Bailey Ling
8b2d58af59 fill in inactive modified colors. 2013-09-05 21:34:48 +00:00
Bailey Ling
83bbd09b0e check existence of inactive modified colors before using them. 2013-09-05 21:01:08 +00:00
Bailey Ling
5754bcabce use airline_c for better predicability. 2013-09-05 20:47:38 +00:00
Bailey Ling
01d742794f basic working independent inactive modified highlights. 2013-09-05 20:45:12 +00:00
Pychimp
003522a42d Merge remote-tracking branch 'upstream/master'
Merging bling's upstream into my fork
2013-09-05 23:03:45 +05:30
Bailey Ling
e1be8ff22f just in case...defense coding. 2013-09-05 17:17:04 +00:00
Bailey Ling
fc6cf26ac6 limit the number of buffers displayed. fixes #221. 2013-09-05 17:07:31 +00:00
Pychimp
210a974980 creating tabline theme
WORK IN PROGRESS !!
2013-09-05 22:31:36 +05:30
Bailey Ling
2cfe26f72f correct docs for the default value. 2013-09-05 15:21:04 +00:00
Bailey Ling
0a3524c6a3 Merge pull request #228 from vhda/master
Allow flag configuration of tagbar statusline string
2013-09-05 08:17:57 -07:00
Vitor Antunes
e967d09bf3 Allow flag configuration of tagbar statusline string 2013-09-05 15:42:17 +01:00
Bailey Ling
f57b65d3b8 Merge pull request #225 from seletskiy/solarized-tabline
fix solarized colors in tabline
2013-09-05 07:14:22 -07:00
Bailey Ling
11f03baf37 Merge pull request #224 from seletskiy/tabline-detect-modified
add tab modification detection
2013-09-05 07:08:25 -07:00
Bailey Ling
9356265d3e remove repeated comments. add zenburn to auto theme switch. 2013-09-05 14:06:38 +00:00
Bailey Ling
ada6523d59 Merge pull request #223 from paulbdavis/master
Added zenburn theme
2013-09-05 07:05:15 -07:00
Bailey Ling
ecd66184f6 init whitespace extension to blank. fixes #226. 2013-09-05 14:01:57 +00:00
Stanislav Seletskiy
8c32da38c7 add tab modification detection 2013-09-05 12:52:29 +07:00
Stanislav Seletskiy
4596c9ce22 fix solarized colors in tabline 2013-09-05 12:36:38 +07:00
paulbdavis
eb3a70bbf2 added zenburn theme 2013-09-04 20:17:50 -04:00
Bailey Ling
a9b2fd2c41 allow configuration for showing only tabs. resolves #220. 2013-09-04 20:17:02 +00:00
Bailey Ling
56eaf3733f add support to show tabline based on minimum buffer count (#220). 2013-09-04 19:53:04 +00:00
Bailey Ling
53364af1e3 support configuring tabline separators independently. resolves #215. 2013-09-04 19:20:06 +00:00
Bailey Ling
2066410156 use at least 2 spaces to be considered an indent. fixes #177. 2013-09-04 18:10:45 +00:00
Bailey Ling
00e5e1c20e support changing how numbers are displayed in tab mode. resolves #217. 2013-09-04 18:06:57 +00:00
Bailey Ling
9b7191d052 define a new tabline group in the color palette (#212). 2013-09-04 17:23:10 +00:00
Bailey Ling
561422c11c support customizable tabline themes. resolves #212. 2013-09-04 15:54:48 +00:00
Bailey Ling
e167e67819 implement showing buffer numbers and modified (#212). 2013-09-04 15:47:05 +00:00
Bailey Ling
c144543d03 fixes color change regression. resolves #218. 2013-09-04 15:25:55 +00:00
Bailey Ling
15322a26ed fix split count per tab. resolves #214. 2013-09-04 02:11:51 +00:00
Bailey Ling
2051dfb9a1 give gui users some love. 2013-09-03 18:48:08 +00:00
Bailey Ling
cf798d8783 no love for gui users... 2013-09-03 18:00:55 +00:00
Bailey Ling
d0579e012c Merge branch 'dev' 2013-09-03 15:04:31 +00:00
Bailey Ling
bf3f8ba946 mainly for windows, where paths are case insensitive. 2013-09-03 15:04:22 +00:00
Bailey Ling
6261149451 update readme with screenshots. 2013-09-03 10:35:14 -04:00
Bailey Ling
a4deb82ac4 since this is disabled by default, set showtabline automatically. 2013-09-03 14:13:58 +00:00
Bailey Ling
4f76b3a971 add documentation for tabline. 2013-09-03 03:24:47 +00:00
Bailey Ling
cedd91d23a add support for detecting modified buffers. 2013-09-03 03:24:46 +00:00
Bailey Ling
1e353beaa3 refactor and add excludes support. 2013-09-03 03:24:46 +00:00
Bailey Ling
fbdf39c403 better handling of blank buffers. 2013-09-03 03:24:46 +00:00
Bailey Ling
ffcdd3b1a3 support change filename modifier. 2013-09-03 03:24:46 +00:00
Bailey Ling
345a60fb23 extract tabline colors from the current palette. 2013-09-03 03:24:46 +00:00
Bailey Ling
ecccf51401 implement basic working tabline 2013-09-03 03:24:46 +00:00
Bailey Ling
2f7cf4cffd minor adjustment to inactive sections. 2013-09-03 03:24:41 +00:00
Bailey Ling
6689aca82b fixes wrong echoing behavior on stock osx vim. resolves #209. 2013-09-02 20:12:03 -04:00
Bailey Ling
301fcdc64a use statusline function for better control. 2013-09-02 18:55:15 +00:00
Bailey Ling
9966b3d9f3 Merge branch 'master' into dev 2013-09-02 18:42:38 +00:00
Bailey Ling
60cc5a5ca1 hide hunks for inactive windows. 2013-09-02 14:48:03 +00:00
Bailey Ling
f6900aeb0a move highlighter code to correct place and test. 2013-09-02 02:57:32 +00:00
Bailey Ling
4b33adee42 possible fix for exit code (#79). 2013-09-01 22:25:43 +00:00
Bailey Ling
41414a3a84 tests for basic color extraction. 2013-09-01 21:14:25 +00:00
Bailey Ling
7171a169f3 fix regression with ctrlp statusline not changing. 2013-09-01 19:19:34 +00:00
Bailey Ling
c994d08a6d Merge branch 'master' into dev 2013-09-01 18:55:46 +00:00
Bailey Ling
16028e69dc document minwidth. resolves #200. 2013-09-01 14:36:20 -04:00
Bailey Ling
08f87f2103 add base16 for automatic color switching. 2013-09-01 14:25:10 -04:00
Bailey Ling
d5c035bd5c add screenshot for fine tuned configuration. resolves #204. 2013-09-01 14:18:48 -04:00
Bailey Ling
d6599d0b3b update documentation about section functions. 2013-09-01 13:59:22 -04:00
Bailey Ling
92de8ad160 much smarter handling of separators (#204). 2013-09-01 12:20:54 -04:00
Bailey Ling
723e721b32 test for warning sections enabled in active splits. 2013-09-01 10:38:00 -04:00
Bailey Ling
0ad6deb832 Merge branch 'master' into dev
Conflicts:
	doc/airline.txt
2013-09-01 10:28:04 -04:00
Bailey Ling
c858116f87 hide warning section in inactive splits. 2013-09-01 10:24:24 -04:00
Bailey Ling
62fa3c37e4 give warning section an orange color by default (#177). 2013-09-01 10:06:25 -04:00
Bailey Ling
69f40d62ee move part declarations back into init. 2013-08-31 22:48:27 -04:00
Bailey Ling
c908d03cc0 document configuring with parts and sections. 2013-08-31 22:34:05 -04:00
Bailey Ling
501e341589 fix error for when keys are not present in unite context. 2013-08-31 21:45:21 -04:00
Bailey Ling
5c0ef8ffbf improve loading performance 2013-08-31 21:30:49 -04:00
Bailey Ling
f48031cde8 test for window switching and active/inactive splits. 2013-08-31 23:51:55 +00:00
Bailey Ling
660109a61a minor formatting and clarification in docs. 2013-08-31 19:33:31 -04:00
Bailey Ling
1b91c71fc9 make it possible to declare sections in the vimrc (#204). 2013-08-31 17:42:09 -04:00
Bailey Ling
3b2b224a3b test removal of funcrefs 2013-08-31 16:28:33 -04:00
Bailey Ling
ded2c2ff7e remove temp fix for vim-signify. resolves #188. 2013-08-31 16:23:53 -04:00
Bailey Ling
fd68997398 lazy load variables until needed (#204).
this allows users to define section variables in their vimrc.
2013-08-31 12:57:02 -04:00
Bailey Ling
7e1206469c basic support for hiding based on win size per part (#200). 2013-08-31 12:33:58 -04:00
Bailey Ling
f11f871e39 redefine mode as a raw part. 2013-08-31 12:07:56 -04:00
Bailey Ling
fb711ba9a9 test funcref pipeline. 2013-08-31 12:03:39 -04:00
Bailey Ling
389650645b always run the extensions/core funcrefs last.
this ensures the user always has priority in customizations.
2013-08-31 11:55:00 -04:00
Bailey Ling
96e92232f6 update example to be less dependent on internals. 2013-08-31 15:29:04 +00:00
Bailey Ling
68331a5e4f Merge branch 'dev'
Implements #204.

Conflicts:
	README.md
2013-08-31 15:02:01 +00:00
Bailey Ling
a249c87f61 separators unnecessary in warning section. 2013-08-31 04:54:52 +00:00
Bailey Ling
7bcb9b5fff more compatible test for older vim version. 2013-08-31 03:41:19 +00:00
Bailey Ling
a13c692529 define default statusline items with empty contents. 2013-08-31 03:35:23 +00:00
Bailey Ling
500ecf7cd0 support for prefixing with a highlight group. 2013-08-31 03:26:59 +00:00
Bailey Ling
d268744077 test the layout config for the default extension. 2013-08-30 22:44:20 -04:00
Bailey Ling
e852fb388f test util functions 2013-08-30 21:42:42 -04:00
Bailey Ling
b4cd0ae99d add tests for the builder 2013-08-30 21:28:38 -04:00
Bailey Ling
f5885bf9c2 test creation of sections 2013-08-30 21:15:41 -04:00
Bailey Ling
54ec1f39ca test some commands 2013-08-30 20:57:34 -04:00
Bailey Ling
0548aeefcb basic tests and travis integration. 2013-08-30 20:28:35 -04:00
Bailey Ling
cb774fcfd0 use correct direction of separators. 2013-08-30 22:10:47 +00:00
Bailey Ling
c6d996d5ca define the rest of the extensions. 2013-08-30 22:07:45 +00:00
Bailey Ling
19910a26cb check existence of all variables. 2013-08-30 21:59:46 +00:00
Bailey Ling
2d049949f0 fix indentation. 2013-08-30 21:58:29 +00:00
Bailey Ling
93eb0389b9 move init code into new file, add section. 2013-08-30 21:56:12 +00:00
Bailey Ling
fa517238c7 introduce parts metadata. 2013-08-30 21:51:10 +00:00
Bailey Ling
1f6b936dd8 add screenshot for automatic truncation. 2013-08-30 17:44:14 -04:00
Bailey Ling
17aa2eaf87 clearer description of what's happening 2013-08-29 17:48:24 -04:00
Bailey Ling
43dfdc6de4 add more obvious instructions for disabling truncation. 2013-08-29 21:29:33 +00:00
Bailey Ling
95f00f2341 change release policy. resolves #201. 2013-08-29 14:19:11 -04:00
Bailey Ling
fcbf0a4c9c fix typo 2013-08-29 09:50:48 -04:00
Bailey Ling
29cb8991a6 update readme with link to test plan. 2013-08-29 08:16:22 -04:00
Bailey Ling
6925d567eb handle reversed highlight groups. 2013-08-28 23:05:28 -04:00
Bailey Ling
a927bf9475 automatic separators. 2013-08-29 00:57:58 +00:00
Bailey Ling
e13a4c8b1a convert the rest to use define section. 2013-08-29 00:38:33 +00:00
Bailey Ling
bdd758dd38 convert branch/hunks/bufferline to function names. 2013-08-29 00:15:07 +00:00
Bailey Ling
e10b690cdf convert mode/paste/iminsert parts to function names. 2013-08-29 00:09:22 +00:00
Bailey Ling
8beb275534 fix inactive highlighting colors. 2013-08-28 15:40:09 +00:00
Bailey Ling
386ba6b087 support controlling whether bufferline variables get overwritten. resolves #195. 2013-08-28 08:21:32 -04:00
Bailey Ling
6c5672d686 update documentation. 2013-08-28 02:36:12 +00:00
Bailey Ling
bf8fa9af03 fill in the rest of the deprecated variables. 2013-08-28 01:40:32 +00:00
Bailey Ling
eadeee316c fixes a weird error after neobundle installs a new plugin. 2013-08-28 01:34:10 +00:00
Bailey Ling
14656f766b add deprecation warnings. 2013-08-28 01:28:31 +00:00
Bailey Ling
4b9cda77dd Merge branch 'dynamic' (#164) 2013-08-28 00:00:42 +00:00
Bailey Ling
39c3ba360e support configurable layouts. 2013-08-28 00:00:23 +00:00
Bailey Ling
ea4e0280fb rename warningmsg to warning. 2013-08-27 23:44:03 +00:00
Bailey Ling
6fc8c00ef1 place syntastic and whitespace into parts. 2013-08-27 23:38:34 +00:00
Bailey Ling
f9718e6b65 place tagbar into parts. 2013-08-27 23:25:55 +00:00
Bailey Ling
24a2035e42 place bufferline into parts. 2013-08-27 23:24:01 +00:00
Bailey Ling
2708951715 place hunks and branch extension into parts. 2013-08-27 23:22:26 +00:00
Bailey Ling
3d3d93e135 update documentation about symbols dictionary (#193). 2013-08-27 20:44:47 +00:00
Bailey Ling
ff975d3d7d move file encoding/type into a part. 2013-08-27 18:39:34 +00:00
Bailey Ling
2c7e31801f Merge branch 'symbols' 2013-08-27 18:13:20 +00:00
Bailey Ling
85c1f5ad03 rename fragments to parts. 2013-08-27 18:08:50 +00:00
Bailey Ling
83a1d7e47c introduce fragments variable to store all possible parts. 2013-08-27 17:47:31 +00:00
Bailey Ling
d5d87d2cdc reduce variable deprecation. 2013-08-27 14:12:03 +00:00
Bailey Ling
5c1c985502 tweak width truncation values. 2013-08-27 07:55:28 -04:00
Bailey Ling
895743c13d Merge pull request #191 from zekzekus/master
file type check converted to pattern match
2013-08-27 04:17:28 -07:00
Zekeriya Koc
2be030b7e8 file type check converted to pattern match
so extension will be enabled for file types like python.django etc.
2013-08-27 10:40:29 +03:00
Bailey Ling
6dd4cd5423 clean up how symbols are defined. 2013-08-26 23:39:25 -04:00
Bailey Ling
fe24924ad3 convert iminsert into a fragment. 2013-08-26 23:07:14 -04:00
Bailey Ling
e919663781 always enable paste detection. 2013-08-26 22:55:11 -04:00
Bailey Ling
bc03ab5cbf support section truncation based on window width. resolves #190. 2013-08-27 01:16:56 +00:00
Bailey Ling
1980c51971 extract core logic into the default extension. 2013-08-27 00:56:54 +00:00
Bailey Ling
ccb00be717 check both resolved and unresolved paths (#187). 2013-08-26 15:39:27 +00:00
Bailey Ling
04e00d6933 \n only works with double quotes. 2013-08-26 15:32:18 +00:00
Bailey Ling
c42eefbd1d must use finish to prevent ctrlp from getting source. 2013-08-26 15:17:24 +00:00
Bailey Ling
9194a9f02d add temporary fix for vim-signify integration (#188). 2013-08-26 13:46:49 +00:00
Bailey Ling
295fda2f74 resolve script path (#187). 2013-08-26 13:27:09 +00:00
Bailey Ling
358d4328f4 support formattable whitespace messages. resolves #185. 2013-08-26 02:08:04 +00:00
Bailey Ling
6a3b611ba1 show difference between location/quickfix list. resolves #186. 2013-08-26 01:46:40 +00:00
bling
39c8dcd950 auto-source themes when they are changed. 2013-08-25 21:34:26 -04:00
Bailey Ling
609b4ab573 fix virtualenv_loaded check. 2013-08-25 17:54:00 +00:00
bling
3fba032439 match up gui colors with term colors for dark theme. 2013-08-25 13:11:37 -04:00
Bailey Ling
b7cf6703e5 update pipeline image. 2013-08-25 13:06:13 -04:00
Bailey Ling
2f5ba93d0e leave the loaded colorscheme alone. fixes #184. 2013-08-25 12:27:21 -04:00
Bailey Ling
3595debb97 move virtualenv to the right side, so tagbar function names don't shift it all over the place. 2013-08-25 11:51:32 -04:00
Bailey Ling
b9483d8c15 improve builder to support blended sections. 2013-08-25 11:39:42 -04:00
Bailey Ling
59d6b72962 remove redundant args. 2013-08-25 11:39:42 -04:00
Bailey Ling
a91dda01df improve documentation for writing extensions, also add helper methods. 2013-08-25 15:39:14 +00:00
Bailey Ling
9ca2aa9a8c Merge pull request #180 from joedicastro/master
add virtualenv extension
2013-08-25 08:24:53 -07:00
joe di castro
f37eeeb9af A better integration of virtualenv to avoid override other extensions 2013-08-25 17:14:12 +02:00
joe di castro
086b924992 Fix error in virtualenv at extensions.vim
Fix the global variable name for enable/disable the extension.
2013-08-25 13:38:15 +02:00
Bailey Ling
b34aa78c5a deprecate airline_detect_iminsert 2013-08-24 22:24:36 -04:00
Bailey Ling
c517f9c6f9 fix potential performance problems with completeopt+=preview 2013-08-24 21:17:16 -04:00
Bailey Ling
42cb6317c2 add base16 support for all variants. 2013-08-24 21:10:11 -04:00
Bailey Ling
f5e6205049 Merge pull request #181 from esn89/master
added base16.vim colorscheme
2013-08-24 17:37:26 -07:00
Evan Ng
00a0c52dbd added base16.vim colorscheme 2013-08-24 14:34:25 -07:00
joe di castro
f0df8825df add virtualenv extension 2013-08-24 22:49:54 +02:00
Bailey Ling
c98549913c remove hackfix and use new tagbar statusline integration.
requires 0b14e28719
2013-08-24 09:47:16 -04:00
Bailey Ling
0e6035f75c convert the highlighter into a singleton. 2013-08-24 09:40:20 -04:00
Bailey Ling
f6d8a981b6 add inactive statusline funcrefs into the pipeline. 2013-08-24 09:31:30 -04:00
Bailey Ling
04daa66b48 Revert "inactivate existing statusline without building a new one."
This reverts commit 53b856b0c5.
2013-08-24 01:08:22 -04:00
Bailey Ling
511411d55e match up bufferline colors with the gutter. 2013-08-24 01:06:04 -04:00
Bailey Ling
b62634884a fix bufferline integration 2013-08-24 04:32:44 +00:00
Bailey Ling
b7d0ccdac2 give the light theme inactive mode some more color. 2013-08-24 04:28:37 +00:00
Bailey Ling
74849d4a10 improved unite integration (#165). 2013-08-24 04:08:57 +00:00
Bailey Ling
53b856b0c5 inactivate existing statusline without building a new one. 2013-08-24 03:54:55 +00:00
Bailey Ling
3bb451f1f4 pass context into the builder. 2013-08-24 03:18:43 +00:00
Bailey Ling
2cfab73f1b fix undotree override bleeding over to the main. 2013-08-24 03:16:14 +00:00
Bailey Ling
98eecd7ae2 add error code 1 for easier override. 2013-08-24 03:02:13 +00:00
Bailey Ling
30c3613924 improve algorithm for inactive colors. resolves #178. 2013-08-24 02:52:56 +00:00
Bailey Ling
e8d0d24163 prefer function name instead of funcref. 2013-08-24 01:21:09 +00:00
Bailey Ling
95a46cc106 fix whitespace toggle command (#177). 2013-08-23 16:42:55 +00:00
Bailey Ling
ab59dfffe7 Merge pull request #176 from seletskiy/solarized-contrast-fix
solarized: fix contrast and warningmsg
2013-08-23 09:37:40 -07:00
Stanislav Seletskiy
5dd1fba954 solarized: fix contrast and warningmsg 2013-08-23 22:09:11 +07:00
Bailey Ling
dfe2273f7c add missing file highlight group. fixes #175. 2013-08-22 20:33:12 -04:00
Bailey Ling
c2632f9dbb introduce g:airline_theme_patch_func (#173). 2013-08-22 19:55:04 -04:00
Bailey Ling
e7ae77c027 add screenshot about pipeline. 2013-08-22 19:24:16 -04:00
Bailey Ling
51110b902b document the pipeline. 2013-08-22 23:20:53 +00:00
Bailey Ling
de4c7253e2 remove function call, no longer needed. 2013-08-22 21:32:11 +00:00
Bailey Ling
c16d6e69a9 pass arguments into funcrefs properly. 2013-08-22 20:22:54 +00:00
Bailey Ling
29dc7dd9b5 pass builder into statusline funcrefs. 2013-08-22 19:45:17 +00:00
Bailey Ling
261dafca9d fold exclude funcrefs into the default one. 2013-08-22 17:32:44 +00:00
Bailey Ling
e83e12447e break early implicit if return code is not 0. 2013-08-22 17:32:44 +00:00
Bailey Ling
db3a4b1df6 add screenshot for customization. 2013-08-22 10:47:19 -04:00
Bailey Ling
fa57fdb634 Merge pull request #174 from jacobwalker0814/powerline_fonts
Better toggling of powerline fonts
2013-08-22 07:39:09 -07:00
Jacob Walker
3920817442 Better toggling of powerline fonts
+ Check the value of airline_powerline_fonts not just existence
2013-08-22 09:14:17 -05:00
Bailey Ling
0dc3a7913d fix regression; account for symlinks. 2013-08-22 08:27:44 -04:00
Bailey Ling
fa3cd0fdc1 Merge pull request #172 from mattn/check_loadable
Don't use name 'vim-airline' to check loadable extensions.
2013-08-22 05:16:07 -07:00
mattn
cb112cbcb9 Don't use name 'vim-airline' to check loadable extensions. Someone may git clone as another directory. 2013-08-22 13:19:56 +09:00
Bailey Ling
18a6083b0a Merge pull request #171 from mattn/fix_bundle_paths
Fixes bundle paths. For example ftbundle add 'vim-airline/./autoload' in...
2013-08-21 21:12:41 -07:00
mattn
3c7e4b1400 Fixes bundle paths. For example ftbundle add 'vim-airline/./autoload' into RTP. 2013-08-22 13:05:59 +09:00
Bailey Ling
40d6773a22 autoload external extensions (#170). 2013-08-22 02:49:19 +00:00
Bailey Ling
41159bfbc2 improve vim-signify integration (#169). 2013-08-21 23:24:56 +00:00
Bailey Ling
8452029e98 upgrade all funcrefs to support varargs. 2013-08-21 15:14:12 +00:00
Bailey Ling
47de191a80 update doc. 2013-08-21 11:57:23 +00:00
Bailey Ling
dc9a527136 Merge pull request #168 from mattn/strict_color_conversion
Strictly color value conversion
2013-08-20 19:11:45 -07:00
mattn
a91b442366 Strictly color value conversion 2013-08-21 10:27:00 +09:00
Bailey Ling
e4a0fe1d9c move paste symbol variable into extension, update docs. 2013-08-20 23:16:39 +00:00
Bailey Ling
8bc08979d7 inverse doesn't work in all environments, do it manually. 2013-08-20 23:09:40 +00:00
Bailey Ling
0eb6ed1109 Merge pull request #166 from itchyny/paste_symbol
paste mark is now a member of extensions
2013-08-20 16:09:36 -07:00
Bailey Ling
75eeeee9a2 Merge pull request #167 from edkolev/master
allow ctrlp to use mode colors other than insert's colors
2013-08-20 16:06:49 -07:00
Evgeni Kolev
7a1d7a01b2 allow ctrlp to use mode colors other than insert's colors
add global variable g:airline#extensions#ctrlp#color_template which can
hold modes normal|insert|visual|replace as string. ctrlp will use the
given mode's colors if the active theme doesn't define any.
2013-08-20 23:30:46 +03:00
itchyny
20c5c64590 paste mark is now a member of extensions 2013-08-21 05:29:08 +09:00
Bailey Ling
0068093ea0 add screenshot for hunks. 2013-08-20 12:57:50 -04:00
Bailey Ling
a1fc8fe7ff add spacing around readonly symbol. 2013-08-20 16:13:08 +00:00
Bailey Ling
a04d7c277a support vim-signify as a hunk source. 2013-08-20 15:43:26 +00:00
Bailey Ling
35db000651 Merge pull request #163 from buztard/fixes/hunks
hunks: Display the hunks summary only if Git Gutter is enabled
2013-08-20 08:10:04 -07:00
Bailey Ling
cbb9bea9db allow warning section to be overwritten (#136). 2013-08-20 15:02:17 +00:00
Bastian Winkler
bbe077037e hunks: Display the hunks summary only if Git Gutter is enabled 2013-08-20 16:53:29 +02:00
Bailey Ling
e2a758e309 deprecate airline_readonly_symbol. move into gutter by default, so it does not conflict with bufferline logic. 2013-08-20 08:11:38 -04:00
Bailey Ling
fad2c084e7 Merge pull request #161 from itchyny/readonly_symbol
readonly mark is now a member of extensions
2013-08-20 05:03:37 -07:00
itchyny
1b6c1bf39c remove g:airline_detect_readonly 2013-08-20 20:58:29 +09:00
itchyny
57cf78ba77 readonly mark is now a member of extensions 2013-08-20 17:18:01 +09:00
Bailey Ling
fa62cbb5f6 simplify, no globals unless necessary. 2013-08-20 03:44:24 +00:00
Bailey Ling
e65aefac00 deprecate airline_detect_whitespace 2013-08-20 03:39:51 +00:00
Bailey Ling
71c8156f00 deprecate all g:airline_enabled_* variables. 2013-08-20 03:38:02 +00:00
Bailey Ling
494d15232c reduce pollution of global scope variables 2013-08-20 03:38:02 +00:00
Bailey Ling
ee19bf8825 Merge pull request #158 from BenBergman/only-non-zero-hunks
Add option to show only non-zero hunks
2013-08-19 20:37:36 -07:00
Benjamin Bergman
a5f084dc4e Use extension local variables, and expose hunk_symbols to user 2013-08-19 22:32:14 -05:00
Bailey Ling
987622fc3c Merge branch 'use_defined_theme'
Conflicts:
	plugin/airline.vim
2013-08-20 02:06:00 +00:00
Bailey Ling
f780621aa0 support x,y,z theming. resolves #159. 2013-08-20 01:56:13 +00:00
Bailey Ling
54d3605497 fix color switching again. vimrc setting should override. 2013-08-20 01:47:24 +00:00
mattn
715cf33d56 Prior checking user defined theme 2013-08-20 10:46:44 +09:00
Benjamin Bergman
4d9a0e257f Add option to show only non-zero hunks 2013-08-19 17:28:42 -05:00
Bailey Ling
dd5dbdd242 undo use of inverse; caused problems with empty sections. 2013-08-19 19:07:31 +00:00
Bailey Ling
f773325fa4 allow specific whitespace checks to be enabled/disabled. 2013-08-19 18:19:26 +00:00
Bailey Ling
ec20ea06c3 fix autoselection of theme for certain startup configs. 2013-08-19 18:17:06 +00:00
Bailey Ling
de69bba26e re-enable gitgutter integration with new upstream function. resolves #154 and #153. 2013-08-19 16:03:10 +00:00
Bailey Ling
2a02afb918 default whitespace symbol to non-unicode unless powerline fonts are enabled (#155). 2013-08-19 13:33:13 +00:00
Bailey Ling
16f2d7013d disable hunks by default, a couple bugs remaining. 2013-08-19 13:22:24 +00:00
Bailey Ling
da4d0730d3 improve gitgutter integration and algorithm 2013-08-18 21:39:27 +00:00
Bailey Ling
aa4c9977df temp disable, some errors weird cases 2013-08-18 21:08:00 +00:00
Bailey Ling
dad0d5a8d8 add gitgutter integration. 2013-08-18 21:02:33 +00:00
Bailey Ling
8f0401580b fix airline theme not getting loaded on startup (#151). 2013-08-18 19:02:14 +00:00
Bailey Ling
9d65486063 improve undotree integration; use exposed statusline functions. 2013-08-18 18:50:22 +00:00
Bailey Ling
7e563f9c74 detect branch when changing directories. resolves #138. 2013-08-18 18:34:02 +00:00
Bailey Ling
60dd8ed0a8 fix error on startup in certain configurations (#150). 2013-08-18 18:13:34 +00:00
Bailey Ling
0a88fd81d3 update branch head all the time (#42). 2013-08-18 17:22:35 +00:00
Bailey Ling
e26165caa6 support base16 variant of solarized. resolves #148. 2013-08-18 14:13:47 +00:00
Bailey Ling
38b8520a37 fix arrows being out of sync. 2013-08-18 05:34:26 +00:00
Bailey Ling
bcba04e20c account for empty vimrc with no colorscheme set. 2013-08-18 04:56:38 +00:00
Bailey Ling
88b910d959 fix getwinvar on older 7.3 builds. resolves #147. 2013-08-18 04:50:48 +00:00
Bailey Ling
03c08e819c autoload themes to match colorscheme. resolves #145. 2013-08-18 04:44:13 +00:00
Bailey Ling
b4d7531c05 fix error when using simple theme 2013-08-18 04:22:36 +00:00
Bailey Ling
a8692a7b97 autogenerate bg colors for the file indicator. resolves #131. 2013-08-18 03:25:24 +00:00
Bailey Ling
45f0d896e9 move all theme variables into a single dictionary 2013-08-18 00:59:49 +00:00
Bailey Ling
1584ee79f6 add missing space 2013-08-17 23:56:50 +00:00
Bailey Ling
f49038fba6 clean up builder a bit, use inverse 2013-08-17 23:31:51 +00:00
Bailey Ling
9c02d87f17 Merge branch 'dynamic' 2013-08-17 22:39:24 +00:00
Bailey Ling
f938159d0d fix inactive responding to modified, fix trimming 2013-08-17 22:03:50 +00:00
Bailey Ling
840f78607e optimize funcrefs for 7.4 2013-08-17 17:50:41 -04:00
Bailey Ling
e7c5bbb671 remove auto prefix. optimize getwinvar 2013-08-17 17:39:36 -04:00
Bailey Ling
b19a29675d fix list being unbounded 2013-08-17 17:10:06 -04:00
Bailey Ling
3814c21125 optimize newing up the builder 2013-08-17 16:44:53 -04:00
Bailey Ling
6bda68e35c replace all obsolete color groups in all themes 2013-08-17 19:20:40 +00:00
Bailey Ling
3fbdd28e5d add profiler. optimize separator highlighting. 2013-08-17 17:35:06 +00:00
Bailey Ling
47bfeee3ae fix separator colors for inactive splits 2013-08-17 15:12:01 +00:00
Bailey Ling
2f92346194 add highlighter class 2013-08-17 12:52:25 +00:00
Bailey Ling
ca39454ecf add example.vim extension (#134) 2013-08-16 18:04:03 +00:00
Bailey Ling
c017c9fbb3 miscellaneous minor changes 2013-08-16 14:57:48 +00:00
Bailey Ling
6e515a4627 remove redundancy from the map 2013-08-16 14:57:48 +00:00
Bailey Ling
30adb973fc move getwinvar over 2013-08-16 14:57:47 +00:00
Bailey Ling
0e936d0b9a introduce util file 2013-08-16 14:57:47 +00:00
Bailey Ling
af7dfc8677 update separator colors when mode changes 2013-08-16 14:57:47 +00:00
Bailey Ling
47c80c31da reload separator colors on demand 2013-08-16 14:57:47 +00:00
Bailey Ling
f477520ba8 move builder to its own file 2013-08-16 14:57:47 +00:00
Bailey Ling
703045a7e6 allow warning section to collapse away 2013-08-16 14:57:47 +00:00
Bailey Ling
8b92cae46c basic working dynamic statusline builder 2013-08-16 14:57:47 +00:00
Bailey Ling
81c49292d3 add shortform into doc for easy copy/pasting 2013-08-16 14:57:36 +00:00
Bailey Ling
6269632164 check existence of airline augroup before overwriting statusline 2013-08-15 16:05:12 -04:00
Bailey Ling
12fc908f43 add support for the command-line window 2013-08-15 15:54:14 -04:00
Bailey Ling
91904d942e check initialized so autoloaded plugins happen first 2013-08-15 15:02:54 -04:00
Bailey Ling
f5afe4bcac Merge pull request #141 from chrisbra/master
added airlinetoggle function
2013-08-15 11:58:28 -07:00
Christian Brabandt
8ec527465d added airlinetoggle function 2013-08-15 20:48:59 +02:00
Bailey Ling
91ca5a77ae add extensions/integration section with screenshots 2013-08-14 14:29:19 -04:00
Bailey Ling
1fa5e16558 fix right alignment for help window 2013-08-14 00:28:13 -04:00
Bailey Ling
6a0163104a unbreak csv extension. redefine gutter as the middle. 2013-08-14 03:53:29 +00:00
Bailey Ling
b7131d8b51 add section about writing extensions (#134). 2013-08-14 03:07:01 +00:00
Bailey Ling
7e63d9ddd9 rename variable so it's more obvious 2013-08-14 02:36:09 +00:00
Bailey Ling
10e8146d7b improve docs, remove deprecation warnings 2013-08-14 02:32:05 +00:00
Bailey Ling
5b840ae436 fixes error when colorscheme is used in gvimrc (#126). 2013-08-13 22:10:44 -04:00
Bailey Ling
f66cb47d29 fix up csv integration so it only applies to csv filetypes 2013-08-13 21:52:31 -04:00
Bailey Ling
509c9f68a9 rename csv variables, add extensions section for doc 2013-08-13 21:47:08 -04:00
Bailey Ling
944ed9a8b9 Merge pull request #133 from edkolev/master
Default to 16 colors for solarized theme unless g:solarized_termcolors i...
2013-08-13 18:33:21 -07:00
Bailey Ling
4fe76c0b5a Merge pull request #137 from chrisbra/master
added csv extension
2013-08-13 15:21:00 -07:00
Christian Brabandt
c5e21aa170 added csv extension 2013-08-14 00:11:51 +02:00
Bailey Ling
9dd682212f make warning a real section. references #136. 2013-08-13 20:43:04 +00:00
Evgeni Kolev
284f8efd58 Default to 16 colors for solarized theme unless g:solarized_termcolors is 256 2013-08-13 09:29:28 +03:00
Bailey Ling
d20bdc54e5 Merge pull request #132 from monstermunchkin/master
update tagbar extension
2013-08-12 08:20:04 -07:00
Thomas Hipp
222adbfeaa update tagbar extension
Allow the tagbar extension to be disabled.
2013-08-12 17:03:15 +02:00
Bailey Ling
7524110de9 fix possible undefined variable 2013-08-12 01:40:18 +00:00
Bailey Ling
8d4eb3c574 improve vimshell integration; support interactive modes 2013-08-12 01:15:28 +00:00
Bailey Ling
c7cc63fb62 remove support for inactive modified
statuslines don't actually get evaluated in inactive splits, so this feature never worked properly anyways.
2013-08-11 16:13:04 -04:00
Bailey Ling
14dacaab68 improve bufferline integration; revert to default in inactive splits. 2013-08-11 19:48:14 +00:00
Bailey Ling
2413babe8b remove checks for airline_active, it is always true 2013-08-11 15:24:08 +00:00
Bailey Ling
11e7e67d8d introduce g:airline_inactive_collapse. resolves #129. 2013-08-11 14:30:02 +00:00
Bailey Ling
2a10bfc32f make the mode and branch text window local 2013-08-11 13:42:47 +00:00
Bailey Ling
5d92aaecaa update documentation 2013-08-10 23:22:49 +00:00
Bailey Ling
384150ecd7 extract iminsert out of core into an extension 2013-08-10 17:02:48 -04:00
Bailey Ling
52a4a8ea7b use hack fix for now. resolves #105. 2013-08-10 16:47:17 -04:00
Bailey Ling
3dc55eda4e enable tagbar only for active windows 2013-08-10 16:43:27 +00:00
bling
e1ff1edcf0 Merge branch '127'
Resolves #127.

Conflicts:
	autoload/airline.vim
2013-08-10 12:15:14 -04:00
Bailey Ling
61a39a99ac add ability to override left/right sides independently 2013-08-10 16:05:49 +00:00
Bailey Ling
8539ac46a6 allow extensions to reload when color scheme changes. resolves #128 2013-08-10 15:50:27 +00:00
bling
cf9028df9f fixes error when colorscheme declared in gvimrc. resolves #126. 2013-08-10 11:46:12 -04:00
Bailey Ling
e67fa32fd9 extract matching background colors for file indicator 2013-08-10 13:43:12 +00:00
Bailey Ling
1d46c5874b fix warning separator colors out of sync between modes 2013-08-10 13:17:32 +00:00
Bailey Ling
2ca403053c fix whitespace indent setting changed incorrectly when toggling 2013-08-10 13:09:52 +00:00
Bailey Ling
52b4100a4f reload separator color when colorscheme changes 2013-08-09 20:50:53 -04:00
Bailey Ling
320f50c6f9 extract a line number for mixed indents 2013-08-09 20:23:03 -04:00
Bailey Ling
44db0e0c70 fix newb mistake. resolves #125. 2013-08-09 20:52:18 +00:00
Bailey Ling
aabb061470 temp disable 2013-08-09 20:43:12 +00:00
Bailey Ling
35539b2667 customizable empty branch message. closes #121. 2013-08-09 20:12:56 +00:00
Bailey Ling
2ba7ce02ec add powerline separator for warning section 2013-08-09 20:08:57 +00:00
Bailey Ling
f8b2b7be23 add support for select mode. resolves #123. 2013-08-09 08:05:08 -04:00
Bailey Ling
4485b03e51 add whitespace toggle command 2013-08-08 14:42:27 +00:00
Bailey Ling
57955b3b86 add the most common problems into the documentation (#112). 2013-08-08 00:23:43 -04:00
Bailey Ling
7eaf6281fb fix mode separator colors for ubaryd and laederon 2013-08-08 00:10:08 -04:00
Bailey Ling
edcf79c509 add bitdeli badge 2013-08-07 16:38:50 -04:00
Bailey Ling
f440ad3509 exclude readonly files from whitespace checking 2013-08-06 22:29:03 -04:00
Bailey Ling
6ced8b8ce6 add line number for trailing spaces 2013-08-06 22:02:53 -04:00
Bailey Ling
0a015e5305 use autocmds to detect whitespace, shouldn't need max anymore 2013-08-06 21:48:00 -04:00
Bailey Ling
d2c069b971 make syntastic use the warning section 2013-08-06 21:42:32 -04:00
Bailey Ling
7fb9bcf2c9 improve whitespace detection; add support for mixed indents 2013-08-07 00:48:53 +00:00
Bailey Ling
f86eafb674 reorder so that statusline funcrefs get an up to date active flag 2013-08-07 00:47:31 +00:00
Bailey Ling
528f56472c introduce new warning section, and refactor whitespace into an extension which uses it 2013-08-07 00:17:33 +00:00
Bailey Ling
4d67c802b3 Merge pull request #120 from farseer90718/master
add white space detection
2013-08-06 16:35:24 -07:00
Bailey Ling
26c7c9fca2 move default ctrlp theme to dark. autogenerate for everything else if not already defined. 2013-08-06 23:29:06 +00:00
Bailey Ling
42260bc35f can't forget about solarized 2013-08-06 21:53:14 +00:00
Bailey Ling
ae587c3dcb add ctrlp support for most themes 2013-08-06 20:52:52 +00:00
Bailey Ling
772fbc18e7 indent 2013-08-06 19:23:07 +00:00
farseer90718
164aa6f73c add white space detection 2013-08-07 00:17:57 +08:00
Bailey Ling
df72012e41 fix commandt integration 2013-08-06 15:41:37 +00:00
Bailey Ling
c1e74d72e0 Merge branch 'ext'
Conflicts:
	autoload/airline/extensions.vim
2013-08-06 15:26:32 +00:00
Bailey Ling
40614ef66b Merge pull request #118 from cg433n/master
Reload the solarized airline theme on the Colorscheme event.
2013-08-06 08:17:47 -07:00
Christopher.Green
e0f5bcc06a Reload the solarized airline theme on the Colorscheme event. 2013-08-06 07:25:21 -07:00
Bailey Ling
835f718cb6 reload colors when tomorrow theme changes 2013-08-06 08:31:45 -04:00
Bailey Ling
729f9e8354 use tagbar provided statusline func 2013-08-06 08:12:03 -04:00
Bailey Ling
e858eaa990 fix branch detection 2013-08-06 00:42:59 -04:00
Bailey Ling
990e3fc949 make branch/bufferline default statusline rather than overrides 2013-08-06 00:35:07 -04:00
Bailey Ling
8677fa875b minor optimization 2013-08-06 03:57:02 +00:00
Bailey Ling
ac211a58eb extract all plugin related functionality out of the core 2013-08-06 03:34:45 +00:00
Bailey Ling
98f3d13705 do not overwrite when left only 2013-08-06 03:33:25 +00:00
Bailey Ling
48f0e3652c extract tagbar 2013-08-06 03:16:49 +00:00
Bailey Ling
9c960875fe extract fugitive/lawrencium 2013-08-06 03:07:01 +00:00
Bailey Ling
11fd24b3ef extract syntastic 2013-08-06 02:57:06 +00:00
Bailey Ling
f15ac2146f make bufferline almost entirely self contained 2013-08-06 02:44:34 +00:00
Bailey Ling
41325bd08c extract bufferline into its own file 2013-08-06 00:29:30 +00:00
Bailey Ling
0758e2a88c fix regression, allow statusline funcrefs to execute 2013-08-05 20:31:10 +00:00
Bailey Ling
238ab44489 invoke funcrefs a different way, resolves #115. 2013-08-05 20:16:52 +00:00
Bailey Ling
4ae9484075 Merge pull request #116 from LeszekSwirski/empty-color-fix
Make themes#generate_color_map robust against undefined highlights
2013-08-05 11:03:48 -07:00
Leszek Swirski
216bcf1088 Make themes#generate_color_map robust against undefined highlights 2013-08-05 18:44:12 +01:00
Bailey Ling
61c95d4103 update readme, link to popular colorschemes 2013-08-04 20:06:24 +00:00
Bailey Ling
e84aed79a6 use directory group instead of spell to support gui colors 2013-08-04 19:51:41 +00:00
Bailey Ling
cf3473a8a3 pick highlight groups that are also compatible with the light variant 2013-08-04 19:44:57 +00:00
Bailey Ling
99179d806b tweak tomorrow colors, covers all dark themes pretty well. resolves #67 and #113. 2013-08-04 19:37:30 +00:00
Bailey Ling
a5fe4d9972 extract colors from normal if undefined (#67, #113). 2013-08-04 19:10:44 +00:00
Bailey Ling
2bedd8ef84 first pass at tomorrow themes (#67, #113) 2013-08-04 16:18:47 +00:00
Bailey Ling
d1d65dd41a add modified colors to jellybeans 2013-08-04 16:18:47 +00:00
Bailey Ling
b25dacef44 Merge pull request #114 from p-m-p/master
Add bubblegum theme
2013-08-04 06:54:36 -07:00
Phil Parsons
533a610aa0 Add bubblegum theme 2013-08-04 11:54:46 +01:00
Bailey Ling
926be0bd8a collapse section when it is empty text (#70). 2013-08-04 01:37:34 +00:00
Bailey Ling
e4d5f4cfb1 add jellybeans theme using new highlight group methods 2013-08-04 01:28:20 +00:00
Bailey Ling
9f04ef3170 fix ctrlp statusline getting overwritten via cursormove 2013-08-03 23:44:50 +00:00
Bailey Ling
10fa73996b loop differently so it works in 7.2 2013-08-03 20:56:37 +00:00
Bailey Ling
406fb2164d swap features and rationale in readme 2013-08-03 20:55:58 +00:00
Bailey Ling
e446f6a2fb fix placement of readonly, add support for startify 2013-08-03 16:06:29 +00:00
Bailey Ling
41a739d602 move syntastic implementation out of core 2013-08-03 11:23:45 -04:00
Bailey Ling
94895de8e2 rename window_override_funcrefs to statusline_funcrefs 2013-08-03 11:14:02 -04:00
Bailey Ling
257a9f2ed9 move updating external values into extensions 2013-08-03 10:59:34 -04:00
Bailey Ling
c655bdc233 move helper functions into update statusline, they're not used anywhere else 2013-08-03 10:58:25 -04:00
Bailey Ling
1d07110af3 Merge pull request #111 from bootleq/blank-section
Do not render spare spaces for empty sections.
2013-08-02 20:48:24 -07:00
bootleq
410792ed48 Remove space-padding works outside of get_section. 2013-08-03 10:09:55 +08:00
bootleq
5ebb0daf93 Add prefix/suffix options for s:get_section.
For output format other than default 1 space padding.
Need this to keep original section_c style:

    let sl.=l:status_color.' %<'.s:get_section(a:winnr, 'c').' '
2013-08-03 10:09:55 +08:00
bootleq
dcb7196097 Add padding spaces for section in s:get_section.
When section text is non-empty, pad spaces before/after it.
2013-08-03 10:09:49 +08:00
Bailey Ling
5099fbf1b9 move tagbar definition into predefined section 2013-08-03 00:51:24 +00:00
Bailey Ling
9844f14f66 change license to MIT 2013-08-02 19:43:24 +00:00
Bailey Ling
39e0df4b2d fix typo of typo fix 2013-08-02 17:59:52 +00:00
Bailey Ling
d833ae041d fix typos in readme 2013-08-02 08:21:47 -04:00
Bailey Ling
72852fa665 update readme. resolves #109. 2013-08-02 08:11:53 -04:00
Bailey Ling
577e50d788 first class integration with tagbar 2013-07-31 20:07:14 +00:00
Bailey Ling
6df46d8d22 ensure global variables are always there (#108). 2013-07-31 19:37:35 +00:00
Bailey Ling
d107c4fd5d account for plugins which use eventignore. resolves #82. 2013-07-31 17:37:00 +00:00
Bailey Ling
d56b9bbfcd modify active window algorithm, resolves #106. 2013-07-31 14:31:51 +00:00
Bailey Ling
8f52831cc0 Merge pull request #103 from PhoSor/master
add ctrlp theme for molokai
2013-07-29 05:09:54 -07:00
Andrey Sorokin
72c43838d9 add ctrlp theme for molokai 2013-07-29 17:49:06 +06:00
Bailey Ling
e4558340b0 keep left override styles intact when inactive; use powerline separator for iminsert 2013-07-28 19:25:48 -04:00
Bailey Ling
86ff404748 Merge pull request #101 from PhoSor/master
add molokai theme
2013-07-28 06:12:40 -07:00
Andrey Sorokin
96a9ef87ef add molokai theme 2013-07-28 17:12:45 +06:00
Bailey Ling
240feae0f2 Merge pull request #100 from markstory/solarized-light
Solarized light
2013-07-27 21:08:41 -07:00
Mark Story
200b54bb93 Improve coloring on branch bar & encoding segments.
Make the colors for these segments match the general look and feel of
solarized light.
2013-07-27 23:16:18 -04:00
Mark Story
dadcb3e2c3 Fix typo in blue hex code. 2013-07-27 23:05:24 -04:00
Bailey Ling
161daa7942 deprecate fugitive variable names in favour of scm-agnostic variable names 2013-07-27 18:15:00 -04:00
Bailey Ling
0c7687889e reduce complexity of themes for ctrlp, fix luna right separator color 2013-07-27 17:54:05 -04:00
Bailey Ling
60cba9cfc4 refactor ctrlp themes with generate_color_map helper function 2013-07-27 20:16:13 +00:00
Bailey Ling
f0982fa310 Merge pull request #99 from Pychimp/master
updated few values and added ctrlp theme
2013-07-27 12:44:11 -07:00
Pychimp
20372d5fb7 updated few values and added ctrlp theme 2013-07-28 00:21:58 +05:30
Bailey Ling
d1ee91eadf update the ctrlp theme when the airline theme changes 2013-07-27 14:02:43 +00:00
Bailey Ling
4683616391 Merge pull request #98 from zenbro/master
add ctrlp theme for wombat
2013-07-27 06:51:31 -07:00
zenbro
8afd815fe1 add ctrlp theme for wombat 2013-07-27 13:04:22 +04:00
Bailey Ling
68ac156256 make ctrlp themeable (#97). 2013-07-26 17:21:43 +00:00
Bailey Ling
b1975b4eb8 Merge pull request #91 from crazymaster/master
fix for out of sync statusline when buffers are unloaded.
2013-07-26 05:13:23 -07:00
Bailey Ling
6bfc2f9631 include percentage, line/column numbers for help windows 2013-07-26 12:12:39 +00:00
crazymaster
90b32f5c26 Remove unnecessary autocmds 2013-07-26 10:47:28 +09:00
Bailey Ling
77a177cc01 add more info about theming algorithm, add VAM to readme 2013-07-25 23:21:26 +00:00
Bailey Ling
c095a48aad add documentation about airline_exclude_funcrefs 2013-07-25 22:48:15 +00:00
Bailey Ling
bce1632c42 clearly separate core functionality from implementation 2013-07-25 22:29:18 +00:00
Bailey Ling
ec86f66510 move paste detection into statusline and check enabled 2013-07-25 22:09:17 +00:00
Bailey Ling
8819ab272d add commandt support. resolves #92. 2013-07-25 21:54:55 +00:00
Bailey Ling
950eb41ab6 Merge pull request #96 from zenbro/master
add wombat theme
2013-07-25 11:50:16 -07:00
zenbro
1f292621d0 add wombat theme 2013-07-25 22:23:47 +04:00
Bailey Ling
fd0628b188 add help support. resolves #95. 2013-07-25 17:49:03 +00:00
Bailey Ling
3bd1df94bc Merge branch 'master' of github.com:bling/vim-airline 2013-07-25 16:55:52 +00:00
Bailey Ling
407d8728c0 iterate available keys for each mode 2013-07-25 14:23:24 +00:00
Bailey Ling
2d63123260 Merge pull request #94 from Pychimp/master
Added Luna compatiable vim-airline theme
2013-07-25 07:00:10 -07:00
Bailey Ling
c00cd767d0 fix statusline not getting updated with some plugins (#91). 2013-07-25 13:58:48 +00:00
Pychimp
1bc2cddc74 Added Luna compatiable vim-airline theme 2013-07-25 19:11:03 +05:30
Bailey Ling
dcc0c7c84b avoid using funcrefs in the core implementation (#91). 2013-07-25 12:00:17 +00:00
Bailey Ling
34675c5d9b default iminsert to false 2013-07-25 01:48:23 +00:00
crazymaster
fbb7d1512e Fix update's condition 2013-07-25 00:53:35 +09:00
Bailey Ling
443cd8d9c8 Merge pull request #90 from klen/master
Support &iminsert
2013-07-24 06:14:39 -07:00
Kirill Klenov
efa3773bcf Merge branch 'master' of github.com:klen/vim-airline 2013-07-24 15:36:20 +04:00
Kirill Klenov
c16cafb2bb Support &iminsert. 2013-07-24 15:35:31 +04:00
Bailey Ling
ef518e5604 Merge pull request #89 from crazymaster/master
Fix vimfiler support
2013-07-24 04:26:18 -07:00
crazymaster
5951cc7ce3 Fix vimfiler support 2013-07-24 18:02:38 +09:00
Bailey Ling
dd6e952c60 update readme to demo gif 2013-07-23 23:31:15 -04:00
bling
44ac11bed3 fully document the dark theme. resolves #88. 2013-07-23 23:00:23 -04:00
Bailey Ling
8d44832c1c Merge pull request #87 from crazymaster/master
Add vimfiler support
2013-07-23 10:31:53 -07:00
crazymaster
0c88e5a7cd Add vimfiler support 2013-07-24 01:22:43 +09:00
Bailey Ling
5fd3105aae update externals after shell commands. resolves #85 and #42. 2013-07-23 14:44:05 +00:00
Bailey Ling
221864cfdc make modified/paste detection an option 2013-07-22 21:23:41 +00:00
Bailey Ling
fce0e3e8da use only a slight accent for the active buffer in the bufferline 2013-07-21 21:29:31 -04:00
Bailey Ling
ee90b7c6b3 add colorized support for selected buffers with bufferline 2013-07-20 22:31:05 -04:00
Bailey Ling
8a2890625b prepare for bufferline highlight support 2013-07-20 22:22:16 -04:00
Bailey Ling
043256f96b add reference to the FAQ in the vim doc (#81). 2013-07-20 13:24:15 +00:00
Bailey Ling
70dd963c8e Merge pull request #80 from bjauy/lawrencium
Add lawrencium support
2013-07-18 05:27:06 -07:00
maciej
645c67731c Add lawrencium support 2013-07-18 07:56:29 +02:00
Bailey Ling
6388005c46 allow g: gutter to be specified, integrate with vimshell, use get() for :w variables 2013-07-17 22:28:21 -04:00
Bailey Ling
1385667168 add old vim-powerline font symbols into the doc. resolves #76. 2013-07-17 19:09:18 +00:00
84 changed files with 7074 additions and 976 deletions

3
.gitignore vendored
View File

@@ -1 +1,4 @@
doc/tags
*.lock
.vim-flavor
*.swp

8
.travis.yml Normal file
View File

@@ -0,0 +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

2
Gemfile Normal file
View File

@@ -0,0 +1,2 @@
source 'https://rubygems.org'
gem 'vim-flavor', '~> 1.1'

21
ISSUE_TEMPLATE.md Normal file
View File

@@ -0,0 +1,21 @@
#### environment
- vim: ????
- vim-airline: ????
- OS: ????
- Have you reproduced with a minimal vimrc: ???
- What is your airline configuration: ???
if you are using terminal:
- terminal: ????
- $TERM variable: ???
- color configuration (:set t_Co?):
if you are using Neovim:
- does it happen in Vim: ???
#### actual behavior
????
#### expected behavior
????

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
The MIT License (MIT)
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"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

287
README.md
View File

@@ -1,27 +1,149 @@
# 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 statusline for vim that's light as air.
Lean &amp; mean status/tabline for vim that's light as air.
![img](https://github.com/bling/vim-airline/wiki/screenshots/light.png)
![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], [quickfixsigns][39], [syntastic][5], [eclim][34],
[lawrencium][21], [virtualenv][31], [tmuxline][35], [taboo.vim][37],
[ctrlspace][38], [vim-bufmru][47], [vimagit][50], [denite][51] 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 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.
* 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
If you don't like the defaults, you can replace all sections with standard `statusline` syntax. Give your statusline that you've built over the years a face lift.
![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.
![image](https://f.cloud.github.com/assets/306502/1060831/05c08aac-11bc-11e3-8470-a506a3037f45.png)
## Smarter tab line
Automatically displays all buffers when there's only one tab open.
![tabline](https://f.cloud.github.com/assets/306502/1072623/44c292a0-1495-11e3-9ce6-dcada3f1c536.gif)
This is disabled by default; add the following to your vimrc to enable the extension:
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).
#### [ctrlp.vim][10]
![image](https://f.cloud.github.com/assets/306502/962258/7345a224-04ec-11e3-8b5a-f11724a47437.png)
#### [unite.vim][9]
![image](https://f.cloud.github.com/assets/306502/962319/4d7d3a7e-04ed-11e3-9d59-ab29cb310ff8.png)
#### [denite.nvim][51]
![image](https://cloud.githubusercontent.com/assets/246230/23939717/f65bce6e-099c-11e7-85c3-918dbc839392.png)
#### [tagbar][19]
![image](https://f.cloud.github.com/assets/306502/962150/7e7bfae6-04ea-11e3-9e28-32af206aed80.png)
#### [csv.vim][28]
![image](https://f.cloud.github.com/assets/306502/962204/cfc1210a-04eb-11e3-8a93-42e6bcd21efa.png)
#### [syntastic][5]
![image](https://f.cloud.github.com/assets/306502/962864/9824c484-04f7-11e3-9928-da94f8c7da5a.png)
#### hunks ([vim-gitgutter][29] & [vim-signify][30])
![image](https://f.cloud.github.com/assets/306502/995185/73fc7054-09b9-11e3-9d45-618406c6ed98.png)
#### [vimagit][50]
![vim-airline-vimagit-demo](https://cloud.githubusercontent.com/assets/533068/22107273/2ea85ba0-de4d-11e6-9fa8-331103b88df4.gif)
#### [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)
#### [xkb-switch][48]/[xkb-layout][49]
![image](https://cloud.githubusercontent.com/assets/5715281/22061422/347e7842-ddb8-11e6-8bdb-7abbd418653c.gif)
#### [vimtex][53]
![image](https://cloud.githubusercontent.com/assets/1798172/25799740/e77d5c2e-33ee-11e7-8660-d34ce4c5f13f.png)
## Extras
vim-airline also supplies some supplementary stand-alone extensions. In addition to the tabline extension mentioned earlier, there is also:
#### whitespace
![image](https://f.cloud.github.com/assets/306502/962401/2a75385e-04ef-11e3-935c-e3b9f0e954cc.png)
## Configurable and extensible
#### Fine-tuned configuration
Every section is composed of parts, and you can reorder and reconfigure them at will.
![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.
![allyourbase](https://f.cloud.github.com/assets/306502/1022714/e150034a-0da7-11e3-94a5-ca9d58a297e8.png)
# Rationale
There's already [powerline][b], why yet another statusline?
There's already [powerline][2], why yet another statusline?
* it's 100% vimscript; no python needed.
* it's small. i want the core plugin to be *less than 200 lines* as a rule (specifically adhering to the [open/closed principle][h]).
* despite the small size, it is fully featured and already integrates with: [vim-bufferline][f], [fugitive][d], [unite][i], [ctrlp][j], [minibufexpl][o], [gundo][p], [undotree][q], [nerdtree][r], [tagbar][s] and [syntastic][e].
* it looks good with regular fonts, and provides configuration points so you can use unicode or powerline symbols.
* it's fast to load, taking roughly 1ms. by comparison, powerline needs 60ms on the same machine.
* it's fully customizable; if you know a little `statusline` syntax you can tweak it to your needs.
* it's trivial to write colorschemes; for a minimal theme you need to edit 9 lines of colors. (please send pull requests if you create new themes!)
* 100% vimscript; no python needed.
What about [old powerline][a]?
What about [vim-powerline][1]?
* the old version still works well, but since it's deprecated new features won't get added
* it uses different font codes, which makes it incompatible with other powerline bindings in the same terminal (e.g. bash, zsh, tmux, etc.)
* vim-powerline has been deprecated in favor of the newer, unifying powerline, which is under active development; the new version is written in python at the core and exposes various bindings such that it can style statuslines not only in vim, but also tmux, bash, zsh, and others.
# Why's it called airline?
# Where did the name come from?
I wrote the initial version on an airplane, and since it's light as air it turned out to be a good name. Thanks for flying vim!
@@ -29,72 +151,111 @@ 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][k]
* `git clone https://github.com/bling/vim-airline ~/.vim/bundle/vim-airline`
* [neobundle][l]
* `NeoBundle 'bling/vim-airline'`
* [vundle][m]
* `Bundle 'bling/vim-airline'`
* manual
* copy all of the files into your `~/.vim` directory
| Plugin Manager | Install with... |
| ------------- | ------------- |
| [Pathogen][11] | `git clone https://github.com/vim-airline/vim-airline ~/.vim/bundle/vim-airline`<br/>Remember to run `:Helptags` to generate help tags |
| [NeoBundle][12] | `NeoBundle 'vim-airline/vim-airline'` |
| [Vundle][13] | `Plugin 'vim-airline/vim-airline'` |
| [Plug][40] | `Plug 'vim-airline/vim-airline'` |
| [VAM][22] | `call vam#ActivateAddons([ 'vim-airline' ])` |
| [Dein][52] | `call dein#add('vim-airline/vim-airline')` |
| [minpac][54] | `call minpac#add('vim-airline/vim-airline')` |
| manual | copy all of the files into your `~/.vim` directory |
# Configuration
`: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][t]. Prepatched fonts can be found in the [powerline-fonts][c] repository.
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.
Finally, enable them in vim-airline by adding `let g:airline_powerline_fonts = 1` to your vimrc.
# Bugs
If you encounter a bug, please do the following:
* reproduce it with this [minivimrc][g] repository to rule out any configuration conflicts.
* specify your version and patch level, as well as operating system (found with `:version`).
* a link to a gist or your vimrc where it can be reproduced.
Finally, you can add the convenience variable `let g:airline_powerline_fonts = 1` to your vimrc which will automatically populate the `g:airline_symbols` dictionary with the powerline symbols.
# FAQ
Solutions to common problems can be found in the [Wiki](https://github.com/bling/vim-airline/wiki/FAQ).
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 can be found in the [Wiki][n].
A full list of screenshots for various themes can be found in the [Wiki][14].
# Contributions
# Maintainers
Contributions and pull requests are welcome. Please take note of the following guidelines:
The project is currently being maintained by [Bailey Ling][41], [Christian Brabandt][42], and [Mike Hartington][44].
* 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.
* this plugin got a lot more popular than i initially expected, if you make changes to the core, please test on as many versions of vim as possible.
* if you submit a theme, please create a screenshot so it can be added to the [Wiki][n].
If you are interested in becoming a maintainer (we always welcome more maintainers), please [go here][43].
# License
Distributed under the same terms as the Vim license. See `:help license`.
MIT License. Copyright (c) 2013-2017 Bailey Ling & Contributors.
[a]: https://github.com/Lokaltog/vim-powerline
[b]: https://github.com/Lokaltog/powerline
[c]: https://github.com/Lokaltog/powerline-fonts
[d]: https://github.com/tpope/vim-fugitive
[e]: https://github.com/scrooloose/syntastic
[f]: https://github.com/bling/vim-bufferline
[g]: https://github.com/bling/minivimrc
[h]: http://en.wikipedia.org/wiki/Open/closed_principle
[i]: https://github.com/Shougo/unite.vim
[j]: https://github.com/kien/ctrlp.vim
[k]: https://github.com/tpope/vim-pathogen
[l]: https://github.com/Shougo/neobundle.vim
[m]: https://github.com/gmarik/vundle
[n]: https://github.com/bling/vim-airline/wiki/Screenshots
[o]: https://github.com/techlivezheng/vim-plugin-minibufexpl
[p]: https://github.com/sjl/gundo.vim
[q]: https://github.com/mbbill/undotree
[r]: https://github.com/scrooloose/nerdtree
[s]: https://github.com/majutsushi/tagbar
[t]: https://powerline.readthedocs.org/en/latest/fontpatching.html
[1]: https://github.com/Lokaltog/vim-powerline
[2]: https://github.com/Lokaltog/powerline
[3]: https://github.com/Lokaltog/powerline-fonts
[4]: https://github.com/tpope/vim-fugitive
[5]: https://github.com/scrooloose/syntastic
[6]: https://github.com/bling/vim-bufferline
[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/ctrlpvim/ctrlp.vim
[11]: https://github.com/tpope/vim-pathogen
[12]: https://github.com/Shougo/neobundle.vim
[13]: https://github.com/VundleVim/Vundle.vim
[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/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/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/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
[47]: https://github.com/mildred/vim-bufmru
[48]: https://github.com/ierton/xkb-switch
[49]: https://github.com/vovkasm/input-source-switcher
[50]: https://github.com/jreybert/vimagit
[51]: https://github.com/Shougo/denite.nvim
[52]: https://github.com/Shougo/dein.vim
[53]: https://github.com/lervag/vimtex
[54]: https://github.com/k-takata/minpac/

14
Rakefile Normal file
View File

@@ -0,0 +1,14 @@
#!/usr/bin/env rake
task :default => [:test]
task :ci => [:dump, :test]
task :dump do
sh 'vim --version'
end
task :test do
sh 'bundle exec vim-flavor test'
end

View File

@@ -1,176 +1,207 @@
" vim: ts=2 sts=2 sw=2 fdm=indent
let s:is_win32term = (has('win32') || has('win64')) && !has('gui_running')
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:airline_highlight_map = {
\ 'mode' : 'Al2',
\ 'mode_separator' : 'Al3',
\ 'info' : 'Al4',
\ 'info_separator' : 'Al5',
\ 'statusline' : 'Al6',
\ 'file' : 'Al7',
\ }
let s:airline_highlight_groups = keys(s:airline_highlight_map)
scriptencoding utf-8
function! airline#exec_highlight(group, colors)
let colors = a:colors
if s:is_win32term
let colors = map(a:colors, 'v:val != "" && v:val > 128 ? v:val - 128 : v:val')
let g:airline_statusline_funcrefs = get(g:, 'airline_statusline_funcrefs', [])
let s:sections = ['a','b','c','gutter','x','y','z', 'error', 'warning']
let s:inactive_funcrefs = []
function! airline#add_statusline_func(name)
call airline#add_statusline_funcref(function(a: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
exec printf('hi %s %s %s %s %s %s %s %s',
\ a:group,
\ colors[0] != '' ? 'guifg='.colors[0] : '',
\ colors[1] != '' ? 'guibg='.colors[1] : '',
\ colors[2] != '' ? 'ctermfg='.colors[2] : '',
\ colors[3] != '' ? 'ctermbg='.colors[3] : '',
\ colors[4] != '' ? 'gui='.colors[4] : '',
\ colors[4] != '' ? 'cterm='.colors[4] : '',
\ colors[4] != '' ? 'term='.colors[4] : '')
call add(g:airline_statusline_funcrefs, a:function)
endfunction
function! airline#load_theme(name)
let g:airline_theme = a:name
let inactive_colors = g:airline#themes#{g:airline_theme}#inactive "also lazy loads the theme
function! airline#remove_statusline_func(name)
let i = index(g:airline_statusline_funcrefs, function(a:name))
if i > -1
call remove(g:airline_statusline_funcrefs, i)
endif
endfunction
function! airline#add_inactive_statusline_func(name)
call add(s:inactive_funcrefs, function(a:name))
endfunction
function! airline#load_theme()
if exists('*airline#themes#{g:airline_theme}#refresh')
call airline#themes#{g:airline_theme}#refresh()
endif
let palette = g:airline#themes#{g:airline_theme}#palette
call airline#themes#patch(palette)
if exists('g:airline_theme_patch_func')
let Fn = function(g:airline_theme_patch_func)
call Fn(palette)
endif
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 = ''
let w:airline_active = 1
call airline#highlight(['inactive'])
call airline#update_highlight()
call airline#load_theme()
silent doautocmd User AirlineAfterTheme
" this is required to prevent clobbering the startup info message, i don't know why...
call airline#check_mode(winnr())
endfunction
function! airline#highlight(modes)
" 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')
for mode in mapped
for key in s:airline_highlight_groups
if exists('g:airline#themes#{g:airline_theme}#{mode}[key]')
let colors = g:airline#themes#{g:airline_theme}#{mode}[key]
let suffix = a:modes[0] == 'inactive' ? '_inactive' : ''
call airline#exec_highlight(s:airline_highlight_map[key].suffix, colors)
endif
endfor
endfor
endfunction
function! s:is_excluded_window()
for matchft in g:airline_exclude_filetypes
if matchft ==# &ft
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#{theme}#palette
call airline#switch_theme(theme)
return 1
endif
endfor
for matchw in g:airline_exclude_filenames
if matchstr(expand('%'), matchw) ==# matchw
return 1
endif
endfor
if g:airline_exclude_preview && &previewwindow
return 1
catch
for map in items(g:airline_theme_map)
if match(g:colors_name, map[0]) > -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
endtry
endif
return 0
endfunction
function! s:apply_window_overrides()
call airline#extensions#clear_window_overrides()
if &buftype == 'quickfix'
let w:airline_section_a = 'Quickfix'
let w:airline_section_b = ''
let w:airline_section_c = ''
let w:airline_section_x = ''
endif
if &previewwindow
let w:airline_section_a = 'Preview'
let w:airline_section_b = ''
let w:airline_section_c = bufname(winbufnr(winnr()))
endif
for FuncRef in g:airline_window_override_funcrefs
call FuncRef()
endfor
endfunction
function! airline#update_externals()
let g:airline_externals_bufferline = g:airline_enable_bufferline && exists('g:bufferline_loaded') ? '%{bufferline#generate_string()}' : "%f%m"
let g:airline_externals_syntastic = g:airline_enable_syntastic && exists('g:loaded_syntastic_plugin') ? '%{SyntasticStatuslineFlag()}' : ''
let g:airline_externals_fugitive = g:airline_enable_fugitive && exists('g:loaded_fugitive') && strlen(fugitive#head()) > 0
\ ? g:airline_fugitive_prefix.fugitive#head() : ''
endfunction
function! s:get_section(key)
return exists('w:airline_section_{a:key}') ? w:airline_section_{a:key} : g:airline_section_{a:key}
endfunction
function! airline#update_statusline(active)
let w:airline_active = a:active
if s:is_excluded_window()
call setwinvar(winnr(), '&statusline', '')
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)
endfor
call airline#update_externals()
call s:apply_window_overrides()
unlet! w:airline_render_left w:airline_render_right
exe 'unlet! ' 'w:airline_section_'. join(s:sections, ' w:airline_section_')
let l:mode_color = a:active ? "%#Al2#" : "%#Al2_inactive#"
let l:mode_sep_color = a:active ? "%#Al3#" : "%#Al3_inactive#"
let l:info_color = a:active ? "%#Al4#" : "%#Al4_inactive#"
let l:info_sep_color = a:active ? "%#Al5#" : "%#Al5_inactive#"
let l:status_color = a:active ? "%#Al6#" : "%#Al6_inactive#"
let l:file_flag_color = a:active ? "%#Al7#" : "%#Al7_inactive#"
let sl = '%{airline#update_highlight()}'
if a:active
let sl.=l:mode_color.' '.s:get_section('a').' '
let sl.=l:mode_sep_color
let sl.=a:active ? g:airline_left_sep : g:airline_left_alt_sep
let sl.=l:info_color
let sl.=' '.s:get_section('b').' '
let sl.=l:info_sep_color
let sl.=g:airline_left_sep
let sl.=l:status_color.' %<'.s:get_section('c').' '
let sl.=exists('w:airline_section_gutter')
\ ? s:get_section('gutter')
\ : '%#warningmsg#'.g:airline_externals_syntastic.l:file_flag_color."%{&ro ? g:airline_readonly_symbol : ''}".l:status_color
else
let sl.=l:status_color.' %f%m'
endif
if !exists('w:airline_left_only')
let sl.='%= '.s:get_section('x').' '
let sl.=l:info_sep_color
let sl.=a:active ? g:airline_right_sep : g:airline_right_alt_sep
let sl.=l:info_color
let sl.=' '.s:get_section('y').' '
let sl.=l:mode_sep_color
let sl.=a:active ? g:airline_right_sep : g:airline_right_alt_sep
let sl.=l:mode_color
let sl.=' '.s:get_section('z').' '
endif
call setwinvar(winnr(), '&statusline', sl)
let w:airline_active = 1
let context = { 'winnr': winnr(), 'active': 1, 'bufnr': winbufnr(winnr()) }
call s:invoke_funcrefs(context, g:airline_statusline_funcrefs)
endfunction
let g:airline_current_mode_text = ''
function! airline#update_highlight()
if w:airline_active
let s:contexts = {}
let s:core_funcrefs = [
\ function('airline#extensions#apply'),
\ function('airline#extensions#default#apply') ]
function! s:invoke_funcrefs(context, funcrefs)
let builder = airline#builder#new(a:context)
let err = airline#util#exec_funcrefs(a:funcrefs + s:core_funcrefs, builder, a:context)
if err == 1
let a:context.line = builder.build()
let s:contexts[a:context.winnr] = a:context
call setwinvar(a:context.winnr, '&statusline', '%!airline#statusline('.a:context.winnr.')')
endif
endfunction
function! airline#statusline(winnr)
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)
if !exists("s:airline_run")
let s:airline_run = 0
endif
let s:airline_run += 1
let context = s:contexts[a:winnr]
if get(w:, 'airline_active', 1)
let l:m = mode()
if l:m ==# "i"
let l:mode = ['insert']
elseif l:m ==# "R"
let l:mode = ['replace']
elseif l:m ==? "v" || l:m ==# ""
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
let g:airline_current_mode_text = get(g:airline_mode_map, l:m, l:m)
let w:airline_current_mode = get(g:airline_mode_map, l:m, l:m)
else
let l:mode = ['inactive']
let w:airline_current_mode = get(g:airline_mode_map, '__')
endif
if &modified | call add(l:mode, 'modified') | endif
if &paste | call add(l:mode, 'paste') | 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 g:airline_detect_spell && &spell
call add(l:mode, 'spell')
endif
if &readonly || ! &modifiable
call add(l:mode, 'readonly')
endif
let mode_string = join(l:mode)
if !exists('w:airline_lastmode') || w:airline_lastmode != mode_string
call airline#highlight(l:mode)
if s:airline_run < 3
" skip this round.
" When this function is run too early after startup,
" it forces a redraw by vim which will remove the intro screen.
let w:airline_lastmode = mode_string
return ''
endif
if get(w:, 'airline_lastmode', '') != mode_string
call airline#highlighter#highlight_modified_inactive(context.bufnr)
call airline#highlighter#highlight(l:mode, context.bufnr)
let w:airline_lastmode = mode_string
endif
return ''
endfunction

View File

@@ -0,0 +1,254 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
" min percentage width per section
let g:section_width = get(g:, 'airline#extensions#default#section_width', {
\ 'a': {'pct': 7},
\ 'b': {'pct': 10},
\ 'c': {'pct': 25},
\ 'x': {'pct': 7},
\ 'y': {'pct': 11},
\ 'z': {'pct': 15},
\ 'warning': {'pct': 10},
\ 'error': {'pct': 10},
\ 'gutter': {'pct': 5},
\ })
let s:prototype = {}
function! s:prototype.split(...) dict
call add(self._sections, ['|', a:0 ? a:1 : '%='])
endfunction
function! s:prototype.add_section_spaced(group, contents) dict
let spc = empty(a:contents) ? '' : g:airline_symbols.space
call self.add_section(a:group, spc.a:contents.spc)
endfunction
function! s:prototype.add_section(group, contents) dict
call add(self._sections, [a:group, a:contents])
endfunction
function! s:prototype.add_raw(text) dict
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() dict
let side = 1
let line = ''
let i = 0
let length = len(self._sections)
let split = 0
let is_empty = 0
let prev_group = ''
while i < length
let section = self._sections[i]
let group = section[0]
let contents = section[1]
let pgroup = prev_group
let prev_group = s:get_prev_group(self._sections, i)
if group ==# 'airline_c' && !self._context.active && has_key(self._context, 'bufnr')
let group = 'airline_c'. self._context.bufnr
elseif prev_group ==# 'airline_c' && !self._context.active && has_key(self._context, 'bufnr')
let prev_group = 'airline_c'. self._context.bufnr
endif
if is_empty
let prev_group = pgroup
endif
let is_empty = s:section_is_empty(self, contents)
if is_empty
" need to fix highlighting groups, since we
" have skipped a section, we actually need
" the previous previous group and so the
" seperator goes from the previous previous group
" to the current group
let pgroup = group
endif
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
if !is_empty
let line .= s:get_transitioned_seperator(self, prev_group, group, side)
endif
let split = 0
else
if !is_empty
let line .= s:get_seperator(self, prev_group, group, side)
endif
endif
let contents = s:calculate_max_width(self, contents, group)
let line .= is_empty ? '' : s:get_accented_line(self, group, contents)
endif
let i = i + 1
endwhile
if !self._context.active
"let line = substitute(line, '%#airline_c#', '%#airline_c'.self._context.bufnr.'#', '')
let line = substitute(line, '%#.\{-}\ze#', '\0_inactive', 'g')
endif
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! s:calculate_section_width()
if get(b:, 'airline_winwidth', 0) != winwidth(0)
let winwidth = winwidth(0)
for key in keys(g:section_width)
let g:section_width[key]['width'] = float2nr(winwidth * (g:section_width[key]['pct']/100.0))
endfor
let b:airline_winwidth = winwidth
endif
endfunction
function! s:calculate_max_width(self, content, key)
if a:self._context.active == 0 ||
\ get(a:self._context, 'tabline', 0)
return a:content
endif
call s:calculate_section_width()
if winwidth(0) >= 100
" only truncate sections for window width < 100
return a:content
endif
let section_key = matchstr(a:key, 'airline_\zs.*')
let width = g:section_width[section_key]['width']
if section_key == 'c'
" for the buffername, use a min-width
return '%-'.(width > 50 ? 50 : width).'.('.a:content.'%)'
else
" the rest takes a maxwidth
return '%-.'.width.'('.a:content.'%)'
endif
endfunction
function! s:section_is_empty(self, content)
let start=1
" do not check for inactive windows or the tabline
if a:self._context.active == 0
return 0
elseif get(a:self._context, 'tabline', 0)
return 0
endif
" only check, if airline#skip_empty_sections == 1
if get(g:, 'airline_skip_empty_sections', 0) == 0
return 0
endif
" only check, if airline#skip_empty_sections == 1
if get(w:, 'airline_skip_empty_sections', -1) == 0
return 0
endif
" assume accents sections to be never empty
" (avoides, that on startup the mode message becomes empty)
if match(a:content, '%#__accent_[^#]*#.*__restore__#') > -1
return 0
endif
if empty(a:content)
return 1
endif
let list=matchlist(a:content, '%{\zs.\{-}\ze}', 1, start)
if empty(list)
return 0 " no function in statusline text
endif
while len(list) > 0
let expr = list[0]
try
" catch all exceptions, just in case
if !empty(eval(expr))
return 0
endif
catch
return 0
endtry
let start += 1
let list=matchlist(a:content, '%{\zs.\{-}\ze}', 1, start)
endw
return 1
endfunction
function! airline#builder#new(context)
let builder = copy(s:prototype)
let builder._context = a:context
let builder._sections = []
call extend(builder._context, {
\ 'left_sep': g:airline_left_sep,
\ 'left_alt_sep': g:airline_left_alt_sep,
\ 'right_sep': g:airline_right_sep,
\ 'right_alt_sep': g:airline_right_alt_sep,
\ }, 'keep')
return builder
endfunction

View File

@@ -0,0 +1,52 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
function! airline#debug#profile1()
profile start airline-profile-switch.log
profile func *
profile file *
split
for i in range(1, 1000)
wincmd w
redrawstatus
endfor
profile pause
noautocmd qall!
endfunction
function! airline#debug#profile2()
profile start airline-profile-cursor.log
profile func *
profile file *
edit blank
call setline(1, 'all your base are belong to us')
call setline(2, 'all your base are belong to us')
let positions = [[1,2], [2,2], [1,2], [1,1]]
for i in range(1, 1000)
for pos in positions
call cursor(pos[0], pos[1])
redrawstatus
endfor
endfor
profile pause
noautocmd qall!
endfunction
function! airline#debug#profile3()
profile start airline-profile-mode.log
profile func *
profile file *
for i in range(1000)
startinsert
redrawstatus
stopinsert
redrawstatus
endfor
profile pause
noautocmd qall!
endfunction

View File

@@ -1,50 +1,340 @@
let s:sections = ['a','b','c','gutter','x','y','z']
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
function! s:override_left_only(section1, section2)
let w:airline_section_a = a:section1
let w:airline_section_b = a:section2
let w:airline_section_c = ''
let w:airline_left_only = 1
scriptencoding utf-8
let s:ext = {}
let s:ext._theme_funcrefs = []
function! s:ext.add_statusline_func(name) dict
call airline#add_statusline_func(a:name)
endfunction
function! s:ext.add_statusline_funcref(function) dict
call airline#add_statusline_funcref(a:function)
endfunction
function! s:ext.add_inactive_statusline_func(name) dict
call airline#add_inactive_statusline_func(a:name)
endfunction
function! s:ext.add_theme_func(name) dict
call add(self._theme_funcrefs, function(a:name))
endfunction
function! airline#extensions#clear_window_overrides()
silent! unlet w:airline_left_only
for section in s:sections
silent! unlet w:airline_section_{section}
let s:script_path = tolower(resolve(expand('<sfile>:p:h')))
let s:filetype_overrides = {
\ 'nerdtree': [ 'NERD', '' ],
\ 'gundo': [ 'Gundo', '' ],
\ 'vimfiler': [ 'vimfiler', '%{vimfiler#get_status_string()}' ],
\ 'minibufexpl': [ 'MiniBufExplorer', '' ],
\ 'startify': [ 'startify', '' ],
\ 'vim-plug': [ 'Plugins', '' ],
\ }
let s:filetype_regex_overrides = {}
function! s:check_defined_section(name)
if !exists('w:airline_section_{a:name}')
let w:airline_section_{a:name} = g:airline_section_{a:name}
endif
endfunction
function! airline#extensions#append_to_section(name, value)
call <sid>check_defined_section(a:name)
let w:airline_section_{a:name} .= a:value
endfunction
function! airline#extensions#prepend_to_section(name, value)
call <sid>check_defined_section(a:name)
let w:airline_section_{a:name} = a:value . w:airline_section_{a:name}
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 = 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
if &buftype == 'help'
call airline#extensions#apply_left_override('Help', '%f')
let w:airline_section_x = ''
let w:airline_section_y = ''
let w:airline_render_right = 1
endif
if &previewwindow
let w:airline_section_a = 'Preview'
let w:airline_section_b = ''
let w:airline_section_c = bufname(winbufnr(winnr()))
endif
if has_key(s:filetype_overrides, &ft)
let args = s:filetype_overrides[&ft]
call airline#extensions#apply_left_override(args[0], args[1])
endif
for item in items(s:filetype_regex_overrides)
if match(&ft, item[0]) >= 0
call airline#extensions#apply_left_override(item[1][0], item[1][1])
endif
endfor
endfunction
function! airline#extensions#apply_window_overrides()
if &ft == 'netrw'
call s:override_left_only('netrw', '%f')
elseif &ft == 'unite'
call s:override_left_only('Unite', unite#get_status_string())
elseif &ft == 'nerdtree'
call s:override_left_only('NERD', '')
elseif &ft == 'undotree'
call s:override_left_only('undotree', '')
elseif &ft == 'gundo'
call s:override_left_only('Gundo', '')
elseif &ft == 'diff'
call s:override_left_only('diff', '')
elseif &ft == 'tagbar'
call s:override_left_only('Tagbar', '')
elseif &ft == 'minibufexpl'
call s:override_left_only('MiniBufExplorer', '')
function! s:is_excluded_window()
for matchft in g:airline_exclude_filetypes
if matchft ==# &ft
return 1
endif
endfor
for matchw in g:airline_exclude_filenames
if matchstr(expand('%'), matchw) ==# matchw
return 1
endif
endfor
if g:airline_exclude_preview && &previewwindow
return 1
endif
return 0
endfunction
function! airline#extensions#load_theme()
call airline#util#exec_funcrefs(s:ext._theme_funcrefs, g:airline#themes#{g:airline_theme}#palette)
endfunction
function! s:sync_active_winnr()
if exists('#airline') && winnr() != s:active_winnr
call airline#update_statusline()
endif
endfunction
function! airline#extensions#load()
let g:unite_force_overwrite_statusline = 0
let loaded_ext = []
" 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:loaded_ctrlp') && g:loaded_ctrlp
call airline#extensions#ctrlp#load_ctrlp_hi()
let g:ctrlp_status_func = {
\ 'main': 'airline#extensions#ctrlp#ctrlp_airline',
\ 'prog': 'airline#extensions#ctrlp#ctrlp_airline_status',
\ }
if exists('g:airline_extensions')
for ext in g:airline_extensions
try
call airline#extensions#{ext}#init(s:ext)
catch /^Vim\%((\a\+)\)\=:E117/ " E117, function does not exist
call airline#util#warning("Extension '".ext."' not installed, ignoring!")
endtry
endfor
return
endif
call add(g:airline_window_override_funcrefs, function('airline#extensions#apply_window_overrides'))
call airline#extensions#quickfix#init(s:ext)
call add(loaded_ext, 'quickfix')
if get(g:, 'loaded_unite', 0)
call airline#extensions#unite#init(s:ext)
call add(loaded_ext, 'unite')
endif
if get(g:, 'loaded_denite', 0)
call airline#extensions#denite#init(s:ext)
call add(loaded_ext, 'denite')
endif
if exists(':NetrwSettings')
call airline#extensions#netrw#init(s:ext)
call add(loaded_ext, 'netrw')
endif
if get(g:, 'airline#extensions#ycm#enabled', 0)
call airline#extensions#ycm#init(s:ext)
call add(loaded_ext, 'ycm')
endif
if get(g:, 'loaded_vimfiler', 0)
let g:vimfiler_force_overwrite_statusline = 0
endif
if get(g:, 'loaded_ctrlp', 0)
call airline#extensions#ctrlp#init(s:ext)
call add(loaded_ext, 'ctrlp')
endif
if get(g:, 'CtrlSpaceLoaded', 0)
call airline#extensions#ctrlspace#init(s:ext)
call add(loaded_ext, 'ctrlspace')
endif
if get(g:, 'command_t_loaded', 0)
call airline#extensions#commandt#init(s:ext)
call add(loaded_ext, 'commandt')
endif
if exists(':UndotreeToggle')
call airline#extensions#undotree#init(s:ext)
call add(loaded_ext, 'undotree')
endif
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)
call add(loaded_ext, 'hunks')
endif
if get(g:, 'airline#extensions#vimagit#enabled', 1)
\ && (exists('g:loaded_magit'))
call airline#extensions#vimagit#init(s:ext)
call add(loaded_ext, 'vimagit')
endif
if get(g:, 'airline#extensions#tagbar#enabled', 1)
\ && exists(':TagbarToggle')
call airline#extensions#tagbar#init(s:ext)
call add(loaded_ext, 'tagbar')
endif
if get(g:, 'airline#extensions#csv#enabled', 1)
\ && (get(g:, 'loaded_csv', 0) || exists(':Table'))
call airline#extensions#csv#init(s:ext)
call add(loaded_ext, 'csv')
endif
if exists(':VimShell')
let s:filetype_overrides['vimshell'] = ['vimshell','%{vimshell#get_status_string()}']
let s:filetype_regex_overrides['^int-'] = ['vimshell','%{substitute(&ft, "int-", "", "")}']
endif
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)
call add(loaded_ext, 'branch')
endif
if get(g:, 'airline#extensions#bufferline#enabled', 1)
\ && exists('*bufferline#get_status_string')
call airline#extensions#bufferline#init(s:ext)
call add(loaded_ext, 'bufferline')
endif
if (get(g:, 'airline#extensions#virtualenv#enabled', 1) && (exists(':VirtualEnvList') || isdirectory($VIRTUAL_ENV)))
call airline#extensions#virtualenv#init(s:ext)
call add(loaded_ext, 'virtualenv')
endif
if (get(g:, 'airline#extensions#eclim#enabled', 1) && exists(':ProjectCreate'))
call airline#extensions#eclim#init(s:ext)
call add(loaded_ext, 'eclim')
endif
if get(g:, 'airline#extensions#syntastic#enabled', 1)
\ && exists(':SyntasticCheck')
call airline#extensions#syntastic#init(s:ext)
call add(loaded_ext, 'syntastic')
endif
if (get(g:, 'airline#extensions#ale#enabled', 1) && exists(':ALELint'))
call airline#extensions#ale#init(s:ext)
call add(loaded_ext, 'ale')
endif
if get(g:, 'airline#extensions#whitespace#enabled', 1)
call airline#extensions#whitespace#init(s:ext)
call add(loaded_ext, 'whitespace')
endif
if (get(g:, 'airline#extensions#neomake#enabled', 1) && exists(':Neomake'))
call airline#extensions#neomake#init(s:ext)
call add(loaded_ext, 'neomake')
endif
if get(g:, 'airline#extensions#po#enabled', 1) && executable('msgfmt')
call airline#extensions#po#init(s:ext)
call add(loaded_ext, 'po')
endif
if get(g:, 'airline#extensions#wordcount#enabled', 1)
call airline#extensions#wordcount#init(s:ext)
call add(loaded_ext, 'wordcount')
endif
if get(g:, 'airline#extensions#tabline#enabled', 0)
call airline#extensions#tabline#init(s:ext)
call add(loaded_ext, 'tabline')
endif
if get(g:, 'airline#extensions#tmuxline#enabled', 1) && exists(':Tmuxline')
call airline#extensions#tmuxline#init(s:ext)
call add(loaded_ext, 'tmuxline')
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)
call add(loaded_ext, 'promptline')
endif
if get(g:, 'airline#extensions#nrrwrgn#enabled', 1) && exists(':NR') == 2
call airline#extensions#nrrwrgn#init(s:ext)
call add(loaded_ext, 'nrrwrgn')
endif
if get(g:, 'airline#extensions#unicode#enabled', 1) && exists(':UnicodeTable') == 2
call airline#extensions#unicode#init(s:ext)
call add(loaded_ext, 'nrrwrgn')
endif
if (get(g:, 'airline#extensions#capslock#enabled', 1) && exists('*CapsLockStatusline'))
call airline#extensions#capslock#init(s:ext)
call add(loaded_ext, 'capslock')
endif
if (get(g:, 'airline#extensions#xkblayout#enabled', 1) && exists('g:XkbSwitchLib'))
call airline#extensions#xkblayout#init(s:ext)
call add(loaded_ext, 'xkblayout')
endif
if (get(g:, 'airline#extensions#windowswap#enabled', 1) && get(g:, 'loaded_windowswap', 0))
call airline#extensions#windowswap#init(s:ext)
call add(loaded_ext, 'windowswap')
endif
if (get(g:, 'airline#extensions#obsession#enabled', 1) && exists('*ObsessionStatus'))
call airline#extensions#obsession#init(s:ext)
call add(loaded_ext, 'obsession')
endif
runtime autoload/vimtex.vim
if (get(g:, 'airline#extensions#vimtex#enabled', 1)) && exists('*vimtex#init')
call airline#extensions#vimtex#init(s:ext)
call add(loaded_ext, 'vimtex')
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) ||
\ index(loaded_ext, name) > -1
continue
endif
try
call airline#extensions#{name}#init(s:ext)
catch
endtry
endif
endfor
endif
endfunction

View File

@@ -0,0 +1,43 @@
" MIT License. Copyright (c) 2013-2017 Bjorn Neergaard, w0rp
" vim: et ts=2 sts=2 sw=2
let s:error_symbol = get(g:, 'airline#extensions#ale#error_symbol', 'E:')
let s:warning_symbol = get(g:, 'airline#extensions#ale#warning_symbol', 'W:')
function! airline#extensions#ale#get(type)
if !exists(':ALELint')
return ''
endif
let l:is_err = a:type ==# 'error'
let l:counts = ale#statusline#Count(bufnr(''))
let l:symbol = l:is_err ? s:error_symbol : s:warning_symbol
if type(l:counts) == type({}) && has_key(l:counts, 'error')
" Use the current Dictionary format.
let l:errors = l:counts.error + l:counts.style_error
let l:num = l:is_err ? l:errors : l:counts.total - l:errors
else
" Use the old List format.
let l:num = l:is_err ? l:counts[0] : l:counts[1]
endif
if l:num == 0
return ''
else
return l:symbol . l:num
endif
endfunction
function! airline#extensions#ale#get_warning()
return airline#extensions#ale#get('warning')
endfunction
function! airline#extensions#ale#get_error()
return airline#extensions#ale#get('error')
endfunction
function! airline#extensions#ale#init(ext)
call airline#parts#define_function('ale_error_count', 'airline#extensions#ale#get_error')
call airline#parts#define_function('ale_warning_count', 'airline#extensions#ale#get_warning')
endfunction

View File

@@ -0,0 +1,409 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling et al.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
let s:has_fugitive = exists('*fugitive#head')
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:has_async = airline#util#async
" s:vcs_config contains static configuration of VCSes and their status relative
" to the active file.
" 'branch' - The name of currently active branch. This field is empty iff it
" has not been initialized yet or the current file is not in
" an active branch.
" 'untracked' - Cache of untracked files represented as a dictionary with files
" as keys. A file has a not exists symbol set as its value if it
" is untracked. A file is present in this dictionary iff its
" status is considered up to date.
" 'untracked_mark' - used as regexp to test against the output of 'cmd'
let s:vcs_config = {
\ 'git': {
\ 'exe': 'git',
\ 'cmd': 'git status --porcelain -- ',
\ 'untracked_mark': '??',
\ 'update_branch': 's:update_git_branch',
\ 'exclude': '\.git',
\ 'branch': '',
\ 'untracked': {},
\ },
\ 'mercurial': {
\ 'exe': 'hg',
\ 'cmd': 'hg status -u -- ',
\ 'untracked_mark': '?',
\ 'exclude': '\.hg',
\ 'update_branch': 's:update_hg_branch',
\ 'branch': '',
\ 'untracked': {},
\ },
\}
" Initializes b:buffer_vcs_config. b:buffer_vcs_config caches the branch and
" untracked status of the file in the buffer. Caching those fields is necessary,
" because s:vcs_config may be updated asynchronously and s:vcs_config fields may
" be invalid during those updates. b:buffer_vcs_config fields are updated
" whenever corresponding fields in s:vcs_config are updated or an inconsistency
" is detected during update_* operation.
"
" b:airline_head caches the head string it is empty iff it needs to be
" recalculated. b:airline_head is recalculated based on b:buffer_vcs_config.
function! s:init_buffer()
let b:buffer_vcs_config = {}
for vcs in keys(s:vcs_config)
let b:buffer_vcs_config[vcs] = {
\ 'branch': '',
\ 'untracked': '',
\ }
endfor
unlet! b:airline_head
endfunction
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
let s:git_dirs = {}
function! s:update_git_branch(path)
if !s:has_fugitive
let s:vcs_config['git'].branch = ''
return
endif
let name = fugitive#head(7)
if empty(name)
if has_key(s:git_dirs, a:path)
let s:vcs_config['git'].branch = s:git_dirs[a:path]
return
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
let s:vcs_config['git'].branch = name
endfunction
function! s:update_hg_branch(path)
if s:has_lawrencium
let stl=lawrencium#statusline()
if !empty(stl) && s:has_async
call s:get_mq_async('LC_ALL=C hg qtop', expand('%:p'))
endif
if exists("s:mq") && !empty(s:mq)
if stl is# 'default'
" Shorten default a bit
let stl='def'
endif
let stl.=' ['.s:mq.']'
endif
let s:vcs_config['mercurial'].branch = stl
else
let s:vcs_config['mercurial'].branch = ''
endif
endfunction
function! s:update_branch()
let l:path = exists("*fnamemodify") ? fnamemodify(resolve(@%), ":p:h") : expand("%:p:h")
for vcs in keys(s:vcs_config)
call {s:vcs_config[vcs].update_branch}(l:path)
if b:buffer_vcs_config[vcs].branch != s:vcs_config[vcs].branch
let b:buffer_vcs_config[vcs].branch = s:vcs_config[vcs].branch
unlet! b:airline_head
endif
endfor
endfunction
function! s:update_untracked_in_buffer_config(file, vcs)
if !has_key(s:vcs_config[a:vcs].untracked, a:file)
return
elseif s:vcs_config[a:vcs].untracked[a:file] != b:buffer_vcs_config[a:vcs].untracked
let b:buffer_vcs_config[a:vcs].untracked = s:vcs_config[a:vcs].untracked[a:file]
unlet! b:airline_head
endif
endfunction
function! s:update_untracked()
let l:file = expand("%:p")
if empty(l:file) || isdirectory(l:file)
return
endif
let l:needs_update = 1
for vcs in keys(s:vcs_config)
if l:file =~ s:vcs_config[vcs].exclude
" Skip check for files that live in the exclude directory
let l:needs_update = 0
endif
if has_key(s:vcs_config[vcs].untracked, l:file)
let l:needs_update = 0
call s:update_untracked_in_buffer_config(l:file, vcs)
endif
endfor
if !l:needs_update
return
endif
for vcs in keys(s:vcs_config)
let l:config = s:vcs_config[vcs]
if s:has_async
" Note that asynchronous update updates s:vcs_config only, and only
" s:update_untracked updates b:buffer_vcs_config. If s:vcs_config is
" invalidated again before s:update_untracked is called, then we lose the
" result of the previous call, i.e. the head string is not updated. It
" doesn't happen often in practice, so we let it be.
call s:get_vcs_untracked_async(l:config, l:file)
else
let output = airline#util#system(l:config.cmd . shellescape(l:file))
if output =~? ('^' . l:config.untracked_mark)
let l:config.untracked[l:file] = get(g:, 'airline#extensions#branch#notexists', g:airline_symbols.notexists)
else
let l:config.untracked[l:file] = ''
endif
call s:update_untracked_in_buffer_config(l:file, vcs)
endif
endfor
endfunction
if s:has_async
let s:jobs = {}
function! s:on_stdout(channel, msg) dict abort
let self.buf .= a:msg
endfunction
function! s:on_exit(channel) dict abort
if self.buf =~? ('^' . self.config['untracked_mark'])
let self.config.untracked[self.file] = get(g:, 'airline#extensions#branch#notexists', g:airline_symbols.notexists)
else
let self.config.untracked[self.file] = ''
endif
" b:buffer_vcs_config will be updated on next call of update_untracked if
" needed
if has_key(s:jobs, self.file)
call remove(s:jobs, self.file)
endif
endfunction
function! s:get_vcs_untracked_async(config, file)
if g:airline#util#is_windows && &shell =~ 'cmd'
let cmd = a:config['cmd'] . shellescape(a:file)
else
let cmd = ['sh', '-c', a:config['cmd'] . shellescape(a:file)]
endif
let options = {'config': a:config, 'buf': '', 'file': a:file}
if has_key(s:jobs, a:file)
if job_status(get(s:jobs, a:file)) == 'run'
return
elseif has_key(s:jobs, a:file)
call remove(s:jobs, a:file)
endif
endif
let id = job_start(cmd, {
\ 'err_io': 'out',
\ 'out_cb': function('s:on_stdout', options),
\ 'close_cb': function('s:on_exit', options)})
let s:jobs[a:file] = id
endfu
function! s:on_exit_mq(channel) dict abort
if !empty(self.buf)
if self.buf is# 'no patches applied' ||
\ self.buf =~# "unknown command 'qtop'"
let self.buf = ''
elseif exists("s:mq") && s:mq isnot# self.buf
" make sure, statusline is updated
unlet! b:airline_head
endif
let s:mq = self.buf
endif
if has_key(s:jobs, self.file)
call remove(s:jobs, self.file)
endif
endfunction
function! s:get_mq_async(cmd, file)
if g:airline#util#is_windows && &shell =~ 'cmd'
let cmd = a:cmd
else
let cmd = ['sh', '-c', a:cmd]
endif
let options = {'cmd': a:cmd, 'buf': '', 'file': a:file}
if has_key(s:jobs, a:file)
if job_status(get(s:jobs, a:file)) == 'run'
return
elseif has_key(s:jobs, a:file)
call remove(s:jobs, a:file)
endif
endif
let id = job_start(cmd, {
\ 'err_io': 'out',
\ 'out_cb': function('s:on_stdout', options),
\ 'close_cb': function('s:on_exit_mq', options)})
let s:jobs[a:file] = id
endfu
endif
function! airline#extensions#branch#head()
if !exists('b:buffer_vcs_config')
call s:init_buffer()
endif
call s:update_branch()
call s:update_untracked()
if exists('b:airline_head') && !empty(b:airline_head)
return b:airline_head
endif
let b:airline_head = ''
let l:vcs_priority = get(g:, "airline#extensions#branch#vcs_priority", ["git", "mercurial"])
let l:heads = {}
for vcs in l:vcs_priority
if !empty(b:buffer_vcs_config[vcs].branch)
let l:heads[vcs] = b:buffer_vcs_config[vcs].branch
endif
endfor
for vcs in keys(l:heads)
if !empty(b:airline_head)
let b:airline_head .= ' | '
endif
let b:airline_head .= (len(l:heads) > 1 ? s:vcs_config[l:vcs].exe .':' : '') . s:format_name(l:heads[l:vcs])
let b:airline_head .= b:buffer_vcs_config[vcs].untracked
endfor
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
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 has_key(l:heads, 'git') && !s:check_in_path()
let b:airline_head = ''
endif
let minwidth = empty(get(b:, 'airline_hunks', '')) ? 14 : 7
let b:airline_head = airline#util#shorten(b:airline_head, 120, minwidth)
return b:airline_head
endfunction
function! airline#extensions#branch#get_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_file_in_root')
let root = get(b:, 'git_dir', get(b:, 'mercurial_dir', ''))
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
" 1) check for worktrees
if match(root, 'worktrees') > -1
" worktree can be anywhere, so simply assume true here
return 1
endif
" 2) check for submodules
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(shellcmdpost)
" shellcmdpost - whether function was called as a result of ShellCmdPost hook
if !s:has_async && !has('nvim')
if a:shellcmdpost
" Clear cache only if there was no error or the script uses an
" asynchronous interface. Otherwise, cache clearing would overwrite
" v:shell_error with a system() call inside get_*_untracked.
if v:shell_error
return
endif
endif
endif
let l:file = expand("%:p")
for vcs in keys(s:vcs_config)
" Dump the value of the cache for the current file. Partially mitigates the
" issue of cache invalidation happening before a call to
" s:update_untracked()
call s:update_untracked_in_buffer_config(l:file, l:vcs)
let s:vcs_config[vcs].untracked = {}
endfor
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 * call s:reset_untracked_cache(0)
autocmd ShellCmdPost * call s:reset_untracked_cache(1)
endfunction

View File

@@ -0,0 +1,29 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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)
if s:overwrite
highlight bufferline_selected gui=bold cterm=bold term=bold
highlight link bufferline_selected_inactive airline_c_inactive
let g:bufferline_inactive_highlight = 'airline_c'
let g:bufferline_active_highlight = 'bufferline_selected'
let g:bufferline_active_buffer_left = ''
let g:bufferline_active_buffer_right = ''
let g:bufferline_separator = g:airline_symbols.space
endif
if exists("+autochdir") && &autochdir == 1
" if 'acd' is set, vim-airline uses the path section, so we need ot redefine this here as well
call airline#parts#define_raw('path', '%{bufferline#refresh_status()}'.bufferline#get_status_string())
else
call airline#parts#define_raw('file', '%{bufferline#refresh_status()}'.bufferline#get_status_string())
endif
endfunction

View File

@@ -0,0 +1,17 @@
" MIT License. Copyright (c) 2014 Mathias Andersson.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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

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

View File

@@ -0,0 +1,33 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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()
if exists('*CSV_WCol')
if s:column_display ==# 'Name'
return '['.CSV_WCol('Name').CSV_WCol().']'
else
return '['.CSV_WCol().']'
endif
endif
return ''
endfunction
function! airline#extensions#csv#apply(...)
if &ft ==# "csv"
call airline#extensions#prepend_to_section('gutter',
\ g:airline_left_alt_sep.' %{airline#extensions#csv#get_column()}')
endif
endfunction
function! airline#extensions#csv#init(ext)
call a:ext.add_statusline_func('airline#extensions#csv#apply')
endfunction

View File

@@ -1,38 +1,82 @@
" TODO: support loading color palette from g:airline_theme
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
function! airline#extensions#ctrlp#load_ctrlp_hi()
hi! CtrlPdark ctermfg=189 ctermbg=55 guifg=#d7d7ff guibg=#5f00af
hi! CtrlPlight ctermfg=231 ctermbg=98 guifg=#ffffff guibg=#875fd7
hi! CtrlPwhite ctermfg=55 ctermbg=231 term=bold guifg=#5f00af guibg=#ffffff gui=bold
hi! CtrlParrow1 ctermfg=98 ctermbg=231 guifg=#875fd7 guibg=#ffffff
hi! CtrlParrow2 ctermfg=231 ctermbg=98 guifg=#ffffff guibg=#875fd7
hi! CtrlParrow3 ctermfg=98 ctermbg=55 guifg=#875fd7 guibg=#5f00af
hi! CtrlParrow4 ctermfg=231 ctermbg=55 guifg=#ffffff guibg=#5f00af
hi! CtrlParrow5 ctermfg=98 ctermbg=231 guifg=#875fd7 guibg=#ffffff
scriptencoding utf-8
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)
return {
\ 'CtrlPdark' : a:dark,
\ 'CtrlPlight' : a:light,
\ 'CtrlPwhite' : a:white,
\ 'CtrlParrow1' : [ a:light[1] , a:white[1] , a:light[3] , a:white[3] , '' ] ,
\ 'CtrlParrow2' : [ a:white[1] , a:light[1] , a:white[3] , a:light[3] , '' ] ,
\ 'CtrlParrow3' : [ a:light[1] , a:dark[1] , a:light[3] , a:dark[3] , '' ] ,
\ }
endfunction
" Recreate Ctrl-P status line with some slight modifications
function! airline#extensions#ctrlp#load_theme(palette)
if exists('a:palette.ctrlp')
let theme = a:palette.ctrlp
else
let s:color_template = has_key(a:palette, s:color_template) ? s:color_template : 'insert'
let theme = airline#extensions#ctrlp#generate_color_map(
\ a:palette[s:color_template]['airline_c'],
\ a:palette[s:color_template]['airline_b'],
\ a:palette[s:color_template]['airline_a'])
endif
for key in keys(theme)
call airline#highlighter#exec(key, theme[key])
endfor
endfunction
" Arguments: focus, byfname, s:regexp, prv, item, nxt, marked
" a:1 a:2 a:3 a:4 a:5 a:6 a:7
" 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 = '%#CtrlParrow4#'.g:airline_right_alt_sep.'%#CtrlPdark# '.a:2.' %*'
let dir = '%#CtrlParrow3#'.g:airline_right_sep.'%#CtrlPlight# '.getcwd().' %*'
" Return the full statusline
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
" a:1
function! airline#extensions#ctrlp#ctrlp_airline_status(...)
let len = '%#CtrlPwhite# '.a:1
let dir = '%=%<%#CtrlParrow5#'.g:airline_right_sep.'%#CtrlPlight# '.getcwd().' %*'
" Return the full statusline
let len = '%#CtrlPdark# '.a:1
let dir = '%=%<%#CtrlParrow3#'.g:airline_right_sep.'%#CtrlPlight# '.getcwd().' %*'
return len.dir
endfunction
function! airline#extensions#ctrlp#apply(...)
" disable statusline overwrite if ctrlp already did it
return match(&statusline, 'CtrlPwhite') >= 0 ? -1 : 0
endfunction
function! airline#extensions#ctrlp#init(ext)
let g:ctrlp_status_func = {
\ 'main': 'airline#extensions#ctrlp#ctrlp_airline',
\ 'prog': 'airline#extensions#ctrlp#ctrlp_airline_status',
\ }
call a:ext.add_statusline_func('airline#extensions#ctrlp#apply')
call a:ext.add_theme_func('airline#extensions#ctrlp#load_theme')
endfunction

View File

@@ -0,0 +1,19 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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

@@ -0,0 +1,101 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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': 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', 'error' ]
\ ])
function! s:get_section(winnr, key, ...)
if has_key(s:section_truncate_width, a:key)
if winwidth(a:winnr) < s:section_truncate_width[a:key]
return ''
endif
endif
let spc = g:airline_symbols.space
if !exists('g:airline_section_{a:key}')
return ''
endif
let text = airline#util#getwinvar(a:winnr, 'airline_section_'.a:key, g:airline_section_{a:key})
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' || key == 'error') && !a:context.active
continue
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, unless it is fixed (7.4.1511)
if s:section_use_groups && (v:version >= 704 || (v:version >= 703 && has('patch81')))
function! s:add_section(builder, context, key)
let condition = (a:key is# "warning" || a:key is# "error") &&
\ (v:version == 704 && !has("patch1511"))
" 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 condition
call a:builder.add_raw('%(')
endif
call a:builder.add_section('airline_'.a:key, s:get_section(a:context.winnr, a:key))
if condition
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 s:build_sections(a:builder, a:context, s:layout[0])
else
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 s:build_sections(a:builder, a:context, s:layout[1])
endif
return 1
endfunction

View File

@@ -0,0 +1,47 @@
" MIT License. Copyright (c) 2017 Thomas Dy
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
if !get(g:, 'loaded_denite', 0)
finish
endif
" Denite does not use vim's built-in modal editing but has a custom prompt
" that implements its own insert/normal mode so we have to handle changing the
" highlight
function! airline#extensions#denite#check_denite_mode(bufnr)
let l:mode = split(denite#get_status_mode(), ' ')
let l:mode = tolower(l:mode[1])
if !exists('b:denite_mode_cache') || l:mode != b:denite_mode_cache
call airline#highlighter#highlight([l:mode], a:bufnr)
let b:denite_mode_cache = l:mode
endif
return ''
endfunction
function! airline#extensions#denite#apply(...)
if &ft == 'denite'
let w:airline_skip_empty_sections = 0
call a:1.add_section('airline_a', ' Denite %{airline#extensions#denite#check_denite_mode('.a:2['bufnr'].')}')
call a:1.add_section('airline_c', ' %{denite#get_status_sources()}')
call a:1.split()
call a:1.add_section('airline_y', ' %{denite#get_status_path()} ')
call a:1.add_section('airline_z', ' %{denite#get_status_linenr()} ')
return 1
endif
endfunction
function! airline#extensions#denite#init(ext)
call denite#custom#option('_', 'statusline', 0)
call a:ext.add_statusline_func('airline#extensions#denite#apply')
" airline#extensions#denite#apply normally gets called only after the
" denite window gets closed, so we have to call airline#update_statusline
" ourselves to make sure it's applied when the window is opened.
augroup airline_denite
autocmd!
autocmd FileType denite call airline#update_statusline()
augroup END
endfunction

View File

@@ -0,0 +1,62 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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()
" Cache vavlues, so that it isn't called too often
if exists("s:eclim_errors") &&
\ get(b:, 'airline_changenr', 0) == changenr()
return s:eclim_errors
endif
let eclimList = eclim#display#signs#GetExisting()
let s:eclim_errors = ''
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() == ''
let s:eclim_errors = errors.(g:airline_symbols.space)
endif
endif
endif
let b:airline_changenr = changenr()
return s:eclim_errors
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

@@ -0,0 +1,56 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
" 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
endif
" First we define an init function that will be invoked from extensions.vim
function! airline#extensions#example#init(ext)
" Here we define a new part for the plugin. This allows users to place this
" extension in arbitrary locations.
call airline#parts#define_raw('cats', '%{airline#extensions#example#get_cats()}')
" Next up we add a funcref so that we can run some code prior to the
" statusline getting modifed.
call a:ext.add_statusline_func('airline#extensions#example#apply')
" You can also add a funcref for inactive statuslines.
" call a:ext.add_inactive_statusline_func('airline#extensions#example#unapply')
endfunction
" This function will be invoked just prior to the statusline getting modified.
function! airline#extensions#example#apply(...)
" First we check for the filetype.
if &filetype == "nyancat"
" Let's say we want to append to section_c, first we check if there's
" already a window-local override, and if not, create it off of the global
" section_c.
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 .= s:spc.g:airline_left_alt_sep.s:spc.'%{airline#extensions#example#get_cats()}'
endif
endfunction
" Finally, this function will be invoked from the statusline.
function! airline#extensions#example#get_cats()
let cats = ''
for i in range(1, g:airline#extensions#example#number_of_cats)
let cats .= ' (,,,)=(^.^)=(,,,) '
endfor
return cats
endfunction

View File

@@ -0,0 +1,96 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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', ['+', '~', '-'])
function! s:get_hunks_signify()
let hunks = sy#repo#get_stats()
if hunks[0] >= 0
return hunks
endif
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) || 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
function! s:get_hunks()
if !exists('b:source_func') || get(b:, 'source_func', '') is# 's:get_hunks_empty'
if get(g:, 'loaded_signify') && sy#buffer_is_active()
let b:source_func = 's:get_hunks_signify'
elseif exists('*GitGutterGetHunkSummary')
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 b:source_func = 's:get_hunks_empty'
endif
endif
return {b:source_func}()
endfunction
function! airline#extensions#hunks#get_hunks()
if !get(w:, 'airline_active', 0)
return ''
endif
" Cache vavlues, so that it isn't called too often
if exists("b:airline_hunks") &&
\ get(b:, 'airline_changenr', 0) == changenr() &&
\ winwidth(0) == get(s:, 'airline_winwidth', 0) &&
\ get(b:, 'source_func', '') isnot# 's:get_hunks_signify' &&
\ get(b:, 'source_func', '') isnot# 's:get_hunks_gitgutter' &&
\ get(b:, 'source_func', '') isnot# 's:get_hunks_empty'
return b:airline_hunks
endif
let hunks = s:get_hunks()
let string = ''
if !empty(hunks)
for i in [0, 1, 2]
if (s:non_zero_only == 0 && winwidth(0) > 100) || hunks[i] > 0
let string .= printf('%s%s ', s:hunk_symbols[i], hunks[i])
endif
endfor
endif
let b:airline_hunks = string
let b:airline_changenr = changenr()
let s:airline_winwidth = winwidth(0)
return string
endfunction
function! airline#extensions#hunks#init(ext)
call airline#parts#define_function('hunks', 'airline#extensions#hunks#get_hunks')
endfunction

View File

@@ -0,0 +1,25 @@
" vim: et ts=2 sts=2 sw=2
if !exists(':Neomake')
finish
endif
let s:error_symbol = get(g:, 'airline#extensions#neomake#error_symbol', 'E:')
let s:warning_symbol = get(g:, 'airline#extensions#neomake#warning_symbol', 'W:')
function! airline#extensions#neomake#get_warnings()
let counts = neomake#statusline#LoclistCounts()
let warnings = get(counts, 'W', 0)
return warnings ? s:warning_symbol.warnings : ''
endfunction
function! airline#extensions#neomake#get_errors()
let counts = neomake#statusline#LoclistCounts()
let errors = get(counts, 'E', 0)
return errors ? s:error_symbol.errors : ''
endfunction
function! airline#extensions#neomake#init(ext)
call airline#parts#define_function('neomake_warning_count', 'airline#extensions#neomake#get_warnings')
call airline#parts#define_function('neomake_error_count', 'airline#extensions#neomake#get_errors')
endfunction

View File

@@ -0,0 +1,34 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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 = (get(g:, 'netrw_sort_direction', 'n') =~ 'n') ? '+' : '-'
return g:netrw_sort_by . (g:airline_symbols.space) . '[' . order . ']'
endfunction

View File

@@ -0,0 +1,57 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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,22 @@
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
if !exists('*ObsessionStatus')
finish
endif
let s:spc = g:airline_symbols.space
if !exists('g:airline#extensions#obsession#indicator_text')
let g:airline#extensions#obsession#indicator_text = '$'
endif
function! airline#extensions#obsession#init(ext)
call airline#parts#define_function('obsession', 'airline#extensions#obsession#get_status')
endfunction
function! airline#extensions#obsession#get_status()
return ObsessionStatus((g:airline#extensions#obsession#indicator_text . s:spc), '')
endfunction

View File

@@ -0,0 +1,93 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
let s:has_async = airline#util#async
function! s:shorten()
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 - 2)].(&encoding==?'utf-8' ? '…' : '.'). ']'
endif
endif
endfunction
if s:has_async
let s:jobs = {}
function! s:on_stdout(channel, msg) dict abort
let self.buf = a:msg
endfunction
function! s:on_exit(channel) dict abort
if !empty(self.buf)
let b:airline_po_stats = printf("[%s]", self.buf)
else
let b:airline_po_stats = ''
endif
if has_key(s:jobs, self.file)
call remove(s:jobs, self.file)
endif
call s:shorten()
endfunction
function! s:get_msgfmt_stat_async(cmd, file)
if g:airline#util#is_windows || !executable('msgfmt')
" no msgfmt on windows?
return
else
let cmd = ['sh', '-c', a:cmd. shellescape(a:file)]
endif
let options = {'buf': '', 'file': a:file}
if has_key(s:jobs, a:file)
if job_status(get(s:jobs, a:file)) == 'run'
return
elseif has_key(s:jobs, a:file)
call remove(s:jobs, a:file)
endif
endif
let id = job_start(cmd, {
\ 'err_io': 'out',
\ 'out_cb': function('s:on_stdout', options),
\ 'close_cb': function('s:on_exit', options)})
let s:jobs[a:file] = id
endfu
endif
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 cmd = 'msgfmt --statistics -o /dev/null -- '
if s:has_async
call s:get_msgfmt_stat_async(cmd, expand('%:p'))
else
let airline_po_stats = system(cmd. shellescape(expand('%:p')))
if v:shell_error
return ''
endif
try
let b:airline_po_stats = '['. split(airline_po_stats, '\n')[0]. ']'
let b:airline_po_stats = substitute(b:airline_po_stats, ' \(message\|translation\)s*\.*', '', 'g')
catch
let b:airline_po_stats = ''
endtry
call s:shorten()
endif
return get(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,35 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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,53 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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')
call a:ext.add_inactive_statusline_func('airline#extensions#quickfix#inactive_qf_window')
endfunction
function! airline#extensions#quickfix#inactive_qf_window(...)
if getbufvar(a:2.bufnr, '&filetype') is# 'qf' && !empty(airline#util#getwinvar(a:2.winnr, 'quickfix_title', ''))
call setwinvar(a:2.winnr, 'airline_section_c', '[%{get(w:, "quickfix_title", "")}] %f %m')
endif
endfunction
function! s:get_text()
if exists("*win_getid") && exists("*getwininfo")
let dict = getwininfo(win_getid())
if len(dict) > 0 && get(dict[0], 'quickfix', 0) && !get(dict[0], 'loclist', 0)
return g:airline#extensions#quickfix#quickfix_text
elseif len(dict) > 0 && get(dict[0], 'quickfix', 0) && get(dict[0], 'loclist', 0)
return g:airline#extensions#quickfix#location_text
endif
endif
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

@@ -0,0 +1,43 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
if !exists(':SyntasticCheck')
finish
endif
let s:error_symbol = get(g:, 'airline#extensions#syntastic#error_symbol', 'E:')
let s:warning_symbol = get(g:, 'airline#extensions#syntastic#warning_symbol', 'W:')
function! airline#extensions#syntastic#get_warning()
return airline#extensions#syntastic#get('warning')
endfunction
function! airline#extensions#syntastic#get_error()
return airline#extensions#syntastic#get('error')
endfunction
function! airline#extensions#syntastic#get(type)
let _backup = get(g:, 'syntastic_stl_format', '')
let is_err = (a:type is# 'error')
if is_err
let g:syntastic_stl_format = '%E{%e}'
else
let g:syntastic_stl_format = '%W{%w}'
endif
let cnt = SyntasticStatuslineFlag()
if !empty(_backup)
let g:syntastic_stl_format = _backup
endif
if cnt == 0
return ''
else
return (is_err ? s:error_symbol : s:warning_symbol).cnt
endif
endfunction
function! airline#extensions#syntastic#init(ext)
call airline#parts#define_function('syntastic-warn', 'airline#extensions#syntastic#get_warning')
call airline#parts#define_function('syntastic-err', 'airline#extensions#syntastic#get_error')
endfunction

View File

@@ -0,0 +1,193 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
let s:formatter = get(g:, 'airline#extensions#tabline#formatter', 'default')
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:taboo = get(g:, 'airline#extensions#taboo#enabled', 1) && get(g:, 'loaded_taboo', 0)
if s:taboo
let g:taboo_tabline = 0
endif
let s:ctrlspace = get(g:, 'CtrlSpaceLoaded', 0)
function! airline#extensions#tabline#init(ext)
if has('gui_running')
set guioptions-=e
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)
" 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
"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()
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 airline#extensions#tabline#tabs#get()
endif
endfunction
function! airline#extensions#tabline#title(n)
let title = ''
if s:taboo
let title = TabooTabTitle(a:n)
endif
if empty(title) && exists('*gettabvar')
let title = gettabvar(a:n, 'title')
endif
if empty(title)
let buflist = tabpagebuflist(a:n)
let winnr = tabpagewinnr(a:n)
let all_buffers = airline#extensions#tabline#buflist#list()
return airline#extensions#tabline#get_buffer_name(
\ buflist[winnr - 1],
\ filter(buflist, 'index(all_buffers, v:val) != -1'))
endif
return title
endfunction
function! airline#extensions#tabline#get_buffer_name(nr, ...)
let buffers = a:0 ? a:1 : airline#extensions#tabline#buflist#list()
return airline#extensions#tabline#formatters#{s:formatter}#format(a:nr, buffers)
endfunction
function! airline#extensions#tabline#new_builder()
let builder_context = {
\ 'active' : 1,
\ 'tabline' : 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
return airline#builder#new(builder_context)
endfunction
function! airline#extensions#tabline#group_of_bufnr(tab_bufs, bufnr)
let cur = bufnr('%')
if cur == a:bufnr
if g:airline_detect_modified && getbufvar(a:bufnr, '&modified')
let group = 'airline_tabmod'
else
let group = 'airline_tabsel'
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'
else
let group = 'airline_tabhid'
endif
endif
return group
endfunction

View File

@@ -0,0 +1,55 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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,251 @@
" 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 = {
\ '0': '⁰',
\ '1': '¹',
\ '2': '²',
\ '3': '³',
\ '4': '⁴',
\ '5': '⁵',
\ '6': '⁶',
\ '7': '⁷',
\ '8': '⁸',
\ '9': '⁹'
\ }
let s:number_map = &encoding == 'utf-8'
\ ? get(g:, 'airline#extensions#tabline#buffer_idx_format', s:number_map)
\ : {}
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#clickbuf@')
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
if tabpagenr('$') > 1
call b.add_section_spaced('airline_tabmod', printf('%s %d/%d', "tab", tabpagenr(), tabpagenr('$')))
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#clickbuf(minwid, clicks, button, modifiers) abort
" Clickable buffers
" works only in recent NeoVim with has('tablineat')
" single mouse button click without modifiers pressed
if a:clicks == 1 && a:modifiers !~# '[^ ]'
if a:button is# 'l'
" left button - switch to buffer
silent execute 'buffer' a:minwid
elseif a:button is# 'm'
" middle button - delete buffer
if get(g:, 'airline#extensions#tabline#middle_click_preserves_windows', 0) == 0
" just simply delete the clicked buffer. This will cause windows
" associated with the clicked buffer to be closed.
silent execute 'bdelete' a:minwid
else
" find windows displaying the clicked buffer and open an new
" buffer in them.
let current_window = bufwinnr("%")
let window_number = bufwinnr(a:minwid)
let last_window_visited = -1
" Set to 1 if the clicked buffer was open in any windows.
let buffer_in_window = 0
" Find the next window with the clicked buffer open. If bufwinnr()
" returns the same window number, this is because we clicked a new
" buffer, and then tried editing a new buffer. Vim won't create a
" new empty buffer for the same window, so we get the same window
" number from bufwinnr(). In this case we just give up and don't
" delete the buffer.
" This could be made cleaner if we could check if the clicked buffer
" is a new buffer, but I don't know if there is a way to do that.
while window_number != -1 && window_number != last_window_visited
let buffer_in_window = 1
silent execute window_number . 'wincmd w'
silent execute 'enew'
let last_window_visited = window_number
let window_number = bufwinnr(a:minwid)
endwhile
silent execute current_window . 'wincmd w'
if window_number != last_window_visited || buffer_in_window == 0
silent execute 'bdelete' a:minwid
endif
endif
endif
endif
endfunction

View File

@@ -0,0 +1,44 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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 excludes = get(g:, 'airline#extensions#tabline#excludes', [])
let exclude_preview = get(g:, 'airline#extensions#tabline#exclude_preview', 1)
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(excludes) && match(bufname(nr), join(excludes, '\|')) > -1) ||
\ (getbufvar(nr, 'current_syntax') == 'qf') ||
\ (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,150 @@
" 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.')}%)'
if has("tablineat")
let buf_name = '%'.buffer.index.'@airline#extensions#tabline#buffers#clickbuf@'.buf_name.'%X'
endif
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.index.'T'.tab.title.ctrlspace#api#TabBuffersNumber(tab.index).'%T')
endfor
endfunction
function! airline#extensions#tabline#ctrlspace#get()
let cur_buf = bufnr('%')
call airline#extensions#tabline#tabs#map_keys()
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

@@ -0,0 +1,41 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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#format(bufnr, buffers)
let fmod = get(g:, 'airline#extensions#tabline#fnamemod', ':~:.')
let _ = ''
let name = bufname(a:bufnr)
if empty(name)
let _ .= '[No Name]'
else
if s:fnamecollapse
let _ .= substitute(fnamemodify(name, fmod), '\v\w\zs.{-}\ze(\\|/)', '', 'g')
else
let _ .= fnamemodify(name, 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,34 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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,112 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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 airline#extensions#tabline#tabs#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'
if g:airline_detect_modified
for bi in tabpagebuflist(i)
if getbufvar(bi, '&modified')
let group = 'airline_tabmod'
endif
endfor
endif
let s:current_modified = (group == 'airline_tabmod') ? 1 : 0
else
let group = 'airline_tab'
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) . "_right"
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! airline#extensions#tabline#tabs#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

@@ -0,0 +1,47 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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', 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
function! airline#extensions#tagbar#inactive_apply(...)
if getwinvar(a:2.winnr, '&filetype') == 'tagbar'
return -1
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)
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
function! airline#extensions#tagbar#init(ext)
call a:ext.add_inactive_statusline_func('airline#extensions#tagbar#inactive_apply')
let g:tagbar_status_func = 'airline#extensions#tagbar#get_status'
call airline#parts#define_function('tagbar', 'airline#extensions#tagbar#currenttag')
endfunction

View File

@@ -0,0 +1,28 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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

@@ -0,0 +1,29 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
if !exists(':UndotreeToggle')
finish
endif
function! airline#extensions#undotree#apply(...)
if exists('t:undotree')
if &ft == 'undotree'
if exists('*t:undotree.GetStatusLine')
call airline#extensions#apply_left_override('undo', '%{t:undotree.GetStatusLine()}')
else
call airline#extensions#apply_left_override('undotree', '%f')
endif
endif
if &ft == 'diff' && exists('*t:diffpanel.GetStatusLine')
call airline#extensions#apply_left_override('diff', '%{t:diffpanel.GetStatusLine()}')
endif
endif
endfunction
function! airline#extensions#undotree#init(ext)
call a:ext.add_statusline_func('airline#extensions#undotree#apply')
endfunction

View File

@@ -0,0 +1,24 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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

@@ -0,0 +1,25 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
if !get(g:, 'loaded_unite', 0)
finish
endif
function! airline#extensions#unite#apply(...)
if &ft == 'unite'
call a:1.add_section('airline_a', ' Unite ')
call a:1.add_section('airline_b', ' %{get(unite#get_context(), "buffer_name", "")} ')
call a:1.add_section('airline_c', ' %{unite#get_status_string()} ')
call a:1.split()
call a:1.add_section('airline_y', ' %{get(unite#get_context(), "real_buffer_name", "")} ')
return 1
endif
endfunction
function! airline#extensions#unite#init(ext)
let g:unite_force_overwrite_statusline = 0
call a:ext.add_statusline_func('airline#extensions#unite#apply')
endfunction

View File

@@ -0,0 +1,30 @@
" MIT License. Copyright (c) 2016 Jerome Reybert
" vim: et ts=2 sts=2 sw=2
" This plugin replace the whole section_a when in vimagit buffer
scriptencoding utf-8
if !get(g:, 'loaded_magit', 0)
finish
endif
function! airline#extensions#vimagit#init(ext)
call a:ext.add_statusline_func('airline#extensions#vimagit#apply')
endfunction
function! airline#extensions#vimagit#get_mode()
if ( b:magit_current_commit_mode == '' )
return "STAGING"
elseif ( b:magit_current_commit_mode == 'CC' )
return "COMMIT"
elseif ( b:magit_current_commit_mode == 'CA' )
return "AMEND"
else
return "???"
endfunction
function! airline#extensions#vimagit#apply(...)
if ( &filetype == 'magit' )
let w:airline_section_a = '%{airline#extensions#vimagit#get_mode()}'
endif
endfunction

View File

@@ -0,0 +1,81 @@
scriptencoding utf-8
let s:spc = g:airline_symbols.space
function! s:SetDefault(var, val)
if !exists(a:var)
execute 'let ' . a:var . '=' . string(a:val)
endif
endfunction
" Left and right delimiters (added only when status string is not empty)
call s:SetDefault( 'g:airline#extensions#vimtex#left', "{")
call s:SetDefault( 'g:airline#extensions#vimtex#right', "}")
" The current tex file is the main project file
call s:SetDefault( 'g:airline#extensions#vimtex#main', "" )
"
" The current tex file is a subfile of the project
" and the compilation is set for the main file
call s:SetDefault( 'g:airline#extensions#vimtex#sub_main', "m")
"
" The current tex file is a subfile of the project
" and the compilation is set for this subfile
call s:SetDefault( 'g:airline#extensions#vimtex#sub_local', "l")
"
" Compilation is running and continuous compilation is off
call s:SetDefault( 'g:airline#extensions#vimtex#compiled', "c₁")
" Compilation is running and continuous compilation is on
call s:SetDefault( 'g:airline#extensions#vimtex#continuous', "c")
" Viewer is opened
call s:SetDefault( 'g:airline#extensions#vimtex#viewer', "v")
function! airline#extensions#vimtex#init(ext)
call airline#parts#define_raw('vimtex', '%{airline#extensions#vimtex#get_scope()}')
call a:ext.add_statusline_func('airline#extensions#vimtex#apply')
endfunction
function! airline#extensions#vimtex#apply(...)
if exists("b:vimtex")
let w:airline_section_x = get(w:, 'airline_section_x', g:airline_section_x)
let w:airline_section_x.=s:spc.g:airline_left_alt_sep.s:spc.'%{airline#extensions#vimtex#get_scope()}'
endif
endfunction
function! airline#extensions#vimtex#get_scope()
let l:status = ''
let vt_local = get(b:, 'vimtex_local', {})
if empty(vt_local)
let l:status .= g:airline#extensions#vimtex#main
else
if get(vt_local, 'active')
let l:status .= g:airline#extensions#vimtex#sub_local
else
let l:status .= g:airline#extensions#vimtex#sub_main
endif
endif
if get(get(get(b:, 'vimtex', {}), 'viewer', {}), 'xwin_id')
let l:status .= g:airline#extensions#vimtex#viewer
endif
let l:compiler = get(get(b:, 'vimtex', {}), 'compiler', {})
if !empty(l:compiler)
if has_key(l:compiler, 'is_running') && b:vimtex.compiler.is_running()
if get(l:compiler, 'continuous')
let l:status .= g:airline#extensions#vimtex#continuous
else
let l:status .= g:airline#extensions#vimtex#compiled
endif
endif
endif
if !empty(l:status)
let l:status = g:airline#extensions#vimtex#left . l:status . g:airline#extensions#vimtex#right
endif
return l:status
endfunction

View File

@@ -0,0 +1,31 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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"
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

@@ -0,0 +1,167 @@
" 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
scriptencoding utf-8
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:default_checks = ['indent', 'trailing', 'mixed-indent-file']
let s:trailing_format = get(g:, 'airline#extensions#whitespace#trailing_format', '[%s]trailing')
let s:mixed_indent_format = get(g:, 'airline#extensions#whitespace#mixed_indent_format', '[%s]mixed-indent')
let s:long_format = get(g:, 'airline#extensions#whitespace#long_format', '[%s]long')
let s:mixed_indent_file_format = get(g:, 'airline#extensions#whitespace#mixed_indent_file_format', '[%s]mix-indent-file')
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:max_lines = get(g:, 'airline#extensions#whitespace#max_lines', 20000)
let s:enabled = get(g:, 'airline#extensions#whitespace#enabled', 1)
let s:c_like_langs = get(g:, 'airline#extensions#c_like_langs', [ 'c', 'cpp', 'cuda', 'go', 'javascript', 'ld', 'php' ])
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 index(s:c_like_langs, &ft) > -1
" for C-like languages: 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 || !&modifiable || !s:enabled || line('$') > s:max_lines
\ || get(b:, 'airline_whitespace_disabled', 0)
return ''
endif
if !exists('b:airline_whitespace_check')
let b:airline_whitespace_check = ''
let checks = get(b:, 'airline_whitespace_checks', get(g:, 'airline#extensions#whitespace#checks', s:default_checks))
let trailing = 0
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
let check = 'indent'
if index(checks, check) > -1 && index(get(s:skip_check_ft, &ft, []), check) < 0
let mixed = s:check_mixed_indent()
endif
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 strlen(s:symbol) > 0
let space = (g:airline_symbols.space)
else
let space = ''
endif
if s:show_message
if trailing != 0
let b:airline_whitespace_check .= space.printf(s:trailing_format, trailing)
endif
if mixed != 0
let b:airline_whitespace_check .= space.printf(s:mixed_indent_format, mixed)
endif
if long != 0
let b:airline_whitespace_check .= space.printf(s:long_format, long)
endif
if !empty(mixed_file)
let b:airline_whitespace_check .= space.printf(s:mixed_indent_file_format, mixed_file)
endif
endif
endif
endif
return airline#util#shorten(b:airline_whitespace_check, 120, 9)
endfunction
function! airline#extensions#whitespace#toggle()
if s:enabled
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
function! airline#extensions#whitespace#disable()
if s:enabled
call airline#extensions#whitespace#toggle()
endif
endfunction
function! airline#extensions#whitespace#init(...)
call airline#parts#define_function('whitespace', 'airline#extensions#whitespace#check')
unlet! b:airline_whitespace_check
augroup airline_whitespace
autocmd!
autocmd CursorHold,BufWritePost * call <sid>ws_refresh()
augroup END
endfunction
function! s:ws_refresh()
if get(b:, 'airline_ws_changedtick', 0) == b:changedtick
return
endif
unlet! b:airline_whitespace_check
if get(g:, 'airline_skip_empty_sections', 0)
exe ':AirlineRefresh'
endif
let b:airline_ws_changedtick = b:changedtick
endfunction

View File

@@ -0,0 +1,29 @@
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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()
" use new tab-aware api if WS is up to date
let s:mark = exists('*WindowSwap#IsCurrentWindowMarked') ?
\WindowSwap#IsCurrentWindowMarked() :
\(WindowSwap#HasMarkedWindow() && WindowSwap#GetMarkedWindowNum() == winnr())
if s:mark
return g:airline#extensions#windowswap#indicator_text.s:spc
endif
return ''
endfunction

View File

@@ -0,0 +1,43 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
let s:formatter = get(g:, 'airline#extensions#wordcount#formatter', 'default')
let g:airline#extensions#wordcount#filetypes = get(g:, 'airline#extensions#wordcount#filetypes',
\ '\vhelp|markdown|rst|org|text|asciidoc|tex|mail')
function! s:wordcount_update()
if empty(bufname(''))
return
endif
if match(&ft, get(g:, 'airline#extensions#wordcount#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 ||
\ get(b:, 'airline_winwidth', 0) != winwidth(0)
" 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
let b:airline_winwidth = winwidth(0)
endif
endif
endif
endfunction
function! airline#extensions#wordcount#apply(...)
if match(&ft, get(g:, 'airline#extensions#wordcount#filetypes')) > -1
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:wordcount_update()
endfunction

View File

@@ -0,0 +1,64 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
function! airline#extensions#wordcount#formatters#default#format()
let words = string(s:wordcount())
if empty(words)
return
endif
let result = g:airline_symbols.space . g:airline_right_alt_sep . g:airline_symbols.space
if winwidth(0) >= 80
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 words = substitute(words, '\d\@<=\(\(\d\{3\}\)\+\)$', separator.'&', 'g')
endif
let result = printf("%s%s", words, " words"). result
else
let result = printf("%s%s", words, "W"). result
endif
return result
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,25 @@
" MIT License. Copyright (c) 2017 YoungHoon Rhiu.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
if !exists('g:XkbSwitchLib')
finish
endif
function! airline#extensions#xkblayout#status()
let keyboard_layout = libcall(g:XkbSwitchLib, 'Xkb_Switch_getXkbLayout', '')
let keyboard_layout = split(keyboard_layout, '\.')[-1]
let short_codes = {'2SetKorean': 'KR', 'Chinese': 'CN', 'Japanese': 'JP'}
if has_key(short_codes, keyboard_layout)
let keyboard_layout = short_codes[keyboard_layout]
endif
return keyboard_layout
endfunction
function! airline#extensions#xkblayout#init(ext)
call airline#parts#define_function('xkblayout', 'airline#extensions#xkblayout#status')
endfunction

View File

@@ -0,0 +1,38 @@
" MIT License. Copyright (c) 2015 Evgeny Firsov.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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') && exists("*youcompleteme#GetErrorCount")
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') && exists("*youcompleteme#GetWarningCount")
let cnt = youcompleteme#GetWarningCount()
if cnt != 0
return s:warning_symbol.cnt.s:spc
endif
endif
return ''
endfunction

View File

@@ -0,0 +1,237 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
let s:is_win32term = (has('win32') || has('win64')) &&
\ !has('gui_running') &&
\ (empty($CONEMUBUILD) || &term !=? 'xterm') &&
\ !(exists("+termguicolors") && &termguicolors)
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(split(a:rgb[1:], '..\zs'), '0 + ("0x".v:val)')
return airline#msdos#round_msdos_colors(rgb)
endfunction
function! s:get_syn(group, what)
if !exists("g:airline_gui_mode")
let g:airline_gui_mode = airline#init#gui_mode()
endif
let color = ''
if hlexists(a:group)
let color = synIDattr(synIDtrans(hlID(a:group)), a:what, g:airline_gui_mode)
endif
if empty(color) || color == -1
" should always exists
let color = synIDattr(synIDtrans(hlID('Normal')), a:what, g:airline_gui_mode)
" however, just in case
if empty(color) || color == -1
let color = 'NONE'
endif
endif
return color
endfunction
function! s:get_array(fg, bg, opts)
return g:airline_gui_mode ==# 'gui'
\ ? [ a:fg, a:bg, '', '', join(a:opts, ',') ]
\ : [ '', '', a:fg, a:bg, join(a:opts, ',') ]
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 = 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
function! airline#highlighter#get_highlight2(fg, bg, ...)
let fg = s:get_syn(a:fg[0], a:fg[1])
let bg = s:get_syn(a:bg[0], a:bg[1])
return s:get_array(fg, bg, a:000)
endfunction
function! s:hl_group_exists(group)
if !hlexists(a:group)
return 0
elseif empty(synIDattr(hlID(a:group), 'fg'))
return 0
endif
return 1
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
let old_hi = airline#highlighter#get_highlight(a:group)
if len(colors) == 4
call add(colors, '')
endif
let colors = s:CheckDefined(colors)
if old_hi != colors || !s:hl_group_exists(a:group)
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=', ''))
exe cmd
endif
endfunction
function! s:CheckDefined(colors)
" Checks, whether the definition of the colors is valid and is not empty or NONE
" e.g. if the colors would expand to this:
" hi airline_c ctermfg=NONE ctermbg=NONE
" that means to clear that highlighting group, therefore, fallback to Normal
" highlighting group for the cterm values
" This only works, if the Normal highlighting group is actually defined, so
" return early, if it has been cleared
if !exists("g:airline#highlighter#normal_fg_hi")
let g:airline#highlighter#normal_fg_hi = synIDattr(synIDtrans(hlID('Normal')), 'fg', 'cterm')
endif
if empty(g:airline#highlighter#normal_fg_hi) || g:airline#highlighter#normal_fg_hi < 0
return a:colors
endif
for val in a:colors
if !empty(val) && val !=# 'NONE'
return a:colors
endif
endfor
" this adds the bold attribute to the term argument of the :hi command,
" but at least this makes sure, the group will be defined
let fg = g:airline#highlighter#normal_fg_hi
let bg = synIDattr(synIDtrans(hlID('Normal')), 'bg', 'cterm')
if bg < 0
" in case there is no background color defined for Normal
let bg = a:colors[3]
endif
return a:colors[0:1] + [fg, bg] + [a:colors[4]]
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
if a:inverse
let colors = [ l:from[1], l:to[1], l:from[3], l:to[3] ]
else
let colors = [ l:to[1], l:from[1], l:to[3], l:from[3] ]
endif
let a:dict[group] = colors
call airline#highlighter#exec(group, colors)
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
call airline#highlighter#highlight(['inactive'])
if getbufvar( bufnr('%'), '&modified' )
call airline#highlighter#highlight(['normal', 'modified'])
else
call airline#highlighter#highlight(['normal'])
endif
endfunction
function! airline#highlighter#add_separator(from, to, inverse)
let s:separators[a:from.a:to] = [a:from, a:to, a: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')
\ ? g:airline#themes#{g:airline_theme}#palette.inactive_modified.airline_c : []
else
let colors = exists('g:airline#themes#{g:airline_theme}#palette.inactive.airline_c')
\ ? g:airline#themes#{g:airline_theme}#palette.inactive.airline_c : []
endif
if !empty(colors)
call airline#highlighter#exec('airline_c'.(a:bufnr).'_inactive', colors)
endif
endfunction
function! airline#highlighter#highlight(modes, ...)
let bufnr = a:0 ? a:1 : ''
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' : ''
for mode in mapped
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)
let mode_colors = kvp[1]
let name = kvp[0]
if name is# 'airline_c' && !empty(bufnr) && suffix is# '_inactive'
let name = 'airline_c'.bufnr
endif
call airline#highlighter#exec(name.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(name.suffix.'_'.accent, colors)
endfor
endfor
" TODO: optimize this
for sep in items(s:separators)
call <sid>exec_separator(dict, sep[1][0], sep[1][1], sep[1][2], suffix)
endfor
endif
endfor
endfunction

198
autoload/airline/init.vim Normal file
View File

@@ -0,0 +1,198 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
function! s:check_defined(variable, default)
if !exists(a:variable)
let {a:variable} = a:default
endif
endfunction
let s:loaded = 0
function! airline#init#bootstrap()
if s:loaded
return
endif
let s:loaded = 1
let g:airline#init#bootstrapping = 1
let g:airline#util#async = v:version >= 800 && has('job')
let g:airline#util#is_windows = has('win32') || has('win64')
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_spell', 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, {
\ '__' : '------',
\ 'n' : 'NORMAL',
\ 'i' : 'INSERT',
\ 'R' : 'REPLACE',
\ 'v' : 'VISUAL',
\ 'V' : 'V-LINE',
\ 'c' : 'COMMAND',
\ '' : 'V-BLOCK',
\ 's' : 'SELECT',
\ 'S' : 'S-LINE',
\ '' : 'S-BLOCK',
\ 't' : 'TERMINAL',
\ }, 'keep')
call s:check_defined('g:airline_theme_map', {})
call extend(g:airline_theme_map, {
\ '\CTomorrow': 'tomorrow',
\ 'base16': 'base16',
\ 'mo[l|n]okai': 'molokai',
\ 'wombat': 'wombat',
\ 'zenburn': 'zenburn',
\ 'solarized': 'solarized',
\ 'flattened': 'solarized',
\ '\CNeoSolarized': 'solarized',
\ }, 'keep')
call s:check_defined('g:airline_symbols', {})
" First define the symbols,
" that are common in Powerline/Unicode/ASCII mode,
" then add specific symbols for either mode
call extend(g:airline_symbols, {
\ 'paste': 'PASTE',
\ 'spell': 'SPELL',
\ 'modified': '+',
\ 'space': ' '
\ }, 'keep')
if get(g:, 'airline_powerline_fonts', 0)
" Symbols for Powerline terminals
call s:check_defined('g:airline_left_sep', "\ue0b0") " 
call s:check_defined('g:airline_left_alt_sep', "\ue0b1") " 
call s:check_defined('g:airline_right_sep', "\ue0b2") " 
call s:check_defined('g:airline_right_alt_sep', "\ue0b3") " 
" ro=, ws=☲, lnr=☰, mlnr=, br=, nx=Ɇ, crypt=🔒
call extend(g:airline_symbols, {
\ 'readonly': "\ue0a2",
\ 'whitespace': "\u2632",
\ 'linenr': "\u2630 ",
\ 'maxlinenr': " \ue0a1",
\ 'branch': "\ue0a0",
\ 'notexists': "\u0246",
\ 'crypt': nr2char(0x1F512),
\ }, 'keep')
elseif &encoding==?'utf-8' && !get(g:, "airline_symbols_ascii", 0)
" Symbols for Unicode terminals
call s:check_defined('g:airline_left_sep', "")
call s:check_defined('g:airline_left_alt_sep', "")
call s:check_defined('g:airline_right_sep', "")
call s:check_defined('g:airline_right_alt_sep', "")
" ro=⊝, ws=☲, lnr=☰, mlnr=㏑, br=ᚠ, nx=Ɇ, crypt=🔒
call extend(g:airline_symbols, {
\ 'readonly': "\u229D",
\ 'whitespace': "\u2632",
\ 'linenr': "\u2630 ",
\ 'maxlinenr': " \u33D1",
\ 'branch': "\u16A0",
\ 'notexists': "\u0246",
\ 'crypt': nr2char(0x1F512),
\ }, 'keep')
else
" Symbols for ASCII terminals
call s:check_defined('g:airline_left_sep', "")
call s:check_defined('g:airline_left_alt_sep', "")
call s:check_defined('g:airline_right_sep', "")
call s:check_defined('g:airline_right_alt_sep', "")
call extend(g:airline_symbols, {
\ 'readonly': 'RO',
\ 'whitespace': '!',
\ 'linenr': 'ln ',
\ 'maxlinenr': ' :',
\ 'branch': '',
\ 'notexists': '?',
\ 'crypt': 'cr',
\ }, 'keep')
endif
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('spell', 'airline#parts#spell')
call airline#parts#define_function('filetype', 'airline#parts#filetype')
call airline#parts#define('readonly', {
\ 'function': 'airline#parts#readonly',
\ '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}%4l',
\ 'accent': 'bold'})
call airline#parts#define('maxlinenr', {
\ 'raw': '/%L%{g:airline_symbols.maxlinenr}',
\ 'accent': 'bold'})
call airline#parts#define_function('ffenc', 'airline#parts#ffenc')
call airline#parts#define_empty(['hunks', 'branch', 'obsession', 'tagbar',
\ 'syntastic-warn', 'syntastic-err', 'eclim', 'whitespace','windowswap',
\ 'ycm_error_count', 'ycm_warning_count', 'neomake_error_count',
\ 'neomake_warning_count', 'ale_error_count', 'ale_warning_count'])
call airline#parts#define_text('capslock', '')
call airline#parts#define_text('xkblayout', '')
unlet g:airline#init#bootstrapping
endfunction
function! airline#init#gui_mode()
return ((has('nvim') && exists('$NVIM_TUI_ENABLE_TRUE_COLOR') && !exists("+termguicolors"))
\ || has('gui_running') || (has("termtruecolor") && &guicolors == 1) || (has("termguicolors") && &termguicolors == 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', 'crypt', 'paste', 'spell', 'capslock', 'xkblayout', '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')
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(['%='])
endif
if !exists('g:airline_section_x')
let g:airline_section_x = airline#section#create_right(['tagbar', 'filetype'])
endif
if !exists('g:airline_section_y')
let g:airline_section_y = airline#section#create_right(['ffenc'])
endif
if !exists('g:airline_section_z')
if winwidth(0) > 80
let g:airline_section_z = airline#section#create(['windowswap', 'obsession', '%3p%%'.spc, 'linenr', 'maxlinenr', spc.':%3v'])
else
let g:airline_section_z = airline#section#create(['%3p%%'.spc, 'linenr', ':%3v'])
endif
endif
if !exists('g:airline_section_error')
let g:airline_section_error = airline#section#create(['ycm_error_count', 'syntastic-err', 'eclim', 'neomake_error_count', 'ale_error_count'])
endif
if !exists('g:airline_section_warning')
let g:airline_section_warning = airline#section#create(['ycm_warning_count', 'syntastic-warn', 'neomake_warning_count', 'ale_warning_count', 'whitespace'])
endif
endfunction

View File

@@ -0,0 +1,59 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
" 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

@@ -0,0 +1,99 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
let s:parts = {}
" PUBLIC API {{{
function! airline#parts#define(key, config)
let s:parts[a:key] = get(s:parts, a:key, {})
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)
call airline#parts#define(a:key, { 'function': a:name })
endfunction
function! airline#parts#define_text(key, text)
call airline#parts#define(a:key, { 'text': a:text })
endfunction
function! airline#parts#define_raw(key, raw)
call airline#parts#define(a:key, { 'raw': a:raw })
endfunction
function! airline#parts#define_minwidth(key, width)
call airline#parts#define(a:key, { 'minwidth': a:width })
endfunction
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, '')
endfor
endfunction
function! airline#parts#get(key)
return get(s:parts, a:key, {})
endfunction
" }}}
function! airline#parts#mode()
return airline#util#shorten(get(w:, 'airline_current_mode', ''), 79, 1)
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
function! airline#parts#spell()
return g:airline_detect_spell && &spell ? g:airline_symbols.spell : ''
endfunction
function! airline#parts#iminsert()
if g:airline_detect_iminsert && &iminsert && exists('b:keymap_name')
return toupper(b:keymap_name)
endif
return ''
endfunction
function! airline#parts#readonly()
if &readonly && &modifiable && !filereadable(bufname('%'))
return '[noperm]'
else
return &readonly ? g:airline_symbols.readonly : ''
endif
endfunction
function! airline#parts#filetype()
return winwidth(0) < 90 && strlen(&filetype) > 3 ? matchstr(&filetype, '...'). (&encoding is? 'utf-8' ? '…' : '>') : &filetype
endfunction
function! airline#parts#ffenc()
let expected = get(g:, 'airline#parts#ffenc#skip_expected_string', '')
let bomb = &l:bomb ? '[BOM]' : ''
let ff = strlen(&ff) ? '['.&ff.']' : ''
if expected is# &fenc.bomb.ff
return ''
else
return &fenc.bomb.ff
endif
endfunction

View File

@@ -0,0 +1,85 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
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 = ''
let add_sep = get(l:, 'add_sep', 0)
if exists('part.function')
let func = (part.function).'()'
elseif exists('part.text')
let func = '"'.(part.text).'"'
else
if a:append > 0 && idx != 0
let val .= s:spc.g:airline_left_alt_sep.s:spc
endif
if a:append < 0 && idx != 0
let t = ''
if !add_sep
let t = s:spc.g:airline_right_alt_sep.s:spc
endif
let val = t.val
endif
if exists('part.raw')
let _ .= s:wrap_accent(part, val.(part.raw))
continue
else
let _ .= s:wrap_accent(part, val.a:parts[idx])
continue
endif
endif
let minwidth = get(part, 'minwidth', 0)
if a:append > 0 && idx != 0
let partval = printf('%%{airline#util#append(%s,%s)}', func, minwidth)
" will add an extra separator, if minwidth is zero
let add_sep = (minwidth == 0)
elseif a:append < 0 && idx != len(a:parts) - 1
let partval = printf('%%{airline#util#prepend(%s,%s)}', func, minwidth)
" will add an extra separator, if minwidth is zero
let add_sep = (minwidth == 0)
else
let partval = printf('%%{airline#util#wrap(%s,%s)}', func, minwidth)
let add_sep = 0
endif
if exists('part.condition')
let partval = substitute(partval, '{', '\="{".(part.condition)." ? "', '')
let partval = substitute(partval, '}', ' : ""}', '')
endif
let val .= s:wrap_accent(part, partval)
let _ .= val
endfor
return _
endfunction
function! airline#section#create(parts)
return s:create(a:parts, 0)
endfunction
function! airline#section#create_left(parts)
return s:create(a:parts, 1)
endfunction
function! airline#section#create_right(parts)
return s:create(a:parts, -1)
endfunction

View File

@@ -1,12 +1,73 @@
" generates a hashtable 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 {
\ 'mode': [ a:section1[0] , a:section1[1] , a:section1[2] , a:section1[3] , get(a:section1, 4, 'bold') ] ,
\ 'mode_separator': [ a:section1[1] , a:section2[1] , a:section1[3] , a:section2[3] , '' ] ,
\ 'info': [ a:section2[0] , a:section2[1] , a:section2[2] , a:section2[3] , get(a:section2, 4, '' ) ] ,
\ 'info_separator': [ a:section2[1] , a:section3[1] , a:section2[3] , a:section3[3] , '' ] ,
\ 'statusline': [ a:section3[0] , a:section3[1] , a:section3[2] , a:section3[3] , get(a:section3, 4, '' ) ] ,
\ 'file': [ a:file[0] , a:file[1] , a:file[2] , a:file[3] , get(a:file , 4, '' ) ] ,
\ }
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
" generates a dictionary which defines the colors for each highlight group
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, ...)
return call('airline#highlighter#get_highlight', [a:group] + a:000)
endfunction
function! airline#themes#get_highlight2(fg, bg, ...)
return call('airline#highlighter#get_highlight2', [a:fg, a:bg] + a:000)
endfunction
function! airline#themes#patch(palette)
for mode in keys(a:palette)
if !has_key(a:palette[mode], 'airline_warning')
let a:palette[mode]['airline_warning'] = [ '#000000', '#df5f00', 232, 166 ]
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.none = [ '', '', '', '', '' ]
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,53 +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' , s:N3[1] , 196 , s:N3[3] , '' ]
let s:IA = [ s:N2[1] , s:N3[1] , s:N2[3] , s:N3[3] , '' ]
let g:airline#themes#badwolf#normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let g:airline#themes#badwolf#normal_modified = {
\ 'mode_separator' : [ s:N1[1] , s:N4[0] , s:N1[3] , s:N4[1] , 'bold' ] ,
\ 'info' : [ s:N2[0] , s:N4[0] , s:N2[2] , s:N4[1] , '' ] ,
\ 'info_separator' : [ s:N4[0] , s:N2[1] , s:N4[1] , s:N2[3] , 'bold' ] ,
\ 'statusline' : [ s:V1[1] , s:N2[1] , s:V1[3] , s:N2[3] , '' ] }
let g:airline#themes#badwolf#insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3, s:file)
let g:airline#themes#badwolf#insert_modified = {
\ 'info_separator' : [ s:I2[1] , s:N2[1] , s:I2[3] , s:N2[3] , 'bold' ] ,
\ 'statusline' : [ s:V1[1] , s:N2[1] , s:V1[3] , s:N2[3] , '' ] }
let g:airline#themes#badwolf#insert_paste = {
\ 'mode' : [ s:I1[0] , s:PA[0] , s:I1[2] , s:PA[1] , '' ] ,
\ 'mode_separator' : [ s:PA[0] , s:I2[1] , s:PA[1] , s:I2[3] , '' ] }
let g:airline#themes#badwolf#replace = copy(airline#themes#badwolf#insert)
let g:airline#themes#badwolf#replace.mode = [ s:I1[0] , s:RE[0] , s:I1[2] , s:RE[1] , '' ]
let g:airline#themes#badwolf#replace.mode_separator = [ s:RE[0] , s:I2[1] , s:RE[1] , s:I2[3] , '' ]
let g:airline#themes#badwolf#replace_modified = g:airline#themes#badwolf#insert_modified
let g:airline#themes#badwolf#visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3, s:file)
let g:airline#themes#badwolf#visual_modified = {
\ 'info_separator' : [ s:V2[1] , s:V4[0] , s:V2[3] , s:V4[1] , 'bold' ] ,
\ 'statusline' : [ s:V3[0] , s:V4[0] , s:V3[2] , s:V4[1] , '' ] }
let g:airline#themes#badwolf#inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA, s:file)
let g:airline#themes#badwolf#inactive_modified = {
\ 'statusline' : [ s:V1[1] , '' , s:V1[3] , '' , '' ] }

View File

@@ -1,47 +1,103 @@
let s:file = [ '#ff0000' , '#1c1c1c' , 160 , 233 , '' ]
let s:N1 = [ '#00005f' , '#dfff00' , 17 , 190 ]
let s:N2 = [ '#ffffff' , '#444444' , 255 , 238 ]
let s:N3 = [ '#9cffd3' , '#202020' , 85 , 234 ]
let g:airline#themes#dark#normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let g:airline#themes#dark#normal_modified = {
\ 'info_separator': [ '#444444' , '#5f005f' , 238 , 53 , '' ] ,
\ 'statusline': [ '#ffffff' , '#5f005f' , 255 , 53 , '' ] ,
scriptencoding utf-8
" Each theme is contained in its own file and declares variables scoped to the
" file. These variables represent the possible "modes" that airline can
" detect. The mode is the return value of mode(), which gets converted to a
" readable string. The following is a list currently supported modes: normal,
" insert, replace, visual, and inactive.
"
" Each mode can also have overrides. These are small changes to the mode that
" don't require a completely different look. "modified" and "paste" are two
" such supported overrides. These are simply suffixed to the major mode,
" separated by an underscore. For example, "normal_modified" would be normal
" mode where the current buffer is modified.
"
" The theming algorithm is a 2-pass system where the mode will draw over all
" parts of the statusline, and then the override is applied after. This means
" it is possible to specify a subset of the theme in overrides, as it will
" 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 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 ]
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
" declared.
let g:airline#themes#dark#palette.normal_modified = {
\ 'airline_c': [ '#ffffff' , '#5f005f' , 255 , 53 , '' ] ,
\ }
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#insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3, s:file)
let g:airline#themes#dark#insert_modified = {
\ 'info_separator': [ '#005fff' , '#5f005f' , 27 , 53 , '' ] ,
\ 'statusline': [ '#ffffff' , '#5f005f' , 255 , 53 , '' ] ,
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 , '' ] ,
\ }
let g:airline#themes#dark#insert_paste = {
\ 'mode': [ s:I1[0] , '#d78700' , s:I1[2] , 172 , '' ] ,
\ 'mode_separator': [ '#d78700' , s:I2[1] , 172 , s:I2[3] , '' ] ,
let g:airline#themes#dark#palette.insert_paste = {
\ 'airline_a': [ s:I1[0] , '#d78700' , s:I1[2] , 172 , '' ] ,
\ }
let g:airline#themes#dark#replace = copy(g:airline#themes#dark#insert)
let g:airline#themes#dark#replace.mode = [ s:I2[0] , '#af0000' , s:I2[2] , 124 , '' ]
let g:airline#themes#dark#replace.mode_separator = [ '#af0000' , s:I2[1] , 124 , s:I2[3] , '' ]
let g:airline#themes#dark#replace_modified = g:airline#themes#dark#insert_modified
let g:airline#themes#dark#palette.replace = copy(g:airline#themes#dark#palette.insert)
let g:airline#themes#dark#palette.replace.airline_a = [ s:I2[0] , '#af0000' , s:I2[2] , 124 , '' ]
let g:airline#themes#dark#palette.replace_modified = g:airline#themes#dark#palette.insert_modified
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#visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3, s:file)
let g:airline#themes#dark#visual_modified = {
\ 'info_separator': [ '#ff5f00' , '#5f005f' , 202 , 53 , '' ] ,
\ 'statusline': [ '#ffffff' , '#5f005f' , 255 , 53 , '' ] ,
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 , '' ] ,
\ }
let s:IA = [ '#4e4e4e' , '#1c1c1c' , 239 , 234 , '' ]
let g:airline#themes#dark#inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA, s:file)
let g:airline#themes#dark#inactive_modified = {
\ 'statusline': [ '#5f005f' , '' , '53' , '' , '' ] ,
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)
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
" they will be chosen automatically from the existing palette.
if get(g:, 'loaded_ctrlp', 0)
let g:airline#themes#dark#palette.ctrlp = airline#extensions#ctrlp#generate_color_map(
\ [ '#d7d7ff' , '#5f00af' , 189 , 55 , '' ],
\ [ '#ffffff' , '#875fd7' , 231 , 98 , '' ],
\ [ '#5f00af' , '#ffffff' , 55 , 231 , 'bold' ])
endif

View File

@@ -1,62 +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' , s:N3[1] , 196 , s:N3[3] , '' ]
let s:IA = [ s:N2[1] , s:N3[1] , s:N2[3], s:N3[3] , '' ]
let g:airline#themes#laederon#normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let g:airline#themes#laederon#normal_modified = {
\ 'mode_separator' : [ s:N1[1] , s:N4[0] , s:N1[3] , s:N4[1] , 'bold' ] ,
\ 'info' : [ s:N2[0] , s:N4[0] , s:N2[2] , s:N4[1] , '' ] ,
\ 'info_separator' : [ s:N4[0] , s:N2[1] , s:N4[1] , s:N2[3] , 'bold' ] ,
\ 'statusline' : [ s:V1[1] , s:N2[1] , s:V1[3] , s:N2[3] , '' ] }
let g:airline#themes#laederon#insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3, s:file)
let g:airline#themes#laederon#insert_modified = {
\ 'info_separator' : [ s:I2[1] , s:N2[1] , s:I2[3] , s:N2[3] , 'bold' ] ,
\ 'statusline' : [ s:V2[1] , s:N2[1] , s:V2[3] , s:N2[3] , '' ] }
let g:airline#themes#laederon#insert_paste = {
\ 'mode' : [ s:I1[0] , s:PA[0] , s:I1[2] , s:PA[1] , '' ] ,
\ 'mode_separator' : [ s:PA[0] , s:I2[1] , s:PA[1] , s:I2[3] , '' ] }
let g:airline#themes#laederon#replace = copy(airline#themes#laederon#insert)
let g:airline#themes#laederon#replace.mode = [ s:I1[0] , s:RE[0] , s:I1[2] , s:RE[1] , '' ]
let g:airline#themes#laederon#replace.mode_separator = [ s:RE[0] , s:I2[1] , s:RE[1] , s:V4[1] , '' ]
let g:airline#themes#laederon#replace_modified = g:airline#themes#laederon#insert_modified
let g:airline#themes#laederon#visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3, s:file)
let g:airline#themes#laederon#visual_modified = {
\ 'info_separator' : [ s:V2[1] , s:V4[0] , s:V2[3] , s:V4[1] , 'bold' ] ,
\ 'statusline' : [ s:V3[0] , s:V4[0] , s:V3[2] , s:V4[1] , '' ] }
let g:airline#themes#laederon#inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA, s:file)
let g:airline#themes#laederon#inactive_modified = {
\ 'statusline' : [ s:V1[1] , '', s:V1[3] , '', '' ] }

View File

@@ -1,47 +0,0 @@
let s:file = [ '#df0000' , '#ffffff' , 160 , 255 ]
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#normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let g:airline#themes#light#normal_modified = {
\ 'info_separator': [ '#00dfff' , '#ffdfdf' , 45 , 224 , '' ] ,
\ 'statusline': [ '#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#insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3, s:file)
let g:airline#themes#light#insert_modified = {
\ 'info_separator': [ '#00df87' , '#ffdfdf' , 42 , 224 , '' ] ,
\ 'statusline': [ '#df0000' , '#ffdfdf' , 160 , 224 , '' ] ,
\ }
let g:airline#themes#light#insert_paste = {
\ 'mode': [ s:I1[0] , '#d78700' , s:I1[2] , 172 , '' ] ,
\ 'mode_separator': [ '#d78700' , s:I2[1] , 172 , s:I2[3] , '' ] ,
\ }
let g:airline#themes#light#replace = copy(g:airline#themes#light#insert)
let g:airline#themes#light#replace.mode = [ s:I2[0] , '#ff0000' , s:I1[2] , 196 , '' ]
let g:airline#themes#light#replace.mode_separator = [ '#ff0000' , s:I2[1] , 196 , s:I2[3] , '' ]
let g:airline#themes#light#replace_modified = g:airline#themes#light#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#visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3, s:file)
let g:airline#themes#light#visual_modified = {
\ 'info_separator': [ '#ffaf00' , '#ffdfdf' , 214 , 224 , '' ] ,
\ 'statusline': [ '#df0000' , '#ffdfdf' , 160 , 224 , '' ] ,
\ }
let s:IA = [ '#9e9e9e' , '#ffffff' , 247 , 255 , '' ]
let g:airline#themes#light#inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA, s:file)
let g:airline#themes#light#inactive_modified = {
\ 'statusline': [ '#df0000' , '' , '160' , '', '' ]
\ }

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#normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let g:airline#themes#powerlineish#insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3, s:file)
let g:airline#themes#powerlineish#insert_replace = {
\ 'mode' : [ s:RE[0] , s:I1[1] , s:RE[1] , s:I1[3] , '' ] ,
\ 'mode_separator' : [ s:I1[1] , s:I2[1] , s:I1[3] , s:I2[3] , '' ] }
let g:airline#themes#powerlineish#visual = {
\ 'mode' : [ s:V1[0] , s:V1[1] , s:V1[2] , s:V1[3] , '' ] ,
\ 'mode_separator' : [ s:V1[1] , s:N2[1] , s:V1[3] , s:N2[3] , '' ] }
let g:airline#themes#powerlineish#replace = copy(airline#themes#powerlineish#normal)
let g:airline#themes#powerlineish#replace.mode = [ s:RE[0] , s:RE[1] , s:RE[2] , s:RE[3] , '' ]
let g:airline#themes#powerlineish#replace.mode_separator = [ s:RE[1] , s:N2[1] , s:RE[3] , s:N2[3] , '' ]
let s:IA = [ s:N2[1] , s:N3[1] , s:N2[3] , s:N3[3] , '' ]
let g:airline#themes#powerlineish#inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA, s:file)

View File

@@ -1,102 +0,0 @@
let s:swap = 0
if exists('g:airline_powerline_fonts') && g:airline_powerline_fonts
let s:swap = 1
let s:left = 0
function! airline#themes#simple#left()
if s:left == 1
let s:left = 0
return ''
else
let s:left = 1
return ''
endif
endfunction
let g:airline_left_sep = '%{airline#themes#simple#left()}'
let s:right = 0
function! airline#themes#simple#right()
if s:right == 1
let s:right = 0
return ''
else
let s:right = 1
return ''
endif
endfunction
let g:airline_right_sep = '%{airline#themes#simple#right()}'
endif
if g:airline_left_sep == '' && g:airline_right_sep == ''
let s:swap = 1
endif
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 = s:swap ? [ s:guibg , '#00dfff' , s:termbg , 45 ] : [ '#00dfff' , s:guibg , 45 , s:termbg ]
let s:N2 = [ '#ff5f00' , s:guibg, 202 , s:termbg ]
let s:N3 = [ '#767676' , s:guibg, 243 , s:termbg ]
let g:airline#themes#simple#normal = {
\ 'mode': [ s:N1[0] , s:N1[1] , s:N1[2] , s:N1[3] , 'bold' ] ,
\ 'mode_separator': s:swap
\ ? [ '#00dfff' , s:N2[1] , 45 , s:N2[3] , 'bold' ]
\ : [ s:guisep , s:N2[1] , s:termsep , s:N2[3] , 'bold' ] ,
\ 'info': [ s:N2[0] , s:N2[1] , s:N2[2] , s:N2[3] , '' ] ,
\ 'info_separator': [ s:guisep , s:N3[1] , s:termsep , s:N3[3] , 'bold' ] ,
\ 'statusline': [ s:N3[0] , s:N3[1] , s:N3[2] , s:N3[3] , '' ] ,
\ 'file': s:file,
\ }
let g:airline#themes#simple#normal_modified = {
\ 'statusline': [ '#df0000' , s:guibg, 160 , s:termbg , '' ] ,
\ }
let s:I1 = s:swap ? [ s:guibg, '#5fff00' , s:termbg , 82 ] : [ '#5fff00' , s:guibg, 82 , s:termbg ]
let s:I2 = [ '#ff5f00' , s:guibg, 202 , s:termbg ]
let s:I3 = [ '#767676' , s:guibg, 243 , s:termbg ]
let g:airline#themes#simple#insert = {
\ 'mode': [ s:I1[0] , s:I1[1] , s:I1[2] , s:I1[3] , 'bold' ] ,
\ 'mode_separator': s:swap
\ ? [ '#5fff00' , s:I2[1] , 82 , s:I2[3] , 'bold' ]
\ : [ s:guisep , s:I2[1] , s:termsep , s:I2[3] , 'bold' ] ,
\ 'info': [ s:I2[0] , s:I2[1] , s:I2[2] , s:I2[3] , '' ] ,
\ 'info_separator': [ s:guisep , s:I3[1] , s:termsep , s:I3[3] , 'bold' ] ,
\ 'statusline': [ s:I3[0] , s:I3[1] , s:I3[2] , s:I3[3] , '' ] ,
\ }
let g:airline#themes#simple#insert_modified = copy(g:airline#themes#simple#normal_modified)
let g:airline#themes#simple#insert_paste = {
\ 'mode': [ s:I1[0] , '#d78700' , s:I1[2] , 172 , '' ] ,
\ 'mode_separator': [ '#d78700' , s:I2[1] , 172 , s:I2[3] , '' ] ,
\ }
let g:airline#themes#simple#replace = {
\ 'mode': [ s:I1[0] , '#af0000' , s:I1[2] , 124 , '' ] ,
\ 'mode_separator': [ '#af0000' , s:I2[1] , 124 , s:I2[3] , '' ] ,
\ }
let g:airline#themes#simple#replace_modified = copy(g:airline#themes#simple#normal_modified)
let s:V1 = s:swap ? [ s:guibg, '#dfdf00' , s:termbg , 184 ] : [ '#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#simple#visual = {
\ 'mode': [ s:V1[0] , s:V1[1] , s:V1[2] , s:V1[3] , 'bold' ] ,
\ 'mode_separator': s:swap
\ ? [ '#dfdf00' , s:V2[1] , 184 , s:V2[3] , 'bold' ]
\ : [ s:guisep , s:V2[1] , s:termsep , s:V2[3] , 'bold' ] ,
\ 'info': [ s:V2[0] , s:V2[1] , s:V2[2] , s:V2[3] , '' ] ,
\ 'info_separator': [ s:guisep , s:V3[1] , s:termsep , s:V3[3] , 'bold' ] ,
\ 'statusline': [ s:V3[0] , s:V3[1] , s:V3[2] , s:V3[3] , '' ] ,
\ }
let g:airline#themes#simple#visual_modified = copy(g:airline#themes#simple#normal_modified)
let s:IA = [ '#4e4e4e' , s:guibg , 239 , s:termbg , '' ]
let g:airline#themes#simple#inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA, s:file)
let g:airline#themes#simple#inactive_modified = copy(g:airline#themes#simple#normal_modified)

View File

@@ -1,163 +0,0 @@
""""""""""""""""""""""""""""""""""""""""""""""""
" Options
""""""""""""""""""""""""""""""""""""""""""""""""
let s:reduced = get(g:, 'airline_solarized_reduced', 1)
let s:background = get(g:, 'airline_solarized_bg', &background)
""""""""""""""""""""""""""""""""""""""""""""""""
" Colors
""""""""""""""""""""""""""""""""""""""""""""""""
" Base colors
let s:base03 = {'t': 234, 'g': '#002b36'}
let s:base02 = {'t': 235, 'g': '#073642'}
let s:base01 = {'t': 240, 'g': '#586e75'}
let s:base00 = {'t': 241, 'g': '#657b83'}
let s:base0 = {'t': 244, 'g': '#839496'}
let s:base1 = {'t': 245, 'g': '#93a1a1'}
let s:base2 = {'t': 254, 'g': '#eee8d5'}
let s:base3 = {'t': 230, 'g': '#fdf6e3'}
let s:yellow = {'t': 136, 'g': '#b58900'}
let s:orange = {'t': 166, 'g': '#cb4b16'}
let s:red = {'t': 160, 'g': '#dc322f'}
let s:magenta = {'t': 125, 'g': '#d33682'}
let s:violet = {'t': 61, 'g': '#6c71c4'}
let s:blue = {'t': 33, 'g': '#267bd2'}
let s:cyan = {'t': 37, 'g': '#2aa198'}
let s:green = {'t': 64, 'g': '#859900'}
let s:c218 = {'t': 218, 'g': '#ffafd7'}
let s:c52 = {'t': 52, 'g': '#5f0000'}
""""""""""""""""""""""""""""""""""""""""""""""""
" 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']
let s:N2 = [s:base2, s:base01, '']
if s:background == 'dark'
let s:N3 = [s:base1, s:base02, '']
else
let s:N3 = [s:base00, s:base2, '']
endif
let s:NF = [s:orange, s:N3[1], '']
if s:reduced
if s:background == 'dark'
let s:NM = {
\ 'info_separator': [s:N2[1], s:N3[1], ''],
\ 'statusline': [s:magenta, s:N3[1], ''],
\ }
else
let s:NM = {
\ 'info_separator': [s:N2[1], s:N3[1], ''],
\ 'statusline': [s:magenta, s:N3[1], ''],
\ }
endif
else
if s:background == 'dark'
let s:NM = {
\ 'info_separator': [s:N2[1], s:c52, ''],
\ 'statusline': [s:c218, s:c52, '']
\ }
else
let s:NM = {
\ 'info_separator': [s:N2[1], s:c218, ''],
\ 'statusline': [s:red, s:c218, '']
\ }
endif
endif
" Insert mode
let s:I1 = [s:N1[0], s:green, 'bold']
if s:reduced
let s:I2 = s:N2
else
let s:I2 = [s:base3, s:base1, '']
endif
let s:I3 = s:N3
let s:IF = s:NF
if s:reduced
let s:IM = s:NM
else
let s:IM = {
\ 'info_separator': [s:I2[1], s:NM.statusline[1], ''],
\ 'statusline': s:NM.statusline
\ }
endif
" Visual mode
let s:V1 = [s:N1[0], s:orange, 'bold']
if s:reduced
let s:V2 = s:N2
let s:V3 = s:N3
else
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#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#inactive_modified = {
\ 'statusline': [s:NM.statusline[0].g, '', s:NM.statusline[0].t, '', ''] }
let g:airline#themes#solarized#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#normal_modified = {
\ 'info_separator': [s:NM.info_separator[0].g, s:NM.info_separator[1].g,
\ s:NM.info_separator[0].t, s:NM.info_separator[1].t, s:NM.info_separator[2]],
\ 'statusline': [s:NM.statusline[0].g, s:NM.statusline[1].g,
\ s:NM.statusline[0].t, s:NM.statusline[1].t, s:NM.statusline[2]]}
let g:airline#themes#solarized#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#insert_modified = {
\ 'info_separator': [s:IM.info_separator[0].g, s:IM.info_separator[1].g,
\ s:IM.info_separator[0].t, s:IM.info_separator[1].t, s:IM.info_separator[2]],
\ 'statusline': [s:IM.statusline[0].g, s:IM.statusline[1].g,
\ s:IM.statusline[0].t, s:IM.statusline[1].t, s:IM.statusline[2]]}
let g:airline#themes#solarized#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#visual_modified = {
\ 'info_separator': [s:VM.info_separator[0].g, s:VM.info_separator[1].g,
\ s:VM.info_separator[0].t, s:VM.info_separator[1].t, s:VM.info_separator[2]],
\ 'statusline': [s:VM.statusline[0].g, s:VM.statusline[1].g,
\ s:VM.statusline[0].t, s:VM.statusline[1].t, s:VM.statusline[2]]}

View File

@@ -1,64 +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' , s:N3[1] , 196 , s:N3[3] , '' ]
let s:IA = [ s:N2[1] , s:N3[1] , s:N2[3], s:N3[3] , '' ]
let g:airline#themes#ubaryd#normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3, s:file)
let g:airline#themes#ubaryd#normal_modified = {
\ 'mode_separator' : [ s:N1[1] , s:N4[0] , s:N1[3] , s:N4[1] , 'bold' ] ,
\ 'info' : [ s:N2[0] , s:N4[0] , s:N2[2] , s:N4[1] , '' ] ,
\ 'info_separator' : [ s:N4[0] , s:N2[1] , s:N4[1] , s:N2[3] , 'bold' ] ,
\ 'statusline' : [ s:V1[1] , s:N2[1] , s:V1[3] , s:N2[3] , '' ] }
let g:airline#themes#ubaryd#inactive = {
\ 'mode' : [ s:N2[1] , s:N3[1] , s:N2[3] , s:N3[3] , '' ] }
let g:airline#themes#ubaryd#insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3, s:file)
let g:airline#themes#ubaryd#insert_modified = {
\ 'info_separator' : [ s:I2[1] , s:N2[1] , s:I2[3] , s:N2[3] , 'bold' ] ,
\ 'statusline' : [ s:V2[1] , s:N2[1] , s:V2[3] , s:N2[3] , '' ] }
let g:airline#themes#ubaryd#insert_paste = {
\ 'mode' : [ s:I1[0] , s:PA[0] , s:I1[2] , s:PA[1] , '' ] ,
\ 'mode_separator' : [ s:PA[0] , s:I2[1] , s:PA[1] , s:I2[3] , '' ] }
let g:airline#themes#ubaryd#replace = copy(airline#themes#ubaryd#insert)
let g:airline#themes#ubaryd#replace.mode = [ s:I1[0] , s:RE[0] , s:I1[2] , s:RE[1] , '' ]
let g:airline#themes#ubaryd#replace.mode_separator = [ s:RE[0] , s:I2[1] , s:RE[1] , s:V4[1] , '' ]
let g:airline#themes#ubaryd#replace_modified = g:airline#themes#ubaryd#insert_modified
let g:airline#themes#ubaryd#visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3, s:file)
let g:airline#themes#ubaryd#visual_modified = {
\ 'info_separator' : [ s:V2[1] , s:V4[0] , s:V2[3] , s:V4[1] , 'bold' ] ,
\ 'statusline' : [ s:V3[0] , s:V4[0] , s:V3[2] , s:V4[1] , '' ] }
let g:airline#themes#ubaryd#inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA, s:file)
let g:airline#themes#ubaryd#inactive_modified = {
\ 'statusline' : [ s:V1[1] , '', s:V1[3], '', '']
\ }

113
autoload/airline/util.vim Normal file
View File

@@ -0,0 +1,113 @@
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
call airline#init#bootstrap()
let s:spc = g:airline_symbols.space
function! airline#util#shorten(text, winwidth, minwidth, ...)
if winwidth(0) < a:winwidth && len(split(a:text, '\zs')) > a:minwidth
if get(a:000, 0, 0)
" shorten from tail
return '…'.matchstr(a:text, '.\{'.a:minwidth.'}$')
else
" shorten from beginning of string
return matchstr(a:text, '^.\{'.a:minwidth.'}').'…'
endif
else
return a:text
endif
endfunction
function! airline#util#wrap(text, minwidth)
if a:minwidth > 0 && winwidth(0) < a:minwidth
return ''
endif
return a:text
endfunction
function! airline#util#append(text, minwidth)
if a:minwidth > 0 && winwidth(0) < a:minwidth
return ''
endif
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#warning(msg)
echohl WarningMsg
echomsg "airline: ".a:msg
echohl Normal
endfunction
function! airline#util#prepend(text, minwidth)
if a:minwidth > 0 && winwidth(0) < a:minwidth
return ''
endif
return empty(a:text) ? '' : a:text.s:spc.g:airline_right_alt_sep.s:spc
endfunction
if v:version >= 704
function! airline#util#getwinvar(winnr, key, def)
return getwinvar(a:winnr, a:key, a:def)
endfunction
else
function! airline#util#getwinvar(winnr, key, def)
let winvals = getwinvar(a:winnr, '')
return get(winvals, a:key, a:def)
endfunction
endif
if v:version >= 704
function! airline#util#exec_funcrefs(list, ...)
for Fn in a:list
let code = call(Fn, a:000)
if code != 0
return code
endif
endfor
return 0
endfunction
else
function! airline#util#exec_funcrefs(list, ...)
" for 7.2; we cannot iterate the list, hence why we use range()
" for 7.3-[97, 328]; we cannot reuse the variable, hence the {}
for i in range(0, len(a:list) - 1)
let Fn{i} = a:list[i]
let code = call(Fn{i}, a:000)
if code != 0
return code
endif
endfor
return 0
endfunction
endif
" Define a wrapper over system() that uses nvim's async job control if
" available. This way we avoid overwriting v:shell_error, which might
" potentially disrupt other plugins.
if has('nvim')
function! s:system_job_handler(job_id, data, event) dict
if a:event == 'stdout'
let self.buf .= join(a:data)
endif
endfunction
function! airline#util#system(cmd)
let l:config = {
\ 'buf': '',
\ 'on_stdout': function('s:system_job_handler'),
\ }
let l:id = jobstart(a:cmd, l:config)
if l:id < 1
return system(a:cmd)
endif
call jobwait([l:id])
return l:config.buf
endfunction
else
function! airline#util#system(cmd)
return system(a:cmd)
endfunction
endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,54 +1,116 @@
" 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
scriptencoding utf-8
if &cp || v:version < 702 || (exists('g:loaded_airline') && g:loaded_airline)
finish
endif
let g:loaded_airline = 1
function! s:check_defined(variable, default)
if !exists(a:variable)
let {a:variable} = a:default
endif
endfunction
call s:check_defined('g:airline_left_sep', exists('g:airline_powerline_fonts')?"":">")
call s:check_defined('g:airline_left_alt_sep', exists('g:airline_powerline_fonts')?"":">")
call s:check_defined('g:airline_right_sep', exists('g:airline_powerline_fonts')?"":"<")
call s:check_defined('g:airline_right_alt_sep', exists('g:airline_powerline_fonts')?"":"<")
call s:check_defined('g:airline_enable_bufferline', 1)
call s:check_defined('g:airline_enable_fugitive', 1)
call s:check_defined('g:airline_enable_syntastic', 1)
call s:check_defined('g:airline_fugitive_prefix', exists('g:airline_powerline_fonts')?' ':'')
call s:check_defined('g:airline_readonly_symbol', exists('g:airline_powerline_fonts')?'':'RO')
call s:check_defined('g:airline_linecolumn_prefix', exists('g:airline_powerline_fonts')?' ':':')
call s:check_defined('g:airline_paste_symbol', (exists('g:airline_powerline_fonts') ? ' ' : '').'PASTE')
call s:check_defined('g:airline_theme', 'dark')
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_window_override_funcrefs', [])
call s:check_defined('g:airline_mode_map', {
\ 'n' : 'NORMAL',
\ 'i' : 'INSERT',
\ 'R' : 'RPLACE',
\ 'v' : 'VISUAL',
\ 'V' : 'V-LINE',
\ 'c' : 'CMD ',
\ '' : 'V-BLCK',
\ })
let s:airline_initialized = 0
function! s:init()
if !s:airline_initialized
call airline#extensions#load()
call airline#update_externals()
call airline#load_theme(g:airline_theme)
call s:check_defined('g:airline_section_a', '%{g:airline_current_mode_text} %{&paste ? g:airline_paste_symbol." " : ""}')
call s:check_defined('g:airline_section_b', '%{g:airline_externals_fugitive}')
call s:check_defined('g:airline_section_c', g:airline_externals_bufferline)
call s:check_defined('g:airline_section_gutter', '')
call s:check_defined('g:airline_section_x', "%{strlen(&filetype)>0?&filetype:''}")
call s:check_defined('g:airline_section_y', "%{strlen(&fenc)>0?&fenc:''}%{strlen(&ff)>0?'['.&ff.']':''}")
call s:check_defined('g:airline_section_z', '%3p%% '.g:airline_linecolumn_prefix.'%3l:%3c')
let s:airline_initialized = 1
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() && (!&previewwindow || g:airline_exclude_preview)
return
endif
" Handle each window only once, since we might come here several times for
" different autocommands.
let l:key = [bufnr('%'), winnr(), winnr('$'), tabpagenr(), &ft]
if get(g:, 'airline_last_window_changed', []) == l:key
\ && &stl is# '%!airline#statusline('.winnr().')'
\ && &ft !~? 'gitcommit'
" fugitive is special, it changes names and filetypes several times,
" make sure the caching does not get into its way
return
endif
let g:airline_last_window_changed = l:key
call s:init()
call airline#update_statusline()
endfunction
function! s:on_colorscheme_changed()
call s:init()
unlet! g:airline#highlighter#normal_fg_hi
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
call airline#load_theme()
endfunction
function! airline#cmdwinenter(...)
call airline#extensions#apply_left_override('Command Line', '')
endfunction
function! s:airline_toggle()
if exists("#airline")
augroup airline
au!
augroup END
augroup! airline
if exists("s:stl")
let &stl = s:stl
endif
silent doautocmd User AirlineToggledOff
else
let s:stl = &statusline
augroup airline
autocmd!
autocmd CmdwinEnter *
\ call airline#add_statusline_func('airline#cmdwinenter')
\ | call <sid>on_window_changed()
autocmd CmdwinLeave * call airline#remove_statusline_func('airline#cmdwinenter')
autocmd GUIEnter,ColorScheme * call <sid>on_colorscheme_changed()
autocmd VimEnter,WinEnter,BufWinEnter,FileType,BufUnload *
\ call <sid>on_window_changed()
if exists('#CompleteDone')
autocmd CompleteDone * call <sid>on_window_changed()
endif
autocmd VimResized * unlet! w:airline_lastmode | :call <sid>airline_refresh()
autocmd TabEnter * :unlet! w:airline_lastmode | let w:airline_active=1
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 s:on_window_changed()
endif
silent doautocmd User AirlineToggledOn
endif
endfunction
@@ -56,18 +118,33 @@ 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#load_theme(a:1)
call airline#switch_theme(a:1)
else
echo g:airline_theme
endif
endfunction
command! -nargs=? -complete=customlist,<sid>get_airline_themes AirlineTheme call <sid>airline_theme(<f-args>)
augroup airline
au!
autocmd ColorScheme * call airline#highlight(['normal'])
autocmd WinLeave * call airline#update_statusline(0)
autocmd WinEnter,BufWinEnter,FileType * call <sid>init() | call airline#update_statusline(1)
augroup END
function! s:airline_refresh()
if !exists("#airline")
" disabled
return
endif
let nomodeline=''
if v:version > 703 || v:version == 703 && has("patch438")
let nomodeline = '<nomodeline>'
endif
exe printf("silent doautocmd %s User AirlineBeforeRefresh", nomodeline)
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()

87
t/airline.vim Normal file
View File

@@ -0,0 +1,87 @@
let g:airline_theme = 'dark'
source plugin/airline.vim
doautocmd VimEnter
function! MyFuncref(...)
call a:1.add_raw('hello world')
return 1
endfunction
function! MyIgnoreFuncref(...)
return -1
endfunction
function! MyAppend1(...)
call a:1.add_raw('hello')
endfunction
function! MyAppend2(...)
call a:1.add_raw('world')
endfunction
describe 'airline'
before
let g:airline_statusline_funcrefs = []
end
it 'should run user funcrefs first'
call airline#add_statusline_func('MyFuncref')
let &statusline = ''
call airline#update_statusline()
Expect airline#statusline(1) =~ 'hello world'
end
it 'should not change the statusline with -1'
call airline#add_statusline_funcref(function('MyIgnoreFuncref'))
let &statusline = 'foo'
call airline#update_statusline()
Expect &statusline == 'foo'
end
it 'should support multiple chained funcrefs'
call airline#add_statusline_func('MyAppend1')
call airline#add_statusline_func('MyAppend2')
call airline#update_statusline()
Expect airline#statusline(1) =~ 'helloworld'
end
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_a#%#airline_a_bold#%{airline#util#wrap(airline#parts#mode(),0)}%#airline_a#'
end
it 'should remove funcrefs properly'
let c = len(g:airline_statusline_funcrefs)
call airline#add_statusline_func('MyIgnoreFuncref')
call airline#remove_statusline_func('MyIgnoreFuncref')
Expect len(g:airline_statusline_funcrefs) == c
end
it 'should overwrite the statusline with active and inactive splits'
wincmd s
Expect airline#statusline(1) !~ 'inactive'
Expect airline#statusline(2) =~ 'inactive'
wincmd c
end
it 'should collapse the inactive split if the variable is set true'
let g:airline_inactive_collapse = 1
wincmd s
Expect getwinvar(2, '&statusline') !~ 'airline#parts#mode'
wincmd c
end
it 'should not collapse the inactive split if the variable is set false'
let g:airline_inactive_collapse = 0
wincmd s
Expect getwinvar(2, '&statusline') != 'airline#parts#mode'
wincmd c
end
it 'should include check_mode'
Expect airline#statusline(1) =~ 'airline#check_mode'
end
end

106
t/builder.vim Normal file
View File

@@ -0,0 +1,106 @@
let g:airline_theme = 'dark'
call airline#init#bootstrap()
describe 'active builder'
before
let s:builder = airline#builder#new({'active': 1})
end
it 'should start with an empty statusline'
let stl = s:builder.build()
Expect stl == ''
end
it 'should transition colors from one to the next'
call s:builder.add_section('Normal', 'hello')
call s:builder.add_section('Search', 'world')
let stl = s:builder.build()
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#helloworld'
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'
call s:builder.split()
let stl = s:builder.build()
Expect stl =~ '%='
end
it 'after split, sections use the right separator'
call s:builder.split()
call s:builder.add_section('Normal', 'hello')
call s:builder.add_section('Search', 'world')
let stl = s:builder.build()
Expect stl =~ 'hello%#Normal_to_Search#%#Search#world'
end
it 'should not repeat the same highlight group'
call s:builder.add_section('Normal', 'hello')
call s:builder.add_section('Normal', 'hello')
let stl = s:builder.build()
Expect stl == '%#Normal#hellohello'
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'
before
let s:builder = airline#builder#new({'active': 0})
end
it 'should transition colors from one to the next'
call s:builder.add_section('Normal', 'hello')
call s:builder.add_section('Search', 'world')
let stl = s:builder.build()
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

35
t/commands.vim Normal file
View File

@@ -0,0 +1,35 @@
source plugin/airline.vim
doautocmd VimEnter
describe 'commands'
it 'should toggle off and on'
execute 'AirlineToggle'
Expect exists('#airline') to_be_false
execute 'AirlineToggle'
Expect exists('#airline') to_be_true
end
it 'should toggle whitespace off and on'
call airline#extensions#load()
execute 'AirlineToggleWhitespace'
Expect exists('#airline_whitespace') to_be_false
execute 'AirlineToggleWhitespace'
Expect exists('#airline_whitespace') to_be_true
end
it 'should display theme name with no args'
execute 'AirlineTheme simple'
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

31
t/extensions_default.vim Normal file
View File

@@ -0,0 +1,31 @@
let g:airline#extensions#default#layout = [
\ [ 'c', 'a', 'b', 'warning' ],
\ [ 'x', 'z', 'y' ]
\ ]
source plugin/airline.vim
doautocmd VimEnter
describe 'default'
before
let s:builder = airline#builder#new({'active': 1})
end
it 'should use the layout'
call airline#extensions#default#apply(s:builder, { 'winnr': 1, 'active': 1 })
let stl = s:builder.build()
Expect stl =~ 'airline_c_to_airline_a'
Expect stl =~ 'airline_a_to_airline_b'
Expect stl =~ 'airline_b_to_airline_warning'
Expect stl =~ 'airline_x_to_airline_z'
Expect stl =~ 'airline_z_to_airline_y'
end
it 'should only render warning section in active splits'
wincmd s
Expect airline#statusline(1) =~ 'warning'
Expect airline#statusline(2) !~ 'warning'
wincmd c
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

87
t/init.vim Normal file
View File

@@ -0,0 +1,87 @@
let s:sections = ['a', 'b', 'c', 'gutter', 'x', 'y', 'z', 'warning']
function! s:clear()
for key in s:sections
unlet! g:airline_section_{key}
endfor
endfunction
call airline#init#bootstrap()
describe 'init sections'
before
call s:clear()
call airline#init#sections()
end
after
call s:clear()
end
it 'section a should have mode, paste, spell, iminsert'
Expect g:airline_section_a =~ 'mode'
Expect g:airline_section_a =~ 'paste'
Expect g:airline_section_a =~ 'spell'
Expect g:airline_section_a =~ 'iminsert'
end
it 'section b should be blank because no extensions are installed'
Expect g:airline_section_b == ''
end
it 'section c should be file'
Expect g:airline_section_c == '%<%f%m %#__accent_red#%{airline#util#wrap(airline#parts#readonly(),0)}%#__restore__#'
end
it 'section x should be filetype'
Expect g:airline_section_x == '%{airline#util#wrap(airline#parts#filetype(),0)}'
end
it 'section y should be fenc and ff'
Expect g:airline_section_y =~ 'ff'
Expect g:airline_section_y =~ 'fenc'
end
it 'section z should be line numbers'
Expect g:airline_section_z =~ '%3p%%'
Expect g:airline_section_z =~ '%4l'
Expect g:airline_section_z =~ '%3v'
end
it 'should not redefine sections already defined'
for s in s:sections
let g:airline_section_{s} = s
endfor
call airline#init#bootstrap()
for s in s:sections
Expect g:airline_section_{s} == s
endfor
end
it 'all default statusline extensions should be blank'
Expect airline#parts#get('ale_error_count').raw == ''
Expect airline#parts#get('ale_warning_count').raw == ''
Expect airline#parts#get('hunks').raw == ''
Expect airline#parts#get('branch').raw == ''
Expect airline#parts#get('eclim').raw == ''
Expect airline#parts#get('neomake_error_count').raw == ''
Expect airline#parts#get('neomake_warning_count').raw == ''
Expect airline#parts#get('obsession').raw == ''
Expect airline#parts#get('syntastic-err').raw == ''
Expect airline#parts#get('syntastic-warn').raw == ''
Expect airline#parts#get('tagbar').raw == ''
Expect airline#parts#get('whitespace').raw == ''
Expect airline#parts#get('windowswap').raw == ''
Expect airline#parts#get('ycm_error_count').raw == ''
Expect airline#parts#get('ycm_warning_count').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

39
t/parts.vim Normal file
View File

@@ -0,0 +1,39 @@
describe 'parts'
it 'overwrites existing values'
call airline#parts#define('foo', { 'test': '123' })
Expect airline#parts#get('foo').test == '123'
call airline#parts#define('foo', { 'test': '321' })
Expect airline#parts#get('foo').test == '321'
end
it 'can define a function part'
call airline#parts#define_function('func', 'bar')
Expect airline#parts#get('func').function == 'bar'
end
it 'can define a text part'
call airline#parts#define_text('text', 'bar')
Expect airline#parts#get('text').text == 'bar'
end
it 'can define a raw part'
call airline#parts#define_raw('raw', 'bar')
Expect airline#parts#get('raw').raw == 'bar'
end
it 'can define a minwidth'
call airline#parts#define_minwidth('mw', 123)
Expect airline#parts#get('mw').minwidth == 123
end
it 'can define a condition'
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

81
t/section.vim Normal file
View File

@@ -0,0 +1,81 @@
function! SectionSpec()
endfunction
describe 'section'
before
call airline#parts#define_text('text', 'text')
call airline#parts#define_raw('raw', 'raw')
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)}'
end
it 'should create left sections with separators'
let s = airline#section#create_left(['text', 'text'])
Expect s == '%{airline#util#wrap("text",0)}%{airline#util#append("text",0)}'
end
it 'should create right sections with separators'
let s = airline#section#create_right(['text', 'text'])
Expect s == '%{airline#util#prepend("text",0)}%{airline#util#wrap("text",0)}'
end
it 'should prefix with accent group if provided and restore afterwards'
call airline#parts#define('hi', {
\ 'raw': 'hello',
\ 'accent': 'red',
\ })
let s = airline#section#create(['hi'])
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
it 'should use parts as is if they are not found'
let s = airline#section#create(['asdf', 'func'])
Expect s == 'asdf%{airline#util#wrap(SectionSpec(),0)}'
end
it 'should force add separators for raw and missing keys'
let s = airline#section#create_left(['asdf', 'raw'])
Expect s == 'asdf raw'
let s = airline#section#create_left(['asdf', 'aaaa', 'raw'])
Expect s == 'asdf aaaa raw'
let s = airline#section#create_right(['raw', '%f'])
Expect s == 'raw %f'
let s = airline#section#create_right(['%t', 'asdf', '%{getcwd()}'])
Expect s == '%t asdf %{getcwd()}'
end
it 'should empty out parts that do not pass their condition'
call airline#parts#define_text('conditional', 'conditional')
call airline#parts#define_condition('conditional', '0')
let s = airline#section#create(['conditional'])
Expect s == '%{0 ? airline#util#wrap("conditional",0) : ""}'
end
it 'should not draw two separators after another'
let s = airline#section#create_right(['ffenc','%{strftime("%H:%M")}'])
Expect s == '%{airline#util#prepend(airline#parts#ffenc(),0)}%{strftime("%H:%M")}'
end
end

68
t/themes.vim Normal file
View File

@@ -0,0 +1,68 @@
describe 'themes'
after
highlight clear Foo
highlight clear Normal
end
it 'should extract correct colors'
highlight Foo ctermfg=1 ctermbg=2
let colors = airline#themes#get_highlight('Foo')
Expect colors[2] == '1'
Expect colors[3] == '2'
end
it 'should extract from normal if colors unavailable'
highlight Normal ctermfg=100 ctermbg=200
highlight Foo ctermbg=2
let colors = airline#themes#get_highlight('Foo')
Expect colors[2] == '100'
Expect colors[3] == '2'
end
it 'should flip target group if it is reversed'
highlight Foo ctermbg=222 ctermfg=103 term=reverse
let colors = airline#themes#get_highlight('Foo')
Expect colors[2] == '222'
Expect colors[3] == '103'
end
it 'should pass args through correctly'
let hl = airline#themes#get_highlight('Foo', 'bold', 'italic')
Expect hl == ['', '', 'NONE', 'NONE', 'bold,italic']
let hl = airline#themes#get_highlight2(['Foo','bg'], ['Foo','fg'], '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

54
t/util.vim Normal file
View File

@@ -0,0 +1,54 @@
call airline#init#bootstrap()
function! Util1()
let g:count += 1
endfunction
function! Util2()
let g:count += 2
endfunction
function! Util3(...)
let g:count = a:0
endfunction
describe 'util'
before
let g:count = 0
end
it 'has append wrapper function'
Expect airline#util#append('', 0) == ''
Expect airline#util#append('1', 0) == ' 1'
end
it 'has prepend wrapper function'
Expect airline#util#prepend('', 0) == ''
Expect airline#util#prepend('1', 0) == '1 '
end
it 'has getwinvar function'
Expect airline#util#getwinvar(1, 'asdf', '123') == '123'
call setwinvar(1, 'vspec', 'is cool')
Expect airline#util#getwinvar(1, 'vspec', '') == 'is cool'
end
it 'has exec funcrefs helper functions'
call airline#util#exec_funcrefs([function('Util1'), function('Util2')])
Expect g:count == 3
call airline#util#exec_funcrefs([function('Util3')], 1, 2, 3, 4)
Expect g:count == 4
end
it 'should ignore minwidth if less than 0'
Expect airline#util#append('foo', -1) == ' foo'
Expect airline#util#prepend('foo', -1) == 'foo '
Expect airline#util#wrap('foo', -1) == 'foo'
end
it 'should return empty if winwidth() > minwidth'
Expect airline#util#append('foo', 99999) == ''
Expect airline#util#prepend('foo', 99999) == ''
Expect airline#util#wrap('foo', 99999) == ''
end
end