Compare commits

...

3 Commits

Author SHA1 Message Date
Walter A. Boring IV d80657e3b4
Merge 0b8a9d1de2 into 5c17bcd21f 2025-01-08 09:49:31 +01:00
Bhanu 5c17bcd21f
feat(web-search): add perplexity.ai (#12815) 2025-01-08 09:34:00 +01:00
Hemna 0b8a9d1de2 Added git_files_changed function
This patch adds the git library function for building a
short string that represents the output of git diff --numstat.
This gives theme designers the ability to add the
Number of files changed, number of lines added and number of
lines removed in their prompt for a git repository, while the user's
current working directory is in the git repo.

The new function supports prefix and suffix for each of the
options, files changed, lines added and lines removed.

To colorize the output, you can do something like this in your
theme file

ZSH_THEME_GIT_FILES_CHANGED_PREFIX="%{$fg[yellow]%}"
ZSH_THEME_GIT_FILES_CHANGED_SUFFIX="%{$reset_color%}"
ZSH_THEME_GIT_LINES_ADDED_PREFIX="%{$fg[green]%}"
ZSH_THEME_GIT_LINES_ADDED_SUFFIX="%{$reset_color%}"
ZSH_THEME_GIT_LINES_REMOVED_PREFIX="%{$fg[red]%}"
ZSH_THEME_GIT_LINES_REMOVED_SUFFIX="%{$fg[blue]%}"

For example, if there are
3 files changed, 10 lines added and no lines removed you will get
3f:10+

1 files changed, 20 lines added and 6 lines removed:
1f:20+:6-
2021-01-25 08:11:02 -05:00
3 changed files with 34 additions and 0 deletions

View File

@ -365,3 +365,34 @@ function git_repo_name() {
echo ${repo_path:t} echo ${repo_path:t}
fi fi
} }
# Outputs 3 stats for git repo
# 1) number of files changed,
# 2) the total number of lines added
# 3) total number of lines removed
#
# Example
# 3f:69+:6-
function git_files_changed() {
local -i files=0
local -i insertions=0
local -i deletions=0
local raw=$(command git diff --numstat 2>/dev/null) || return 0
if [[ -n $raw ]]; then
echo $raw | while IFS= read -r line; do
local -i d=$line[(w)2]
local -i i=$line[(w)1]
insertions+=i
deletions+=d
files+=1
done
local output="$ZSH_THEME_GIT_FILES_CHANGED_PREFIX${files}f$ZSH_THEME_GIT_FILES_CHANGED_SUFFIX"
if (( $insertions > 0 )); then
output="$output:$ZSH_THEME_GIT_LINES_ADDED_PREFIX${insertions}+$ZSH_THEME_GIT_LINES_ADDED_SUFFIX"
fi
if (( $deletions > 0 )); then
output="$output:$ZSH_THEME_GIT_LINES_REMOVED_PREFIX${deletions}-$ZSH_THEME_GIT_LINES_REMOVED_SUFFIX"
fi
echo $output
fi
}

View File

@ -52,6 +52,7 @@ Available search contexts are:
| `gopkg` | `https://pkg.go.dev/search?m=package&q=` | | `gopkg` | `https://pkg.go.dev/search?m=package&q=` |
| `chatgpt` | `https://chatgpt.com/?q=` | | `chatgpt` | `https://chatgpt.com/?q=` |
| `reddit` | `https://www.reddit.com/search/?q=` | | `reddit` | `https://www.reddit.com/search/?q=` |
| `ppai` | `https://www.perplexity.ai/search/new?q=` |
Also there are aliases for bang-searching DuckDuckGo: Also there are aliases for bang-searching DuckDuckGo:

View File

@ -33,6 +33,7 @@ function web_search() {
gopkg "https://pkg.go.dev/search?m=package&q=" gopkg "https://pkg.go.dev/search?m=package&q="
chatgpt "https://chatgpt.com/?q=" chatgpt "https://chatgpt.com/?q="
reddit "https://www.reddit.com/search/?q=" reddit "https://www.reddit.com/search/?q="
ppai "https://www.perplexity.ai/search/new?q="
) )
# check whether the search engine is supported # check whether the search engine is supported
@ -87,6 +88,7 @@ alias packagist='web_search packagist'
alias gopkg='web_search gopkg' alias gopkg='web_search gopkg'
alias chatgpt='web_search chatgpt' alias chatgpt='web_search chatgpt'
alias reddit='web_search reddit' alias reddit='web_search reddit'
alias ppai='web_search ppai'
#add your own !bang searches here #add your own !bang searches here
alias wiki='web_search duckduckgo \!w' alias wiki='web_search duckduckgo \!w'