]> git.armaanb.net Git - admone.git/commitdiff
add transient prompt, update license format
authorArmaan Bhojwani <3fb650a9-b47e-4604-a282-1dd91953b2ee@anonaddy.me>
Sun, 29 Nov 2020 22:52:45 +0000 (17:52 -0500)
committerArmaan Bhojwani <3fb650a9-b47e-4604-a282-1dd91953b2ee@anonaddy.me>
Sun, 29 Nov 2020 22:52:45 +0000 (17:52 -0500)
  * Add a transient prompt feature, as inspired by romkatv and
    powerlevel10k

  * Rename all variables to begin with ADMONE_

  * Formatting/README updates
    * Add email to license information
    * Changed divider style in file
    * Added romkatv comment to README

LICENSE
README.md
admone.zsh

diff --git a/LICENSE b/LICENSE
index 68ab45b0b9c2b7ceea0c3bd8acf81d5db2b43684..511ed4ec5fd9b86891840c9a349aafc246f36fd6 100644 (file)
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
 Admone - a tolerable Zsh prompt
 
-Copyright © 2020 Armaan Bhojwani
+Copyright © 2020 Armaan Bhojwani <code@armaanb.net>
 
 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:
 
index 0931a26ead6d44eb88813f2f71d1a142705018bd..860acd9146aab3f990547a5cf8fcd050cd63e904 100644 (file)
--- a/README.md
+++ b/README.md
@@ -13,10 +13,10 @@ Configuration is done by modifying the variables set at the start of the script.
   - No dependency on OhMyZSH
   - Quick to load
   - 2 lines
-  - Git intergration
+  - Git integration
   - Easily extensible
   - Bracketed sections
-  - Vi-mode intergration
+  - Vi-mode integration
 
 ## Name
 ```
@@ -26,6 +26,6 @@ admonish, remind, prompt; suggest, advise, raise; persuade, urge; warn, caution
 ```
 
 ## License
