Fork agnoster theme into local theme called serious.
This commit is contained in:
parent
22701c76d2
commit
9653547a52
|
|
@ -1,6 +1,6 @@
|
||||||
fish_variables
|
fish_variables
|
||||||
NVIMS/
|
NVIMS/
|
||||||
plugged/
|
plugged/
|
||||||
plugins/
|
dotfiles/.config/tmux/serious
|
||||||
themes/
|
|
||||||
resurrect/
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2014 Bruno Ferreira Pinto
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
## agnoster
|
||||||
|
|
||||||
|
A fish theme optimized for people who use:
|
||||||
|
|
||||||
|
* Solarized
|
||||||
|
* Git
|
||||||
|
* Mercurial (requires 'hg prompt')
|
||||||
|
* SVN
|
||||||
|
* Unicode-compatible fonts and terminals (Use a Powerline patched font, e.g., from here: https://github.com/powerline/fonts)
|
||||||
|
* Fish Vi-mode
|
||||||
|
|
||||||
|
For Mac users, I highly recommend iTerm 2 + Solarized Dark
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
#### Characteristics
|
||||||
|
|
||||||
|
* If the previous command failed (✘)
|
||||||
|
- If private mode is enabled (🔒)
|
||||||
|
* User @ Hostname (if user is not DEFAULT_USER, which can be set in your profile)
|
||||||
|
* Git/HG/SVN status
|
||||||
|
* Branch () or detached head (➦)
|
||||||
|
* Current branch / SHA1 in detached head state
|
||||||
|
* Dirty working directory (±, color change)
|
||||||
|
* By default, git repos will show as dirty if there are untracked files. This can be changed by adding `set -g fish_git_prompt_untracked_files no` to your `config.fish`. This value is passed into `git status --untracked-files`, so any value git supports is valid for this command
|
||||||
|
* Current working directory
|
||||||
|
* Elevated (root) privileges (⚡)
|
||||||
|
* Current virtual environment (Python virtualenv and Nix Shell)
|
||||||
|
You will probably want to disable the default virtualenv prompt. Add to your [`init.fish`](https://github.com/oh-my-fish/oh-my-fish#dotfiles):
|
||||||
|
`set -gx VIRTUAL_ENV_DISABLE_PROMPT 1`
|
||||||
|
* Indicate vi mode.
|
||||||
|
* Source control blacklist. To disable source control prompts in certain directories, you can add the following to your `init.fish` or `config.fish`: `set -g scm_prompt_blacklist "/path/to/blacklist"`.
|
||||||
|
|
||||||
|
Ported from https://gist.github.com/agnoster/3712874.
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Redefine fish_mode_prompt function as empty to hide fish-shell mode indicator
|
||||||
|
function fish_mode_prompt
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,304 @@
|
||||||
|
# name: Agnoster
|
||||||
|
# agnoster's Theme - https://gist.github.com/3712874
|
||||||
|
# A Powerline-inspired theme for FISH
|
||||||
|
#
|
||||||
|
# # README
|
||||||
|
#
|
||||||
|
# In order for this theme to render correctly, you will need a
|
||||||
|
# [Powerline-patched font](https://gist.github.com/1595572).
|
||||||
|
|
||||||
|
## Set this options in your config.fish (if you want to :])
|
||||||
|
# set -g theme_display_user yes
|
||||||
|
# set -g theme_hide_hostname yes
|
||||||
|
# set -g theme_hide_hostname no
|
||||||
|
# set -g default_user your_normal_user
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
set -g current_bg NONE
|
||||||
|
set segment_separator \uE0B0
|
||||||
|
set right_segment_separator \uE0B0
|
||||||
|
set -q scm_prompt_blacklist; or set scm_prompt_blacklist
|
||||||
|
|
||||||
|
# ===========================
|
||||||
|
# Color setting
|
||||||
|
|
||||||
|
# You can set these variables in config.fish like:
|
||||||
|
# set -g color_dir_bg red
|
||||||
|
# If not set, default color from agnoster will be used.
|
||||||
|
# ===========================
|
||||||
|
|
||||||
|
set -q color_virtual_env_bg; or set color_virtual_env_bg white
|
||||||
|
set -q color_virtual_env_str; or set color_virtual_env_str black
|
||||||
|
set -q color_user_bg; or set color_user_bg black
|
||||||
|
set -q color_user_str; or set color_user_str yellow
|
||||||
|
set -q color_dir_bg; or set color_dir_bg blue
|
||||||
|
set -q color_dir_str; or set color_dir_str black
|
||||||
|
set -q color_hg_changed_bg; or set color_hg_changed_bg yellow
|
||||||
|
set -q color_hg_changed_str; or set color_hg_changed_str black
|
||||||
|
set -q color_hg_bg; or set color_hg_bg green
|
||||||
|
set -q color_hg_str; or set color_hg_str black
|
||||||
|
set -q color_git_dirty_bg; or set color_git_dirty_bg yellow
|
||||||
|
set -q color_git_dirty_str; or set color_git_dirty_str black
|
||||||
|
set -q color_git_bg; or set color_git_bg green
|
||||||
|
set -q color_git_str; or set color_git_str black
|
||||||
|
set -q color_svn_bg; or set color_svn_bg green
|
||||||
|
set -q color_svn_str; or set color_svn_str black
|
||||||
|
set -q color_status_nonzero_bg; or set color_status_nonzero_bg black
|
||||||
|
set -q color_status_nonzero_str; or set color_status_nonzero_str red
|
||||||
|
set -q color_status_superuser_bg; or set color_status_superuser_bg black
|
||||||
|
set -q color_status_superuser_str; or set color_status_superuser_str yellow
|
||||||
|
set -q color_status_jobs_bg; or set color_status_jobs_bg black
|
||||||
|
set -q color_status_jobs_str; or set color_status_jobs_str cyan
|
||||||
|
set -q color_status_private_bg; or set color_status_private_bg black
|
||||||
|
set -q color_status_private_str; or set color_status_private_str purple
|
||||||
|
|
||||||
|
# ===========================
|
||||||
|
# Git settings
|
||||||
|
# set -g color_dir_bg red
|
||||||
|
|
||||||
|
set -q fish_git_prompt_untracked_files; or set fish_git_prompt_untracked_files normal
|
||||||
|
|
||||||
|
|
||||||
|
# ===========================
|
||||||
|
# Helper methods
|
||||||
|
# ===========================
|
||||||
|
|
||||||
|
set -g __fish_git_prompt_showdirtystate 'yes'
|
||||||
|
set -g __fish_git_prompt_char_dirtystate '±'
|
||||||
|
set -g __fish_git_prompt_char_cleanstate ''
|
||||||
|
|
||||||
|
function parse_git_dirty
|
||||||
|
if [ $__fish_git_prompt_showdirtystate = "yes" ]
|
||||||
|
set -l submodule_syntax
|
||||||
|
set submodule_syntax "--ignore-submodules=dirty"
|
||||||
|
set untracked_syntax "--untracked-files=$fish_git_prompt_untracked_files"
|
||||||
|
set git_dirty (command git status --porcelain $submodule_syntax $untracked_syntax 2> /dev/null)
|
||||||
|
if [ -n "$git_dirty" ]
|
||||||
|
echo -n "$__fish_git_prompt_char_dirtystate"
|
||||||
|
else
|
||||||
|
echo -n "$__fish_git_prompt_char_cleanstate"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function cwd_in_scm_blacklist
|
||||||
|
for entry in $scm_prompt_blacklist
|
||||||
|
pwd | grep "^$entry" -
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# ===========================
|
||||||
|
# Segments functions
|
||||||
|
# ===========================
|
||||||
|
|
||||||
|
function prompt_segment -d "Function to draw a segment"
|
||||||
|
set -l bg
|
||||||
|
set -l fg
|
||||||
|
if [ -n "$argv[1]" ]
|
||||||
|
set bg $argv[1]
|
||||||
|
else
|
||||||
|
set bg normal
|
||||||
|
end
|
||||||
|
if [ -n "$argv[2]" ]
|
||||||
|
set fg $argv[2]
|
||||||
|
else
|
||||||
|
set fg normal
|
||||||
|
end
|
||||||
|
if [ "$current_bg" != 'NONE' -a "$argv[1]" != "$current_bg" ]
|
||||||
|
set_color -b $bg
|
||||||
|
set_color $current_bg
|
||||||
|
echo -n "$segment_separator "
|
||||||
|
set_color -b $bg
|
||||||
|
set_color $fg
|
||||||
|
else
|
||||||
|
set_color -b $bg
|
||||||
|
set_color $fg
|
||||||
|
echo -n " "
|
||||||
|
end
|
||||||
|
set current_bg $argv[1]
|
||||||
|
if [ -n "$argv[3]" ]
|
||||||
|
echo -n -s $argv[3] " "
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function prompt_finish -d "Close open segments"
|
||||||
|
if [ -n $current_bg ]
|
||||||
|
set_color normal
|
||||||
|
set_color $current_bg
|
||||||
|
echo -n "$segment_separator "
|
||||||
|
set_color normal
|
||||||
|
end
|
||||||
|
set -g current_bg NONE
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
# ===========================
|
||||||
|
# Theme components
|
||||||
|
# ===========================
|
||||||
|
|
||||||
|
function prompt_virtual_env -d "Display Python or Nix virtual environment"
|
||||||
|
set envs
|
||||||
|
|
||||||
|
if test "$VIRTUAL_ENV"
|
||||||
|
set py_env (basename $VIRTUAL_ENV)
|
||||||
|
set envs $envs "py[$py_env]"
|
||||||
|
end
|
||||||
|
|
||||||
|
if test "$IN_NIX_SHELL"
|
||||||
|
set envs $envs "nix[$IN_NIX_SHELL]"
|
||||||
|
end
|
||||||
|
|
||||||
|
if test "$envs"
|
||||||
|
prompt_segment $color_virtual_env_bg $color_virtual_env_str (string join " " $envs)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function prompt_user -d "Display current user if different from $default_user"
|
||||||
|
if [ "$theme_display_user" = "yes" ]
|
||||||
|
if [ "$USER" != "$default_user" -o -n "$SSH_CLIENT" ]
|
||||||
|
set USER (whoami)
|
||||||
|
get_hostname
|
||||||
|
if [ $HOSTNAME_PROMPT ]
|
||||||
|
set USER_PROMPT $USER@$HOSTNAME_PROMPT
|
||||||
|
else
|
||||||
|
set USER_PROMPT $USER
|
||||||
|
end
|
||||||
|
prompt_segment $color_user_bg $color_user_str $USER_PROMPT
|
||||||
|
end
|
||||||
|
else
|
||||||
|
get_hostname
|
||||||
|
if [ $HOSTNAME_PROMPT ]
|
||||||
|
prompt_segment $color_user_bg $color_user_str $HOSTNAME_PROMPT
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function get_hostname -d "Set current hostname to prompt variable $HOSTNAME_PROMPT if connected via SSH"
|
||||||
|
set -g HOSTNAME_PROMPT ""
|
||||||
|
if [ "$theme_hide_hostname" = "no" -o \( "$theme_hide_hostname" != "yes" -a -n "$SSH_CLIENT" \) ]
|
||||||
|
set -g HOSTNAME_PROMPT (uname -n)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function prompt_dir -d "Display the current directory"
|
||||||
|
prompt_segment $color_dir_bg $color_dir_str (prompt_pwd)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function prompt_hg -d "Display mercurial state"
|
||||||
|
set -l branch
|
||||||
|
set -l state
|
||||||
|
if command hg id >/dev/null 2>&1
|
||||||
|
set branch (command hg id -b)
|
||||||
|
# We use `hg bookmarks` as opposed to `hg id -B` because it marks
|
||||||
|
# currently active bookmark with an asterisk. We use `sed` to isolate it.
|
||||||
|
set bookmark (hg bookmarks | sed -nr 's/^.*\*\ +\b(\w*)\ +.*$/:\1/p')
|
||||||
|
set state (hg_get_state)
|
||||||
|
set revision (command hg id -n)
|
||||||
|
set branch_symbol \uE0A0
|
||||||
|
set prompt_text "$branch_symbol $branch$bookmark:$revision"
|
||||||
|
if [ "$state" = "0" ]
|
||||||
|
prompt_segment $color_hg_changed_bg $color_hg_changed_str $prompt_text " ±"
|
||||||
|
else
|
||||||
|
prompt_segment $color_hg_bg $color_hg_str $prompt_text
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function hg_get_state -d "Get mercurial working directory state"
|
||||||
|
if hg status | grep --quiet -e "^[A|M|R|!|?]"
|
||||||
|
echo 0
|
||||||
|
else
|
||||||
|
echo 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function prompt_git -d "Display the current git state"
|
||||||
|
set -l ref
|
||||||
|
set -l dirty
|
||||||
|
if command git rev-parse --is-inside-work-tree >/dev/null 2>&1
|
||||||
|
set dirty (parse_git_dirty)
|
||||||
|
set ref (command git symbolic-ref HEAD 2> /dev/null)
|
||||||
|
if [ $status -gt 0 ]
|
||||||
|
set -l branch (command git show-ref --head -s --abbrev |head -n1 2> /dev/null)
|
||||||
|
set ref "➦ $branch "
|
||||||
|
end
|
||||||
|
set branch_symbol \uE0A0
|
||||||
|
set -l branch (echo $ref | sed "s-refs/heads/-$branch_symbol -")
|
||||||
|
if [ "$dirty" != "" ]
|
||||||
|
prompt_segment $color_git_dirty_bg $color_git_dirty_str "$branch $dirty"
|
||||||
|
else
|
||||||
|
prompt_segment $color_git_bg $color_git_str "$branch $dirty"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function prompt_svn -d "Display the current svn state"
|
||||||
|
set -l ref
|
||||||
|
if command svn info >/dev/null 2>&1
|
||||||
|
set branch (svn_get_branch)
|
||||||
|
set branch_symbol \uE0A0
|
||||||
|
set revision (svn_get_revision)
|
||||||
|
prompt_segment $color_svn_bg $color_svn_str "$branch_symbol $branch:$revision"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function svn_get_branch -d "get the current branch name"
|
||||||
|
svn info 2> /dev/null | awk -F/ \
|
||||||
|
'/^URL:/ { \
|
||||||
|
for (i=0; i<=NF; i++) { \
|
||||||
|
if ($i == "branches" || $i == "tags" ) { \
|
||||||
|
print $(i+1); \
|
||||||
|
break;\
|
||||||
|
}; \
|
||||||
|
if ($i == "trunk") { print $i; break; } \
|
||||||
|
} \
|
||||||
|
}'
|
||||||
|
end
|
||||||
|
|
||||||
|
function svn_get_revision -d "get the current revision number"
|
||||||
|
svn info 2> /dev/null | sed -n 's/Revision:\ //p'
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function prompt_status -d "the symbols for a non zero exit status, root and background jobs"
|
||||||
|
if [ $RETVAL -ne 0 ]
|
||||||
|
prompt_segment $color_status_nonzero_bg $color_status_nonzero_str "✘"
|
||||||
|
end
|
||||||
|
|
||||||
|
if [ "$fish_private_mode" ]
|
||||||
|
prompt_segment $color_status_private_bg $color_status_private_str "🔒"
|
||||||
|
end
|
||||||
|
|
||||||
|
# if superuser (uid == 0)
|
||||||
|
set -l uid (id -u $USER)
|
||||||
|
if [ $uid -eq 0 ]
|
||||||
|
prompt_segment $color_status_superuser_bg $color_status_superuser_str "⚡"
|
||||||
|
end
|
||||||
|
|
||||||
|
# Jobs display
|
||||||
|
if [ (jobs -l | wc -l) -gt 0 ]
|
||||||
|
prompt_segment $color_status_jobs_bg $color_status_jobs_str "⚙"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# ===========================
|
||||||
|
# Apply theme
|
||||||
|
# ===========================
|
||||||
|
|
||||||
|
function fish_prompt
|
||||||
|
set -g RETVAL $status
|
||||||
|
prompt_status
|
||||||
|
prompt_virtual_env
|
||||||
|
prompt_user
|
||||||
|
prompt_dir
|
||||||
|
if [ (cwd_in_scm_blacklist | wc -c) -eq 0 ]
|
||||||
|
type -q hg; and prompt_hg
|
||||||
|
type -q git; and prompt_git
|
||||||
|
type -q svn; and prompt_svn
|
||||||
|
end
|
||||||
|
prompt_finish
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,81 @@
|
||||||
|
# right prompt for agnoster theme
|
||||||
|
# shows vim mode status
|
||||||
|
|
||||||
|
# ===========================
|
||||||
|
# Color setting
|
||||||
|
|
||||||
|
# You can set these variables in config.fish like:
|
||||||
|
# set -g color_dir_bg red
|
||||||
|
# If not set, default color from agnoster will be used.
|
||||||
|
# ===========================
|
||||||
|
set -q color_vi_mode_indicator; or set color_vi_mode_indicator black
|
||||||
|
set -q color_vi_mode_normal; or set color_vi_mode_normal green
|
||||||
|
set -q color_vi_mode_insert; or set color_vi_mode_insert blue
|
||||||
|
set -q color_vi_mode_visual; or set color_vi_mode_visual red
|
||||||
|
|
||||||
|
|
||||||
|
# ===========================
|
||||||
|
# Cursor setting
|
||||||
|
|
||||||
|
# You can set these variables in config.fish like:
|
||||||
|
# set -g cursor_vi_mode_insert bar_blinking
|
||||||
|
# ===========================
|
||||||
|
set -q cursor_vi_mode_normal; or set cursor_vi_mode_normal box_steady
|
||||||
|
set -q cursor_vi_mode_insert; or set cursor_vi_mode_insert bar_steady
|
||||||
|
set -q cursor_vi_mode_visual; or set cursor_vi_mode_visual box_steady
|
||||||
|
|
||||||
|
|
||||||
|
function fish_cursor_name_to_code -a cursor_name -d "Translate cursor name to a cursor code"
|
||||||
|
# these values taken from
|
||||||
|
# https://github.com/gnachman/iTerm2/blob/master/sources/VT100Terminal.m#L1646
|
||||||
|
# Beginning with the statement "case VT100CSI_DECSCUSR:"
|
||||||
|
if [ $cursor_name = "box_blinking" ]
|
||||||
|
echo 1
|
||||||
|
else if [ $cursor_name = "box_steady" ]
|
||||||
|
echo 2
|
||||||
|
else if [ $cursor_name = "underline_blinking" ]
|
||||||
|
echo 3
|
||||||
|
else if [ $cursor_name = "underline_steady" ]
|
||||||
|
echo 4
|
||||||
|
else if [ $cursor_name = "bar_blinking" ]
|
||||||
|
echo 5
|
||||||
|
else if [ $cursor_name = "bar_steady" ]
|
||||||
|
echo 6
|
||||||
|
else
|
||||||
|
echo 2
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function prompt_vi_mode -d 'vi mode status indicator'
|
||||||
|
set -l right_segment_separator \uE0B2
|
||||||
|
switch $fish_bind_mode
|
||||||
|
case default
|
||||||
|
set -l mode (fish_cursor_name_to_code $cursor_vi_mode_normal)
|
||||||
|
echo -e "\e[\x3$mode q"
|
||||||
|
set_color $color_vi_mode_normal
|
||||||
|
echo "$right_segment_separator"
|
||||||
|
set_color -b $color_vi_mode_normal $color_vi_mode_indicator
|
||||||
|
echo " N "
|
||||||
|
case insert
|
||||||
|
set -l mode (fish_cursor_name_to_code $cursor_vi_mode_insert)
|
||||||
|
echo -e "\e[\x3$mode q"
|
||||||
|
set_color $color_vi_mode_insert
|
||||||
|
echo "$right_segment_separator"
|
||||||
|
set_color -b $color_vi_mode_insert $color_vi_mode_indicator
|
||||||
|
echo " I "
|
||||||
|
case visual
|
||||||
|
set -l mode (fish_cursor_name_to_code $cursor_vi_mode_visual)
|
||||||
|
echo -e "\e[\x3$mode q"
|
||||||
|
set_color $color_vi_mode_visual
|
||||||
|
echo "$right_segment_separator"
|
||||||
|
set_color -b $color_vi_mode_visual $color_vi_mode_indicator
|
||||||
|
echo " V "
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function fish_right_prompt -d 'Prints right prompt'
|
||||||
|
if test "$fish_key_bindings" = "fish_vi_key_bindings"
|
||||||
|
prompt_vi_mode
|
||||||
|
set_color normal
|
||||||
|
end
|
||||||
|
end
|
||||||
Loading…
Reference in New Issue