780 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 BrabandtandGitHub 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 BrabandtandGitHub 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 BrabandtandGitHub 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 BrabandtandGitHub 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 BrabandtandGitHub 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 NoronhaandGitHub 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 BrabandtandGitHub 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 WrightandGitHub 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 BrabandtandGitHub 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 BrabandtandGitHub 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 BrabandtandGitHub 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 BrabandtandGitHub 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 ZhikhartsevandChristian Brabandt 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 VisserandChristian Brabandt 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 VisserandChristian Brabandt 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 BrabandtandGitHub 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 BrabandtandGitHub 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 ReybertandChristian Brabandt 9a95964256 Fix typo in doc/airline.txt
Add tag for vim-airline
2017-01-19 15:15:05 +01:00
Christian BrabandtandGitHub 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 BrabandtandGitHub 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 BrabandtandGitHub 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 BrabandtandGitHub 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 HataandChristian Brabandt 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 FullerandChristian Brabandt 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 BrabandtandGitHub 781b4ea6a2 Merge pull request #1321 from chrisbra/getwininfo
Use getwininfo() for checking quickfix window
2016-12-09 12:59:46 +01:00
Nate SoaresandChristian Brabandt 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 BrabandtandGitHub 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 BrabandtandGitHub 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 BrabandtandGitHub 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 BrabandtandGitHub 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 BrabandtandGitHub 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 BrabandtandGitHub 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 DuboisandGitHub a314038280 add vim-bufmru to the list of integrated plugins 2016-11-05 09:16:03 -07:00
Christian BrabandtandGitHub 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 BrabandtandGitHub 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 MilkaandChristian Brabandt 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 MilkaandChristian Brabandt 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 BrabandtandGitHub 0ea4daa103 Merge pull request #1297 from chrisbra/mq
Add mq status for hg repositories
2016-10-26 20:47:45 +02:00
Christian BrabandtandGitHub 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 BrabandtandGitHub 5fe511c20b Merge pull request #1298 from chrisbra/shorten_mode
Shorten mode message for small windows
2016-10-25 08:01:07 +02:00
Christian BrabandtandGitHub 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 BrabandtandGitHub 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 BrukmanandChristian Brabandt 2dc2748804 Remove Bitdeli as it's defunct. 2016-10-14 10:36:21 +02:00
Bjorn NeergaardandChristian Brabandt 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 NeergaardandChristian Brabandt 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 BrabandtandGitHub 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 ThomasandGitHub 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 BrabandtandGitHub 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 MalikandChristian Brabandt 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 BrabandtandGitHub 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 BrabandtandGitHub 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 BrabandtandGitHub 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 BrabandtandGitHub 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 BrabandtandGitHub 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 BrabandtandGitHub afee79bbe0 Merge pull request #1250 from chrisbra/1233
Do not unconditionally modify airline_c_inactive
2016-09-08 21:30:20 +02:00
Simon RatnerandChristian Brabandt 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 BrabandtandGitHub 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 BrabandtandGitHub 54e4772ef8 Merge pull request #1239 from chrisbra/1230
Do not cache gitgutter values
2016-09-05 19:32:24 +02:00
Christian BrabandtandGitHub 5eaf658b9c Merge pull request #1240 from chrisbra/1226
Add User autocommand for Theme changing
2016-09-05 19:32:13 +02:00
Christian BrabandtandGitHub 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 BrabandtandGitHub d00f7b35d2 Merge pull request #1224 from S3RB31/master
Updated documentation
2016-08-03 21:57:36 +02:00
͏andGitHub 36c7f5a2a3 Updated documentation
Added notice regarding issue #1219
2016-08-02 15:57:44 +02:00
Christian BrabandtandGitHub 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 BrabandtandGitHub 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 BrabandtandGitHub 657cf773ad Merge pull request #1206 from chrisbra/width
Cache hunk values, shorten for small windows
2016-07-24 10:08:40 +02:00
Christian BrabandtandGitHub 797ad1ea79 Merge pull request #1207 from chrisbra/ctrlspace
Map keys in ctrlspace mode
2016-07-24 10:07:36 +02:00
Christian BrabandtandGitHub 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 BrabandtandGitHub 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 BrabandtandGitHub 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 BrabandtandGitHub 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 BrabandtandGitHub c6f5d8b823 Merge pull request #1202 from chrisbra/resolve_symlink
Try to resolve symlinks for git
2016-07-02 10:55:49 +02:00
Christian BrabandtandGitHub 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 BrabandtandGitHub 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 BrabandtandGitHub fbfea6daee Merge pull request #1200 from chrisbra/width
limit whitespace check output for smaller screens
2016-07-01 11:17:16 +02:00
Christian BrabandtandGitHub 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
oldratleeandChristian Brabandt 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 ByrneandChristian Brabandt 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 WilliamsandDuncan 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 LingandChristian Brabandt 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 FreundandChristian Brabandt 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 SapperandKevin 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
namarkandChristian Brabandt 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]: https://github.com/vim-airline/vim-airline/commit/d7fd8ca649e441b3865551a325b10504cdf0711b.

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 FirsovandChristian Brabandt e685bae41e Update documentation with YCM extension enable/disable instruction 2016-01-30 14:18:20 +01:00
Evgeny FirsovandChristian Brabandt 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 https://github.com/bling/vim-airline/commit/ce58af719109f83f965b1d8b87232b8161fcfe90#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
97 changed files with 4331 additions and 2009 deletions
+1
View File
@@ -1,3 +1,4 @@
doc/tags
*.lock
.vim-flavor
*.swp
+4
View File
@@ -1,4 +1,8 @@
language: ruby
before_install:
- curl -f -L "https://raw.githubusercontent.com/vim-airline/vim-airline-themes/master/autoload/airline/themes/simple.vim" -o autoload/airline/themes/simple.vim
- curl -f -L "https://raw.githubusercontent.com/vim-airline/vim-airline-themes/master/autoload/airline/themes/molokai.vim" -o autoload/airline/themes/molokai.vim
- mkdir colors && curl -f -L 'https://raw.githubusercontent.com/tomasr/molokai/master/colors/molokai.vim' -o colors/molokai.vim
rvm:
- 1.9.3
script: rake ci
+120
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
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
+21
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
????
+1 -1
View File
@@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (C) 2013 Bailey Ling
Copyright (C) 2013-2016 Bailey Ling
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the "Software"),
+101 -39
View File
@@ -1,16 +1,22 @@
# vim-airline [![Build Status](https://travis-ci.org/bling/vim-airline.png)](https://travis-ci.org/bling/vim-airline)
# vim-airline [![Build Status](https://travis-ci.org/vim-airline/vim-airline.png)](https://travis-ci.org/vim-airline/vim-airline)
Lean &amp; mean status/tabline for vim that's light as air.
![img](https://github.com/bling/vim-airline/wiki/screenshots/demo.gif)
![img](https://github.com/vim-airline/vim-airline/wiki/screenshots/demo.gif)
# Features
* Tiny core written with extensibility in mind ([open/closed principle][8]).
* Integrates with a variety of plugins, including: [vim-bufferline][6], [fugitive][4], [unite][9], [ctrlp][10], [minibufexpl][15], [gundo][16], [undotree][17], [nerdtree][18], [tagbar][19], [vim-gitgutter][29], [vim-signify][30], [syntastic][5], [eclim][34], [lawrencium][21] and [virtualenv][31].
* Integrates with a variety of plugins, including: [vim-bufferline][6],
[fugitive][4], [unite][9], [ctrlp][10], [minibufexpl][15], [gundo][16],
[undotree][17], [nerdtree][18], [tagbar][19], [vim-gitgutter][29],
[vim-signify][30], [quickfixsigns][39], [syntastic][5], [eclim][34],
[lawrencium][21], [virtualenv][31], [tmuxline][35], [taboo.vim][37],
[ctrlspace][38], [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 colorschemes including [solarized][23] (dark and light), [tomorrow][24] (all variants), [base16][32] (all variants), [molokai][25], [jellybeans][26] and others; have a look at the [screenshots][14] in the wiki.
* Extensive suite of themes for popular color schemes including [solarized][23] (dark and light), [tomorrow][24] (all variants), [base16][32] (all variants), [molokai][25], [jellybeans][26] and others.
Note these are now external to this plugin. See [below][46] for detail.
* Supports 7.2 as the minimum Vim version.
* 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.
@@ -21,6 +27,20 @@ If you don't like the defaults, you can replace all sections with standard `stat
![image](https://f.cloud.github.com/assets/306502/1009429/d69306da-0b38-11e3-94bf-7c6e3eef41e9.png)
## Themes
Themes have moved to
another repository as of [this commit][45].
Install the themes as you would this plugin (Vundle example):
```vim
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
```
See https://github.com/vim-airline/vim-airline-themes for more.
## Automatic truncation
Sections and parts within sections can be configured to automatically hide when the window size shrinks.
@@ -52,6 +72,9 @@ vim-airline integrates with a variety of plugins out of the box. These extensio
#### [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)
@@ -64,9 +87,27 @@ vim-airline integrates with a variety of plugins out of the box. These extensio
#### 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:
@@ -82,7 +123,7 @@ Every section is composed of parts, and you can reorder and reconfigure them at
![image](https://f.cloud.github.com/assets/306502/1073278/f291dd4c-14a3-11e3-8a83-268e2753f97d.png)
Sections can contain accents, which allows for very granular control of visuals (see configuration [here](https://github.com/bling/vim-airline/issues/299#issuecomment-25772886)).
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)
@@ -110,21 +151,24 @@ I wrote the initial version on an airplane, and since it's light as air it turne
This plugin follows the standard runtime path structure, and as such it can be installed with a variety of plugin managers:
* [Pathogen][11]
* `git clone https://github.com/bling/vim-airline ~/.vim/bundle/vim-airline`
* [NeoBundle][12]
* `NeoBundle 'bling/vim-airline'`
* [Vundle][13]
* `Bundle 'bling/vim-airline'`
* [VAM][22]
* `call vam#ActivateAddons([ '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][20]. Prepatched fonts can be found in the [powerline-fonts][3] repository.
@@ -135,33 +179,31 @@ Finally, you can add the convenience variable `let g:airline_powerline_fonts = 1
Solutions to common problems can be found in the [Wiki][27].
# Performance
Whoa! Everything got slow all of a sudden...
vim-airline strives to make it easy to use out of the box, which means that by default it will look for all compatible plugins that you have installed and enable the relevant extension.
Many optimizations have been made such that the majority of users will not see any performance degradation, but it can still happen. For example, users who routinely open very large files may want to disable the `tagbar` extension, as it can be very expensive to scan for the name of the current function.
The [minivimrc][7] project has some helper mappings to troubleshoot performance related issues.
If you don't want all the bells and whistles enabled by default, you can define a value for `g:airline_extensions`. When this variable is defined, only the extensions listed will be loaded; an empty array would effectively disable all extensions.
# Screenshots
A full list of screenshots for various themes can be found in the [Wiki][14].
# Bugs
# Maintainers
Tracking down bugs can take a very long time due to different configurations, versions, and operating systems. To ensure a timely response, please help me out by doing the following:
The project is currently being maintained by [Bailey Ling][41], [Christian Brabandt][42], and [Mike Hartington][44].
* Reproduce it with this [minivimrc][7] repository to rule out any configuration conflicts.
* A link to your vimrc or a gist which shows how you configured the plugin(s).
* And so I can reproduce; your `:version` of vim, and the commit of vim-airline you're using.
# Contributions
Contributions and pull requests are welcome. Please take note of the following guidelines:
* Adhere to the existing style as much as possible; notably, 2 space indents and long-form keywords.
* Keep the history clean! squash your branches before you submit a pull request. `pull --rebase` is your friend.
* Any changes to the core should be tested against Vim 7.2.
* If you submit a theme, please create a screenshot so it can be added to the [Wiki][14].
If you are interested in becoming a maintainer (we always welcome more maintainers), please [go here][43].
# License
MIT License. Copyright (c) 2013 Bailey Ling.
[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/bling/vim-airline/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
MIT License. Copyright (c) 2013-2017 Bailey Ling & Contributors.
[1]: https://github.com/Lokaltog/vim-powerline
[2]: https://github.com/Lokaltog/powerline
@@ -172,28 +214,48 @@ MIT License. Copyright (c) 2013 Bailey Ling.
[7]: https://github.com/bling/minivimrc
[8]: http://en.wikipedia.org/wiki/Open/closed_principle
[9]: https://github.com/Shougo/unite.vim
[10]: https://github.com/kien/ctrlp.vim
[10]: https://github.com/ctrlpvim/ctrlp.vim
[11]: https://github.com/tpope/vim-pathogen
[12]: https://github.com/Shougo/neobundle.vim
[13]: https://github.com/gmarik/vundle
[14]: https://github.com/bling/vim-airline/wiki/Screenshots
[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/latest/fontpatching.html
[20]: https://powerline.readthedocs.org/en/master/installation.html#patched-fonts
[21]: https://bitbucket.org/ludovicchabant/vim-lawrencium
[22]: https://github.com/MarcWeber/vim-addon-manager
[23]: https://github.com/altercation/solarized
[24]: https://github.com/chriskempson/tomorrow-theme
[25]: https://github.com/tomasr/molokai
[26]: https://github.com/nanotech/jellybeans.vim
[27]: https://github.com/bling/vim-airline/wiki/FAQ
[27]: https://github.com/vim-airline/vim-airline/wiki/FAQ
[28]: https://github.com/chrisbra/csv.vim
[29]: https://github.com/airblade/vim-gitgutter
[30]: https://github.com/mhinz/vim-signify
[31]: https://github.com/jmcantrell/vim-virtualenv
[32]: https://github.com/chriskempson/base16-vim
[33]: https://github.com/bling/vim-airline/wiki/Test-Plan
[33]: https://github.com/vim-airline/vim-airline/wiki/Test-Plan
[34]: http://eclim.org
[35]: https://github.com/edkolev/tmuxline.vim
[36]: https://github.com/edkolev/promptline.vim
[37]: https://github.com/gcmt/taboo.vim
[38]: https://github.com/szw/vim-ctrlspace
[39]: https://github.com/tomtom/quickfixsigns_vim
[40]: https://github.com/junegunn/vim-plug
[41]: https://github.com/bling
[42]: https://github.com/chrisbra
[43]: https://github.com/vim-airline/vim-airline/wiki/Becoming-a-Maintainer
[44]: https://github.com/mhartington
[45]: https://github.com/vim-airline/vim-airline/commit/d7fd8ca649e441b3865551a325b10504cdf0711b
[46]: https://github.com/vim-airline/vim-airline#themes
[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/
+54 -17
View File
@@ -1,9 +1,11 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
let g:airline_statusline_funcrefs = get(g:, 'airline_statusline_funcrefs', [])
let s:sections = ['a','b','c','gutter','x','y','z','warning']
let s:sections = ['a','b','c','gutter','x','y','z', 'error', 'warning']
let s:inactive_funcrefs = []
function! airline#add_statusline_func(name)
@@ -46,6 +48,7 @@ function! airline#load_theme()
call airline#highlighter#load_theme()
call airline#extensions#load_theme()
call airline#update_statusline()
endfunction
function! airline#switch_theme(name)
@@ -62,23 +65,31 @@ function! airline#switch_theme(name)
endtry
let w:airline_lastmode = ''
call airline#update_statusline()
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#switch_matching_theme()
if exists('g:colors_name')
let existing = g:airline_theme
let theme = substitute(g:colors_name, '-', '_', 'g')
try
let palette = g:airline#themes#{g:colors_name}#palette
call airline#switch_theme(g:colors_name)
let palette = g:airline#themes#{theme}#palette
call airline#switch_theme(theme)
return 1
catch
for map in items(g:airline_theme_map)
if match(g:colors_name, map[0]) > -1
call airline#switch_theme(map[1])
try
let palette = g:airline#themes#{map[1]}#palette
call airline#switch_theme(map[1])
catch
call airline#switch_theme(existing)
endtry
return 1
endif
endfor
@@ -88,17 +99,20 @@ function! airline#switch_matching_theme()
endfunction
function! airline#update_statusline()
if airline#util#getwinvar(winnr(), 'airline_disabled', 0)
return
endif
for nr in filter(range(1, winnr('$')), 'v:val != winnr()')
if airline#util#getwinvar(nr, 'airline_disabled', 0)
continue
endif
call setwinvar(nr, 'airline_active', 0)
let context = { 'winnr': nr, 'active': 0, 'bufnr': winbufnr(nr) }
call s:invoke_funcrefs(context, s:inactive_funcrefs)
endfor
unlet! w:airline_render_left
unlet! w:airline_render_right
for section in s:sections
unlet! w:airline_section_{section}
endfor
unlet! w:airline_render_left w:airline_render_right
exe 'unlet! ' 'w:airline_section_'. join(s:sections, ' w:airline_section_')
let w:airline_active = 1
let context = { 'winnr': winnr(), 'active': 1, 'bufnr': winbufnr(winnr()) }
@@ -129,6 +143,11 @@ function! airline#statusline(winnr)
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)
@@ -139,6 +158,8 @@ function! airline#check_mode(winnr)
let l:mode = ['replace']
elseif l:m =~# '\v(v|V||s|S|)'
let l:mode = ['visual']
elseif l:m ==# "t"
let l:mode = ['terminal']
else
let l:mode = ['normal']
endif
@@ -148,23 +169,39 @@ function! airline#check_mode(winnr)
let w:airline_current_mode = get(g:airline_mode_map, '__')
endif
if g:airline_detect_modified
if &modified
call add(l:mode, 'modified')
endif
if g:airline_detect_modified && &modified
call add(l:mode, 'modified')
endif
if g:airline_detect_paste && &paste
call add(l:mode, 'paste')
endif
if g:airline_detect_crypt && exists("+key") && !empty(&key)
call add(l:mode, 'crypt')
endif
if 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 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)
call airline#highlighter#highlight(l:mode, context.bufnr)
let w:airline_lastmode = mode_string
endif
return ''
endfunction
+214 -34
View File
@@ -1,33 +1,151 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" 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(...)
let self._side = 0
let self._line .= '%#'.self._curgroup.'#'.(a:0 ? a:1 : '%=')
function! s:prototype.split(...) dict
call add(self._sections, ['|', a:0 ? a:1 : '%='])
endfunction
function! s:prototype.add_section_spaced(group, contents)
call self.add_section(a:group, (g:airline_symbols.space).a:contents.(g:airline_symbols.space))
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)
if self._curgroup != ''
if self._curgroup == a:group
let self._line .= self._side ? self._context.left_alt_sep : self._context.right_alt_sep
else
call airline#highlighter#add_separator(self._curgroup, a:group, self._side)
let self._line .= '%#'.self._curgroup.'_to_'.a:group.'#'
let self._line .= self._side ? self._context.left_sep : self._context.right_sep
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
endif
let x = x - 1
endwhile
return ''
endfunction
if self._curgroup != a:group
let self._line .= '%#'.a:group.'#'
endif
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 = ''
if self._context.active
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
@@ -40,28 +158,91 @@ function! s:prototype.add_section(group, contents)
let line = substitute(a:contents, '%#__accent[^#]*#', '', 'g')
let line = substitute(line, '%#__restore__#', '', 'g')
endif
let self._line .= line
let self._curgroup = a:group
return line
endfunction
function! s:prototype.add_raw(text)
let self._line .= a:text
endfunction
function! s:prototype.build()
if !self._context.active
let self._line = substitute(self._line, '%#.\{-}\ze#', '\0_inactive', 'g')
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
return self._line
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._side = 1
let builder._curgroup = ''
let builder._line = ''
let builder._sections = []
call extend(builder._context, {
\ 'left_sep': g:airline_left_sep,
@@ -71,4 +252,3 @@ function! airline#builder#new(context)
\ }, 'keep')
return builder
endfunction
+3 -1
View File
@@ -1,6 +1,8 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
function! airline#debug#profile1()
profile start airline-profile-switch.log
profile func *
-32
View File
@@ -1,32 +0,0 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
function! airline#deprecation#check()
if exists('g:airline_enable_fugitive') || exists('g:airline_fugitive_prefix')
echom 'The g:airline_enable_fugitive and g:airline_fugitive_prefix variables are obsolete. Please read the documentation about the branch extension.'
endif
let tests = [
\ [ 'g:airline_paste_symbol', 'g:airline_symbols.paste' ],
\ [ 'g:airline_readonly_symbol', 'g:airline_symbols.readonly' ],
\ [ 'g:airline_linecolumn_prefix', 'g:airline_symbols.linenr' ],
\ [ 'g:airline_branch_prefix', 'g:airline_symbols.branch' ],
\ [ 'g:airline_branch_empty_message', 'g:airline#extensions#branch#empty_message' ],
\ [ 'g:airline_detect_whitespace', 'g:airline#extensions#whitespace#enabled|show_message' ],
\ [ 'g:airline_enable_hunks', 'g:airline#extensions#hunks#enabled' ],
\ [ 'g:airline_enable_tagbar', 'g:airline#extensions#tagbar#enabled' ],
\ [ 'g:airline_enable_csv', 'g:airline#extensions#csv#enabled' ],
\ [ 'g:airline_enable_branch', 'g:airline#extensions#branch#enabled' ],
\ [ 'g:airline_enable_bufferline', 'g:airline#extensions#bufferline#enabled' ],
\ [ 'g:airline_enable_syntastic', 'g:airline#extensions#syntastic#enabled' ],
\ [ 'g:airline_enable_eclim', 'g:airline#extensions#eclim#enabled' ],
\ ]
for test in tests
if exists(test[0])
let max = winwidth(0) - 16
let msg = printf('The variable %s is deprecated and may not work in the future. It has been replaced with %s. Please read the documentation.', test[0], test[1])
echom msg[:max].'...'
endif
endfor
endfunction
+156 -34
View File
@@ -1,6 +1,8 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
let s:ext = {}
let s:ext._theme_funcrefs = []
@@ -20,13 +22,12 @@ endfunction
let s:script_path = tolower(resolve(expand('<sfile>:p:h')))
let s:filetype_overrides = {
\ 'netrw': [ 'netrw', '%f' ],
\ 'nerdtree': [ 'NERD', '' ],
\ 'gundo': [ 'Gundo', '' ],
\ 'diff': [ 'diff', '' ],
\ 'vimfiler': [ 'vimfiler', '%{vimfiler#get_status_string()}' ],
\ 'minibufexpl': [ 'MiniBufExplorer', '' ],
\ 'startify': [ 'startify', '' ],
\ 'vim-plug': [ 'Plugins', '' ],
\ }
let s:filetype_regex_overrides = {}
@@ -63,12 +64,7 @@ function! airline#extensions#apply(...)
return -1
endif
if &buftype == 'quickfix'
let w:airline_section_a = '%q'
let w:airline_section_b = '%{get(w:, "quickfix_title", "")}'
let w:airline_section_c = ''
let w:airline_section_x = ''
elseif &buftype == 'help'
if &buftype == 'help'
call airline#extensions#apply_left_override('Help', '%f')
let w:airline_section_x = ''
let w:airline_section_y = ''
@@ -124,11 +120,42 @@ function! s:sync_active_winnr()
endfunction
function! airline#extensions#load()
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: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 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)
@@ -137,29 +164,46 @@ function! airline#extensions#load()
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) && get(g:, 'airline_enable_hunks', 1))
\ && (exists('g:loaded_signify') || exists('g:loaded_gitgutter'))
if get(g:, 'airline#extensions#hunks#enabled', 1)
\ && (exists('g:loaded_signify') || exists('g:loaded_gitgutter') || exists('g:loaded_changes') || exists('g:loaded_quickfixsigns'))
call airline#extensions#hunks#init(s:ext)
call add(loaded_ext, 'hunks')
endif
if (get(g:, 'airline#extensions#tagbar#enabled', 1) && get(g:, 'airline_enable_tagbar', 1))
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:, 'airline_enable_csv', 1))
if get(g:, 'airline#extensions#csv#enabled', 1)
\ && (get(g:, 'loaded_csv', 0) || exists(':Table'))
call airline#extensions#csv#init(s:ext)
call add(loaded_ext, 'csv')
endif
if exists(':VimShell')
@@ -167,52 +211,130 @@ function! airline#extensions#load()
let s:filetype_regex_overrides['^int-'] = ['vimshell','%{substitute(&ft, "int-", "", "")}']
endif
if (get(g:, 'airline#extensions#branch#enabled', 1) && get(g:, 'airline_enable_branch', 1))
\ && (exists('*fugitive#head') || exists('*lawrencium#statusline'))
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) && get(g:, 'airline_enable_bufferline', 1))
if get(g:, 'airline#extensions#bufferline#enabled', 1)
\ && exists('*bufferline#get_status_string')
call airline#extensions#bufferline#init(s:ext)
call add(loaded_ext, 'bufferline')
endif
if get(g:, 'virtualenv_loaded', 0) && get(g:, 'airline#extensions#virtualenv#enabled', 1)
if (get(g:, 'airline#extensions#virtualenv#enabled', 1) && (exists(':VirtualEnvList') || isdirectory($VIRTUAL_ENV)))
call airline#extensions#virtualenv#init(s:ext)
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) && get(g:, 'airline_enable_syntastic', 1))
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#whitespace#enabled', 1) && get(g:, 'airline_detect_whitespace', 1))
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
" load all other extensions not part of the default distribution
for file in split(globpath(&rtp, "autoload/airline/extensions/*.vim"), "\n")
" we have to check both resolved and unresolved paths, since it's possible
" that they might not get resolved properly (see #187)
if stridx(tolower(resolve(fnamemodify(file, ':p'))), s:script_path) < 0
\ && stridx(tolower(fnamemodify(file, ':p')), s:script_path) < 0
let name = fnamemodify(file, ':t:r')
if !get(g:, 'airline#extensions#'.name.'#enabled', 1)
continue
if get(g:, 'airline#extensions#tmuxline#enabled', 1) && exists(':Tmuxline')
call airline#extensions#tmuxline#init(s:ext)
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
try
call airline#extensions#{name}#init(s:ext)
catch
endtry
endif
endfor
endfor
endif
endfunction
+43
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
+375 -32
View File
@@ -1,45 +1,355 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling et al.
" vim: et ts=2 sts=2 sw=2
let s:has_fugitive = exists('*fugitive#head')
let s:has_fugitive_detect = exists('*fugitive#detect')
let s:has_lawrencium = exists('*lawrencium#statusline')
scriptencoding utf-8
if !s:has_fugitive && !s:has_lawrencium
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:empty_message = get(g:, 'airline#extensions#branch#empty_message',
\ get(g:, 'airline_branch_empty_message', ''))
let s:symbol = get(g:, 'airline#extensions#branch#symbol', g:airline_symbols.branch)
let s:has_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 = ''
if s:has_fugitive && !exists('b:mercurial_dir')
let head = fugitive#head()
if empty(head) && s:has_fugitive_detect && !exists('b:git_dir')
call fugitive#detect(getcwd())
let head = fugitive#head()
endif
endif
if empty(head)
if s:has_lawrencium
let head = lawrencium#statusline()
endif
endif
return empty(head) || !s:check_in_path()
\ ? s:empty_message
\ : printf('%s%s', empty(s:symbol) ? '' : s:symbol.(g:airline_symbols.space), head)
let head = airline#extensions#branch#head()
let empty_message = get(g:, 'airline#extensions#branch#empty_message', '')
let symbol = get(g:, 'airline#extensions#branch#symbol', g:airline_symbols.branch)
return empty(head)
\ ? empty_message
\ : printf('%s%s', empty(symbol) ? '' : symbol.(g:airline_symbols.space), head)
endfunction
function! s:check_in_path()
if !exists('b:airline_branch_path')
if !exists('b:airline_file_in_root')
let root = get(b:, 'git_dir', get(b:, 'mercurial_dir', ''))
let bufferpath = resolve(fnamemodify(expand('%'), ':p:h'))
let bufferpath = resolve(fnamemodify(expand('%'), ':p'))
if !filereadable(root) "not a file
" if .git is a directory, it's the old submodule format
@@ -47,10 +357,17 @@ function! s:check_in_path()
let root = expand(fnamemodify(root, ':h'))
else
" else it's the newer format, and we need to guesstimate
let pattern = '\.git\(\\\|\/\)modules\(\\\|\/\)'
" 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
@@ -58,9 +375,35 @@ function! s:check_in_path()
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
+9 -3
View File
@@ -1,6 +1,8 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
if !exists('*bufferline#get_status_string')
finish
endif
@@ -18,6 +20,10 @@ function! airline#extensions#bufferline#init(ext)
let g:bufferline_separator = g:airline_symbols.space
endif
call airline#parts#define_raw('file', '%{bufferline#refresh_status()}'.bufferline#get_status_string())
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
+17
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
+3 -1
View File
@@ -1,6 +1,8 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
if !get(g:, 'command_t_loaded', 0)
finish
endif
+3 -1
View File
@@ -1,6 +1,8 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
if !get(g:, 'loaded_csv', 0) && !exists(':Table')
finish
endif
+7 -2
View File
@@ -1,6 +1,8 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
if !get(g:, 'loaded_ctrlp', 0)
finish
endif
@@ -36,6 +38,9 @@ endfunction
" Arguments: focus, byfname, regexp, prv, item, nxt, marked
function! airline#extensions#ctrlp#ctrlp_airline(...)
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
@@ -48,7 +53,7 @@ function! airline#extensions#ctrlp#ctrlp_airline(...)
endif
call b.add_section_spaced('CtrlPdark', a:7)
call b.split()
call b.add_raw('%#CtrlPdark#'.a:1.(g:airline_symbols.space))
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()
+19
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
+35 -11
View File
@@ -1,15 +1,20 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" 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' ]
\ [ 'x', 'y', 'z', 'warning', 'error' ]
\ ])
function! s:get_section(winnr, key, ...)
@@ -19,6 +24,9 @@ function! s:get_section(winnr, key, ...)
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
@@ -26,30 +34,42 @@ endfunction
function! s:build_sections(builder, context, keys)
for key in a:keys
if key == 'warning' && !a:context.active
if (key == 'warning' || key == 'error') && !a:context.active
continue
endif
call s:add_section(a:builder, a:context, key)
endfor
endfunction
if v:version >= 704 || (v:version >= 703 && has('patch81'))
function s:add_section(builder, context, key)
" 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 == 'warning'
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 a:key == 'warning'
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)
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
@@ -61,15 +81,19 @@ function! airline#extensions#default#apply(builder, context)
let active = a:context.active
if airline#util#getwinvar(winnr, 'airline_render_left', active || (!active && !g:airline_inactive_collapse))
call <sid>build_sections(a:builder, a:context, s:layout[0])
call s:build_sections(a:builder, a:context, s:layout[0])
else
call a:builder.add_section('airline_c'.(a:context.bufnr), ' %f%m ')
let text = s:get_section(winnr, 'c')
if empty(text)
let text = ' %f%m '
endif
call a:builder.add_section('airline_c'.(a:context.bufnr), text)
endif
call a:builder.split(s:get_section(winnr, 'gutter', '', ''))
if airline#util#getwinvar(winnr, 'airline_render_right', 1)
call <sid>build_sections(a:builder, a:context, s:layout[1])
call s:build_sections(a:builder, a:context, s:layout[1])
endif
return 1
+47
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
+34 -7
View File
@@ -1,6 +1,8 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
if !exists(':ProjectCreate')
finish
endif
@@ -16,16 +18,41 @@ function! airline#extensions#eclim#creat_line(...)
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)
let errorsLine = eclimList[0]['line']
let errorsNumber = len(eclimList)
let errors = "[Eclim: line:".string(errorsLine)." (".string(errorsNumber).")]"
if !exists(':SyntasticCheck') || SyntasticStatuslineFlag() == ''
return errors.(g:airline_symbols.space)
" 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
return ''
let b:airline_changenr = changenr()
return s:eclim_errors
endfunction
function! airline#extensions#eclim#init(ext)
+3 -1
View File
@@ -1,6 +1,8 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
" we don't actually want this loaded :P
finish
+45 -12
View File
@@ -1,7 +1,9 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !get(g:, 'loaded_signify', 0) && !get(g:, 'loaded_gitgutter', 0)
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
@@ -16,48 +18,79 @@ function! s:get_hunks_signify()
return []
endfunction
function! s:is_branch_empty()
return exists('*airline#extensions#branch#head') && empty(airline#extensions#branch#head())
endfunction
function! s:get_hunks_gitgutter()
if !get(g:, 'gitgutter_enabled', 0)
if !get(g:, 'gitgutter_enabled', 0) || s:is_branch_empty()
return ''
endif
return GitGutterGetHunkSummary()
endfunction
function! s:get_hunks_changes()
if !get(b:, 'changes_view_enabled', 0) || s:is_branch_empty()
return []
endif
let hunks = changes#GetStats()
for i in hunks
if i > 0
return hunks
endif
endfor
return []
endfunction
function! s:get_hunks_empty()
return ''
endfunction
let s:source_func = ''
function! s:get_hunks()
if empty(s:source_func)
if get(g:, 'loaded_signify', 0)
let s:source_func = 's:get_hunks_signify'
if !exists('b:source_func') || 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 s:source_func = 's:get_hunks_gitgutter'
let b:source_func = 's:get_hunks_gitgutter'
elseif exists('*changes#GetStats')
let b:source_func = 's:get_hunks_changes'
elseif exists('*quickfixsigns#vcsdiff#GetHunkSummary')
let b:source_func = 'quickfixsigns#vcsdiff#GetHunkSummary'
else
let s:source_func = 's:get_hunks_empty'
let b:source_func = 's:get_hunks_empty'
endif
endif
return {s:source_func}()
return {b:source_func}()
endfunction
function! airline#extensions#hunks#get_hunks()
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 || hunks[i] > 0
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
+25
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
+34
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
+57
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
+22
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
+93
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
@@ -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
+53
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
+32 -8
View File
@@ -1,19 +1,43 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
if !exists(':SyntasticCheck')
finish
endif
function! airline#extensions#syntastic#get_warnings()
let errors = SyntasticStatuslineFlag()
if strlen(errors) > 0
return errors.(g:airline_symbols.space)
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
return ''
endfunction
function! airline#extensions#syntastic#init(ext)
call airline#parts#define_function('syntastic', 'airline#extensions#syntastic#get_warnings')
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
+142 -174
View File
@@ -1,225 +1,193 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:formatter = get(g:, 'airline#extensions#tabline#formatter', 'default')
let s:excludes = get(g:, 'airline#extensions#tabline#excludes', [])
let s:tab_nr_type = get(g:, 'airline#extensions#tabline#tab_nr_type', 0)
let s:show_buffers = get(g:, 'airline#extensions#tabline#show_buffers', 1)
scriptencoding utf-8
let s:builder_context = {
\ 'active' : 1,
\ 'right_sep' : get(g:, 'airline#extensions#tabline#right_sep' , g:airline_right_sep),
\ 'right_alt_sep' : get(g:, 'airline#extensions#tabline#right_alt_sep', g:airline_right_alt_sep),
\ }
if get(g:, 'airline_powerline_fonts', 0)
let s:builder_context.left_sep = get(g:, 'airline#extensions#tabline#left_sep' , "\ue0b0")
let s:builder_context.left_alt_sep = get(g:, 'airline#extensions#tabline#left_alt_sep' , "\ue0b1")
else
let s:builder_context.left_sep = get(g:, 'airline#extensions#tabline#left_sep' , ' ')
let s:builder_context.left_alt_sep = get(g:, 'airline#extensions#tabline#left_alt_sep' , '|')
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: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)
let s:ctrlspace = get(g:, 'CtrlSpaceLoaded', 0)
function! airline#extensions#tabline#init(ext)
if has('gui_running')
set guioptions-=e
endif
set tabline=%!airline#extensions#tabline#get()
if s:buf_min_count <= 0 && s:tab_min_count <= 1
set showtabline=2
else
if s:show_buffers == 1
autocmd CursorMoved * call <sid>on_cursormove(s:buf_min_count, len(s:get_buffer_list()))
else
autocmd TabEnter * call <sid>on_cursormove(s:tab_min_count, tabpagenr('$'))
endif
endif
autocmd User AirlineToggledOn call s:toggle_on()
autocmd User AirlineToggledOff call s:toggle_off()
call s:toggle_on()
call a:ext.add_theme_func('airline#extensions#tabline#load_theme')
endfunction
function! s:toggle_off()
call airline#extensions#tabline#autoshow#off()
call airline#extensions#tabline#tabs#off()
call airline#extensions#tabline#buffers#off()
call airline#extensions#tabline#ctrlspace#off()
endfunction
function! s:toggle_on()
call airline#extensions#tabline#autoshow#on()
call airline#extensions#tabline#tabs#on()
call airline#extensions#tabline#buffers#on()
call airline#extensions#tabline#ctrlspace#on()
set tabline=%!airline#extensions#tabline#get()
endfunction
function! s:update_tabline()
if get(g:, 'airline#extensions#tabline#disable_refresh', 0)
return
endif
let match = expand('<afile>')
if pumvisible()
return
elseif !get(g:, 'airline#extensions#tabline#enabled', 0)
return
" return, if buffer matches ignore pattern or is directory (netrw)
elseif empty(match)
\ || match(match, s:ignore_bufadd_pat) > -1
\ || isdirectory(expand("<afile>"))
return
endif
doautocmd User BufMRUChange
endfunction
function! airline#extensions#tabline#load_theme(palette)
if pumvisible()
return
endif
let colors = get(a:palette, 'tabline', {})
" Theme for tabs on the left
let l:tab = get(colors, 'airline_tab', a:palette.normal.airline_b)
let l:tabsel = get(colors, 'airline_tabsel', a:palette.normal.airline_a)
let l:tabtype = get(colors, 'airline_tabtype', a:palette.visual.airline_a)
let l:tabfill = get(colors, 'airline_tabfill', a:palette.normal.airline_c)
let l:tabmod = get(colors, 'airline_tabmod', a:palette.insert.airline_a)
let l:tabhid = get(colors, 'airline_tabhid', a:palette.normal.airline_c)
if has_key(a:palette, 'normal_modified') && has_key(a:palette.normal_modified, 'airline_c')
let l:tabmodu = get(colors, 'airline_tabmod_unsel', a:palette.normal_modified.airline_c)
else
"Fall back to normal airline_c if modified airline_c isn't present
let l:tabmodu = get(colors, 'airline_tabmod_unsel', a:palette.normal.airline_c)
endif
call airline#highlighter#exec('airline_tab', l:tab)
call airline#highlighter#exec('airline_tabsel', l:tabsel)
call airline#highlighter#exec('airline_tabtype', l:tabtype)
call airline#highlighter#exec('airline_tabfill', l:tabfill)
call airline#highlighter#exec('airline_tabmod', l:tabmod)
call airline#highlighter#exec('airline_tabmod_unsel', l:tabmodu)
call airline#highlighter#exec('airline_tabhid', l:tabhid)
endfunction
function! s:on_cursormove(min_count, total_count)
if a:total_count >= a:min_count
if &showtabline != 2
set showtabline=2
endif
" Theme for tabs on the right
let l:tabsel_right = get(colors, 'airline_tabsel_right', a:palette.normal.airline_a)
let l:tab_right = get(colors, 'airline_tab_right', a:palette.inactive.airline_c)
let l:tabmod_right = get(colors, 'airline_tabmod_right', a:palette.insert.airline_a)
let l:tabhid_right = get(colors, 'airline_tabhid_right', a:palette.normal.airline_c)
if has_key(a:palette, 'normal_modified') && has_key(a:palette.normal_modified, 'airline_c')
let l:tabmodu_right = get(colors, 'airline_tabmod_unsel_right', a:palette.normal_modified.airline_c)
else
if &showtabline != 0
set showtabline=0
endif
"Fall back to normal airline_c if modified airline_c isn't present
let l:tabmodu_right = get(colors, 'airline_tabmod_unsel_right', a:palette.normal.airline_c)
endif
call airline#highlighter#exec('airline_tab_right', l:tab_right)
call airline#highlighter#exec('airline_tabsel_right', l:tabsel_right)
call airline#highlighter#exec('airline_tabmod_right', l:tabmod_right)
call airline#highlighter#exec('airline_tabhid_right', l:tabhid_right)
call airline#highlighter#exec('airline_tabmod_unsel_right', l:tabmodu_right)
endfunction
let s:current_tabcnt = -1
function! airline#extensions#tabline#get()
if s:show_buffers && tabpagenr('$') == 1
return s:get_buffers()
let curtabcnt = tabpagenr('$')
if curtabcnt != s:current_tabcnt
let s:current_tabcnt = curtabcnt
call airline#extensions#tabline#tabs#invalidate()
call airline#extensions#tabline#buffers#invalidate()
call airline#extensions#tabline#ctrlspace#invalidate()
endif
if !exists('#airline#BufAdd#*')
autocmd airline BufAdd * call <sid>update_tabline()
endif
if s:ctrlspace
return airline#extensions#tabline#ctrlspace#get()
elseif s:show_buffers && curtabcnt == 1 || !s:show_tabs
return airline#extensions#tabline#buffers#get()
else
return s:get_tabs()
return airline#extensions#tabline#tabs#get()
endif
endfunction
function! airline#extensions#tabline#title(n)
let buflist = tabpagebuflist(a:n)
let winnr = tabpagewinnr(a:n)
return airline#extensions#tabline#get_buffer_name(buflist[winnr - 1])
endfunction
function! airline#extensions#tabline#get_buffer_name(nr)
return airline#extensions#tabline#formatters#{s:formatter}(a:nr, get(s:, 'current_buffer_list', []))
endfunction
function! s:get_buffer_list()
let buffers = []
let cur = bufnr('%')
for nr in range(1, bufnr('$'))
if buflisted(nr) && bufexists(nr)
for ex in s:excludes
if match(bufname(nr), ex)
continue
endif
endfor
if getbufvar(nr, 'current_syntax') == 'qf'
continue
endif
call add(buffers, nr)
endif
endfor
let s:current_buffer_list = buffers
return buffers
endfunction
function! s:get_visible_buffers()
let buffers = s:get_buffer_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
let title = ''
if s:taboo
let title = TabooTabTitle(a:n)
endif
return buffers
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! s:get_buffers()
let b = airline#builder#new(s:builder_context)
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('%')
let tab_bufs = tabpagebuflist(tabpagenr())
for nr in s:get_visible_buffers()
if nr < 0
call b.add_raw('%#airline_tabhid#...')
continue
endif
if cur == nr
if g:airline_detect_modified && getbufvar(nr, '&modified')
let group = 'airline_tabmod'
else
let group = 'airline_tabsel'
endif
if cur == a:bufnr
if g:airline_detect_modified && getbufvar(a:bufnr, '&modified')
let group = 'airline_tabmod'
else
if index(tab_bufs, nr) > -1
let group = 'airline_tab'
else
let group = 'airline_tabhid'
endif
endif
call b.add_section(group, '%( %{airline#extensions#tabline#get_buffer_name('.nr.')} %)')
endfor
call b.add_section('airline_tabfill', '')
call b.split()
call b.add_section('airline_tabtype', ' buffers ')
return b.build()
endfunction
function! s:get_tabs()
let b = airline#builder#new(s:builder_context)
for i in range(1, tabpagenr('$'))
if i == tabpagenr()
let group = 'airline_tabsel'
if g:airline_detect_modified
for bi in tabpagebuflist(i)
if getbufvar(bi, '&modified')
let group = 'airline_tabmod'
endif
endfor
endif
else
endif
else
if g:airline_detect_modified && getbufvar(a:bufnr, '&modified')
let group = 'airline_tabmod_unsel'
elseif index(a:tab_bufs, a:bufnr) > -1
let group = 'airline_tab'
endif
let val = '%('
if s:tab_nr_type == 0
let val .= ' %{len(tabpagebuflist('.i.'))}'
else
let val .= (g:airline_symbols.space).i
let group = 'airline_tabhid'
endif
call b.add_section(group, val.'%'.i.'T %{airline#extensions#tabline#title('.i.')} %)')
endfor
call b.add_raw('%T')
call b.add_section('airline_tabfill', '')
call b.split()
call b.add_section('airline_tab', ' %999XX ')
call b.add_section('airline_tabtype', ' tabs ')
return b.build()
endif
return group
endfunction
@@ -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
@@ -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
@@ -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
@@ -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
@@ -1,34 +0,0 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:fmod = get(g:, 'airline#extensions#tabline#fnamemod', ':~:.')
let s:fnamecollapse = get(g:, 'airline#extensions#tabline#fnamecollapse', 1)
let s:buf_nr_format = get(g:, 'airline#extensions#tabline#buffer_nr_format', '%s: ')
let s:buf_nr_show = get(g:, 'airline#extensions#tabline#buffer_nr_show', 0)
let s:buf_modified_symbol = g:airline_symbols.modified
function! airline#extensions#tabline#formatters#default(bufnr, buffers)
let _ = ''
if s:buf_nr_show
let _ .= printf(s:buf_nr_format, a:bufnr)
endif
let name = bufname(a:bufnr)
if empty(name)
let _ .= '[No Name]'
else
if s:fnamecollapse
let _ .= substitute(fnamemodify(name, s:fmod), '\v\w\zs.{-}\ze(\\|/)', '', 'g')
else
let _ .= fnamemodify(name, s:fmod)
endif
endif
if getbufvar(a:bufnr, '&modified') == 1
let _ .= s:buf_modified_symbol
endif
return _
endfunction
@@ -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
@@ -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
@@ -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
@@ -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
+10 -2
View File
@@ -1,6 +1,8 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
if !exists(':TagbarToggle')
finish
endif
@@ -23,9 +25,15 @@ function! airline#extensions#tagbar#inactive_apply(...)
endif
endfunction
let s:airline_tagbar_last_lookup_time = 0
let s:airline_tagbar_last_lookup_val = ''
function! airline#extensions#tagbar#currenttag()
if get(w:, 'airline_active', 0)
return tagbar#currenttag('%s', '', s:flags)
if s:airline_tagbar_last_lookup_time != localtime()
let s:airline_tagbar_last_lookup_val = tagbar#currenttag('%s', '', s:flags)
let s:airline_tagbar_last_lookup_time = localtime()
endif
return s:airline_tagbar_last_lookup_val
endif
return ''
endfunction
+28
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
+3 -1
View File
@@ -1,6 +1,8 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
if !exists(':UndotreeToggle')
finish
endif
+24
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
+3 -1
View File
@@ -1,6 +1,8 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
if !get(g:, 'loaded_unite', 0)
finish
endif
+30
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
+81
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
+18 -7
View File
@@ -1,9 +1,7 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
if !get(g:, 'virtualenv_loaded', 0)
finish
endif
scriptencoding utf-8
let s:spc = g:airline_symbols.space
@@ -12,9 +10,22 @@ function! airline#extensions#virtualenv#init(ext)
endfunction
function! airline#extensions#virtualenv#apply(...)
if &filetype =~ "python"
call airline#extensions#append_to_section('x',
\ s:spc.g:airline_right_alt_sep.s:spc.'%{virtualenv#statusline()}')
if &filetype =~# "python"
if get(g:, 'virtualenv_loaded', 0)
let statusline = virtualenv#statusline()
else
let statusline = fnamemodify($VIRTUAL_ENV, ':t')
endif
if !empty(statusline)
call airline#extensions#append_to_section('x',
\ s:spc.g:airline_right_alt_sep.s:spc.statusline)
endif
endif
endfunction
function! airline#extensions#virtualenv#update()
if &filetype =~# "python"
call airline#extensions#virtualenv#apply()
call airline#update_statusline()
endif
endfunction
+116 -26
View File
@@ -1,77 +1,167 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
" http://got-ravings.blogspot.com/2008/10/vim-pr0n-statusline-whitespace-flags.html
" for backwards compatibility
if exists('g:airline_detect_whitespace')
let s:show_message = g:airline_detect_whitespace == 1
else
let s:show_message = get(g:, 'airline#extensions#whitespace#show_message', 1)
endif
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:checks = get(g:, 'airline#extensions#whitespace#checks', ['indent', 'trailing'])
let s:default_checks = ['indent', 'trailing', 'mixed-indent-file']
let s:trailing_format = get(g:, 'airline#extensions#whitespace#trailing_format', 'trailing[%s]')
let s:mixed_indent_format = get(g:, 'airline#extensions#whitespace#mixed_indent_format', 'mixed-indent[%s]')
let s: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' ])
let s:enabled = 1
function! s:check_mixed_indent()
if s:indent_algo == 1
" [<tab>]<space><tab>
" spaces before or between tabs are not allowed
let t_s_t = '(^\t* +\t\s*\S)'
" <tab>(<space> x count)
" count of spaces at the end of tabs should be less than tabstop value
let t_l_s = '(^\t+ {' . &ts . ',}' . '\S)'
return search('\v' . t_s_t . '|' . t_l_s, 'nw')
elseif s:indent_algo == 2
return search('\v(^\t* +\t\s*\S)', 'nw')
else
return search('\v(^\t+ +)|(^ +\t+)', 'nw')
endif
endfunction
function! s:check_mixed_indent_file()
if 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
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(s:checks, 'trailing') > -1
let trailing = search(' $', 'nw')
if index(checks, 'trailing') > -1
try
let regexp = get(g:, 'airline#extensions#whitespace#trailing_regexp', '\s$')
let trailing = search(regexp, 'nw')
catch
echomsg 'airline#whitespace: error occured evaluating '. regexp
echomsg v:exception
return ''
endtry
endif
let mixed = 0
if index(s:checks, 'indent') > -1
let indents = [search('^ \{2,}', 'nb'), search('^ \{2,}', 'n'), search('^\t', 'nb'), search('^\t', 'n')]
let mixed = indents[0] != 0 && indents[1] != 0 && indents[2] != 0 && indents[3] != 0
let check = 'indent'
if index(checks, check) > -1 && index(get(s:skip_check_ft, &ft, []), check) < 0
let mixed = s:check_mixed_indent()
endif
if trailing != 0 || mixed
let 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 .= (g:airline_symbols.space).printf(s:trailing_format, trailing)
let b:airline_whitespace_check .= space.printf(s:trailing_format, trailing)
endif
if mixed
let mixnr = indents[0] == indents[1] ? indents[0] : indents[2]
let b:airline_whitespace_check .= (g:airline_symbols.space).printf(s:mixed_indent_format, mixnr)
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 b:airline_whitespace_check
endfunction!
return airline#util#shorten(b:airline_whitespace_check, 120, 9)
endfunction
function! airline#extensions#whitespace#toggle()
if s:enabled
autocmd! airline_whitespace CursorHold,BufWritePost
augroup airline_whitespace
autocmd!
augroup END
augroup! airline_whitespace
let s:enabled = 0
else
call airline#extensions#whitespace#init()
let s:enabled = 1
endif
if exists("g:airline#extensions#whitespace#enabled")
let g:airline#extensions#whitespace#enabled = s:enabled
if s:enabled && match(g:airline_section_warning, '#whitespace#check') < 0
let g:airline_section_warning .= airline#section#create(['whitespace'])
call airline#update_statusline()
endif
endif
echo 'Whitespace checking: '.(s:enabled ? 'Enabled' : 'Disabled')
endfunction
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 * unlet! b:airline_whitespace_check
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
@@ -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
+43
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
@@ -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
+25
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
+38
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
+123 -34
View File
@@ -1,47 +1,58 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
let s:is_win32term = (has('win32') || has('win64')) && !has('gui_running')
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(matchlist(a:rgb, '#\(..\)\(..\)\(..\)')[1:3], '0 + ("0x".v:val)')
let rgb = [rgb[0] > 127 ? 4 : 0, rgb[1] > 127 ? 2 : 0, rgb[2] > 127 ? 1 : 0]
return rgb[0]+rgb[1]+rgb[2]
let rgb = map(split(a:rgb[1:], '..\zs'), '0 + ("0x".v:val)')
return airline#msdos#round_msdos_colors(rgb)
endfunction
function! s:get_syn(group, what)
" need to pass in mode, known to break on 7.3.547
let mode = has('gui_running') ? 'gui' : 'cterm'
let color = synIDattr(synIDtrans(hlID(a:group)), a:what, mode)
if empty(color) || color == -1
let color = synIDattr(synIDtrans(hlID('Normal')), a:what, mode)
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
if has('gui_running')
let color = a:what ==# 'fg' ? '#000000' : '#FFFFFF'
else
let color = a:what ==# 'fg' ? 0 : 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)
let fg = a:fg
let bg = a:bg
return has('gui_running')
\ ? [ fg, bg, '', '', join(a:opts, ',') ]
\ : [ '', '', fg, bg, join(a: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 = synIDattr(synIDtrans(hlID(a:group)), 'reverse', has('gui_running') ? 'gui' : 'term')
let reverse = g:airline_gui_mode ==# 'gui'
\ ? synIDattr(synIDtrans(hlID(a:group)), 'reverse', 'gui')
\ : synIDattr(synIDtrans(hlID(a:group)), 'reverse', 'cterm')
\|| synIDattr(synIDtrans(hlID(a:group)), 'reverse', 'term')
return reverse ? s:get_array(bg, fg, a:000) : s:get_array(fg, bg, a:000)
endfunction
@@ -51,24 +62,83 @@ function! airline#highlighter#get_highlight2(fg, bg, ...)
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
exec printf('hi %s %s %s %s %s %s %s %s',
\ a:group,
\ get(colors, 0, '') != '' ? 'guifg='.colors[0] : '',
\ get(colors, 1, '') != '' ? 'guibg='.colors[1] : '',
\ get(colors, 2, '') != '' ? 'ctermfg='.colors[2] : '',
\ get(colors, 3, '') != '' ? 'ctermbg='.colors[3] : '',
\ get(colors, 4, '') != '' ? 'gui='.colors[4] : '',
\ get(colors, 4, '') != '' ? 'cterm='.colors[4] : '',
\ get(colors, 4, '') != '' ? 'term='.colors[4] : '')
let 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
@@ -82,11 +152,18 @@ function! s:exec_separator(dict, from, to, inverse, suffix)
endfunction
function! airline#highlighter#load_theme()
if pumvisible()
return
endif
for winnr in filter(range(1, winnr('$')), 'v:val != winnr()')
call airline#highlighter#highlight_modified_inactive(winbufnr(winnr))
endfor
call airline#highlighter#highlight(['inactive'])
call airline#highlighter#highlight(['normal'])
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)
@@ -94,6 +171,10 @@ function! airline#highlighter#add_separator(from, to, inverse)
call <sid>exec_separator({}, a:from, a:to, a:inverse, '')
endfunction
function! airline#highlighter#add_accent(accent)
let s:accents[a:accent] = 1
endfunction
function! airline#highlighter#highlight_modified_inactive(bufnr)
if getbufvar(a:bufnr, '&modified')
let colors = exists('g:airline#themes#{g:airline_theme}#palette.inactive_modified.airline_c')
@@ -108,7 +189,8 @@ function! airline#highlighter#highlight_modified_inactive(bufnr)
endif
endfunction
function! airline#highlighter#highlight(modes)
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
@@ -119,9 +201,16 @@ function! airline#highlighter#highlight(modes)
let dict = g:airline#themes#{g:airline_theme}#palette[mode]
for kvp in items(dict)
let mode_colors = kvp[1]
call airline#highlighter#exec(kvp[0].suffix, mode_colors)
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(p.accents)
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]
@@ -134,7 +223,7 @@ function! airline#highlighter#highlight(modes)
else
call add(colors, get(p.accents[accent], 4, ''))
endif
call airline#highlighter#exec(kvp[0].suffix.'_'.accent, colors)
call airline#highlighter#exec(name.suffix.'_'.accent, colors)
endfor
endfor
+110 -25
View File
@@ -1,6 +1,8 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
function! s:check_defined(variable, default)
if !exists(a:variable)
let {a:variable} = a:default
@@ -16,17 +18,19 @@ function! airline#init#bootstrap()
let g:airline#init#bootstrapping = 1
call s:check_defined('g:airline_left_sep', get(g:, 'airline_powerline_fonts', 0)?"\ue0b0":">")
call s:check_defined('g:airline_left_alt_sep', get(g:, 'airline_powerline_fonts', 0)?"\ue0b1":">")
call s:check_defined('g:airline_right_sep', get(g:, 'airline_powerline_fonts', 0)?"\ue0b2":"<")
call s:check_defined('g:airline_right_alt_sep', get(g:, 'airline_powerline_fonts', 0)?"\ue0b3":"<")
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, {
@@ -41,28 +45,80 @@ function! airline#init#bootstrap()
\ 's' : 'SELECT',
\ 'S' : 'S-LINE',
\ '' : 'S-BLOCK',
\ 't' : 'TERMINAL',
\ }, 'keep')
call s:check_defined('g:airline_theme_map', {})
call extend(g:airline_theme_map, {
\ 'Tomorrow.*': 'tomorrow',
\ 'base16.*': 'base16',
\ '\CTomorrow': 'tomorrow',
\ 'base16': 'base16',
\ 'mo[l|n]okai': 'molokai',
\ 'wombat.*': 'wombat',
\ '.*zenburn.*': 'zenburn',
\ '.*solarized.*': 'solarized',
\ 'wombat': 'wombat',
\ 'zenburn': 'zenburn',
\ 'solarized': 'solarized',
\ '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': get(g:, 'airline_paste_symbol', 'PASTE'),
\ 'readonly': get(g:, 'airline_readonly_symbol', get(g:, 'airline_powerline_fonts', 0) ? "\ue0a2" : 'RO'),
\ 'whitespace': get(g:, 'airline_powerline_fonts', 0) ? "\u2739" : '!',
\ 'linenr': get(g:, 'airline_linecolumn_prefix', get(g:, 'airline_powerline_fonts', 0) ? "\ue0a1" : ':' ),
\ 'branch': get(g:, 'airline_branch_prefix', get(g:, 'airline_powerline_fonts', 0) ? "\ue0a0" : ''),
\ 'modified': '+',
\ 'space': ' ',
\ }, 'keep')
\ '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',
@@ -70,29 +126,52 @@ function! airline#init#bootstrap()
\ })
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('linenr', (g:airline_symbols.linenr).'%#__accent_bold#%4l%#__restore__#')
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', 'tagbar', 'syntastic', 'eclim', 'whitespace'])
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', 'paste', 'iminsert'])
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')
let g:airline_section_c = airline#section#create(['%<', 'file', spc, 'readonly'])
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(['%='])
@@ -104,10 +183,16 @@ function! airline#init#sections()
let g:airline_section_y = airline#section#create_right(['ffenc'])
endif
if !exists('g:airline_section_z')
let g:airline_section_z = airline#section#create(['%3p%%'.spc, 'linenr', ':%3c '])
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(['syntastic', 'eclim', 'whitespace'])
let g:airline_section_warning = airline#section#create(['ycm_warning_count', 'syntastic-warn', 'neomake_warning_count', 'ale_warning_count', 'whitespace'])
endif
endfunction
+59
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
+26 -6
View File
@@ -1,6 +1,8 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
let s:parts = {}
" PUBLIC API {{{
@@ -51,13 +53,21 @@ endfunction
" }}}
function! airline#parts#mode()
return get(w:, 'airline_current_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)
@@ -66,14 +76,24 @@ function! airline#parts#iminsert()
endfunction
function! airline#parts#readonly()
return &readonly ? g:airline_symbols.readonly : ''
if &readonly && &modifiable && !filereadable(bufname('%'))
return '[noperm]'
else
return &readonly ? g:airline_symbols.readonly : ''
endif
endfunction
function! airline#parts#filetype()
return &filetype
return winwidth(0) < 90 && strlen(&filetype) > 3 ? matchstr(&filetype, '...'). (&encoding is? 'utf-8' ? '…' : '>') : &filetype
endfunction
function! airline#parts#ffenc()
return printf('%s%s', &fenc, strlen(&ff) > 0 ? '['.&ff.']' : '')
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
+16 -3
View File
@@ -1,11 +1,14 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
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
@@ -16,6 +19,7 @@ function! s:create(parts, append)
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).'()'
@@ -26,7 +30,11 @@ function! s:create(parts, append)
let val .= s:spc.g:airline_left_alt_sep.s:spc
endif
if a:append < 0 && idx != 0
let val = s:spc.g:airline_right_alt_sep.s:spc.val
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))
@@ -41,14 +49,19 @@ function! s:create(parts, append)
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, '{', '\="{".(part.condition)." ? "', '')
let partval = substitute(partval, '}', ' : ""}', '')
endif
+7 -1
View File
@@ -1,6 +1,8 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
" vim: et ts=2 sts=2 sw=2
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 = {
@@ -39,9 +41,13 @@ function! airline#themes#patch(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' ]
-52
View File
@@ -1,52 +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:IA = [ s:N2[1] , s:N3[1] , s:N2[3] , s:N3[3] , '' ]
let g:airline#themes#badwolf#palette = {}
let g:airline#themes#badwolf#palette.accents = {
\ 'red': [ '#ff2c4b' , '' , 196 , '' , '' ]
\ }
let g:airline#themes#badwolf#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
let g:airline#themes#badwolf#palette.normal_modified = {
\ 'airline_b': [ s:N2[0] , s:N4[0] , s:N2[2] , s:N4[1] , '' ] ,
\ 'airline_c': [ s:V1[1] , s:N2[1] , s:V1[3] , s:N2[3] , '' ] }
let g:airline#themes#badwolf#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#badwolf#palette.insert_modified = {
\ 'airline_c': [ s:V1[1] , s:N2[1] , s:V1[3] , s:N2[3] , '' ] }
let g:airline#themes#badwolf#palette.insert_paste = {
\ 'airline_a': [ s:I1[0] , s:PA[0] , s:I1[2] , s:PA[1] , '' ] }
let g:airline#themes#badwolf#palette.replace = copy(airline#themes#badwolf#palette.insert)
let g:airline#themes#badwolf#palette.replace.airline_a = [ s:I1[0] , s:RE[0] , s:I1[2] , s:RE[1] , '' ]
let g:airline#themes#badwolf#palette.replace_modified = g:airline#themes#badwolf#palette.insert_modified
let g:airline#themes#badwolf#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
let g:airline#themes#badwolf#palette.visual_modified = {
\ 'airline_c': [ s:V3[0] , s:V4[0] , s:V3[2] , s:V4[1] , '' ] }
let g:airline#themes#badwolf#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)
let g:airline#themes#badwolf#palette.inactive_modified = {
\ 'airline_c': [ s:V1[1] , '' , s:V1[3] , '' , '' ] }
-107
View File
@@ -1,107 +0,0 @@
if get(g:, 'airline#themes#base16#constant', 0)
let g:airline#themes#base16#palette = {}
" Color palette
let s:gui_dark_gray = '#202020'
let s:cterm_dark_gray = 234
let s:gui_med_gray_hi = '#303030'
let s:cterm_med_gray_hi = 236
let s:gui_med_gray_lo = '#3a3a3a'
let s:cterm_med_gray_lo = 237
let s:gui_light_gray = '#505050'
let s:cterm_light_gray = 239
let s:gui_green = '#99cc99'
let s:cterm_green = 151
let s:gui_blue = '#6a9fb5'
let s:cterm_blue = 67
let s:gui_purple = '#aa759f'
let s:cterm_purple = 139
let s:gui_orange = '#d28445'
let s:cterm_orange = 173
let s:gui_red = '#ac4142'
let s:cterm_red = 131
let s:gui_pink = '#d7afd7'
let s:cterm_pink = 182
" Normal mode
let s:N1 = [s:gui_dark_gray, s:gui_green, s:cterm_dark_gray, s:cterm_green]
let s:N2 = [s:gui_light_gray, s:gui_med_gray_lo, s:cterm_light_gray, s:cterm_med_gray_lo]
let s:N3 = [s:gui_green, s:gui_med_gray_hi, s:cterm_green, s:cterm_med_gray_hi]
let g:airline#themes#base16#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
let g:airline#themes#base16#palette.normal_modified = {
\ 'airline_c': [s:gui_orange, s:gui_med_gray_hi, s:cterm_orange, s:cterm_med_gray_hi, ''],
\ }
" Insert mode
let s:I1 = [s:gui_med_gray_hi, s:gui_blue, s:cterm_med_gray_hi, s:cterm_blue]
let s:I3 = [s:gui_blue, s:gui_med_gray_hi, s:cterm_blue, s:cterm_med_gray_hi]
let g:airline#themes#base16#palette.insert = airline#themes#generate_color_map(s:I1, s:N2, s:I3)
let g:airline#themes#base16#palette.insert_modified = copy(g:airline#themes#base16#palette.normal_modified)
let g:airline#themes#base16#palette.insert_paste = {
\ 'airline_a': [s:gui_dark_gray, s:gui_orange, s:cterm_dark_gray, s:cterm_orange, ''],
\ }
" Replace mode
let g:airline#themes#base16#palette.replace = {
\ 'airline_a': [s:gui_dark_gray, s:gui_red, s:cterm_dark_gray, s:cterm_red, ''],
\ 'airline_c': [s:gui_red, s:gui_med_gray_hi, s:cterm_red, s:cterm_med_gray_hi, ''],
\ }
let g:airline#themes#base16#palette.replace_modified = copy(g:airline#themes#base16#palette.insert_modified)
" Visual mode
let s:V1 = [s:gui_dark_gray, s:gui_pink, s:cterm_dark_gray, s:cterm_pink]
let s:V3 = [s:gui_pink, s:gui_med_gray_hi, s:cterm_pink, s:cterm_med_gray_hi]
let g:airline#themes#base16#palette.visual = airline#themes#generate_color_map(s:V1, s:N2, s:V3)
let g:airline#themes#base16#palette.visual_modified = copy(g:airline#themes#base16#palette.insert_modified)
" Inactive window
let s:IA = [s:gui_dark_gray, s:gui_med_gray_hi, s:cterm_dark_gray, s:cterm_med_gray_hi, '']
let g:airline#themes#base16#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)
let g:airline#themes#base16#palette.inactive_modified = {
\ 'airline_c': [s:gui_orange, '', s:cterm_orange, '', ''],
\ }
else
function! airline#themes#base16#refresh()
let g:airline#themes#base16#palette = {}
let g:airline#themes#base16#palette.accents = {
\ 'red': airline#themes#get_highlight('Constant'),
\ }
let s:N1 = airline#themes#get_highlight2(['DiffText', 'bg'], ['DiffText', 'fg'], 'bold')
let s:N2 = airline#themes#get_highlight('Visual')
let s:N3 = airline#themes#get_highlight('CursorLine')
let g:airline#themes#base16#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
let group = airline#themes#get_highlight('vimCommand')
let g:airline#themes#base16#palette.normal_modified = {
\ 'statusline': [ group[0], '', group[2], '', '' ]
\ }
let s:I1 = airline#themes#get_highlight2(['DiffAdded', 'bg'], ['DiffAdded', 'fg'], 'bold')
let s:I2 = airline#themes#get_highlight2(['DiffAdded', 'fg'], ['Normal', 'bg'])
let s:I3 = s:N3
let g:airline#themes#base16#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#base16#palette.insert_modified = g:airline#themes#base16#palette.normal_modified
let s:R1 = airline#themes#get_highlight2(['WarningMsg', 'bg'], ['WarningMsg', 'fg'], 'bold')
let s:R2 = s:N2
let s:R3 = s:N3
let g:airline#themes#base16#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3)
let g:airline#themes#base16#palette.replace_modified = g:airline#themes#base16#palette.normal_modified
let s:V1 = airline#themes#get_highlight2(['Normal', 'bg'], ['Constant', 'fg'], 'bold')
let s:V2 = airline#themes#get_highlight2(['Constant', 'fg'], ['Normal', 'bg'])
let s:V3 = s:N3
let g:airline#themes#base16#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
let g:airline#themes#base16#palette.visual_modified = g:airline#themes#base16#palette.normal_modified
let s:IA = airline#themes#get_highlight2(['NonText', 'fg'], ['CursorLine', 'bg'])
let g:airline#themes#base16#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)
let g:airline#themes#base16#palette.inactive_modified = {
\ 'airline_c': [ group[0], '', group[2], '', '' ]
\ }
endfunction
call airline#themes#base16#refresh()
endif
-62
View File
@@ -1,62 +0,0 @@
" Color palette
let s:gui_dark_gray = '#303030'
let s:cterm_dark_gray = 236
let s:gui_med_gray_hi = '#444444'
let s:cterm_med_gray_hi = 238
let s:gui_med_gray_lo = '#3a3a3a'
let s:cterm_med_gray_lo = 237
let s:gui_light_gray = '#b2b2b2'
let s:cterm_light_gray = 249
let s:gui_green = '#afd787'
let s:cterm_green = 150
let s:gui_blue = '#87afd7'
let s:cterm_blue = 110
let s:gui_purple = '#afafd7'
let s:cterm_purple = 146
let s:gui_orange = '#d7af5f'
let s:cterm_orange = 179
let s:gui_red = '#d78787'
let s:cterm_red = 174
let s:gui_pink = '#d7afd7'
let s:cterm_pink = 182
let g:airline#themes#bubblegum#palette = {}
" Normal mode
let s:N1 = [s:gui_dark_gray, s:gui_green, s:cterm_dark_gray, s:cterm_green]
let s:N2 = [s:gui_light_gray, s:gui_med_gray_lo, s:cterm_light_gray, s:cterm_med_gray_lo]
let s:N3 = [s:gui_green, s:gui_med_gray_hi, s:cterm_green, s:cterm_med_gray_hi]
let g:airline#themes#bubblegum#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
let g:airline#themes#bubblegum#palette.normal_modified = {
\ 'airline_c': [s:gui_orange, s:gui_med_gray_hi, s:cterm_orange, s:cterm_med_gray_hi, ''],
\ }
" Insert mode
let s:I1 = [s:gui_med_gray_hi, s:gui_blue, s:cterm_med_gray_hi, s:cterm_blue]
let s:I3 = [s:gui_blue, s:gui_med_gray_hi, s:cterm_blue, s:cterm_med_gray_hi]
let g:airline#themes#bubblegum#palette.insert = airline#themes#generate_color_map(s:I1, s:N2, s:I3)
let g:airline#themes#bubblegum#palette.insert_modified = copy(g:airline#themes#bubblegum#palette.normal_modified)
let g:airline#themes#bubblegum#palette.insert_paste = {
\ 'airline_a': [s:gui_dark_gray, s:gui_orange, s:cterm_dark_gray, s:cterm_orange, ''],
\ }
" Replace mode
let g:airline#themes#bubblegum#palette.replace = {
\ 'airline_a': [s:gui_dark_gray, s:gui_red, s:cterm_dark_gray, s:cterm_red, ''],
\ 'airline_c': [s:gui_red, s:gui_med_gray_hi, s:cterm_red, s:cterm_med_gray_hi, ''],
\ }
let g:airline#themes#bubblegum#palette.replace_modified = copy(g:airline#themes#bubblegum#palette.insert_modified)
" Visual mode
let s:V1 = [s:gui_dark_gray, s:gui_pink, s:cterm_dark_gray, s:cterm_pink]
let s:V3 = [s:gui_pink, s:gui_med_gray_hi, s:cterm_pink, s:cterm_med_gray_hi]
let g:airline#themes#bubblegum#palette.visual = airline#themes#generate_color_map(s:V1, s:N2, s:V3)
let g:airline#themes#bubblegum#palette.visual_modified = copy(g:airline#themes#bubblegum#palette.insert_modified)
" Inactive window
let s:IA = [s:gui_dark_gray, s:gui_med_gray_hi, s:cterm_dark_gray, s:cterm_med_gray_hi, '']
let g:airline#themes#bubblegum#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)
let g:airline#themes#bubblegum#palette.inactive_modified = {
\ 'airline_c': [s:gui_orange, '', s:cterm_orange, '', ''],
\ }
+7 -6
View File
@@ -1,3 +1,5 @@
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
@@ -92,11 +94,10 @@ let g:airline#themes#dark#palette.accents = {
" 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)
finish
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
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' ])
-52
View File
@@ -1,52 +0,0 @@
let g:airline#themes#jellybeans#palette = {}
" The name of the function must be 'refresh'.
function! airline#themes#jellybeans#refresh()
" This theme is an example of how to use helper functions to extract highlight
" values from the corresponding colorscheme. It was written in a hurry, so it
" is very minimalistic. If you are a jellybeans user and want to make updates,
" please send pull requests.
" Here are examples where the entire highlight group is copied and an airline
" compatible color array is generated.
let s:N1 = airline#themes#get_highlight('DbgCurrent', 'bold')
let s:N2 = airline#themes#get_highlight('Folded')
let s:N3 = airline#themes#get_highlight('NonText')
let g:airline#themes#jellybeans#palette.accents = {
\ 'red': airline#themes#get_highlight('Constant'),
\ }
let g:airline#themes#jellybeans#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
let g:airline#themes#jellybeans#palette.normal_modified = {
\ 'airline_c': [ '#ffb964', '', 215, '', '' ]
\ }
let s:I1 = airline#themes#get_highlight('DiffAdd', 'bold')
let s:I2 = s:N2
let s:I3 = s:N3
let g:airline#themes#jellybeans#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#jellybeans#palette.insert_modified = g:airline#themes#jellybeans#palette.normal_modified
let s:R1 = airline#themes#get_highlight('WildMenu', 'bold')
let s:R2 = s:N2
let s:R3 = s:N3
let g:airline#themes#jellybeans#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3)
let g:airline#themes#jellybeans#palette.replace_modified = g:airline#themes#jellybeans#palette.normal_modified
" Sometimes you want to mix and match colors from different groups, you can do
" that with this method.
let s:V1 = airline#themes#get_highlight2(['TabLineSel', 'bg'], ['DiffDelete', 'bg'], 'bold')
let s:V2 = s:N2
let s:V3 = s:N3
let g:airline#themes#jellybeans#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
let g:airline#themes#jellybeans#palette.visual_modified = g:airline#themes#jellybeans#palette.normal_modified
" And of course, you can always do it manually as well.
let s:IA = [ '#444444', '#1c1c1c', 237, 234 ]
let g:airline#themes#jellybeans#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)
let g:airline#themes#jellybeans#palette.inactive_modified = g:airline#themes#jellybeans#palette.normal_modified
endfunction
call airline#themes#jellybeans#refresh()
-62
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:IA = [ s:N2[1] , s:N3[1] , s:N2[3], s:N3[3] , '' ]
let g:airline#themes#laederon#palette = {}
let g:airline#themes#laederon#palette.accents = {
\ 'red': [ '#ef393d' , '' , 196 , '' , '' ]
\ }
let g:airline#themes#laederon#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
let g:airline#themes#laederon#palette.normal_modified = {
\ 'airline_a' : [ s:N2[0] , s:N4[0] , s:N2[2] , s:N4[1] , '' ] ,
\ 'airline_c' : [ s:V1[1] , s:N2[1] , s:V1[3] , s:N2[3] , '' ] }
let g:airline#themes#laederon#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#laederon#palette.insert_modified = {
\ 'airline_c' : [ s:V2[1] , s:N2[1] , s:V2[3] , s:N2[3] , '' ] }
let g:airline#themes#laederon#palette.insert_paste = {
\ 'airline_a' : [ s:I1[0] , s:PA[0] , s:I1[2] , s:PA[1] , '' ] }
let g:airline#themes#laederon#palette.replace = copy(airline#themes#laederon#palette.insert)
let g:airline#themes#laederon#palette.replace.airline_a = [ s:I1[0] , s:RE[0] , s:I1[2] , s:RE[1] , '' ]
let g:airline#themes#laederon#palette.replace_modified = g:airline#themes#laederon#palette.insert_modified
let g:airline#themes#laederon#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
let g:airline#themes#laederon#palette.visual_modified = {
\ 'airline_c' : [ s:V3[0] , s:V4[0] , s:V3[2] , s:V4[1] , '' ] }
let g:airline#themes#laederon#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)
let g:airline#themes#laederon#palette.inactive_modified = {
\ 'airline_c' : [ s:V1[1] , '' , s:V1[3] , '' , '' ] }
-45
View File
@@ -1,45 +0,0 @@
let g:airline#themes#light#palette = {}
let s:N1 = [ '#ffffff' , '#005fff' , 255 , 27 ]
let s:N2 = [ '#000087' , '#00dfff' , 18 , 45 ]
let s:N3 = [ '#005fff' , '#afffff' , 27 , 159 ]
let g:airline#themes#light#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
let g:airline#themes#light#palette.normal_modified = {
\ 'airline_c': [ '#df0000' , '#ffdfdf' , 160 , 224 , '' ] ,
\ }
let s:I1 = [ '#ffffff' , '#00875f' , 255 , 29 ]
let s:I2 = [ '#005f00' , '#00df87' , 22 , 42 ]
let s:I3 = [ '#005f5f' , '#afff87' , 23 , 156 ]
let g:airline#themes#light#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#light#palette.insert_modified = {
\ 'airline_c': [ '#df0000' , '#ffdfdf' , 160 , 224 , '' ] ,
\ }
let g:airline#themes#light#palette.insert_paste = {
\ 'airline_a': [ s:I1[0] , '#d78700' , s:I1[2] , 172 , '' ] ,
\ }
let g:airline#themes#light#palette.replace = copy(g:airline#themes#light#palette.insert)
let g:airline#themes#light#palette.replace.airline_a = [ s:I2[0] , '#ff0000' , s:I1[2] , 196 , '' ]
let g:airline#themes#light#palette.replace_modified = g:airline#themes#light#palette.insert_modified
let s:V1 = [ '#ffffff' , '#ff5f00' , 255 , 202 ]
let s:V2 = [ '#5f0000' , '#ffaf00' , 52 , 214 ]
let s:V3 = [ '#df5f00' , '#ffff87' , 166 , 228 ]
let g:airline#themes#light#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
let g:airline#themes#light#palette.visual_modified = {
\ 'airline_c': [ '#df0000' , '#ffdfdf' , 160 , 224 , '' ] ,
\ }
let s:IA1 = [ '#666666' , '#b2b2b2' , 242 , 249 , '' ]
let s:IA2 = [ '#8a8a8a' , '#d0d0d0' , 245 , 252 , '' ]
let s:IA3 = [ '#a8a8a8' , '#ffffff' , 248 , 255 , '' ]
let g:airline#themes#light#palette.inactive = airline#themes#generate_color_map(s:IA1, s:IA2, s:IA3)
let g:airline#themes#light#palette.inactive_modified = {
\ 'airline_c': [ '#df0000' , '' , 160 , '' , '' ] ,
\ }
-56
View File
@@ -1,56 +0,0 @@
let g:airline#themes#lucius#palette = {}
function! airline#themes#lucius#refresh()
let s:N1 = airline#themes#get_highlight('StatusLine')
let s:N2 = airline#themes#get_highlight('Folded')
let s:N3 = airline#themes#get_highlight('CursorLine')
let g:airline#themes#lucius#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
let modified_group = airline#themes#get_highlight('Statement')
let g:airline#themes#lucius#palette.normal_modified = {
\ 'airline_c': [modified_group[0], '', modified_group[2], '', '']
\ }
let warning_group = airline#themes#get_highlight('DiffDelete')
let g:airline#themes#lucius#palette.normal.airline_warning = warning_group
let g:airline#themes#lucius#palette.normal_modified.airline_warning = warning_group
let s:I1 = airline#themes#get_highlight('DiffAdd')
let s:I2 = s:N2
let s:I3 = s:N3
let g:airline#themes#lucius#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#lucius#palette.insert_modified = g:airline#themes#lucius#palette.normal_modified
let g:airline#themes#lucius#palette.insert.airline_warning = g:airline#themes#lucius#palette.normal.airline_warning
let g:airline#themes#lucius#palette.insert_modified.airline_warning = g:airline#themes#lucius#palette.normal_modified.airline_warning
let s:R1 = airline#themes#get_highlight('DiffChange')
let s:R2 = s:N2
let s:R3 = s:N3
let g:airline#themes#lucius#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3)
let g:airline#themes#lucius#palette.replace_modified = g:airline#themes#lucius#palette.normal_modified
let g:airline#themes#lucius#palette.replace.airline_warning = g:airline#themes#lucius#palette.normal.airline_warning
let g:airline#themes#lucius#palette.replace_modified.airline_warning = g:airline#themes#lucius#palette.normal_modified.airline_warning
let s:V1 = airline#themes#get_highlight('Cursor')
let s:V2 = s:N2
let s:V3 = s:N3
let g:airline#themes#lucius#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
let g:airline#themes#lucius#palette.visual_modified = g:airline#themes#lucius#palette.normal_modified
let g:airline#themes#lucius#palette.visual.airline_warning = g:airline#themes#lucius#palette.normal.airline_warning
let g:airline#themes#lucius#palette.visual_modified.airline_warning = g:airline#themes#lucius#palette.normal_modified.airline_warning
let s:IA = airline#themes#get_highlight('StatusLineNC')
let g:airline#themes#lucius#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)
let g:airline#themes#lucius#palette.inactive_modified = {
\ 'airline_c': [ modified_group[0], '', modified_group[2], '', '' ]
\ }
let g:airline#themes#lucius#palette.accents = {
\ 'red': airline#themes#get_highlight('Constant'),
\ }
endfunction
call airline#themes#lucius#refresh()
-92
View File
@@ -1,92 +0,0 @@
" vim-airline companion theme of Luna
" (https://github.com/Pychimp/vim-luna)
let g:airline#themes#luna#palette = {}
let g:airline#themes#luna#palette.accents = {
\ 'red': [ '#ffffff' , '' , 231 , '' , '' ],
\ }
let s:N1 = [ '#ffffff' , '#005252' , 231 , 36 ]
let s:N2 = [ '#ffffff' , '#003f3f' , 231 , 29 ]
let s:N3 = [ '#ffffff' , '#002b2b' , 231 , 23 ]
let g:airline#themes#luna#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
let g:airline#themes#luna#palette.normal_modified = {
\ 'airline_c': [ '#ffffff' , '#450000' , 231 , 52 , '' ] ,
\ }
let s:I1 = [ '#ffffff' , '#789f00' , 231 , 106 ]
let s:I2 = [ '#ffffff' , '#003f3f' , 231 , 29 ]
let s:I3 = [ '#ffffff' , '#002b2b' , 231 , 23 ]
let g:airline#themes#luna#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#luna#palette.insert_modified = {
\ 'airline_c': [ '#ffffff' , '#005e5e' , 255 , 52 , '' ] ,
\ }
let g:airline#themes#luna#palette.insert_paste = {
\ 'airline_a': [ s:I1[0] , '#789f00' , s:I1[2] , 106 , '' ] ,
\ }
let g:airline#themes#luna#palette.replace = copy(g:airline#themes#luna#palette.insert)
let g:airline#themes#luna#palette.replace.airline_a = [ s:I2[0] , '#920000' , s:I2[2] , 88 , '' ]
let g:airline#themes#luna#palette.replace_modified = g:airline#themes#luna#palette.insert_modified
let s:V1 = [ '#ffff9a' , '#ff8036' , 222 , 208 ]
let s:V2 = [ '#ffffff' , '#003f3f' , 231 , 29 ]
let s:V3 = [ '#ffffff' , '#002b2b' , 231 , 23 ]
let g:airline#themes#luna#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
let g:airline#themes#luna#palette.visual_modified = {
\ 'airline_c': [ '#ffffff' , '#450000' , 231 , 52 , '' ] ,
\ }
let s:IA = [ '#4e4e4e' , '#002b2b' , 59 , 23 , '' ]
let g:airline#themes#luna#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)
let g:airline#themes#luna#palette.inactive_modified = {
\ 'airline_c': [ '#450000' , '' , 52 , '' , '' ] ,
\ }
let g:airline#themes#luna#palette.tabline = {
\ 'airline_tab': ['#2aa198', '#003f3f', 231, 29, ''],
\ 'airline_tabsel': ['#ffffff', '#2e8b57', 231, 36, ''],
\ 'airline_tabtype': ['#ffffff', '#005252', 231, 36, ''],
\ 'airline_tabfill': ['#ffffff', '#002b2b', 231, 23, ''],
\ 'airline_tabmod': ['#ffffff', '#780000', 231, 88, ''],
\ }
let s:WI = [ '#ffffff', '#5f0000', 231, 88 ]
let g:airline#themes#luna#palette.normal.airline_warning = [
\ s:WI[0], s:WI[1], s:WI[2], s:WI[3]
\ ]
let g:airline#themes#luna#palette.normal_modified.airline_warning =
\ g:airline#themes#luna#palette.normal.airline_warning
let g:airline#themes#luna#palette.insert.airline_warning =
\ g:airline#themes#luna#palette.normal.airline_warning
let g:airline#themes#luna#palette.insert_modified.airline_warning =
\ g:airline#themes#luna#palette.normal.airline_warning
let g:airline#themes#luna#palette.visual.airline_warning =
\ g:airline#themes#luna#palette.normal.airline_warning
let g:airline#themes#luna#palette.visual_modified.airline_warning =
\ g:airline#themes#luna#palette.normal.airline_warning
let g:airline#themes#luna#palette.replace.airline_warning =
\ g:airline#themes#luna#palette.normal.airline_warning
let g:airline#themes#luna#palette.replace_modified.airline_warning =
\ g:airline#themes#luna#palette.normal.airline_warning
if !get(g:, 'loaded_ctrlp', 0)
finish
endif
let g:airline#themes#luna#palette.ctrlp = airline#extensions#ctrlp#generate_color_map(
\ [ '#ffffff' , '#002b2b' , 231 , 23 , '' ] ,
\ [ '#ffffff' , '#005252' , 231 , 36 , '' ] ,
\ [ '#ffffff' , '#973d45' , 231 , 95 , '' ] )
-65
View File
@@ -1,65 +0,0 @@
let g:airline#themes#molokai#palette = {}
let g:airline#themes#molokai#palette.accents = {
\ 'red': [ '#66d9ef' , '' , 81 , '' , '' ],
\ }
" Normal mode
let s:N1 = [ '#080808' , '#e6db74' , 232 , 144 ] " mode
let s:N2 = [ '#f8f8f0' , '#232526' , 253 , 16 ] " info
let s:N3 = [ '#f8f8f0' , '#465457' , 253 , 67 ] " statusline
let g:airline#themes#molokai#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
let g:airline#themes#molokai#palette.normal_modified = {
\ 'airline_c': [ '#080808' , '#e6db74' , 232 , 144 , '' ] ,
\ }
" Insert mode
let s:I1 = [ '#080808' , '#66d9ef' , 232 , 81 ]
let s:I2 = [ '#f8f8f0' , '#232526' , 253 , 16 ]
let s:I3 = [ '#f8f8f0' , '#465457' , 253 , 67 ]
let g:airline#themes#molokai#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#molokai#palette.insert_modified = {
\ 'airline_c': [ '#080808' , '#66d9ef' , 232 , 81 , '' ] ,
\ }
" Replace mode
let g:airline#themes#molokai#palette.replace = copy(g:airline#themes#molokai#palette.insert)
let g:airline#themes#molokai#palette.replace.airline_a = [ s:I1[0] , '#ef5939' , s:I1[2] , 166 , '' ]
let g:airline#themes#molokai#palette.replace_modified = {
\ 'airline_c': [ '#080808' , '#ef5939' , 232 , 166 , '' ] ,
\ }
" Visual mode
let s:V1 = [ '#080808' , '#fd971f' , 232 , 208 ]
let s:V2 = [ '#f8f8f0' , '#232526' , 253 , 16 ]
let s:V3 = [ '#f8f8f0' , '#465457' , 253 , 67 ]
let g:airline#themes#molokai#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
let g:airline#themes#molokai#palette.visual_modified = {
\ 'airline_c': [ '#080808' , '#fd971f' , 232 , 208 , '' ] ,
\ }
" Inactive
let s:IA = [ '#1b1d1e' , '#465457' , 233 , 67 , '' ]
let g:airline#themes#molokai#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)
let g:airline#themes#molokai#palette.inactive_modified = {
\ 'airline_c': [ '#f8f8f0' , '' , 253 , '' , '' ] ,
\ }
" CtrlP
if !get(g:, 'loaded_ctrlp', 0)
finish
endif
let g:airline#themes#molokai#palette.ctrlp = airline#extensions#ctrlp#generate_color_map(
\ [ '#f8f8f0' , '#465457' , 253 , 67 , '' ] ,
\ [ '#f8f8f0' , '#232526' , 253 , 16 , '' ] ,
\ [ '#080808' , '#e6db74' , 232 , 144 , 'bold' ] )
-15
View File
@@ -1,15 +0,0 @@
let g:airline#themes#monochrome#palette = {}
function! airline#themes#monochrome#refresh()
let s:SL = airline#themes#get_highlight('StatusLine')
let g:airline#themes#monochrome#palette.normal = airline#themes#generate_color_map(s:SL, s:SL, s:SL)
let g:airline#themes#monochrome#palette.insert = g:airline#themes#monochrome#palette.normal
let g:airline#themes#monochrome#palette.replace = g:airline#themes#monochrome#palette.normal
let g:airline#themes#monochrome#palette.visual = g:airline#themes#monochrome#palette.normal
let s:SLNC = airline#themes#get_highlight('StatusLineNC')
let g:airline#themes#monochrome#palette.inactive = airline#themes#generate_color_map(s:SLNC, s:SLNC, s:SLNC)
endfunction
call airline#themes#monochrome#refresh()
-46
View File
@@ -1,46 +0,0 @@
let g:airline#themes#murmur#palette = {}
let s:termbg = 237 " Background for branch and file format blocks
let s:termbg2= 234 " Background for middle block
let s:normalbg= 27 " Background for normal mode and file position blocks
let s:insertbg= 70 " Background for insert mode and file position blocks
let s:visualbg= 166 " Background for visual mode and file position blocks
let s:replacebg=88 " Background for replace mode and file position blocks
let s:alert= 88 " Modefied file alert color
let s:BB = ['#AFAF87', '#5F5F5F', 144, s:termbg] " Branch and file format blocks
let s:N1 = ['#FFFFFF', '#5F87FF', 15, s:normalbg] " Outside blocks in normal mode
let s:N2 = ['#AFAF87', '#5F5F5F', 39, s:termbg2] " Middle block
let g:airline#themes#murmur#palette.normal = airline#themes#generate_color_map(s:N1, s:BB, s:N2)
let g:airline#themes#murmur#palette.normal_modified = {'airline_c': ['#ffffff', '#5f005f', s:alert, s:termbg2, 'bold'] ,}
let s:I1 = ['#FFFFFF', '#87AF5F', 15, s:insertbg] " Outside blocks in insert mode
let s:I2 = ['#AFAF87', '#5F5F5F', s:insertbg, s:termbg2] " Middle block
let g:airline#themes#murmur#palette.insert = airline#themes#generate_color_map(s:I1, s:BB, s:I2)
let g:airline#themes#murmur#palette.insert_modified = {'airline_c': ['#AFAF87', '#5F5F5F', s:alert, s:termbg2, 'bold'] ,}
let s:R1 = ['#FFFFFF', '#870000', 15, s:replacebg] " Outside blocks in replace mode
let s:R2 = ['#AFAF87', '#5F5F5F', 255, s:termbg2] " Middle block
let g:airline#themes#murmur#palette.replace = airline#themes#generate_color_map(s:R1, s:BB, s:R2)
let g:airline#themes#murmur#palette.replace_modified = {'airline_c': ['#AFAF87', '#5f005f', s:alert, s:termbg2, 'bold'] ,}
let s:V1 = ['#FFFFFF', '#AF5F00', 15, s:visualbg] " Outside blocks in visual mode
let s:V2 = ['#AFAF87', '#5F5F5F', s:visualbg, s:termbg2] " Middle block
let g:airline#themes#murmur#palette.visual = airline#themes#generate_color_map(s:V1, s:BB, s:V2)
let g:airline#themes#murmur#palette.visual_modified = {'airline_c': [ '#AFAF87', '#5f005f', s:alert, s:termbg2, 'bold'] ,}
" Inactive mode
let s:IA1 = ['#4E4E4E', '#1C1C1C', 239, 234, '']
let s:IA2 = ['#4E4E4E', '#1C1C1C', 239, 234, '']
let s:IA3 = ['#4E4E4E', '#1C1C1C', 239, 234, '']
let g:airline#themes#murmur#palette.inactive = airline#themes#generate_color_map(s:IA1, s:IA2, s:IA3)
" CtrlP plugin colors
if !get(g:, 'loaded_ctrlp', 0)
finish
endif
let g:airline#themes#murmur#palette.ctrlp = airline#extensions#ctrlp#generate_color_map(
\ ['#FFFFFF', '#5F87FF', 15, s:normalbg, ''],
\ ['#AFAF87', '#5F5F5F', 144, s:termbg, ''],
\ ['#AFAF87', '#5F5F5F', 39, s:termbg2, 'bold'])
-46
View File
@@ -1,46 +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 g:airline#themes#powerlineish#palette = {}
let g:airline#themes#powerlineish#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
let g:airline#themes#powerlineish#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#powerlineish#palette.insert_replace = {
\ 'airline_a': [ s:RE[0] , s:I1[1] , s:RE[1] , s:I1[3] , '' ] }
let g:airline#themes#powerlineish#palette.visual = {
\ 'airline_a': [ s:V1[0] , s:V1[1] , s:V1[2] , s:V1[3] , '' ] }
let g:airline#themes#powerlineish#palette.replace = copy(airline#themes#powerlineish#palette.normal)
let g:airline#themes#powerlineish#palette.replace.airline_a = [ s:RE[0] , s:RE[1] , s:RE[2] , s:RE[3] , '' ]
let s:IA = [ s:N2[1] , s:N3[1] , s:N2[3] , s:N3[3] , '' ]
let g:airline#themes#powerlineish#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)
-41
View File
@@ -1,41 +0,0 @@
let g:airline#themes#serene#palette = {}
let s:guibg = '#080808'
let s:termbg = 232
let s:termsep = 236
let s:guisep = '#303030'
let s:N1 = [ '#00dfff' , s:guibg , 45 , s:termbg ]
let s:N2 = [ '#ff5f00' , s:guibg , 202 , s:termbg ]
let s:N3 = [ '#767676' , s:guibg , 7 , s:termbg ]
let g:airline#themes#serene#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
let g:airline#themes#serene#palette.normal_modified = {
\ 'airline_c': [ '#df0000' , s:guibg, 160 , s:termbg , '' ] ,
\ }
let s:I1 = [ '#5fff00' , s:guibg , 82 , s:termbg ]
let s:I2 = [ '#ff5f00' , s:guibg , 202 , s:termbg ]
let s:I3 = [ '#767676' , s:guibg , 7 , s:termbg ]
let g:airline#themes#serene#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#serene#palette.insert_modified = copy(g:airline#themes#serene#palette.normal_modified)
let g:airline#themes#serene#palette.insert_paste = {
\ 'airline_a': [ s:I1[0] , '#d78700' , s:I1[2] , 172 , '' ] ,
\ }
let g:airline#themes#serene#palette.replace = {
\ 'airline_a': [ s:I1[0] , '#af0000' , s:I1[2] , 124 , '' ] ,
\ }
let g:airline#themes#serene#palette.replace_modified = copy(g:airline#themes#serene#palette.normal_modified)
let s:V1 = [ '#dfdf00' , s:guibg , 184 , s:termbg ]
let s:V2 = [ '#ff5f00' , s:guibg , 202 , s:termbg ]
let s:V3 = [ '#767676' , s:guibg , 7 , s:termbg ]
let g:airline#themes#serene#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
let g:airline#themes#serene#palette.visual_modified = copy(g:airline#themes#serene#palette.normal_modified)
let s:IA = [ '#4e4e4e' , s:guibg , 239 , s:termbg , '' ]
let s:IA2 = [ '#4e4e4e' , s:guisep , 239 , s:termsep , '' ]
let g:airline#themes#serene#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA2, s:IA2)
let g:airline#themes#serene#palette.inactive_modified = copy(g:airline#themes#serene#palette.normal_modified)
-46
View File
@@ -1,46 +0,0 @@
let g:airline#themes#simple#palette = {}
let s:guibg = '#080808'
let s:guibg2 = '#1c1c1c'
let s:termbg = 232
let s:termbg2= 234
let s:N1 = [ s:guibg , '#00dfff' , s:termbg , 45 ]
let s:N2 = [ '#ff5f00' , s:guibg2, 202 , s:termbg2 ]
let s:N3 = [ '#767676' , s:guibg, 243 , s:termbg]
let g:airline#themes#simple#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
let g:airline#themes#simple#palette.normal_modified = {
\ 'airline_c': [ '#df0000' , s:guibg, 160 , s:termbg , '' ] ,
\ }
let s:I1 = [ s:guibg, '#5fff00' , s:termbg , 82 ]
let s:I2 = [ '#ff5f00' , s:guibg2, 202 , s:termbg2 ]
let s:I3 = [ '#767676' , s:guibg, 243 , s:termbg ]
let g:airline#themes#simple#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#simple#palette.insert_modified = copy(g:airline#themes#simple#palette.normal_modified)
let g:airline#themes#simple#palette.insert_paste = {
\ 'airline_a': [ s:I1[0] , '#d78700' , s:I1[2] , 172 , '' ] ,
\ }
let g:airline#themes#simple#palette.replace = {
\ 'airline_a': [ s:I1[0] , '#af0000' , s:I1[2] , 124 , '' ] ,
\ }
let g:airline#themes#simple#palette.replace_modified = copy(g:airline#themes#simple#palette.normal_modified)
let s:V1 = [ s:guibg, '#dfdf00' , s:termbg , 184 ]
let s:V2 = [ '#ff5f00' , s:guibg2, 202 , s:termbg2 ]
let s:V3 = [ '#767676' , s:guibg, 243 , s:termbg ]
let g:airline#themes#simple#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
let g:airline#themes#simple#palette.visual_modified = copy(g:airline#themes#simple#palette.normal_modified)
let s:IA = [ '#4e4e4e' , s:guibg , 239 , s:termbg , '' ]
let s:IA2 = [ '#4e4e4e' , s:guibg2 , 239 , s:termbg2 , '' ]
let g:airline#themes#simple#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA2, s:IA2)
let g:airline#themes#simple#palette.inactive_modified = {
\ 'airline_c': [ '#df0000', '', 160, '', '' ] ,
\ }
-90
View File
@@ -1,90 +0,0 @@
" vim-airline companion theme of Sol
" (https://github.com/Pychimp/vim-sol)
let g:airline#themes#sol#palette = {}
let g:airline#themes#sol#palette.accents = {
\ 'red': [ '#ffffff' , '' , 231 , '' , '' ],
\ }
let s:N1 = [ '#343434' , '#a0a0a0' , 237 , 248 ]
let s:N2 = [ '#343434' , '#b3b3b3' , 237 , 250 ]
let s:N3 = [ '#343434' , '#c7c7c7' , 237 , 252 ]
let g:airline#themes#sol#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
let g:airline#themes#sol#palette.normal_modified = {
\ 'airline_c': [ '#ffffff' , '#ff3535' , 231 , 203 , '' ] ,
\ }
let s:I1 = [ '#eeeeee' , '#09643f' , 255 , 30 ]
let s:I2 = [ '#343434' , '#a3a3a3' , 237 , 249 ]
let s:I3 = [ '#343434' , '#b0b0b0' , 237 , 250 ]
let g:airline#themes#sol#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#sol#palette.insert_modified = {
\ 'airline_c': [ '#ffffff' , '#ff6868' , 225 , 167 , '' ] ,
\ }
let g:airline#themes#sol#palette.insert_paste = {
\ 'airline_a': [ s:I1[0] , '#09643f' , s:I1[2] , 30 , '' ] ,
\ }
let g:airline#themes#sol#palette.replace = copy(g:airline#themes#sol#palette.insert)
let g:airline#themes#sol#palette.replace.airline_a = [ s:I1[0] , '#ff2121' , s:I1[2] , 196 , '' ]
let g:airline#themes#sol#palette.replace.airline_z = [ s:I1[0] , '#ff2121' , s:I1[2] , 196 , '' ]
let g:airline#themes#sol#palette.replace_modified = g:airline#themes#sol#palette.insert_modified
let s:V1 = [ '#ffff9a' , '#ff6003' , 222 , 202 ]
let s:V2 = [ '#343434' , '#a3a3a3' , 237 , 249 ]
let s:V3 = [ '#343434' , '#b0b0b0' , 237 , 250 ]
let g:airline#themes#sol#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
let g:airline#themes#sol#palette.visual_modified = {
\ 'airline_c': [ '#ffffff' , '#ff3535' , 231 , 203 , '' ] ,
\ }
let s:IA = [ '#777777' , '#c7c7c7' , 244 , 251 , '' ]
let g:airline#themes#sol#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)
let g:airline#themes#sol#palette.inactive_modified = {
\ 'airline_c': [ '#ff3535' , '' , 203 , '' , '' ] ,
\ }
let g:airline#themes#sol#palette.tabline = {
\ 'airline_tab': ['#343434', '#b3b3b3', 237, 250, ''],
\ 'airline_tabsel': ['#ffffff', '#004b9a', 231, 31 , ''],
\ 'airline_tabtype': ['#343434', '#a0a0a0', 237, 248, ''],
\ 'airline_tabfill': ['#343434', '#c7c7c7', 237, 251, ''],
\ 'airline_tabmod': ['#ffffff', '#ff6868', 231, 167, ''],
\ }
let s:WI = [ '#eeeeee', '#ff0f38', 255, 201 ]
let g:airline#themes#sol#palette.normal.airline_warning = [
\ s:WI[0], s:WI[1], s:WI[2], s:WI[3]
\ ]
let g:airline#themes#sol#palette.normal_modified.airline_warning =
\ g:airline#themes#sol#palette.normal.airline_warning
let g:airline#themes#sol#palette.insert.airline_warning =
\ g:airline#themes#sol#palette.normal.airline_warning
let g:airline#themes#sol#palette.insert_modified.airline_warning =
\ g:airline#themes#sol#palette.normal.airline_warning
let g:airline#themes#sol#palette.visual.airline_warning =
\ g:airline#themes#sol#palette.normal.airline_warning
let g:airline#themes#sol#palette.visual_modified.airline_warning =
\ g:airline#themes#sol#palette.normal.airline_warning
let g:airline#themes#sol#palette.replace.airline_warning =
\ g:airline#themes#sol#palette.normal.airline_warning
let g:airline#themes#sol#palette.replace_modified.airline_warning =
\ g:airline#themes#sol#palette.normal.airline_warning
if !get(g:, 'loaded_ctrlp', 0)
finish
endif
let g:airline#themes#sol#palette.ctrlp = airline#extensions#ctrlp#generate_color_map(
\ [ '#343434' , '#c7c7c7' , 237 , 251 , '' ] ,
\ [ '#343434' , '#b3b3b3' , 237 , 250 , '' ] ,
\ [ '#eeeeee' , '#007fff' , 255 , 27 , '' ] )
-173
View File
@@ -1,173 +0,0 @@
let g:airline#themes#solarized#palette = {}
function! airline#themes#solarized#refresh()
""""""""""""""""""""""""""""""""""""""""""""""""
" Options
""""""""""""""""""""""""""""""""""""""""""""""""
let s:background = get(g:, 'airline_solarized_bg', &background)
let s:ansi_colors = get(g:, 'solarized_termcolors', 16) != 256 && &t_Co >= 16 ? 1 : 0
let s:tty = &t_Co == 8
""""""""""""""""""""""""""""""""""""""""""""""""
" Colors
""""""""""""""""""""""""""""""""""""""""""""""""
" Base colors
let s:base03 = {'t': s:ansi_colors ? 8 : (s:tty ? '0' : 234), 'g': '#002b36'}
let s:base02 = {'t': s:ansi_colors ? '0' : (s:tty ? '0' : 235), 'g': '#073642'}
let s:base01 = {'t': s:ansi_colors ? 10 : (s:tty ? '0' : 240), 'g': '#586e75'}
let s:base00 = {'t': s:ansi_colors ? 11 : (s:tty ? '7' : 241), 'g': '#657b83'}
let s:base0 = {'t': s:ansi_colors ? 12 : (s:tty ? '7' : 244), 'g': '#839496'}
let s:base1 = {'t': s:ansi_colors ? 14 : (s:tty ? '7' : 245), 'g': '#93a1a1'}
let s:base2 = {'t': s:ansi_colors ? 7 : (s:tty ? '7' : 254), 'g': '#eee8d5'}
let s:base3 = {'t': s:ansi_colors ? 15 : (s:tty ? '7' : 230), 'g': '#fdf6e3'}
let s:yellow = {'t': s:ansi_colors ? 3 : (s:tty ? '3' : 136), 'g': '#b58900'}
let s:orange = {'t': s:ansi_colors ? 9 : (s:tty ? '1' : 166), 'g': '#cb4b16'}
let s:red = {'t': s:ansi_colors ? 1 : (s:tty ? '1' : 160), 'g': '#dc322f'}
let s:magenta = {'t': s:ansi_colors ? 5 : (s:tty ? '5' : 125), 'g': '#d33682'}
let s:violet = {'t': s:ansi_colors ? 13 : (s:tty ? '5' : 61 ), 'g': '#6c71c4'}
let s:blue = {'t': s:ansi_colors ? 4 : (s:tty ? '4' : 33 ), 'g': '#268bd2'}
let s:cyan = {'t': s:ansi_colors ? 6 : (s:tty ? '6' : 37 ), 'g': '#2aa198'}
let s:green = {'t': s:ansi_colors ? 2 : (s:tty ? '2' : 64 ), 'g': '#859900'}
""""""""""""""""""""""""""""""""""""""""""""""""
" 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
if s:background == 'dark'
let s:N1 = [s:base3, s:base1, 'bold']
let s:N2 = [s:base2, (s:tty ? s:base01 : s:base00), '']
let s:N3 = [s:base01, s:base02, '']
else
let s:N1 = [s:base2, s:base00, 'bold']
let s:N2 = [(s:tty ? s:base01 : s:base2), s:base1, '']
let s:N3 = [s:base1, s:base2, '']
endif
let s:NF = [s:orange, s:N3[1], '']
let s:NW = [s:base3, s:orange, '']
if s:background == 'dark'
let s:NM = [s:base1, s:N3[1], '']
else
let s:NM = [s:base01, s:N3[1], '']
endif
" Insert mode
let s:I1 = [s:N1[0], s:yellow, 'bold']
let s:I2 = s:N2
let s:I3 = s:N3
let s:IF = s:NF
let s:IM = s:NM
" Visual mode
let s:V1 = [s:N1[0], s:magenta, 'bold']
let s:V2 = s:N2
let s:V3 = s:N3
let s:VF = s:NF
let s:VM = s:NM
" Replace mode
let s:R1 = [s:N1[0], s:red, '']
let s:R2 = s:N2
let s:R3 = s:N3
let s:RM = s:NM
let s:RF = s:NF
" 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 s:RFa = [s:RF[0].g, s:RF[1].g, s:RF[0].t, s:RF[1].t, s:RF[2]]
let g:airline#themes#solarized#palette.accents = {
\ 'red': s:NFa,
\ }
let g:airline#themes#solarized#palette.inactive = airline#themes#generate_color_map(
\ [s:IA[0].g, s:IA[1].g, s:IA[0].t, s:IA[1].t, s:IA[2]],
\ [s:IA[0].g, s:IA[1].g, s:IA[0].t, s:IA[1].t, s:IA[2]],
\ [s:IA[0].g, s:IA[1].g, s:IA[0].t, s:IA[1].t, s:IA[2]])
let g:airline#themes#solarized#palette.inactive_modified = {
\ 'airline_c': [s:NM[0].g, '', s:NM[0].t, '', s:NM[2]]}
let g:airline#themes#solarized#palette.normal = airline#themes#generate_color_map(
\ [s:N1[0].g, s:N1[1].g, s:N1[0].t, s:N1[1].t, s:N1[2]],
\ [s:N2[0].g, s:N2[1].g, s:N2[0].t, s:N2[1].t, s:N2[2]],
\ [s:N3[0].g, s:N3[1].g, s:N3[0].t, s:N3[1].t, s:N3[2]])
let g:airline#themes#solarized#palette.normal.airline_warning = [
\ s:NW[0].g, s:NW[1].g, s:NW[0].t, s:NW[1].t, s:NW[2]]
let g:airline#themes#solarized#palette.normal_modified = {
\ 'airline_c': [s:NM[0].g, s:NM[1].g,
\ s:NM[0].t, s:NM[1].t, s:NM[2]]}
let g:airline#themes#solarized#palette.normal_modified.airline_warning =
\ g:airline#themes#solarized#palette.normal.airline_warning
let g:airline#themes#solarized#palette.insert = airline#themes#generate_color_map(
\ [s:I1[0].g, s:I1[1].g, s:I1[0].t, s:I1[1].t, s:I1[2]],
\ [s:I2[0].g, s:I2[1].g, s:I2[0].t, s:I2[1].t, s:I2[2]],
\ [s:I3[0].g, s:I3[1].g, s:I3[0].t, s:I3[1].t, s:I3[2]])
let g:airline#themes#solarized#palette.insert.airline_warning =
\ g:airline#themes#solarized#palette.normal.airline_warning
let g:airline#themes#solarized#palette.insert_modified = {
\ 'airline_c': [s:IM[0].g, s:IM[1].g,
\ s:IM[0].t, s:IM[1].t, s:IM[2]]}
let g:airline#themes#solarized#palette.insert_modified.airline_warning =
\ g:airline#themes#solarized#palette.normal.airline_warning
let g:airline#themes#solarized#palette.visual = airline#themes#generate_color_map(
\ [s:V1[0].g, s:V1[1].g, s:V1[0].t, s:V1[1].t, s:V1[2]],
\ [s:V2[0].g, s:V2[1].g, s:V2[0].t, s:V2[1].t, s:V2[2]],
\ [s:V3[0].g, s:V3[1].g, s:V3[0].t, s:V3[1].t, s:V3[2]])
let g:airline#themes#solarized#palette.visual.airline_warning =
\ g:airline#themes#solarized#palette.normal.airline_warning
let g:airline#themes#solarized#palette.visual_modified = {
\ 'airline_c': [s:VM[0].g, s:VM[1].g,
\ s:VM[0].t, s:VM[1].t, s:VM[2]]}
let g:airline#themes#solarized#palette.visual_modified.airline_warning =
\ g:airline#themes#solarized#palette.normal.airline_warning
let g:airline#themes#solarized#palette.replace = airline#themes#generate_color_map(
\ [s:R1[0].g, s:R1[1].g, s:R1[0].t, s:R1[1].t, s:R1[2]],
\ [s:R2[0].g, s:R2[1].g, s:R2[0].t, s:R2[1].t, s:R2[2]],
\ [s:R3[0].g, s:R3[1].g, s:R3[0].t, s:R3[1].t, s:R3[2]])
let g:airline#themes#solarized#palette.replace.airline_warning =
\ g:airline#themes#solarized#palette.normal.airline_warning
let g:airline#themes#solarized#palette.replace_modified = {
\ 'airline_c': [s:RM[0].g, s:RM[1].g,
\ s:RM[0].t, s:RM[1].t, s:RM[2]]}
let g:airline#themes#solarized#palette.replace_modified.airline_warning =
\ g:airline#themes#solarized#palette.normal.airline_warning
let g:airline#themes#solarized#palette.tabline = {}
let g:airline#themes#solarized#palette.tabline.airline_tab = [
\ s:I2[0].g, s:I2[1].g, s:I2[0].t, s:I2[1].t, s:I2[2]]
let g:airline#themes#solarized#palette.tabline.airline_tabtype = [
\ s:N2[0].g, s:N2[1].g, s:N2[0].t, s:N2[1].t, s:N2[2]]
endfunction
call airline#themes#solarized#refresh()
-44
View File
@@ -1,44 +0,0 @@
let g:airline#themes#tomorrow#palette = {}
function! airline#themes#tomorrow#refresh()
let g:airline#themes#tomorrow#palette.accents = {
\ 'red': airline#themes#get_highlight('Constant'),
\ }
let s:N1 = airline#themes#get_highlight2(['Normal', 'bg'], ['Directory', 'fg'], 'bold')
let s:N2 = airline#themes#get_highlight('Pmenu')
let s:N3 = airline#themes#get_highlight('CursorLine')
let g:airline#themes#tomorrow#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
let group = airline#themes#get_highlight('vimCommand')
let g:airline#themes#tomorrow#palette.normal_modified = {
\ 'airline_c': [ group[0], '', group[2], '', '' ]
\ }
let s:I1 = airline#themes#get_highlight2(['Normal', 'bg'], ['MoreMsg', 'fg'], 'bold')
let s:I2 = airline#themes#get_highlight2(['MoreMsg', 'fg'], ['Normal', 'bg'])
let s:I3 = s:N3
let g:airline#themes#tomorrow#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#tomorrow#palette.insert_modified = g:airline#themes#tomorrow#palette.normal_modified
let s:R1 = airline#themes#get_highlight('Error', 'bold')
let s:R2 = s:N2
let s:R3 = s:N3
let g:airline#themes#tomorrow#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3)
let g:airline#themes#tomorrow#palette.replace_modified = g:airline#themes#tomorrow#palette.normal_modified
let s:V1 = airline#themes#get_highlight2(['Normal', 'bg'], ['Constant', 'fg'], 'bold')
let s:V2 = airline#themes#get_highlight2(['Constant', 'fg'], ['Normal', 'bg'])
let s:V3 = s:N3
let g:airline#themes#tomorrow#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
let g:airline#themes#tomorrow#palette.visual_modified = g:airline#themes#tomorrow#palette.normal_modified
let s:IA = airline#themes#get_highlight2(['NonText', 'fg'], ['CursorLine', 'bg'])
let g:airline#themes#tomorrow#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)
let g:airline#themes#tomorrow#palette.inactive_modified = {
\ 'airline_c': [ group[0], '', group[2], '', '' ]
\ }
endfunction
call airline#themes#tomorrow#refresh()
-64
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:IA = [ s:N2[1], s:N3[1], s:N2[3], s:N3[3], '' ]
let g:airline#themes#ubaryd#palette = {}
let g:airline#themes#ubaryd#palette.accents = {
\ 'red': [ '#ff7400' , '' , 196 , '' , '' ],
\ }
let g:airline#themes#ubaryd#palette.inactive = {
\ 'airline_a' : [ s:N2[1] , s:N3[1] , s:N2[3] , s:N3[3] , '' ] }
let g:airline#themes#ubaryd#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
let g:airline#themes#ubaryd#palette.normal_modified = {
\ 'airline_a' : [ s:N2[0] , s:N4[0] , s:N2[2] , s:N4[1] , '' ] ,
\ 'airline_c' : [ s:V1[1] , s:N2[1] , s:V1[3] , s:N2[3] , '' ] }
let g:airline#themes#ubaryd#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#ubaryd#palette.insert_modified = {
\ 'airline_c' : [ s:V2[1] , s:N2[1] , s:V2[3] , s:N2[3] , '' ] }
let g:airline#themes#ubaryd#palette.insert_paste = {
\ 'airline_a' : [ s:I1[0] , s:PA[0] , s:I1[2] , s:PA[1] , '' ] }
let g:airline#themes#ubaryd#palette.replace = copy(airline#themes#ubaryd#palette.insert)
let g:airline#themes#ubaryd#palette.replace.airline_a = [ s:I1[0] , s:RE[0] , s:I1[2] , s:RE[1] , '' ]
let g:airline#themes#ubaryd#palette.replace_modified = g:airline#themes#ubaryd#palette.insert_modified
let g:airline#themes#ubaryd#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
let g:airline#themes#ubaryd#palette.visual_modified = {
\ 'airline_c' : [ s:V3[0] , s:V4[0] , s:V3[2] , s:V4[1] , '' ] }
let g:airline#themes#ubaryd#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)
let g:airline#themes#ubaryd#palette.inactive_modified = {
\ 'airline_c' : [ s:V1[1] , '' , s:V1[3] , '' , '' ] }
-43
View File
@@ -1,43 +0,0 @@
let g:airline#themes#understated#palette = {}
let s:N1 = ['#FFFFFF', '#5F87FF', 15, 69] " Outside blocks in normal mode (mode and file position)
let s:N2 = ['#AFAF87', '#5F5F5F', 144, 59] " Next blocks inside (branch and file format)
let s:N3 = ['#AFAF87', '#5F5F5F', 144, 59] " The middle block
let g:airline#themes#understated#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
let g:airline#themes#understated#palette.normal_modified = {'airline_c': ['#ffffff', '#5f005f', 144, 59, 'bold'] ,}
let s:I1 = ['#FFFFFF', '#87AF5F', 15, 107] " Outside blocks in normal mode (mode and file position)
let s:I2 = ['#AFAF87', '#5F5F5F', 144, 59] " Next blocks inside (branch and file format)
let s:I3 = ['#AFAF87', '#5F5F5F', 144, 59] " The middle block
let g:airline#themes#understated#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#understated#palette.insert_modified = {'airline_c': ['#AFAF87', '#5F5F5F', 144, 59, 'bold'] ,}
let g:airline#themes#understated#palette.insert_paste = {'airline_c': ['#AFAF87', '#5F5F5F', 144, 59, ''] ,}
let g:airline#themes#understated#palette.replace = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#understated#palette.replace.airline_a = ['#FFFFFF', '#870000', 15, 88, '']
let g:airline#themes#understated#palette.replace_modified = {'airline_c': ['#AFAF87', '#5F5F5F', 144, 59, 'bold'] ,}
let s:V1 = ['#FFFFFF', '#AF5F00', 15, 130]
let s:V2 = ['#AFAF87', '#5F5F5F', 144, 59]
let s:V3 = ['#AFAF87', '#5F5F5F', 144, 59]
let g:airline#themes#understated#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
let g:airline#themes#understated#palette.visual_modified = {'airline_c': [ '#AFAF87', '#5f005f', 144, 59, 'bold'] ,}
let s:V1 = ['#080808', '#FFAF00', 232, 214]
let s:IA1 = ['#4E4E4E', '#1C1C1C', 239, 234, '']
let s:IA2 = ['#4E4E4E', '#1C1C1C', 239, 234, '']
let s:IA3 = ['#4E4E4E', '#1C1C1C', 239, 234, '']
let g:airline#themes#understated#palette.inactive = airline#themes#generate_color_map(s:IA1, s:IA2, s:IA3)
let g:airline#themes#understated#palette.inactive_modified = {'airline_c': ['#4E4E4E', '', 239, '', 'bold'] ,}
let g:airline#themes#understated#palette.accents = {'red': ['#FF0000', '', 88, '']}
if !get(g:, 'loaded_ctrlp', 0)
finish
endif
let g:airline#themes#understated#palette.ctrlp = airline#extensions#ctrlp#generate_color_map(
\ ['#FFFFFF', '#1C1C1C', 15, 234, '' ],
\ ['#FFFFFF', '#262626', 15, 235, '' ],
\ ['#FFFFFF', '#303030', 15, 236, 'bold'])
-90
View File
@@ -1,90 +0,0 @@
" vim-airline companion theme of Wombat
" looks great with wombat256 vim colorscheme
" Normal mode
" [ guifg, guibg, ctermfg, ctermbg, opts ]
let s:N1 = [ '#141413' , '#CAE682' , 232 , 192 ] " mode
let s:N2 = [ '#CAE682' , '#32322F' , 192 , 236 ] " info
let s:N3 = [ '#CAE682' , '#242424' , 192 , 234 ] " statusline
let s:N4 = [ '#86CD74' , 113 ] " mode modified
" Insert mode
let s:I1 = [ '#141413' , '#FDE76E' , 232 , 227 ]
let s:I2 = [ '#FDE76E' , '#32322F' , 227 , 236 ]
let s:I3 = [ '#FDE76E' , '#242424' , 227 , 234 ]
let s:I4 = [ '#FADE3E' , 221 ]
" Visual mode
let s:V1 = [ '#141413' , '#B5D3F3' , 232 , 153 ]
let s:V2 = [ '#B5D3F3' , '#32322F' , 153 , 236 ]
let s:V3 = [ '#B5D3F3' , '#242424' , 153 , 234 ]
let s:V4 = [ '#7CB0E6' , 111 ]
" Replace mode
let s:R1 = [ '#141413' , '#E5786D' , 232 , 173 ]
let s:R2 = [ '#E5786D' , '#32322F' , 173 , 236 ]
let s:R3 = [ '#E5786D' , '#242424' , 173 , 234 ]
let s:R4 = [ '#E55345' , 203 ]
" Paste mode
let s:PA = [ '#94E42C' , 47 ]
" Info modified
let s:IM = [ '#40403C' , 238 ]
" Inactive mode
let s:IA = [ '#767676' , s:N3[1] , 243 , s:N3[3] , '' ]
let g:airline#themes#wombat#palette = {}
let g:airline#themes#wombat#palette.accents = {
\ 'red': [ '#E5786D' , '' , 203 , '' , '' ],
\ }
let g:airline#themes#wombat#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
let g:airline#themes#wombat#palette.normal_modified = {
\ 'airline_a': [ s:N1[0] , s:N4[0] , s:N1[2] , s:N4[1] , '' ] ,
\ 'airline_b': [ s:N4[0] , s:IM[0] , s:N4[1] , s:IM[1] , '' ] ,
\ 'airline_c': [ s:N4[0] , s:N3[1] , s:N4[1] , s:N3[3] , '' ] }
let g:airline#themes#wombat#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#wombat#palette.insert_modified = {
\ 'airline_a': [ s:I1[0] , s:I4[0] , s:I1[2] , s:I4[1] , '' ] ,
\ 'airline_b': [ s:I4[0] , s:IM[0] , s:I4[1] , s:IM[1] , '' ] ,
\ 'airline_c': [ s:I4[0] , s:N3[1] , s:I4[1] , s:N3[3] , '' ] }
let g:airline#themes#wombat#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
let g:airline#themes#wombat#palette.visual_modified = {
\ 'airline_a': [ s:V1[0] , s:V4[0] , s:V1[2] , s:V4[1] , '' ] ,
\ 'airline_b': [ s:V4[0] , s:IM[0] , s:V4[1] , s:IM[1] , '' ] ,
\ 'airline_c': [ s:V4[0] , s:N3[1] , s:V4[1] , s:N3[3] , '' ] }
let g:airline#themes#wombat#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3)
let g:airline#themes#wombat#palette.replace_modified = {
\ 'airline_a': [ s:R1[0] , s:R4[0] , s:R1[2] , s:R4[1] , '' ] ,
\ 'airline_b': [ s:R4[0] , s:IM[0] , s:R4[1] , s:IM[1] , '' ] ,
\ 'airline_c': [ s:R4[0] , s:N3[1] , s:R4[1] , s:N3[3] , '' ] }
let g:airline#themes#wombat#palette.insert_paste = {
\ 'airline_a': [ s:I1[0] , s:PA[0] , s:I1[2] , s:PA[1] , '' ] ,
\ 'airline_b': [ s:PA[0] , s:IM[0] , s:PA[1] , s:IM[1] , '' ] ,
\ 'airline_c': [ s:PA[0] , s:N3[1] , s:PA[1] , s:N3[3] , '' ] }
let g:airline#themes#wombat#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)
let g:airline#themes#wombat#palette.inactive_modified = {
\ 'airline_c': [ s:N4[0] , '' , s:N4[1] , '' , '' ] }
if !get(g:, 'loaded_ctrlp', 0)
finish
endif
let g:airline#themes#wombat#palette.ctrlp = airline#extensions#ctrlp#generate_color_map(
\ [ '#DADADA' , '#242424' , 253 , 234 , '' ] ,
\ [ '#DADADA' , '#40403C' , 253 , 238 , '' ] ,
\ [ '#141413' , '#DADADA' , 232 , 253 , 'bold' ] )
-44
View File
@@ -1,44 +0,0 @@
let g:airline#themes#zenburn#palette = {}
function! airline#themes#zenburn#refresh()
let g:airline#themes#zenburn#palette.accents = {
\ 'red': airline#themes#get_highlight('Constant'),
\ }
let s:N1 = airline#themes#get_highlight2(['DbgCurrent', 'bg'], ['Folded', 'fg'], 'bold')
let s:N2 = airline#themes#get_highlight('Folded')
let s:N3 = airline#themes#get_highlight('NonText')
let g:airline#themes#zenburn#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
let s:Nmod = airline#themes#get_highlight('Comment')
let g:airline#themes#zenburn#palette.normal_modified = {
\ 'airline_c': s:Nmod
\ }
let s:I1 = airline#themes#get_highlight2(['DbgCurrent', 'bg'], ['String', 'fg'], 'bold')
let s:I2 = airline#themes#get_highlight2(['String', 'fg'], ['Folded', 'bg'])
let s:I3 = s:N3
let g:airline#themes#zenburn#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#zenburn#palette.insert_modified = g:airline#themes#zenburn#palette.normal_modified
let s:R1 = airline#themes#get_highlight2(['DbgCurrent', 'bg'], ['Comment', 'fg'], 'bold')
let s:R2 = airline#themes#get_highlight2(['Comment', 'fg'], ['Folded', 'bg'])
let s:R3 = s:N3
let g:airline#themes#zenburn#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3)
let g:airline#themes#zenburn#palette.replace_modified = g:airline#themes#zenburn#palette.normal_modified
let s:V1 = airline#themes#get_highlight2(['DbgCurrent', 'bg'], ['Identifier', 'fg'], 'bold')
let s:V2 = airline#themes#get_highlight2(['Identifier', 'fg'], ['Folded', 'bg'])
let s:V3 = s:N3
let g:airline#themes#zenburn#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
let g:airline#themes#zenburn#palette.visual_modified = g:airline#themes#zenburn#palette.normal_modified
let s:IA = airline#themes#get_highlight('NonText')
let g:airline#themes#zenburn#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)
let g:airline#themes#zenburn#palette.inactive_modified = {
\ 'airline_c': s:Nmod
\ }
endfunction
call airline#themes#zenburn#refresh()
+50 -1
View File
@@ -1,9 +1,25 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" 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 ''
@@ -19,6 +35,12 @@ function! airline#util#append(text, minwidth)
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 ''
@@ -62,3 +84,30 @@ else
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
+648 -51
View File
@@ -1,5 +1,5 @@
*airline.txt* Lean and mean status/tabline that's light as air
*airline*
*airline* *vim-airline*
_ _ _ _ ~
__ _(_)_ __ ___ __ _(_)_ __| (_)_ __ ___ ~
\ \ / / | '_ ` _ \ _____ / _` | | '__| | | '_ \ / _ \ ~
@@ -14,16 +14,17 @@ CONTENTS *airline-contents*
03. Name ................................................. |airline-name|
04. Configuration ............................... |airline-configuration|
05. Commands ......................................... |airline-commands|
06. Customization ............................... |airline-customization|
07. Extensions ..................................... |airline-extensions|
08. Advanced Customization ............. |airline-advanced-customization|
09. Funcrefs ......................................... |airline-funcrefs|
10. Pipeline ......................................... |airline-pipeline|
11. Writing Extensions ..................... |airline-writing-extensions|
12. Writing Themes ..................................... |airline-themes|
13. Troubleshooting ........................... |airline-troubleshooting|
14. Contributions ............................... |airline-contributions|
15. License ........................................... |airline-license|
06. Autocommands ................................. |airline-autocommands|
07. Customization ............................... |airline-customization|
08. Extensions ..................................... |airline-extensions|
09. Advanced Customization ............. |airline-advanced-customization|
10. Funcrefs ......................................... |airline-funcrefs|
11. Pipeline ......................................... |airline-pipeline|
12. Writing Extensions ..................... |airline-writing-extensions|
13. Writing Themes ..................................... |airline-themes|
14. Troubleshooting ........................... |airline-troubleshooting|
15. Contributions ............................... |airline-contributions|
16. License ........................................... |airline-license|
==============================================================================
INTRODUCTION *airline-intro*
@@ -31,6 +32,62 @@ INTRODUCTION *airline-intro*
vim-airline is a fast and lightweight alternative to powerline, written
in 100% vimscript with no outside dependencies.
When the plugin is correctly loaded, and Vim is configured for drawing a
'statusline' (set 'laststatus' to 2, to always display the airline
statusline) Vim will draw a nice statusline at the bottom of each window.
That line consists of several sections, each one displaying some piece of
information. By default (without configuration) this line will look like this: >
+-----------------------------------------------------------------------------+
|~ |
|~ |
|~ VIM - Vi IMproved |
|~ |
|~ version 8.0 |
|~ by Bram Moolenaar et al. |
|~ Vim is open source and freely distributable |
|~ |
|~ type :h :q<Enter> to exit |
|~ type :help<Enter> or <F1> for on-line help |
|~ type :help version8<Enter> for version info |
|~ |
|~ |
+-----------------------------------------------------------------------------+
| A | B | C X | Y | Z | [...] |
+-----------------------------------------------------------------------------+
The statusline is the colored line at the bottom, which contains the sections
(possibly in different colors):
section meaning (example)~
--------------------------
A displays the mode + additional flags like crypt/spell/paste (INSERT)
B VCS information (branch, hunk summary) (master)
C filename + read-only flag (~/.vim/vimrc RO)
X filetype (vim)
Y file encoding[fileformat] (utf-8[unix])
Z current position in the file
percentage % ☰ current line/number of lines ln : column
So this: 10% ☰ 10/100 ln : 20 means: >
10% - 10 percent
☰ 10 - current line 10
/100 ln - of 100 lines
: 20 - current column 20
<
[...] additional sections (warning/errors/statistics)
from external plugins (e.g. YCM/syntastic/...)
For a better look, those sections can be colored differently, depending on the mode and
whether the current file is 'modified'
Additionally, several extensions exists, that can provide additional feature (e.g. the
tabline extension provides an extra statusline on the top of the Vim window and can
display loaded buffers and tabs in the current Vim session).
Most of this is customizable and the default sections can be configured using the vim
variables g:airline_section_<name> (see |airline-default-sections|)
==============================================================================
FEATURES *airline-features*
@@ -69,6 +126,12 @@ values):
* enable paste detection >
let g:airline_detect_paste=1
<
* enable crypt detection >
let g:airline_detect_crypt=1
* enable spell detection >
let g:airline_detect_spell=1
<
* enable iminsert detection >
let g:airline_detect_iminsert=0
<
@@ -78,8 +141,12 @@ values):
<
* themes are automatically selected based on the matching colorscheme. this
can be overridden by defining a value. >
let g:airline_theme=
let g:airline_theme='dark'
<
Note: Only the dark theme is distributed with vim-airline. For more themes,
checkout the vim-airline-themes repository
(github.com/vim-airline/vim-airline-themes)
* if you want to patch the airline theme before it gets applied, you can
supply the name of a function where you can modify the palette. >
let g:airline_theme_patch_func = 'AirlineThemePatch'
@@ -91,9 +158,12 @@ values):
endif
endfunction
<
* enable/disable automatic population of the `g:airline_symbols` dictionary
with powerline symbols. >
let g:airline_powerline_fonts=0
* By default, airline will use unicode symbols if your encoding matches
utf-8. If you want the powerline symbols set this variable: >
let g:airline_powerline_fonts = 1
<
If you want to use plain ascii symbols, set this variable: >
let g:airline_symbols_ascii = 1
<
* define the set of text to display for each mode. >
let g:airline_mode_map = {} " see source for the defaults
@@ -126,6 +196,17 @@ values):
heavily) >
let g:airline_exclude_preview = 0
<
* disable the Airline customization for selective windows (this is a
window-local variable so you can disable it for only some windows) >
let w:airline_disabled = 1
* Do not draw separators for empty sections (only for the active window) >
let g:airline_skip_empty_sections = 1
<
This variable can be overriden by setting a window-local variable with
the same name (in the correct window): >
let w:airline_skip_empty_sections = 0
<
==============================================================================
COMMANDS *airline-commands*
@@ -139,16 +220,28 @@ COMMANDS *airline-commands*
Toggles between the standard 'statusline' and airline.
:AirlineRefresh *:AirlineRefresh*
Refreshes all highlight groups.
Refreshes all highlight groups and redraws the statusline.
==============================================================================
AUTOCOMMANDS *airline-autocommands*
Airline comes with some user-defined autocommands.
|AirlineAfterInit| after plugin is initialized, but before the statusline
is replaced
|AirlineAfterTheme| after theme of the statusline has been changed
|AirlineToggledOn| after airline is activated and replaced the statusline
|AirlineToggledOff| after airline is deactivated and the statusline is
restored to the original
==============================================================================
CUSTOMIZATION *airline-customization*
The following are some unicode symbols for customizing the left/right
separators, as well as the powerline font glyths.
separators, as well as the powerline font glyphs.
Note: You must define the dictionary first before setting values. Also, it's a
good idea to check whether if it exists as to avoid accidentally overwritting
good idea to check whether it exists as to avoid accidentally overwriting
its contents. >
if !exists('g:airline_symbols')
let g:airline_symbols = {}
@@ -159,13 +252,18 @@ its contents. >
let g:airline_left_sep = '▶'
let g:airline_right_sep = '«'
let g:airline_right_sep = '◀'
let g:airline_symbols.crypt = '🔒'
let g:airline_symbols.linenr = '␊'
let g:airline_symbols.linenr = '␤'
let g:airline_symbols.linenr = '¶'
let g:airline_symbols.maxlinenr = '☰'
let g:airline_symbols.maxlinenr = ''
let g:airline_symbols.branch = '⎇'
let g:airline_symbols.paste = 'ρ'
let g:airline_symbols.paste = 'Þ'
let g:airline_symbols.paste = '∥'
let g:airline_symbols.spell = 'Ꞩ'
let g:airline_symbols.notexists = '∄'
let g:airline_symbols.whitespace = 'Ξ'
" powerline symbols
@@ -192,23 +290,26 @@ with the usual statusline syntax.
Note: If you define any section variables it will replace the default values
entirely. If you want to disable only certain parts of a section you can try
using variables defined in the |airline-configuration| or |airline_extensions|
using variables defined in the |airline-configuration| or |airline-extensions|
section.
|airline-default-sections|
>
variable names default contents
----------------------------------------------------------------------------
let g:airline_section_a (mode, paste, iminsert)
let g:airline_section_a (mode, crypt, paste, spell, iminsert)
let g:airline_section_b (hunks, branch)
let g:airline_section_c (bufferline or filename)
let g:airline_section_gutter (readonly, csv)
let g:airline_section_x (tagbar, filetype, virtualenv)
let g:airline_section_y (fileencoding, fileformat)
let g:airline_section_z (percentage, line number, column number)
let g:airline_section_warning (syntastic, whitespace)
let g:airline_section_error (ycm_error_count, syntastic-err, eclim)
let g:airline_section_warning (ycm_warning_count, syntastic-warn, whitespace)
" here is an example of how you could replace the branch indicator with
" the current working directory, followed by the filename.
let g:airline_section_b = '%{getcwd()}'
" the current working directory (limited to 10 characters),
" followed by the filename.
let g:airline_section_b = '%-0.10{getcwd()}'
let g:airline_section_c = '%t'
<
==============================================================================
@@ -217,6 +318,23 @@ EXTENSIONS *airline-extensions*
Most extensions are enabled by default and lazily loaded when the
corresponding plugin (if any) is detected.
By default, airline will attempt to load any extension it can find in the
'runtimepath'. On some systems this can result in an undesirable startup
cost. You can disable the check with the following flag. >
let g:airline#extensions#disable_rtp_load = 1
<
Note: Third party plugins that rely on this behavior will be affected. You
will need to manually load them.
Alternatively, if you want a minimalistic setup and would rather opt-in which
extensions get loaded instead of disabling each individually, you can declare
the following list variable: >
" an empty list disables all extensions
let g:airline_extensions = []
" or only load what you want
let g:airline_extensions = ['branch', 'tabline']
<
------------------------------------- *airline-default*
The default extension understands all of the `g:` variables in the
|airline-configuration| section, however it also has some more fine-tuned
@@ -228,11 +346,42 @@ configuration values that you can use.
\ 'x': 60,
\ 'y': 88,
\ 'z': 45,
\ })
\ 'warning': 80,
\ 'error': 80,
\ }
" Note: set to an empty dictionary to disable truncation.
let g:airline#extensions#default#section_truncate_width = {}
<
* configure the layout of the sections by specifying an array of two arrays
(first array is the left side, second array is the right side). >
let g:airline#extensions#default#layout = [
\ [ 'a', 'b', 'c' ],
\ [ 'x', 'y', 'z', 'error', 'warning' ]
\ ]
<
* configure the layout to not use %(%) grouping items in the statusline.
Try setting this to zero, if you notice bleeding color artifacts >
let airline#extensions#default#section_use_groupitems = 1
<
* configure the fileformat output
By default, it will display something like 'utf-8[unix]', however, you can
skip displaying it, if the output matches a configured string. To do so,
set >
let g:airline#parts#ffenc#skip_expected_string='utf-8[unix]'
<
------------------------------------- *airline-quickfix*
The quickfix extension is a simple built-in extension which determines
whether the buffer is a quickfix or location list buffer, and adjusts the
title accordingly.
* configure the title text for quickfix buffers >
let g:airline#extensions#quickfix#quickfix_text = 'Quickfix'
<
* configure the title text for location list buffers >
let g:airline#extensions#quickfix#location_text = 'Location'
<
------------------------------------- *airline-bufferline*
vim-bufferline <https://github.com/bling/vim-bufferline>
@@ -243,8 +392,16 @@ vim-bufferline <https://github.com/bling/vim-bufferline>
let g:airline#extensions#bufferline#overwrite_variables = 1
<
------------------------------------- *airline-branch*
vim-airline will display the branch-indicator together with the branch name in
the statusline, if one of the following plugins is installed:
fugitive.vim <https://github.com/tpope/vim-fugitive>
lawrencium <https://bitbucket.org/ludovicchabant/vim-lawrencium>
vcscommand <http://www.vim.org/scripts/script.php?script_id=90>
If a file is edited, that is not yet in the repository, the
notexists symbol will be displayed after the branch name.
* enable/disable fugitive/lawrencium integration >
let g:airline#extensions#branch#enabled = 1
@@ -252,20 +409,58 @@ lawrencium <https://bitbucket.org/ludovicchabant/vim-lawrencium>
* change the text for when no branch is detected >
let g:airline#extensions#branch#empty_message = ''
<
* define the order in which the branches of different vcs systems will be
displayed on the statusline (currently only for fugitive and lawrencium) >
let g:airline#extensions#branch#vcs_priority = ["git", "mercurial"]
<
* use vcscommand.vim if available >
let g:airline#extensions#branch#use_vcscommand = 0
<
* truncate long branch names to a fixed length >
let g:airline#extensions#branch#displayed_head_limit = 10
<
* customize formatting of branch name >
" default value leaves the name unmodifed
let g:airline#extensions#branch#format = 0
" to only show the tail, e.g. a branch 'feature/foo' becomes 'foo', use
let g:airline#extensions#branch#format = 1
" to truncate all path sections but the last one, e.g. a branch
" 'foo/bar/baz' becomes 'f/b/baz', use
let g:airline#extensions#branch#format = 2
" if a string is provided, it should be the name of a function that
" takes a string and returns the desired value
let g:airline#extensions#branch#format = 'CustomBranchName'
function! CustomBranchName(name)
return '[' . a:name . ']'
endfunction
<
------------------------------------- *airline-syntastic*
syntastic <https://github.com/scrooloose/syntastic>
syntastic <https://github.com/vim-syntastic/syntastic>
* enable/disable syntastic integration >
let g:airline#extensions#syntastic#enabled = 1
Note: The recommendation from syntastic to modify the statusline directly
does not apply, if you use vim-airline, since it will take care for you of
adjusting the statusline.
* syntastic error_symbol >
let airline#extensions#syntastic#error_symbol = 'E:'
<
* syntastic warning >
let airline#extensions#syntastic#warning_symbol = 'W:'
<
------------------------------------- *airline-tagbar*
tagbar <https://github.com/majutsushi/>
tagbar <https://github.com/majutsushi/tagbar>
* enable/disable tagbar integration >
let g:airline#extensions#tagbar#enabled = 1
<
* change how tags are displayed (:help tagbar-statusline) >
let g:airline#extensions#tagbar#flags = '' "default
let g:airline#extensions#tagbar#flags = '' (default)
let g:airline#extensions#tagbar#flags = 'f'
let g:airline#extensions#tagbar#flags = 's'
let g:airline#extensions#tagbar#flags = 'p'
@@ -283,6 +478,8 @@ csv.vim <https://github.com/chrisbra/csv.vim>
------------------------------------- *airline-hunks*
vim-gitgutter <https://github.com/airblade/vim-gitgutter>
vim-signify <https://github.com/mhinz/vim-signify>
changesPlugin <https://github.com/chrisbra/changesPlugin>
quickfixsigns <https://github.com/tomtom/quickfixsigns_vim>
* enable/disable showing a summary of changed hunks under source control. >
let g:airline#extensions#hunks#enabled = 1
@@ -293,6 +490,12 @@ vim-signify <https://github.com/mhinz/vim-signify>
* set hunk count symbols. >
let g:airline#extensions#hunks#hunk_symbols = ['+', '~', '-']
<
------------------------------------- *airline-vimagit*
vimagit <https://github.com/jreybert/vimagit>
* enable/disable vimagit integration >
let g:airline#extensions#vimagit#enabled = 1
<
------------------------------------- *airline-ctrlp*
ctrlp <https://github.com/kien/ctrlp.vim>
@@ -321,15 +524,70 @@ eclim <https://eclim.org>
|airline-syntastic| extension. >
let g:airline#extensions#eclim#enabled = 1
------------------------------------- *airline-wordcount*
* enable/disable word counting. >
let g:airline#extensions#wordcount#enabled = 1
<
* regex of filetypes to enable word counting. >
" the default value matches filetypes typically used for documentation
" such as markdown and help files.
let g:airline#extensions#wordcount#filetypes = ...
(default: markdown,rst,org,help,text,tex,mail)
* defines the name of a formatter for word count will be displayed: >
" The default will try to guess LC_NUMERIC and format number accordingly
" e.g. 1,042 in English and 1.042 in German locale
let g:airline#extensions#wordcount#formatter = 'default'
" here is how you can define a 'foo' formatter:
" create a file in the dir autoload/airline/extensions/wordcount/formatters/
" called foo.vim
" this example needs at least Vim > 7.4.1042
function! airline#extensions#wordcount#formatters#foo#format()
return (wordcount()['words'] == 0 ? 'NONE' :
\ wordcount()['words'] > 100 ? 'okay' : 'not enough')
endfunction
let g:airline#extensions#wordline#formatter = 'foo'
* defines how to display the wordcount statistics: >
let g:airline#extensions#wordcount#format = '%d words'
<
------------------------------------- *airline-whitespace*
* enable/disable detection of whitespace errors. >
let g:airline#extensions#whitespace#enabled = 1
<
* disable detection of whitespace errors. >
" useful to call for particular file types (e.g., in "ftplugin/*")
silent! call airline#extensions#whitespace#disable()
<
* customize the type of mixed indent checking to perform. >
" must be all spaces or all tabs before the first non-whitespace character
let g:airline#extensions#whitespace#mixed_indent_algo = 0 (default)
" certain number of spaces are allowed after tabs, but not in between
" this algorithm works well for /** */ style comments in a tab-indented file
let g:airline#extensions#whitespace#mixed_indent_algo = 1
" spaces are allowed after tabs, but not in between
" this algorithm works well with programming styles that use tabs for
" indentation and spaces for alignment
let g:airline#extensions#whitespace#mixed_indent_algo = 2
<
* customize the whitespace symbol. >
let g:airline#extensions#whitespace#symbol = '!'
<
* configure which whitespace checks to enable. >
let g:airline#extensions#whitespace#checks = [ 'indent', 'trailing' ]
" indent: mixed indent within a line
" long: overlong lines
" trailing: trailing whitespace
" mixed-indent-file: different indentation in different lines
let g:airline#extensions#whitespace#checks = [ 'indent', 'trailing', 'long', 'mixed-indent-file' ]
" this can also be configured for an individual buffer
let b:airline_whitespace_checks = [ 'indent', 'trailing', 'long', 'mixed-indent-file' ]
<
* configure the maximum number of lines where whitespace checking is enabled. >
let g:airline#extensions#whitespace#max_lines = 20000
<
* configure whether a message should be displayed. >
let g:airline#extensions#whitespace#show_message = 1
@@ -337,36 +595,138 @@ eclim <https://eclim.org>
* configure the formatting of the warning messages. >
let g:airline#extensions#whitespace#trailing_format = 'trailing[%s]'
let g:airline#extensions#whitespace#mixed_indent_format = 'mixed-indent[%s]'
let g:airline#extensions#whitespace#long_format = 'long[%s]'
let g:airline#extensions#whitespace#mixed_indent_file_format = 'mix-indent-file[%s]'
* configure custom trailing whitespace regexp rule >
let g:airline#extensions#whitespace#trailing_regexp = '\s$'
* configure, which filetypes have special treatment of /* */ comments,
matters for mix-indent-file algorithm: >
let airline#extensions#c_like_langs = ['c', 'cpp', 'cuda', 'go', 'javascript', 'ld', 'php']
<
* disable whitespace checking for an individual buffer >
" Checking is enabled by default because b:airline_whitespace_disabled
" is by default not defined:
unlet b:airline_whitespace_disabled
" If b:airline_whitespace_disabled is defined and is non-zero for a buffer,
" then whitespace checking will be disabled for that buffer; for example:
" let b:airline_whitespace_disabled = 1
<
------------------------------------- *airline-tabline*
* enable/disable enhanced tabline. >
Note: If you're using the ctrlspace tabline only the option marked with (c)
are supported!
* enable/disable enhanced tabline. (c)
let g:airline#extensions#tabline#enabled = 0
* enable/disable displaying open splits per tab (only when tabs are opened). >
let g:airline#extensions#tabline#show_splits = 1
*
* switch position of buffers and tabs on splited tabline (c)
(only supported for ctrlspace plugin). >
let g:airline#extensions#tabline#switch_buffers_and_tabs = 0
<
* enable/disable displaying buffers with a single tab. >
* enable/disable displaying buffers with a single tab. (c)
let g:airline#extensions#tabline#show_buffers = 1
<
Note: If you are using neovim (has('tablineat') = 1), then you can click
on the tabline with the left mouse button to switch to that buffer, and
with the middle mouse button to delete that buffer.
* enable/disable displaying tabs, regardless of number. (c)
let g:airline#extensions#tabline#show_tabs = 1
<
* configure filename match rules to exclude from the tabline. >
let g:airline#extensions#tabline#excludes = []
<
* configure how numbers are calculated in tab mode. >
* enable/disable display preview window buffer in the tabline. >
let g:airline#extensions#tabline#exclude_preview = 1
* configure how numbers are displayed in tab mode. >
let g:airline#extensions#tabline#tab_nr_type = 0 " # of splits (default)
let g:airline#extensions#tabline#tab_nr_type = 1 " tab number
let g:airline#extensions#tabline#tab_nr_type = 2 " splits and tab number
<
* defines the name of a formatter for how buffer names are displayed. >
* enable/disable displaying tab number in tabs mode. >
let g:airline#extensions#tabline#show_tab_nr = 1
* enable/disable displaying tab type (far right) >
let g:airline#extensions#tabline#show_tab_type = 1
Note: The tab-type will only be displayed in tab-mode,
if there are no splits shown. (See: g:airline#extensions#tabline#show_splits)
* rename label for buffers (default: 'buffers') (c)
let g:airline#extensions#tabline#buffers_label = 'b'
* rename label for tabs (default: 'tabs') (c)
let g:airline#extensions#tabline#tabs_label = 't'
* enable/disable displaying index of the buffer.
When enabled, numbers will be displayed in the tabline and mappings will be
exposed to allow you to select a buffer directly. Up to 9 mappings will be
exposed. >
let g:airline#extensions#tabline#buffer_idx_mode = 1
nmap <leader>1 <Plug>AirlineSelectTab1
nmap <leader>2 <Plug>AirlineSelectTab2
nmap <leader>3 <Plug>AirlineSelectTab3
nmap <leader>4 <Plug>AirlineSelectTab4
nmap <leader>5 <Plug>AirlineSelectTab5
nmap <leader>6 <Plug>AirlineSelectTab6
nmap <leader>7 <Plug>AirlineSelectTab7
nmap <leader>8 <Plug>AirlineSelectTab8
nmap <leader>9 <Plug>AirlineSelectTab9
nmap <leader>- <Plug>AirlineSelectPrevTab
nmap <leader>+ <Plug>AirlineSelectNextTab
Note: Mappings will be ignored within a NERDTree buffer.
Note: In buffer_idx_mode these mappings won't change the
current tab, but switch to the buffer visible in that tab.
Use |gt| for switching tabs.
In tabmode, those mappings will switch to the specified tab.
* change the display format of the buffer index >
let g:airline#extensions#tabline#buffer_idx_format = {
\ '0': '0 ',
\ '1': '1 ',
\ '2': '2 ',
\ '3': '3 ',
\ '4': '4 ',
\ '5': '5 ',
\ '6': '6 ',
\ '7': '7 ',
\ '8': '8 ',
\ '9': '9 '
\}
<
* defines the name of a formatter for how buffer names are displayed. (c)
let g:airline#extensions#tabline#formatter = 'default'
" here is how you can define a 'foo' formatter:
function! airline#extensions#tabline#formatters#foo(bufnr, buffers)
" create a file in the dir autoload/airline/extensions/tabline/formatters/
" called foo.vim >
function! airline#extensions#tabline#formatters#foo#format(bufnr, buffers)
return fnamemodify(bufname(a:bufnr), ':t')
endfunction
let g:airline#extensions#tabline#formatter = 'foo'
<
Note: the following variables are only used by the 'default' formatter.
When no disambiguation is needed, both 'unique_tail_improved' and
'unique_tail' delegate formatting to 'default', so these variables also
control rendering of unique filenames when using these formatters.
* configure whether buffer numbers should be shown. >
let g:airline#extensions#tabline#buffer_nr_show = 0
<
* configure how buffer numbers should be formatted with |printf|. >
* configure how buffer numbers should be formatted with |printf()|. >
let g:airline#extensions#tabline#buffer_nr_format = '%s: '
<
* configure the formatting of filenames (see |filename-modifiers|). >
@@ -374,6 +734,18 @@ eclim <https://eclim.org>
<
* configure collapsing parent directories in buffer name. >
let g:airline#extensions#tabline#fnamecollapse = 1
<
* configure truncating non-active buffer names to specified length. >
let g:airline#extensions#tabline#fnametruncate = 0
" The `unique_tail` algorithm will display the tail of the filename, unless
" there is another file of the same name, in which it will display it along
" with the containing parent directory.
let g:airline#extensions#tabline#formatter = 'unique_tail'
" The `unique_tail_improved` - another algorithm, that will smartly uniquify
" buffers names with similar filename, suppressing common parts of paths.
let g:airline#extensions#tabline#formatter = 'unique_tail_improved'
<
* configure the minimum number of buffers needed to show the tabline. >
let g:airline#extensions#tabline#buffer_min_count = 0
@@ -391,13 +763,211 @@ eclim <https://eclim.org>
let g:airline#extensions#tabline#left_alt_sep = ''
let g:airline#extensions#tabline#right_sep = ''
let g:airline#extensions#tabline#right_alt_sep = ''
<
* configure whether close button should be shown: >
let g:airline#extensions#tabline#show_close_button = 1
* configure symbol used to represent close button >
let g:airline#extensions#tabline#close_symbol = 'X'
* configure pattern to be ignored on BufAdd autocommand >
" fixes unneccessary redraw, when e.g. opening Gundo window
let airline#extensions#tabline#ignore_bufadd_pat =
\ '\c\vgundo|undotree|vimfiler|tagbar|nerd_tree'
Note: Enabling this extension will modify 'showtabline' and 'guioptions'.
* enable Refresh of tabline buffers on |BufAdd| autocommands
(set this to one, if you note 'AirlineTablineRefresh', however, this
won't update airline on |:badd| commands) >
let airline#extensions#tabline#disable_refresh = 0
* preserve windows when closing a buffer from the bufferline (default: 0) >
let airline#extensions#tabline#middle_click_preserves_windows = 1
<
------------------------------------- *airline-tmuxline*
tmuxline <https://github.com/edkolev/tmuxline.vim>
* enable/disable tmuxline integration >
let g:airline#extensions#tmuxline#enabled = 0
<
* configure which mode colors should be used in tmux statusline >
let airline#extensions#tmuxline#color_template = 'normal' (default)
let airline#extensions#tmuxline#color_template = 'insert'
let airline#extensions#tmuxline#color_template = 'visual'
let airline#extensions#tmuxline#color_template = 'replace'
<
* if specified, setting this option will trigger writing to the file whenever the
airline theme is applied, i.e. when :AirlineTheme is executed and on vim
startup >
airline#extensions#tmuxline#snapshot_file = "~/.tmux-statusline-colors.conf"
<
------------------------------------- *airline-promptline*
promptline <https://github.com/edkolev/promptline.vim>
* configure the path to the snapshot .sh file. Mandatory option. The created
file should be sourced by the shell on login >
" in .vimrc
airline#extensions#promptline#snapshot_file = "~/.shell_prompt.sh"
" in .bashrc/.zshrc
[ -f ~/.shell_prompt.sh ] && source ~/.shell_prompt.sh
<
* enable/disable promptline integration >
let g:airline#extensions#promptline#enabled = 0
<
* configure which mode colors should be used in prompt >
let airline#extensions#promptline#color_template = 'normal' (default)
let airline#extensions#promptline#color_template = 'insert'
let airline#extensions#promptline#color_template = 'visual'
let airline#extensions#promptline#color_template = 'replace'
<
------------------------------------- *airline-nrrwrgn*
NrrwRgn <https://github.com/chrisbra/NrrwRgn>
* enable/disable NrrwRgn integration >
let g:airline#extensions#nrrwrgn#enabled = 1
------------------------------------- *airline-capslock*
vim-capslock <https://github.com/tpope/vim-capslock>
* enable/disable vim-capslock integration >
let g:airline#extensions#capslock#enabled = 1
------------------------------------- *airline-xkblayout*
vim-xkblayout
* enable/disable vim-xkblayout extension >
let g:airline#extensions#xkblayout#enabled = 1
* define path to the backend switcher library
Linux (Install https://github.com/ierton/xkb-switch):
let g:XkbSwitchLib = '/usr/local/lib/libxkbswitch.so'
macOS (Install https://github.com/vovkasm/input-source-switcher):
let g:XkbSwitchLib = '/usr/local/lib/libInputSourceSwitcher.dylib'
------------------------------------- *airline-windowswap*
vim-windowswap <https://github.com/wesQ3/vim-windowswap>
* enable/disable vim-windowswap integration >
let g:airline#extensions#windowswap#enabled = 1
* set marked window indicator string >
let g:airline#extensions#windowswap#indicator_text = 'WS'
<
------------------------------------- *airline-obsession*
vim-obsession <https://github.com/tpope/vim-obsession>
* enable/disable vim-obsession integration >
let g:airline#extensions#obsession#enabled = 1
* set marked window indicator string >
let g:airline#extensions#obsession#indicator_text = '$'
<
------------------------------------- *airline-taboo*
taboo.vim <https://github.com/gcmt/taboo.vim>
* enable/disable taboo.vim integration >
let g:airline#extensions#taboo#enabled = 1
<
------------------------------------- *airline-ctrlspace*
vim-ctrlspace <https://github.com/szw/vim-ctrlspace>
* enable/disable vim-ctrlspace integration >
let g:airline#extensions#ctrlspace#enabled = 1
<
To make the vim-ctrlspace integration work you will need to make the
ctrlspace statusline function call the correct airline function. Therefore
add the following line into your .vimrc: >
let g:CtrlSpaceStatuslineFunction = "airline#extensions#ctrlspace#statusline()"
<
------------------------------------- *airline-ycm*
YouCompleteMe <https://github.com/Valloric/YouCompleteMe>
Shows number of errors and warnings in the current file detected by YCM.
* enable/disable YCM integration >
let g:airline#extensions#ycm#enabled = 1
* set error count prefix >
let g:airline#extensions#ycm#error_symbol = 'E:'
* set warning count prefix >
let g:airline#extensions#ycm#warning_symbol = 'W:'
<
------------------------------------- *airline-po*
po.vim <http://www.vim.org/scripts/script.php?script_id=2530>
* enable/disable po integration >
let g:airline#extensions#po#enabled = 1
<
* truncate width names to a fixed length >
let g:airline#extensions#po#displayed_limit = 0
------------------------------------- *airline-vimtex*
vimtex <https://github.com/lervag/vimtex>
Shows the current file's vimtex related info.
* enable/disable vimtex integration >
let g:airline#extensions#vimtex#enabled = 1
<
* left and right delimiters (shown only when status string is not empty)
let g:airline#extensions#vimtex#left = "{"
let g:airline#extensions#vimtex#right = "}"
State indicators:
* the current tex file is the main project file (nothing is shown by default)
let g:airline#extensions#vimtex#main = ""
* the current tex file is a subfile of the project
and the compilation is set for the main file
let 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
let g:airline#extensions#vimtex#sub_local = "l"
* single compilation is running
let g:airline#extensions#vimtex#compiled = "c₁"
* continuousr compilation is running
let g:airline#extensions#vimtex#continuous = "c"
* viewer is opened
let g:airline#extensions#vimtex#viewer = "v"
------------------------------------- *airline-ale*
ale <https://github.com/w0rp/ale>
* enable/disable ale integration >
let g:airline#extensions#ale#enabled = 1
* ale error_symbol >
let airline#extensions#ale#error_symbol = 'E:'
<
* ale warning >
let airline#extensions#ale#warning_symbol = 'W:'
<
------------------------------------- *airline-neomake*
neomake <https://github.com/neomake/neomake>
* enable/disable neomake integration >
let g:airline#extensions#neomake#enabled = 1
* neomake error_symbol >
let airline#extensions#neomake#error_symbol = 'E:'
<
* neomake warning >
let airline#extensions#neomake#warning_symbol = 'W:'
<
==============================================================================
ADVANCED CUSTOMIZATION *airline-advanced-customization*
The defaults will accomodate the mass majority of users with minimal
The defaults will accommodate the mass majority of users with minimal
configuration. However, if you want to reposition sections or contents you can
do so with built-in helper functions, which makes it possible to create
sections in a more declarative style.
@@ -418,6 +988,10 @@ greater than a minimum width. >
Parts can be configured to be visible conditionally. >
call airline#parts#define_condition('foo', 'getcwd() =~ "work_dir"')
<
Now add part "foo" to section section airline_section_y: >
let g:airline_section_y = airline#section#create_right(['ffenc','foo'])
<
Note: Part definitions are combinative; e.g. the two examples above modify the
same `foo` part.
@@ -429,14 +1003,22 @@ Before is a list of parts that are predefined by vim-airline.
* `mode` displays the current mode
* `iminsert` displays the current insert method
* `paste` displays the paste indicator
* `crypt` displays the crypted indicator
* `spell` displays the spell indicator
* `filetype` displays the file type
* `readonly` displays the read only indicator
* `file` displays the filename and modified indicator
* `path` displays the filename (absolute path) and modifier indicator
* `linenr` displays the current line number
* `maxlinenr` dispalys the number of lines in the buffer
* `ffenc` displays the file format and encoding
And the following are defined for their respective extensions:
`hunks`, `branch`, `tagbar`, `syntastic`, `whitespace`
`ale_error_count` `ale_warning_count` `branch` `eclim` `hunks`
`neomake_error_count` `neomake_warning_count` `obsession`
`syntastic-warn` `syntastic-err` `tagbar` `whitespace`
`windowswap` `ycm_error_count` `ycm_warning_count`
------------------------------------- *airline-accents*
Accents can be defined on any part, like so: >
@@ -449,11 +1031,19 @@ colors instead of the section's default foreground color.
The following accents are defined by default. Themes can define their variants
of the colors, but defaults will be provided if missing. >
bold, italic, red, green, blue, yellow, orange, purple
bold, italic, red, green, blue, yellow, orange, purple, none
<
The defaults configure the mode and line number parts to be bold, and the
readonly part to be red.
"none" is special. This can be used, to remove a bold accent from an existing
theme. For example, usually the mode part of the statusline is usually defined
to be bold. However, it can be hard to remove an existing bold accent from the
default configuration. Therefore, you can use the none accent to remove
existing accents, so if you put >
call airline#parts#define_accent('mode', 'none')
the mode section will be set to non-bold font style.
------------------------------------- *airline-sections*
Once a part is defined, you can use helper functions to generate the
statuslines for each section. For example, to use the part above, we could
@@ -463,7 +1053,7 @@ define a section like this: >
let g:airline_section_b = airline#section#create_left(['ffenc','file'])
let g:airline_section_c = airline#section#create(['%{getcwd()}'])
endfunction
autocmd VimEnter * call AirlineInit()
autocmd User AirlineAfterInit call AirlineInit()
<
This will create a section with the `mode`, followed by a space, and our `foo`
part in section `a`. Section `b` will have two parts with a left-side
@@ -472,9 +1062,10 @@ the space and cwd are not defined parts. For convenience, if a part of that
key does not exist, it will be inserted as is. The unit tests will be a good
resource for possibilities.
Note: The use of |VimEnter| is important, because most extensions are lazily
Note: The use of |User| is important, because most extensions are lazily
loaded, so we must give them a chance to define their parts before we can use
them.
them. Also this autocommand is only triggered, after the airline functions are
actually available on startup.
Note: The `airline#section#create` function and friends will do its best to
create a section with the appropriate separators, but it only works for
@@ -491,7 +1082,7 @@ the most powerful way to customize the statusline, and sometimes it may be
easier to go this route than the above methods.
Every section can have two values. The default value is the global `g:`
variable which is used in the absense of a `w:` value. This makes it very easy
variable which is used in the absence of a `w:` value. This makes it very easy
to override only certain parts of the statusline by only defining window-local
variables for a subset of all sections.
@@ -516,7 +1107,6 @@ You can also remove a function as well, which is useful for when you want a
temporary override. >
call airline#remove_statusline_func('MyPlugin')
<
==============================================================================
PIPELINE *airline-pipeline*
@@ -539,7 +1129,7 @@ to your liking. Here is an example: >
return 1
endfunction
<
The above example uses various some example highlight groups to demonstrate
The above example uses various example highlight groups to demonstrate
that you can use any combination from the loaded colorscheme. However, if
you want colors to change between modes, you should use one of the section
highlight groups, e.g. `airline_a` and `airline_b`.
@@ -596,9 +1186,12 @@ VimL syntax to write a theme, but if you've written in any programming
language before it will be easy to pick up.
The |dark.vim| theme fully documents this procedure and will guide you through
the process. The |jellybeans.vim| theme is another example of how to write a
theme, but instead of manually declaring colors, it extracts the values from
highlight groups.
the process.
For other examples, you can visit the official themes repository at
<https://github.com/vim-airline/vim-airline-themes>. It also includes
examples such as |jellybeans.vim| which define colors by extracting highlight
groups from the underlying colorscheme.
==============================================================================
TROUBLESHOOTING *airline-troubleshooting*
@@ -630,9 +1223,14 @@ A. Certain themes are derived from the active colorscheme by extracting colors
their intended matching colorschemes, but will be hit or miss when loaded
with other colorschemes.
Q. Themes are missing
A. Themes have been extracted into the vim-airlines-themes repository. Simply
clone https://github.com/vim-airline/vim-airline-themes and everything
should work again.
Solutions to other common problems can be found in the Wiki:
<https://github.com/bling/vim-airline/wiki/FAQ>
<https://github.com/vim-airline/vim-airline/wiki/FAQ>
==============================================================================
CONTRIBUTIONS *airline-contributions*
@@ -642,7 +1240,6 @@ Contributions and pull requests are welcome.
==============================================================================
LICENSE *airline-license*
MIT License. Copyright © 2013 Bailey Ling.
MIT License. Copyright © 2013-2017 Bailey Ling, Christian Brabandt
vim:tw=78:ts=8:ft=help:norl:
+79 -33
View File
@@ -1,52 +1,72 @@
" MIT License. Copyright (c) 2013 Bailey Ling.
" 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
" autocmd VimEnter * call airline#deprecation#check()
let s:airline_initialized = 0
let s:airline_theme_defined = 0
function! s:init()
if !s:airline_initialized
let s:airline_initialized = 1
call airline#init#bootstrap()
call airline#extensions#load()
call airline#init#sections()
let s:airline_theme_defined = exists('g:airline_theme')
if s:airline_theme_defined || !airline#switch_matching_theme()
let g:airline_theme = get(g:, 'airline_theme', 'dark')
call airline#switch_theme(g:airline_theme)
endif
if s:airline_initialized
return
endif
let s:airline_initialized = 1
call airline#extensions#load()
call airline#init#sections()
let s:theme_in_vimrc = exists('g:airline_theme')
if s:theme_in_vimrc
try
let palette = g:airline#themes#{g:airline_theme}#palette
catch
echom 'Could not resolve airline theme "' . g:airline_theme . '". Themes have been migrated to github.com/vim-airline/vim-airline-themes.'
let g:airline_theme = 'dark'
endtry
silent call airline#switch_theme(g:airline_theme)
else
let g:airline_theme = 'dark'
silent call s:on_colorscheme_changed()
endif
silent doautocmd User AirlineAfterInit
endfunction
function! s:on_window_changed()
if pumvisible()
if pumvisible() && (!&previewwindow || g:airline_exclude_preview)
return
endif
call <sid>init()
" 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 <sid>init()
if !s:airline_theme_defined
if airline#switch_matching_theme()
return
endif
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(...)
function! airline#cmdwinenter(...)
call airline#extensions#apply_left_override('Command Line', '')
endfunction
@@ -60,8 +80,10 @@ function! s:airline_toggle()
if exists("s:stl")
let &stl = s:stl
endif
silent doautocmd User AirlineToggledOff
else
let s:stl = &stl
let s:stl = &statusline
augroup airline
autocmd!
@@ -70,17 +92,25 @@ function! s:airline_toggle()
\ | call <sid>on_window_changed()
autocmd CmdwinLeave * call airline#remove_statusline_func('airline#cmdwinenter')
autocmd ColorScheme * call <sid>on_colorscheme_changed()
autocmd VimEnter,WinEnter,BufWinEnter,FileType,BufUnload,VimResized *
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 <sid>on_window_changed()
call s:on_window_changed()
endif
silent doautocmd User AirlineToggledOn
endif
endfunction
@@ -88,6 +118,7 @@ function! s:get_airline_themes(a, l, p)
let files = split(globpath(&rtp, 'autoload/airline/themes/'.a:a.'*'), "\n")
return map(files, 'fnamemodify(v:val, ":t:r")')
endfunction
function! s:airline_theme(...)
if a:0
call airline#switch_theme(a:1)
@@ -95,10 +126,25 @@ function! s:airline_theme(...)
echo g:airline_theme
endif
endfunction
command! -nargs=? -complete=customlist,<sid>get_airline_themes AirlineTheme call <sid>airline_theme(<f-args>)
command! AirlineToggleWhitespace call airline#extensions#whitespace#toggle()
command! AirlineToggle call <sid>airline_toggle()
command! AirlineRefresh call airline#load_theme()
call <sid>airline_toggle()
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()
+2 -2
View File
@@ -1,7 +1,7 @@
let g:airline_theme = 'dark'
call airline#init#bootstrap()
call airline#init#sections()
source plugin/airline.vim
doautocmd VimEnter
function! MyFuncref(...)
call a:1.add_raw('hello world')
+33 -7
View File
@@ -13,9 +13,27 @@ describe 'active builder'
it 'should transition colors from one to the next'
call s:builder.add_section('Normal', 'hello')
call s:builder.add_section('NonText', 'world')
call s:builder.add_section('Search', 'world')
let stl = s:builder.build()
Expect stl =~ '%#Normal#hello%#Normal_to_NonText#>%#NonText#world'
Expect stl =~ '%#Normal#hello%#Normal_to_Search#%#Search#world'
end
it 'should reuse highlight group if background colors match'
highlight Foo1 ctermfg=1 ctermbg=2
highlight Foo2 ctermfg=1 ctermbg=2
call s:builder.add_section('Foo1', 'hello')
call s:builder.add_section('Foo2', 'world')
let stl = s:builder.build()
Expect stl =~ '%#Foo1#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'
@@ -27,16 +45,16 @@ describe 'active builder'
it 'after split, sections use the right separator'
call s:builder.split()
call s:builder.add_section('Normal', 'hello')
call s:builder.add_section('NonText', 'world')
call s:builder.add_section('Search', 'world')
let stl = s:builder.build()
Expect stl =~ '%#Normal#hello%#Normal_to_NonText#<%#NonText#world'
Expect stl =~ 'hello%#Normal_to_Search#%#Search#world'
end
it 'should not repeat the same highlight group'
call s:builder.add_section('Normal', 'hello')
call s:builder.add_section('Normal', 'hello')
let stl = s:builder.build()
Expect stl == '%#Normal#hello>hello'
Expect stl == '%#Normal#hellohello'
end
it 'should replace accent groups with the specified group'
@@ -57,6 +75,14 @@ describe 'active builder'
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'
@@ -66,9 +92,9 @@ describe 'inactive builder'
it 'should transition colors from one to the next'
call s:builder.add_section('Normal', 'hello')
call s:builder.add_section('NonText', 'world')
call s:builder.add_section('Search', 'world')
let stl = s:builder.build()
Expect stl =~ '%#Normal_inactive#hello%#Normal_to_NonText_inactive#>%#NonText_inactive#world'
Expect stl =~ '%#Normal_inactive#hello%#Normal_to_Search_inactive#%#Search_inactive#world'
end
it 'should not render accents'
+5 -3
View File
@@ -1,7 +1,5 @@
call airline#init#bootstrap()
call airline#init#sections()
source plugin/airline.vim
doautocmd VimEnter
describe 'commands'
it 'should toggle off and on'
@@ -24,6 +22,10 @@ describe 'commands'
Expect g:airline_theme == 'simple'
execute 'AirlineTheme dark'
Expect g:airline_theme == 'dark'
execute 'AirlineTheme doesnotexist'
Expect g:airline_theme == 'dark'
colors molokai
Expect g:airline_theme == 'molokai'
end
it 'should have a refresh command'
+6 -7
View File
@@ -1,7 +1,10 @@
let g:airline_theme = 'dark'
call airline#init#bootstrap()
call airline#init#sections()
let g:airline#extensions#default#layout = [
\ [ 'c', 'a', 'b', 'warning' ],
\ [ 'x', 'z', 'y' ]
\ ]
source plugin/airline.vim
doautocmd VimEnter
describe 'default'
before
@@ -9,10 +12,6 @@ describe 'default'
end
it 'should use the layout'
let g:airline#extensions#default#layout = [
\ [ 'c', 'a', 'b', 'warning' ],
\ [ 'x', 'z', 'y' ]
\ ]
call airline#extensions#default#apply(s:builder, { 'winnr': 1, 'active': 1 })
let stl = s:builder.build()
Expect stl =~ 'airline_c_to_airline_a'
+1
View File
@@ -13,6 +13,7 @@ describe 'highlighter'
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
+14 -4
View File
@@ -18,9 +18,10 @@ describe 'init sections'
call s:clear()
end
it 'section a should have mode, paste, iminsert'
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
@@ -44,7 +45,7 @@ describe 'init sections'
it 'section z should be line numbers'
Expect g:airline_section_z =~ '%3p%%'
Expect g:airline_section_z =~ '%4l'
Expect g:airline_section_z =~ '%3c'
Expect g:airline_section_z =~ '%3v'
end
it 'should not redefine sections already defined'
@@ -58,12 +59,21 @@ describe 'init sections'
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('tagbar').raw == ''
Expect airline#parts#get('syntastic').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
+9 -4
View File
@@ -57,13 +57,13 @@ describe 'section'
it 'should force add separators for raw and missing keys'
let s = airline#section#create_left(['asdf', 'raw'])
Expect s == 'asdf > raw'
Expect s == 'asdf raw'
let s = airline#section#create_left(['asdf', 'aaaa', 'raw'])
Expect s == 'asdf > aaaa > raw'
Expect s == 'asdf aaaa raw'
let s = airline#section#create_right(['raw', '%f'])
Expect s == 'raw < %f'
Expect s == 'raw %f'
let s = airline#section#create_right(['%t', 'asdf', '%{getcwd()}'])
Expect s == '%t < asdf < %{getcwd()}'
Expect s == '%t asdf %{getcwd()}'
end
it 'should empty out parts that do not pass their condition'
@@ -72,5 +72,10 @@ describe 'section'
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
+2 -2
View File
@@ -28,10 +28,10 @@ describe 'themes'
it 'should pass args through correctly'
let hl = airline#themes#get_highlight('Foo', 'bold', 'italic')
Expect hl == ['', '', 0, 1, 'bold,italic']
Expect hl == ['', '', 'NONE', 'NONE', 'bold,italic']
let hl = airline#themes#get_highlight2(['Foo','bg'], ['Foo','fg'], 'italic', 'bold')
Expect hl == ['', '', 1, 0, 'italic,bold']
Expect hl == ['', '', 'NONE', 'NONE', 'italic,bold']
end
it 'should generate color map with mirroring'
+4 -4
View File
@@ -17,12 +17,12 @@ describe 'util'
it 'has append wrapper function'
Expect airline#util#append('', 0) == ''
Expect airline#util#append('1', 0) == ' > 1'
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 < '
Expect airline#util#prepend('1', 0) == '1 '
end
it 'has getwinvar function'
@@ -40,8 +40,8 @@ describe 'util'
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#append('foo', -1) == ' foo'
Expect airline#util#prepend('foo', -1) == 'foo '
Expect airline#util#wrap('foo', -1) == 'foo'
end