-Admone is MIT licensed by Armaan Bhojwani
+Admone is MIT licensed by [Armaan Bhojwani](https://armaanb.net), [email](mailto:code@armaanb.net)
 
-Code is heavily inspired by [Pierre-Albéric TROUPLIN's prompt](https://github.com/palb91/dotfiles/blob/master/zsh/conf.d/00_prompt.zsh) and [this gist by romkatv](https://gist.github.com/romkatv/2a107ef9314f0d5f76563725b42f7cab)
+Code is heavily inspired by [Pierre-Albéric TROUPLIN's prompt](https://github.com/palb91/dotfiles/blob/master/zsh/conf.d/00_prompt.zsh), [this gist by romkatv](https://gist.github.com/romkatv/2a107ef9314f0d5f76563725b42f7cab), and [this comment by romkatv](https://github.com/romkatv/powerlevel10k/issues/888#issuecomment-657969840)
index a9f0781169f6a1bb67d772987064cab481888306..700bfa277fdd03d71d0fa8779fba561b4ade54d1 100644 (file)
@@ -1,47 +1,55 @@
+# Admone Zsh prompt
+# Copyright Armaan Bhojwani 2020 <code@armaanb.net>
+# MIT licensed, see the LICENSE file for more information.
+# Git repo at <https://codeberg.org/armaan/admone>
+
 #######################################################################
-# Admone Zsh prompt. Copyright Armaan Bhojwani. MIT licensed, see the #
-# LICENSE file or https://www.opensource.org/licenses/MIT for more    #
-# information. Git repo at https://codeberg.org/armaan/admone         #
+# USER CONFIGURATIONS
 #######################################################################
 
-#
-# USER CONFIGURATIONS
-#
-
-ADMONE_PROMPT_CHAR="➤"
-  # ADMONE_PROMPT_CHAR="❯❯❯"
-  # ADMONE_PROMPT_CHAR="$"
-  # ADMONE_PROMPT_CHAR="%"
-  # ADMONE_PROMPT_CHAR=">"
-  # ADMONE_PROMPT_CHAR="➢"
-  # ADMONE_PROMPT_CHAR="➪"
-ADMONE_PRE_UPPER="╭"
-ADMONE_PRE_LOWER="╰"
-  # ADMONE_PRE_UPPER="┌"
-  # ADMONE_PRE_LOWER="└"
-ADMONE_BLOCK_SEPARATOR="─"
-  # ADMONE_BLOCK_SEPARATOR="∙"
-ADMONE_BLOCK_LEFT="["
-ADMONE_BLOCK_RIGHT="]"
-  # ADMONE_BLOCK_LEFT="("
-  # ADMONE_BLOCK_RIGHT=")"
-ADMONE_SHOW_0_EXIT_CODE="0"
-ADMONE_INCLUDE="admone-pwd;admone-vcs;admone-exit-code"
-ADMONE_FORMAT_LOWER="%B%F{%(?.cyan.red)}"
+PROMPT_CHAR="➤"
+  # PROMPT_CHAR="❯❯❯"
+  # PROMPT_CHAR="$"
+  # PROMPT_CHAR="%"
+  # PROMPT_CHAR=">"
+  # PROMPT_CHAR="➢"
+  # PROMPT_CHAR="➪"
+PRE_UPPER="╭"
+PRE_LOWER="╰"
+  # PRE_UPPER="┌"
+  # PRE_LOWER="└"
+BLOCK_SEPARATOR="─"
+  # BLOCK_SEPARATOR="∙"
+BLOCK_LEFT="["
+BLOCK_RIGHT="]"
+  # BLOCK_LEFT="("
+  # BLOCK_RIGHT=")"
+SHOW_0_EXIT_CODE="0"
+INCLUDE="admone-pwd;admone-vcs;admone-exit-code"
+FORMAT_LOWER="%B%F{%(?.cyan.red)}"
+
+TRANSIENT_PROMPT="1" # This is buggy
+SHORT_PROMPT="➤"
+FORMAT_SHORT="%B%F{%(?.cyan.red)}"
 
 zstyle ':vcs_info:git:*' formats '%b%u%c'
 zstyle ':vcs_info:git:*' actionformats '%b|%a%u%c'
 zstyle ':vcs_info:*' unstagedstr ' *'
 zstyle ':vcs_info:*' stagedstr ' +'
 
+#######################################################################
+# Functions
+#######################################################################
+
 admone-pwd() {
   echo "%F{blue}%~%f"
 }
 admone-vcs() {
   echo "%F{green}${vcs_info_msg_0_}%f"
+  VCS="1"
 }
 admone-exit-code() {
-  ([[ $ADMONE_SHOW_0_EXIT_CODE == "1" ]] && echo "%(?,%F{cyan}%?%f,%F{red}%?%f)") ||
+  ([[ $SHOW_0_EXIT_CODE == "1" ]] && echo "%(?,%F{cyan}%?%f,%F{red}%?%f)") ||
     echo "%(?,,%F{red}%?%f)"
 }
 admone-date() {
@@ -59,10 +67,8 @@ admone-time() {
 }
 
 #######################################################################
-
-#
 # BACKEND
-#
+#######################################################################
 
 # Cursor shape depends on vi mode
 function zle-keymap-select zle-line-init zle-line-finish {
@@ -82,18 +88,18 @@ function zle-keymap-select zle-line-init zle-line-finish {
 
 set-prompt() {
   # Reset prompts
-  upper="${ADMONE_PRE_UPPER}"
-  lower="${ADMONE_PRE_LOWER}${ADMONE_FORMAT_LOWER}${ADMONE_PROMPT_CHAR}%f%b "
+  upper="${PRE_UPPER}"
+  lower="${PRE_LOWER}${FORMAT_LOWER}${PROMPT_CHAR}%f%b "
 
   # Add in functions as defined above
-  NUM_FUNCS="$(echo $ADMONE_INCLUDE | grep -o ';' | wc -l)"
+  NUM_FUNCS="$(echo $INCLUDE | grep -o ';' | wc -l)"
 
-  THE_COMMAND="$(echo $ADMONE_INCLUDE | cut -d ';' -f 1)"
-  upper+="$ADMONE_BLOCK_LEFT$($THE_COMMAND)$ADMONE_BLOCK_RIGHT"
+  THE_COMMAND="$(echo $INCLUDE | cut -d ';' -f 1)"
+  upper+="$BLOCK_LEFT$($THE_COMMAND)$BLOCK_RIGHT"
 
   for (( i = 0; i < $NUM_FUNCS; i++ )); do
-    THE_COMMAND="$(echo $ADMONE_INCLUDE | cut -d ';' -f $(($i + 2)))"
-    upper+="$ADMONE_BLOCK_SEPARATOR$ADMONE_BLOCK_LEFT$($THE_COMMAND)$ADMONE_BLOCK_RIGHT"
+    THE_COMMAND="$(echo $INCLUDE | cut -d ';' -f $(($i + 2)))"
+    upper+="$BLOCK_SEPARATOR$BLOCK_LEFT$($THE_COMMAND)$BLOCK_RIGHT"
   done
 
   # Add line above
@@ -102,17 +108,34 @@ set-prompt() {
   PROMPT=$upper$'\n'$lower
 }
 
+
 # Set everything!
-if [[ ! $(echo $ADMONE_INCLUDE | grep -q "vcs") ]]; then
+if [[ $TRANSIENT_PROMPT == "1" ]]; then
+  SHORT_PROMPT=$FORMAT_SHORT$SHORT_PROMPT%f' '
+
+  set-transient-prompt() {
+    if [[ $PROMPT != $SHORT_PROMPT ]]; then
+      PROMPT=$SHORT_PROMPT
+      zle .reset-prompt
+    fi
+  }
+
+  zle-line-finish() {
+    set-transient-prompt
+  }
+
+  trap 'set-transient-prompt; return 130' INT
+fi
+
+if [[ $VCS = "1" ]]; then
   zstyle ':vcs_info:*' check-for-changes true
   autoload -Uz add-zsh-hook vcs-info
   add-zsh-hook precmd vcs_info
-  add-zsh-hook precmd set-prompt
-else
-  autoload -Uz add-zsh-hook
-  add-zsh-hook precmd set-prompt
 fi
 
+autoload -Uz add-zsh-hook
+add-zsh-hook precmd set-prompt
+
 zle -N zle-line-init
 zle -N zle-line-finish
 zle -N zle-keymap-select