mirror of
https://github.com/romkatv/powerlevel10k.git
synced 2024-12-18 05:40:07 +00:00
Merge branch 'next' into truncate_composer_json
This commit is contained in:
commit
622c04eee3
14 changed files with 233 additions and 16 deletions
|
@ -1,4 +1,4 @@
|
|||
## next
|
||||
## v0.6.0
|
||||
|
||||
- Fixed a bug where the tag display was broken on detached HEADs.
|
||||
- Fixed a bug where SVN detection sometimes failed.
|
||||
|
@ -10,6 +10,10 @@
|
|||
- Added Github syntax highlighting to README.
|
||||
- Various documentation cleanup.
|
||||
|
||||
### New Font Option: nerd-fonts
|
||||
|
||||
There is now an option to use [nerd-fonts](https://github.com/ryanoasis/nerd-fonts) with P9k. Simply configure the `nerdfont-fontconfig`, and you'll be set!
|
||||
|
||||
### `vcs` changes
|
||||
|
||||
The VCS segment can now display icons for remote repo hosting services, including Github, Gitlab, and 'other'.
|
||||
|
|
|
@ -312,7 +312,7 @@ Customizations available are:
|
|||
|Default|Truncate whole directories from left. How many is defined by `POWERLEVEL9K_SHORTEN_DIR_LENGTH`|
|
||||
|`truncate_middle`|Truncates the middle part of a folder. E.g. you are in a folder named "~/MySuperProjects/AwesomeFiles/BoringOffice", then it will truncated to "~/MyS..cts/Awe..les/BoringOffice", if `POWERLEVEL9K_SHORTEN_DIR_LENGTH=3` is also set (controls the amount of characters to be left).|
|
||||
|`truncate_from_right`|Just leaves the beginning of a folder name untouched. E.g. your folders will be truncated like so: "/ro../Pr../office". How many characters will be untouched is controlled by `POWERLEVEL9K_SHORTEN_DIR_LENGTH`.|
|
||||
|`truncate_with_package_name`|Search for a `package.json` or `composer.json` and prints the `name` field to abbreviate the directory path. The precedence and/or files could be set by `POWERLEVEL9K_DIR_PACKAGE_FILES=(package.json composer.json)`|
|
||||
|`truncate_with_package_name`|Search for a `package.json` or `composer.json` and prints the `name` field to abbreviate the directory path. The precedence and/or files could be set by `POWERLEVEL9K_DIR_PACKAGE_FILES=(package.json composer.json)`. If you have [jq](https://stedolan.github.io/jq/) installed, it will dramatically improve the speed of this strategy.|
|
||||
|`truncate_with_folder_marker`|Search for a file that is specified by `POWERLEVEL9K_SHORTEN_FOLDER_MARKER` and truncate everything before that (if found, otherwise stop on $HOME and ROOT).|
|
||||
|
||||
For example, if you wanted the truncation behavior of the `fish` shell, which
|
||||
|
|
8
TESTS.md
8
TESTS.md
|
@ -12,3 +12,11 @@ Tests in separate files under `test/functions`.
|
|||
|
||||
These Tests tend to be more complex in setup than the basic tests. To avoid ending
|
||||
up in a huge single file, there is one file per segment in `test/segments`.
|
||||
|
||||
# Test-VMs
|
||||
|
||||
If unit tests are not sufficient (e.g. you have an issue with your prompt that
|
||||
occurs only in a specific ZSH framework), then you could use our Test-VMs!
|
||||
Currently there are two test VMs. `test-vm` is an Ubuntu machine with several
|
||||
pre-installed ZSH frameworks. And there is `test-bsd-vm` which is a FreeBSD!
|
||||
For how to run the machines see [here](test-vm/README.md).
|
|
@ -66,7 +66,7 @@ case $POWERLEVEL9K_MODE in
|
|||
VCS_TAG_ICON $'\uE817 ' #
|
||||
VCS_BOOKMARK_ICON $'\uE87B' #
|
||||
VCS_COMMIT_ICON $'\uE821 ' #
|
||||
VCS_BRANCH_ICON $'\uE220 ' #
|
||||
VCS_BRANCH_ICON $'\uE220' #
|
||||
VCS_REMOTE_BRANCH_ICON $'\u2192' # →
|
||||
VCS_GIT_ICON $'\uE20E ' #
|
||||
VCS_GIT_GITHUB_ICON $'\uE20E ' #
|
||||
|
@ -95,7 +95,7 @@ case $POWERLEVEL9K_MODE in
|
|||
CARRIAGE_RETURN_ICON $'\u21B5' # ↵
|
||||
ROOT_ICON $'\uF201' #
|
||||
RUBY_ICON $'\uF219 ' #
|
||||
AWS_ICON $'\uF296' #
|
||||
AWS_ICON $'\uF270' #
|
||||
AWS_EB_ICON $'\U1F331 ' # 🌱
|
||||
BACKGROUND_JOBS_ICON $'\uF013 ' #
|
||||
TEST_ICON $'\uF291' #
|
||||
|
@ -129,7 +129,7 @@ case $POWERLEVEL9K_MODE in
|
|||
VCS_TAG_ICON $'\uF217 ' #
|
||||
VCS_BOOKMARK_ICON $'\uF27B' #
|
||||
VCS_COMMIT_ICON $'\uF221 ' #
|
||||
VCS_BRANCH_ICON $'\uF126 ' #
|
||||
VCS_BRANCH_ICON $'\uF126' #
|
||||
VCS_REMOTE_BRANCH_ICON $'\u2192' # →
|
||||
VCS_GIT_ICON $'\uF1D3 ' #
|
||||
VCS_GIT_GITHUB_ICON $'\uF113 ' #
|
||||
|
@ -158,7 +158,7 @@ case $POWERLEVEL9K_MODE in
|
|||
CARRIAGE_RETURN_ICON $'\u21B5' # ↵
|
||||
ROOT_ICON $'\u26A1' # ⚡
|
||||
RUBY_ICON $'\uF219 ' #
|
||||
AWS_ICON $'\uE7AD' #
|
||||
AWS_ICON $'\uF270' #
|
||||
AWS_EB_ICON $'\U1F331 ' # 🌱
|
||||
BACKGROUND_JOBS_ICON $'\uF013 ' #
|
||||
TEST_ICON $'\uF188' #
|
||||
|
@ -248,7 +248,7 @@ case $POWERLEVEL9K_MODE in
|
|||
VCS_TAG_ICON ''
|
||||
VCS_BOOKMARK_ICON $'\u263F' # ☿
|
||||
VCS_COMMIT_ICON ''
|
||||
VCS_BRANCH_ICON $'\uE0A0 ' #
|
||||
VCS_BRANCH_ICON $'\uE0A0' #
|
||||
VCS_REMOTE_BRANCH_ICON $'\u2192' # →
|
||||
VCS_GIT_ICON ''
|
||||
VCS_GIT_GITHUB_ICON ''
|
||||
|
|
|
@ -111,7 +111,7 @@ function +vi-hg-bookmarks() {
|
|||
function +vi-vcs-detect-changes() {
|
||||
if [[ "${hook_com[vcs]}" == "git" ]]; then
|
||||
|
||||
local remote=`git ls-remote --get-url`
|
||||
local remote=$(git ls-remote --get-url 2> /dev/null)
|
||||
if [[ "$remote" =~ "github" ]] then
|
||||
vcs_visual_identifier='VCS_GIT_GITHUB_ICON'
|
||||
elif [[ "$remote" =~ "bitbucket" ]] then
|
||||
|
|
|
@ -664,7 +664,7 @@ prompt_dir() {
|
|||
break;
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
local packageName=$(jq '.name' ${pkgFile} 2> /dev/null \
|
||||
|| node -e 'console.log(require(process.argv[1]).name);' ${pkgFile} 2>/dev/null \
|
||||
|| cat "${pkgFile}" 2> /dev/null | grep -m 1 "\"name\"" | awk -F ':' '{print $2}' | awk -F '"' '{print $2}' 2>/dev/null \
|
||||
|
|
87
test-bsd-vm/Vagrantfile
vendored
Normal file
87
test-bsd-vm/Vagrantfile
vendored
Normal file
|
@ -0,0 +1,87 @@
|
|||
# -*- mode: ruby -*-
|
||||
# vi: set ft=ruby :
|
||||
|
||||
# All Vagrant configuration is done below. The "2" in Vagrant.configure
|
||||
# configures the configuration version (we support older styles for
|
||||
# backwards compatibility). Please don't change it unless you know what
|
||||
# you're doing.
|
||||
Vagrant.configure("2") do |config|
|
||||
# The most common configuration options are documented and commented below.
|
||||
# For a complete reference, please see the online documentation at
|
||||
# https://docs.vagrantup.com.
|
||||
|
||||
# Every Vagrant development environment requires a box. You can search for
|
||||
# boxes at https://atlas.hashicorp.com/search.
|
||||
config.vm.box = "freebsd/FreeBSD-11.0-STABLE"
|
||||
|
||||
# Bootstrap
|
||||
config.vm.provision :shell, path: "bootstrap-zero.sh", privileged: true
|
||||
config.vm.provision :shell, path: "bootstrap.sh", privileged: false
|
||||
config.vm.provision :shell, path: "../test-vm-providers/plain.sh", privileged: false
|
||||
|
||||
# Disable automatic box update checking. If you disable this, then
|
||||
# boxes will only be checked for updates when the user runs
|
||||
# `vagrant box outdated`. This is not recommended.
|
||||
# config.vm.box_check_update = false
|
||||
|
||||
# Create a forwarded port mapping which allows access to a specific port
|
||||
# within the machine from a port on the host machine. In the example below,
|
||||
# accessing "localhost:8080" will access port 80 on the guest machine.
|
||||
# config.vm.network "forwarded_port", guest: 80, host: 8080
|
||||
|
||||
# Create a private network, which allows host-only access to the machine
|
||||
# using a specific IP.
|
||||
config.vm.network "private_network", ip: "192.168.33.10"
|
||||
|
||||
# Create a public network, which generally matched to bridged network.
|
||||
# Bridged networks make the machine appear as another physical device on
|
||||
# your network.
|
||||
#config.vm.network "public_network"
|
||||
|
||||
# The BSD base box does not define a MAC address. Whysoever.
|
||||
config.vm.base_mac = "8AAB4975994A"
|
||||
|
||||
# There is no BASH for root on BSD. We need to set another shell.
|
||||
# See https://www.freebsd.org/doc/en/articles/linux-users/shells.html
|
||||
config.ssh.shell = "/bin/sh"
|
||||
|
||||
# Share an additional folder to the guest VM. The first argument is
|
||||
# the path on the host to the actual folder. The second argument is
|
||||
# the path on the guest to mount the folder. And the optional third
|
||||
# argument is a set of non-required options.
|
||||
config.vm.synced_folder "..", "/vagrant_data", type: "nfs"
|
||||
config.vm.synced_folder ".", "/vagrant", type: "nfs"
|
||||
|
||||
# Provider-specific configuration so you can fine-tune various
|
||||
# backing providers for Vagrant. These expose provider-specific options.
|
||||
# Example for VirtualBox:
|
||||
config.vm.provider "virtualbox" do |vb|
|
||||
|
||||
# Change name to "powerlevel9k-bsd"
|
||||
vb.name = "powerlevel9k-bsd"
|
||||
|
||||
# Display the VirtualBox GUI when booting the machine
|
||||
#vb.gui = true
|
||||
|
||||
# Customize the amount of memory on the VM:
|
||||
vb.memory = "256"
|
||||
end
|
||||
|
||||
# View the documentation for the provider you are using for more
|
||||
# information on available options.
|
||||
|
||||
# Define a Vagrant Push strategy for pushing to Atlas. Other push strategies
|
||||
# such as FTP and Heroku are also available. See the documentation at
|
||||
# https://docs.vagrantup.com/v2/push/atlas.html for more information.
|
||||
# config.push.define "atlas" do |push|
|
||||
# push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
|
||||
# end
|
||||
|
||||
# Enable provisioning with a shell script. Additional provisioners such as
|
||||
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
|
||||
# documentation for more information about their specific syntax and use.
|
||||
# config.vm.provision "shell", inline: <<-SHELL
|
||||
# apt-get update
|
||||
# apt-get install -y apache2
|
||||
# SHELL
|
||||
end
|
3
test-bsd-vm/bootstrap-zero.sh
Normal file
3
test-bsd-vm/bootstrap-zero.sh
Normal file
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
|
||||
pkg install -y sudo
|
8
test-bsd-vm/bootstrap.sh
Normal file
8
test-bsd-vm/bootstrap.sh
Normal file
|
@ -0,0 +1,8 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Install ZSH
|
||||
sudo pkg install -y zsh
|
||||
sudo chsh -s `which zsh` vagrant
|
||||
|
||||
# Install git
|
||||
sudo pkg install -y git
|
4
test-vm-providers/plain.sh
Normal file
4
test-vm-providers/plain.sh
Normal file
|
@ -0,0 +1,4 @@
|
|||
#!/usr/bin/zsh
|
||||
|
||||
echo 'LANG=en_US.UTF-8' !> ~/.zshrc
|
||||
echo 'source /vagrant_data/powerlevel9k.zsh-theme' >> ~/.zshrc
|
2
test-vm/Vagrantfile
vendored
2
test-vm/Vagrantfile
vendored
|
@ -16,7 +16,7 @@ Vagrant.configure(2) do |config|
|
|||
|
||||
# Bootstrap
|
||||
config.vm.provision :shell, path: "bootstrap.sh", privileged: false
|
||||
config.vm.provision :shell, path: "plain.sh", privileged: false
|
||||
config.vm.provision :shell, path: "../test-vm-providers/plain.sh", privileged: false
|
||||
config.vm.provision :shell, path: "antigen.sh"
|
||||
config.vm.provision :shell, path: "prezto.sh"
|
||||
config.vm.provision :shell, path: "omz.sh"
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
#!/usr/bin/zsh
|
||||
|
||||
echo 'source /vagrant_data/powerlevel9k.zsh-theme' > ~/.zshrc
|
|
@ -114,6 +114,112 @@ function testTruncateWithFolderMarkerWithChangedFolderMarker() {
|
|||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
}
|
||||
|
||||
function testTruncateWithPackageNameWorks() {
|
||||
local p9kFolder=$(pwd)
|
||||
local BASEFOLDER=/tmp/powerlevel9k-test
|
||||
local FOLDER=$BASEFOLDER/1/12/123/1234/12345/123456/1234567/12345678/123456789
|
||||
mkdir -p $FOLDER
|
||||
|
||||
cd /tmp/powerlevel9k-test
|
||||
echo '
|
||||
{
|
||||
"name": "My_Package"
|
||||
}
|
||||
' > package.json
|
||||
# Unfortunately: The main folder must be a git repo..
|
||||
git init &>/dev/null
|
||||
|
||||
# Go back to deeper folder
|
||||
cd "${FOLDER}"
|
||||
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_with_package_name'
|
||||
|
||||
assertEquals "%K{blue} %F{black}My_Package/1/12/123/12…/12…/12…/12…/12…/123456789 %k%F{blue}%f " "$(build_left_prompt)"
|
||||
|
||||
# Go back
|
||||
cd $p9kFolder
|
||||
rm -fr $BASEFOLDER
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset POWERLEVEL9K_SHORTEN_STRATEGY
|
||||
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
|
||||
}
|
||||
|
||||
function testTruncateWithPackageNameIfRepoIsSymlinkedInsideDeepFolder() {
|
||||
local p9kFolder=$(pwd)
|
||||
local BASEFOLDER=/tmp/powerlevel9k-test
|
||||
local FOLDER=$BASEFOLDER/1/12/123/1234/12345/123456/1234567/12345678/123456789
|
||||
mkdir -p $FOLDER
|
||||
cd $FOLDER
|
||||
|
||||
# Unfortunately: The main folder must be a git repo..
|
||||
git init &>/dev/null
|
||||
|
||||
echo '
|
||||
{
|
||||
"name": "My_Package"
|
||||
}
|
||||
' > package.json
|
||||
|
||||
# Create a subdir inside the repo
|
||||
mkdir -p asdfasdf/qwerqwer
|
||||
|
||||
cd $BASEFOLDER
|
||||
ln -s ${FOLDER} linked-repo
|
||||
|
||||
# Go to deep folder inside linked repo
|
||||
cd linked-repo/asdfasdf/qwerqwer
|
||||
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_with_package_name'
|
||||
|
||||
assertEquals "%K{blue} %F{black}My_Package/as…/qwerqwer %k%F{blue}%f " "$(build_left_prompt)"
|
||||
|
||||
# Go back
|
||||
cd $p9kFolder
|
||||
rm -fr $BASEFOLDER
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset POWERLEVEL9K_SHORTEN_STRATEGY
|
||||
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
|
||||
}
|
||||
|
||||
function testTruncateWithPackageNameIfRepoIsSymlinkedInsideGitDir() {
|
||||
local p9kFolder=$(pwd)
|
||||
local BASEFOLDER=/tmp/powerlevel9k-test
|
||||
local FOLDER=$BASEFOLDER/1/12/123/1234/12345/123456/1234567/12345678/123456789
|
||||
mkdir -p $FOLDER
|
||||
cd $FOLDER
|
||||
|
||||
# Unfortunately: The main folder must be a git repo..
|
||||
git init &>/dev/null
|
||||
|
||||
echo '
|
||||
{
|
||||
"name": "My_Package"
|
||||
}
|
||||
' > package.json
|
||||
|
||||
cd $BASEFOLDER
|
||||
ln -s ${FOLDER} linked-repo
|
||||
|
||||
cd linked-repo/.git/refs/heads
|
||||
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir)
|
||||
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
|
||||
POWERLEVEL9K_SHORTEN_STRATEGY='truncate_with_package_name'
|
||||
|
||||
assertEquals "%K{blue} %F{black}My_Package/.g…/re…/heads %k%F{blue}%f " "$(build_left_prompt)"
|
||||
|
||||
# Go back
|
||||
cd $p9kFolder
|
||||
rm -fr $BASEFOLDER
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset POWERLEVEL9K_SHORTEN_STRATEGY
|
||||
unset POWERLEVEL9K_SHORTEN_DIR_LENGTH
|
||||
}
|
||||
|
||||
function testHomeFolderDetectionWorks() {
|
||||
POWERLEVEL9K_HOME_ICON='home-icon'
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ function testColorOverridingForCleanStateWorks() {
|
|||
cd $FOLDER
|
||||
git init 1>/dev/null
|
||||
|
||||
assertEquals "%K{white} %F{cyan} master %k%F{white}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{white} %F{cyan}master %k%F{white}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
|
@ -47,7 +47,7 @@ function testColorOverridingForModifiedStateWorks() {
|
|||
git commit -m "test" 1>/dev/null
|
||||
echo "test" > testfile
|
||||
|
||||
assertEquals "%K{yellow} %F{red} master ● %k%F{yellow}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{yellow} %F{red}master ● %k%F{yellow}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
|
@ -68,7 +68,7 @@ function testColorOverridingForUntrackedStateWorks() {
|
|||
git init 1>/dev/null
|
||||
touch testfile
|
||||
|
||||
assertEquals "%K{yellow} %F{cyan} master ? %k%F{yellow}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{yellow} %F{cyan}master ? %k%F{yellow}%f " "$(build_left_prompt)"
|
||||
|
||||
cd -
|
||||
rm -fr /tmp/powerlevel9k-test
|
||||
|
|
Loading…
Reference in a new issue