Note: by default this segment is disabled. Until #923 it may only be enabled by
copying the whole file and changing "enabled" to "true". After #923 it may be
enabled by having `~/.config/powerline/themes/vim/default.json` with the
following contents:
{
"segment_data": {
"trailing_whitespace": {
"display": true
}
}
}
Fixes#388
What was done:
- Implemented loading using configuration hierarhy as proposed in the issue
- Implemented group aliasing
What was not:
- Some tests (config_reload) are failing
- Other (test_configuration) are spamming console with unexpected messages
- No support for powerline-lint
- No tests for new functionality
- Specifically I have not checked whether group aliasing actually works
- Colorschemes were not ported
Some other things: I have named this branch `config-ng` because I have other
ideas about configuration and it would be good to include them making only one
possibly backwards-incompatible merge commit instead of many. Specifically I am
going to rebase `merge-config` branch here.
dark_green_gray gradient was generated with
tools/generate_gradients.py 70 247
. It is used for non-insert modes in the current window. light_green_gray
gradient was generated with
./tools/generate_gradients.py 148 250
. It is used for insert mode in the current window.
Red hearts for battery full are still more optimal in case white hearts are for
empty (though I do not understand why they have to be red). Cannot agree about
per cents though: red is better for empty then white is if there are no related
parts to compare.
Note: to make prompt fancy enough powerline-daemon should be used. Otherwise
continuation prompt length is different from what was expected:
With daemon:
user > env > path > if true ; then
then > fi
Without:
user > env > path > if true ; then
then > fi
Fixes#771 as I do not want to touch tcsh any longer
There are some problems with a number of spaces on travis: it differs. Cannot
use the same code as for fish because output looks like
{prompt}{spaces}^[0m ^[[{number}D
and both `{spaces}` and `{number}` differ on my machine and in travis.
It appears that travis uses fish version without this command. Though `.` is
deprecated on new versions it is still supported for backwards compatibility,
thus may be used here.
- Add argument that makes it run only one shell
- Make this argument also force skipping removal of tests/shell directory
- Make it copy logs to tests/shell before and after processing
This commit strips CRs from *.ok files and test output. Test failure used to be
not recognized due to pipe: `cat -v` always succeeds meaning that `if ! diff
… | cat -v` always succeeds too.
Replaces #596. Differences:
- Tests and metavar.
- Uses “jobnum” name in place of “jobs”.
- Does not use subshell for zsh. Also counts jobs correctly in zsh.
- Adds an option to force showing jobnum segment even if there are no jobs.
If you try to checkout the already current branch in git, git creates
HEAD.lock and renames it to HEAD. This causes the inode of HEAD to
change and so the inotify file watcher stops tracking HEAD.
The fix is to re-create the inotify watch when the file attributes
change. This is a bit of a performance penalty as most of the time the
attribute changes are simple last modified time/size changes, but since
inotify provides no way to know specifically when the inode has changed,
this is the best we can do.
Default colors range from red (full battery) to white (no battery) but can be changed via the
`battery' and `battery_gradient' settings.
Default presentation is a formatted percentage string (with keyword `batt'). The `gamify' setting
changes this to a sequence of video game hearts.
Number of steps from 100% to 0% / number of video game heart icons is controlled by the `steps'
setting (default 5).
- Added segment function to powerline.segments.common.
- Added test to check return values.
- Added default colorschemes for everything but iPython.
Ref #477
Also moves functions from tests.test_config_reload to tests.lib.config_mock
Using create_renderer for vim results in vim access from a separate thread.
cwd segment was not drawing inner separators because of new default for
multisegment functions. use_path_separator was added because current variant
looks bad for my taste.
If weather or system_load segments were moved to the left draw_soft_divider
variant resulted in incorrect renderring. Thus it was replaced by
draw_inner_divider.
Previous variant was bad because
1. draw_divider only applied to soft dividers. Hard dividers were always drawn
2. But there was a hack with width=auto segments: for this segments draw_divider
setting applied always.
Now there are no additional dependencies: draw_*_divider applies no matter what
other properties of the segment are.
Currently only:
- Test for not reloading configuration if run_once is not True
- Test for reloading main configuration and other configurations triggered by
changes in main configuration file
TODO: tests for all other configuration files reloading (colors, colorscheme,
theme).
Assuming getattr(self, 'update_value') and setattr(self, 'update_value', value)
are atomic. True with cpython unless somebody defined __getattribute__ or
__setattr__.
Target: with long-living Powerline objects periodically reload configuration
recreating renderer. Use file watchers to watch for configuration. Configuration
should be able to be safely reloaded in non-blocking mode in a separate thread
up to the time when it comes to recreating renderer.
This commit does not add anything that actually reloads the configuration,
multiple runs of .create_renderer were not tested.
Those exceptions are now handled and logged at top level, thus no need to handle
them in segment.
Ref #330, it is now fixed for zsh/zpython
Note: do not use zsh/zpython + python3, it does not work properly, even though
this changeset contains fixes for it as well
Fixes#360
NOTE: Documentation now gets attached to *classes*, not actual segments. Hiding
away classes (by changing their names to start with `_`) and/or doing
self.__doc__ = self.__class__.__doc__
does not work (hiding classes only hides documentation completely). I am
not familiar with sphinx enough to say how this should be fixed.
Ref #168
No need to bother both developers (that need to create class names compatible
with file name, which is not obvious if not looking into main Powerline class)
and computer (that needs to recompute class name each time) if it is possible to
bother only developers (or only computer, but this contributes to higher startup
times).
About not obvious: when you look into zsh_prompt.py and see only
ZshPromptRenderer name you only think that powerline upstream is following
strict code style. You don’t think there is a technical reason for such naming,
like you don’t think there is technical reason for having blank lines. When you
look into zsh_prompt.py and see `renderer = ZshPromptRenderer` it is obvious
that there is technical reason for writing code this way because new variable is
never used in the module itself.
Dynamic configuration tests. Purpose: make sure that default configuration does
not throw. Tests catch only very trivial problems (like missing imports after
refactoring)
Changes:
- Add main configuration, colors.json, almost full themes and colorschemes
checks
- Make powerline.lint.check return whether it had problems
- Make powerline-lint fail if .check reported problems
- Make tests run powerline-lint
- Add the script to the list of the installed scripts
Fixes#278