3 Commits

Author SHA1 Message Date
9618713542 Make git-prompt also work in a bash promtp 2022-11-03 21:36:12 +00:00
5a33d2b5ac Add autoenv add=local subcommand
The `add=local` subcommand creates `.local/bin` if it doesn't exit and
then updates the autoenv to add it to `PATH`.
2022-10-26 20:31:51 +01:00
c691d335c0 Disable zsh-history-substring-search highlights 2022-10-11 17:16:23 +01:00
4 changed files with 37 additions and 7 deletions

View File

@@ -17,6 +17,7 @@ _autoenv() {
edit:'edit .enter and .exit scripts in current directory'
deinit:'remove .enter and .exit scripts in current directory'
reload:'reload the current environment'
add=local:'add .local/bin to PATH'
add=py:'add Python virtualenv to the autoenv'
)
_describe -t commands command commands && ret=0 ;;

View File

@@ -22,6 +22,7 @@ commands:
edit edit .enter and .exit scripts in current directory
deinit remove .enter and .exit scripts in current directory
reload reload the current environment
add=local add .local/bin to PATH
add=py add Python virtualenv to the autoenv"
;;
@@ -92,6 +93,27 @@ commands:
_autoenv_enter $PWD
;;
add=local) # Add .local/bin to PATH
if ! [ -f $PWD/.enter ] || ! [ -f $PWD/.exit ]; then
echo '.enter or .exit not found'; return 1
fi
_autoenv_exit $PWD
# Create .local/bin if not present
if ! [ -d $PWD/.local/bin ]; then
mkdir -p $PWD/.local/bin
fi
# On enter: store PATH and insert .local/bin
echo 'OLDPATH=$PATH' >> .enter
echo 'PATH=$PWD/.local/bin:$PATH' >> .enter
# On exit: reset PATH
echo 'PATH=$OLDPATH' >> .exit
echo 'unset OLDPATH' >> .exit
# Authorize modified autoenv
_autoenv_authorized $PWD/.enter yes
_autoenv_authorized $PWD/.exit yes
_autoenv_enter $PWD
;;
add=py) # Add Python virtualenv to the sandbox
if ! [ -f $PWD/.enter ] || ! [ -f $PWD/.exit ]; then
echo '.enter or .exit not found'; return 1

View File

@@ -21,6 +21,11 @@
}
#endif
#define color8(CODE) "\e[3" #CODE "m"
#define color256(CODE) "\e[38;5;" #CODE "m"
#define bold "\e[1m"
#define reset "\e[0m"
typedef struct process {
pid_t pid;
FILE* out;
@@ -104,7 +109,7 @@ int main() {
}
char* branch = trim(branch_buf);
char prompt[1024] = {};
append(prompt, 3, " %{%F{66}%}", branch, "%{%f%}");
append(prompt, 3, " " color256(66), branch, reset);
// get the upstream remote if one exists
char command[1024] = {};
@@ -178,22 +183,22 @@ int main() {
if (indexed || modified || deleted || unmerged || untracked) { // modified
char int_buf[32];
if (indexed) {
append(prompt, 3, "%{%F{2}%}*", inttostr(int_buf, indexed), "%{%f%}");
append(prompt, 3, color8(2) "*", inttostr(int_buf, indexed), reset);
}
if (modified) {
append(prompt, 3, "%{%F{1}%}+", inttostr(int_buf, modified), "%{%f%}");
append(prompt, 3, color8(1) "+", inttostr(int_buf, modified), reset);
}
if (deleted) {
append(prompt, 3, "%{%F{1}%}-", inttostr(int_buf, deleted), "%{%f%}");
append(prompt, 3, color8(1) "-", inttostr(int_buf, deleted), reset);
}
if (unmerged) {
append(prompt, 3, "%{%B%F{1}%}×", inttostr(int_buf, unmerged), "%{%f%b%}");
append(prompt, 3, bold color8(1) "×", inttostr(int_buf, unmerged), reset);
}
if (untracked) {
append(prompt, 1, "%{%F{1}%}…%{%f%}");
append(prompt, 1, color8(1) "" reset);
}
} else { // clean
append(prompt, 1, "%{%B%F{2}%}✓%{%f%b%}");
append(prompt, 1, bold color8(2) "" reset);
}
// print the prompt

2
zshrc
View File

@@ -17,6 +17,8 @@ ZSH_AUTOSUGGEST_ACCEPT_WIDGETS=(end-of-line vi-end-of-line)
# Search history with a command substring
source-plugin zsh-history-substring-search
HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND=
HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND=
# Command syntax highlighting
source-plugin zsh-syntax-highlighting