Compare commits
13 Commits
generic-gi
...
2dc143a839
| Author | SHA1 | Date | |
|---|---|---|---|
| 2dc143a839 | |||
| 5c62ff219c | |||
| 1121b9a193 | |||
| 0c4cd8880b | |||
| e30f86800d | |||
| ad5dc95e4d | |||
| d226ac7097 | |||
| e7750cb0a9 | |||
|
|
efbfa23241 | ||
| b95b365276 | |||
| 501353a534 | |||
| 02abb0960c | |||
| a81465daad |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,2 +1,3 @@
|
||||
# Ignore all plugin files in subdirectories
|
||||
*/
|
||||
zsh-*/
|
||||
local
|
||||
|
||||
@@ -46,21 +46,16 @@ commands:
|
||||
if ! [ -f $PWD/.enter ] || ! [ -f $PWD/.exit ]; then
|
||||
echo '.enter or .exit not found'; return 1
|
||||
fi
|
||||
# If vim exists, edit enter and exit scripts.
|
||||
if which vim &> /dev/null; then
|
||||
# Exit the autoenv before editing.
|
||||
_autoenv_exit $PWD
|
||||
if $EDITOR -p $PWD/.enter $PWD/.exit; then
|
||||
# If enter script exists, authorize it.
|
||||
[ -f $PWD/.enter ] && _autoenv_authorized $PWD/.enter yes
|
||||
# If exit script exists, authorize it.
|
||||
[ -f $PWD/.exit ] && _autoenv_authorized $PWD/.exit yes
|
||||
fi
|
||||
# Enter the autoenv.
|
||||
_autoenv_enter $PWD
|
||||
else
|
||||
echo 'vim not found'; return 1
|
||||
# Exit the autoenv before editing.
|
||||
_autoenv_exit $PWD
|
||||
if $EDITOR -p $PWD/.enter $PWD/.exit; then
|
||||
# If enter script exists, authorize it.
|
||||
[ -f $PWD/.enter ] && _autoenv_authorized $PWD/.enter yes
|
||||
# If exit script exists, authorize it.
|
||||
[ -f $PWD/.exit ] && _autoenv_authorized $PWD/.exit yes
|
||||
fi
|
||||
# Enter the autoenv.
|
||||
_autoenv_enter $PWD
|
||||
;;
|
||||
|
||||
deinit) # Remove .enter and .exit scripts in current directory.
|
||||
|
||||
@@ -7,21 +7,17 @@ alias build="build-dir --build"
|
||||
# Detect installed debugger and set the `debug` alias to debug a program with
|
||||
# command line arguments.
|
||||
if [ `uname` = Linux ]; then
|
||||
if [[ "`vim --version|head -1|cut -c 19-21`" =~ "^8\.[123456789]$" ]]; then
|
||||
autoload -U regexp-replace
|
||||
function vimdebug() {
|
||||
# For each item in $* replace * and \* and then replace \ with \\
|
||||
local args=()
|
||||
for arg in "$@"; do
|
||||
regexp-replace arg '\*' '\\*'
|
||||
args+=($arg)
|
||||
done
|
||||
vim "+packadd termdebug" "+TermdebugCommand $args"
|
||||
}
|
||||
alias debug='vimdebug'
|
||||
elif which cgdb &> /dev/null; then
|
||||
alias debug='cgdb --args'
|
||||
elif which gdb &> /dev/null; then
|
||||
autoload -U regexp-replace
|
||||
function vimdebug() {
|
||||
# For each item in $* replace * and \* and then replace \ with \\
|
||||
local args=()
|
||||
for arg in "$@"; do
|
||||
regexp-replace arg '\*' '\\*'
|
||||
args+=($arg)
|
||||
done
|
||||
nvim "+packadd termdebug" "+TermdebugCommand $args"
|
||||
}
|
||||
if which gdb &> /dev/null; then
|
||||
alias debug='gdb --args'
|
||||
fi
|
||||
elif [ `uname` = Darwin ]; then
|
||||
|
||||
19
git-prompt.c
19
git-prompt.c
@@ -21,11 +21,6 @@
|
||||
}
|
||||
#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;
|
||||
@@ -109,7 +104,7 @@ int main() {
|
||||
}
|
||||
char* branch = trim(branch_buf);
|
||||
char prompt[1024] = {};
|
||||
append(prompt, 3, " " color256(66), branch, reset);
|
||||
append(prompt, 3, " %{%F{66}%}", branch, "%{%f%}");
|
||||
|
||||
// get the upstream remote if one exists
|
||||
char command[1024] = {};
|
||||
@@ -183,22 +178,22 @@ int main() {
|
||||
if (indexed || modified || deleted || unmerged || untracked) { // modified
|
||||
char int_buf[32];
|
||||
if (indexed) {
|
||||
append(prompt, 3, color8(2) "*", inttostr(int_buf, indexed), reset);
|
||||
append(prompt, 3, "%{%F{2}%}*", inttostr(int_buf, indexed), "%{%f%}");
|
||||
}
|
||||
if (modified) {
|
||||
append(prompt, 3, color8(1) "+", inttostr(int_buf, modified), reset);
|
||||
append(prompt, 3, "%{%F{1}%}+", inttostr(int_buf, modified), "%{%f%}");
|
||||
}
|
||||
if (deleted) {
|
||||
append(prompt, 3, color8(1) "-", inttostr(int_buf, deleted), reset);
|
||||
append(prompt, 3, "%{%F{1}%}-", inttostr(int_buf, deleted), "%{%f%}");
|
||||
}
|
||||
if (unmerged) {
|
||||
append(prompt, 3, bold color8(1) "×", inttostr(int_buf, unmerged), reset);
|
||||
append(prompt, 3, "%{%B%F{1}%}×", inttostr(int_buf, unmerged), "%{%f%b%}");
|
||||
}
|
||||
if (untracked) {
|
||||
append(prompt, 1, color8(1) "…" reset);
|
||||
append(prompt, 1, "%{%F{1}%}…%{%f%}");
|
||||
}
|
||||
} else { // clean
|
||||
append(prompt, 1, bold color8(2) "✓" reset);
|
||||
append(prompt, 1, "%{%B%F{2}%}✓%{%f%b%}");
|
||||
}
|
||||
|
||||
// print the prompt
|
||||
|
||||
22
list-commands-with-available-completions.zsh
Executable file
22
list-commands-with-available-completions.zsh
Executable file
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env zsh
|
||||
|
||||
# Loop over available completions and add existing commands to array.
|
||||
local -a completions
|
||||
completions=(~/.config/zsh/zsh-completions/src/*)
|
||||
local -a command_list
|
||||
for completion in $completions; do
|
||||
local filename=$(basename $completion)
|
||||
local name=${filename:1}
|
||||
if command -v $name &> /dev/null; then
|
||||
command_list+=($name)
|
||||
fi
|
||||
done
|
||||
|
||||
# Print JSON array of commands Ansible can consume.
|
||||
echo '['
|
||||
local length=${#command_list[@]}
|
||||
for (( i = 1; i < $length; i++ )); do
|
||||
echo " \"${command_list[$i]}\","
|
||||
done
|
||||
echo " \"${command_list[-1]}\""
|
||||
echo ']'
|
||||
@@ -49,8 +49,8 @@ prompt_fresh_setup() {
|
||||
local userhost="$userhost@`hostname`"
|
||||
fi
|
||||
|
||||
PS1="«$user» "
|
||||
PS2="«${(l:${#userhost}:: :)}» "
|
||||
PS1="$user "
|
||||
PS2="${(l:${#userhost}:: :)} "
|
||||
|
||||
prompt_opts=(percent sp subst)
|
||||
}
|
||||
|
||||
@@ -44,14 +44,11 @@ usage: sandbox [-h] {create,rename,destroy,enable,disable,list} ..
|
||||
fi
|
||||
done
|
||||
unset git
|
||||
|
||||
[[ -z "$name" ]] && \
|
||||
error "missing argument <name>\n$usage" && return 1
|
||||
|
||||
local sandbox=$SANDBOX_ROOT/$name
|
||||
[[ -d "$sandbox" ]] && \
|
||||
error "sandbox already exists $name" && return 1
|
||||
|
||||
if [[ -n "$repo" ]]; then
|
||||
mkdir -p $SANDBOX_ROOT &> /dev/null
|
||||
git clone $repo $sandbox
|
||||
@@ -61,55 +58,49 @@ usage: sandbox [-h] {create,rename,destroy,enable,disable,list} ..
|
||||
cd $sandbox
|
||||
git init &> /dev/null
|
||||
fi
|
||||
|
||||
echo "SANDBOX_HOME=\$(dirname -- "\$0:a")" >> $sandbox/.enter
|
||||
echo "SANDBOX_NAME=$name" >> $sandbox/.enter
|
||||
_autoenv_authorized $sandbox/.enter yes
|
||||
|
||||
echo "unset SANDBOX_NAME" >> $sandbox/.exit
|
||||
echo "unset SANDBOX_HOME" >> $sandbox/.exit
|
||||
_autoenv_authorized $sandbox/.exit yes
|
||||
|
||||
_autoenv_enter $sandbox
|
||||
;;
|
||||
|
||||
rename)
|
||||
local old_name=$1 new_name=$2
|
||||
[[ -z "$old_name" ]] && \
|
||||
error "missing argument <old-name>\n$usage" && return 1
|
||||
[[ -z "$new_name" ]] && \
|
||||
error "missing argument <new-name>\n$usage" && return 1
|
||||
|
||||
local old=$SANDBOX_ROOT/$old_name new=$SANDBOX_ROOT/$new_name
|
||||
[[ ! -d "$old" ]] && \
|
||||
error "sandbox does not exist $old_name" && return 1
|
||||
[[ -d "$new" ]] && \
|
||||
error "sandbox already exists $new_name" && return 1
|
||||
|
||||
[[ "$PWD" = "$old"* ]] && _autoenv_exit $PWD
|
||||
|
||||
mv $old $new
|
||||
sed -i "s/$old_name/$new_name/g" $new/.enter
|
||||
_autoenv_authorized $new/.enter yes
|
||||
_autoenv_authorized $new/.exit yes
|
||||
|
||||
[[ "$PWD" = "$old"* ]] && cd $new
|
||||
;;
|
||||
|
||||
destroy)
|
||||
local name=$1
|
||||
[[ -z "$name" ]] && \
|
||||
error "missing argument <name>\n$usage" && return 1
|
||||
|
||||
local sandbox=$SANDBOX_ROOT/$name
|
||||
[[ ! -d $sandbox ]] && \
|
||||
error "sandbox does not exist $name" && return 1
|
||||
|
||||
[[ "$PWD" = "$sandbox"* ]] && cd ~
|
||||
|
||||
rm -rf $sandbox
|
||||
;;
|
||||
|
||||
list)
|
||||
ls -1 $SANDBOX_ROOT | less -F -K -R -X
|
||||
;;
|
||||
|
||||
enable)
|
||||
local name=$1
|
||||
[[ -z "$name" ]] && \
|
||||
@@ -118,16 +109,19 @@ usage: sandbox [-h] {create,rename,destroy,enable,disable,list} ..
|
||||
local sandbox=$SANDBOX_ROOT/$name
|
||||
[[ ! -d $sandbox ]] && \
|
||||
error "sandbox does not exist $name" && return 1
|
||||
|
||||
export SANDBOX_RETURN=$PWD
|
||||
cd $sandbox
|
||||
;;
|
||||
|
||||
disable)
|
||||
[[ -z "$SANDBOX_RETURN" ]] && \
|
||||
error "sandbox is not currently active" && return 1
|
||||
|
||||
cd $SANDBOX_RETURN
|
||||
unset SANDBOX_RETURN
|
||||
;;
|
||||
|
||||
*)
|
||||
error "invalid sandbox command: $cmd" && return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
99
tasks.yaml
99
tasks.yaml
@@ -1,99 +0,0 @@
|
||||
---
|
||||
- name: zsh install packages
|
||||
become: '{{package_become}}'
|
||||
package:
|
||||
name: zsh
|
||||
state: present
|
||||
|
||||
- name: zsh install Debian packages
|
||||
when: ansible_os_family == "Debian"
|
||||
become: true
|
||||
apt:
|
||||
name:
|
||||
- pinentry-curses
|
||||
- silversearcher-ag
|
||||
- unzip
|
||||
- zsh-doc
|
||||
state: present
|
||||
|
||||
- name: zsh install macOS packages
|
||||
when: ansible_os_family == "Darwin"
|
||||
become: false
|
||||
homebrew:
|
||||
name: the_silver_searcher
|
||||
state: present
|
||||
|
||||
- name: zsh clone plugin repos
|
||||
git:
|
||||
repo: '{{item.repo}}'
|
||||
dest: '{{item.dest}}'
|
||||
with_items:
|
||||
- repo: https://github.com/zsh-users/zsh-autosuggestions.git
|
||||
dest: ~/.config/zsh/zsh-autosuggestions
|
||||
- repo: https://github.com/zsh-users/zsh-history-substring-search.git
|
||||
dest: ~/.config/zsh/zsh-history-substring-search
|
||||
- repo: https://github.com/zsh-users/zsh-syntax-highlighting.git
|
||||
dest: ~/.config/zsh/zsh-syntax-highlighting
|
||||
- repo: https://github.com/zsh-users/zsh-completions.git
|
||||
dest: ~/.config/zsh/zsh-completions
|
||||
- repo: https://github.com/junegunn/fzf.git
|
||||
dest: ~/.config/zsh/fzf
|
||||
|
||||
- name: zsh install fzf binaries
|
||||
command:
|
||||
cmd: ~/.config/zsh/fzf/install --bin
|
||||
creates: ~/.config/zsh/fzf/bin/fzf
|
||||
|
||||
- name: zsh create directories
|
||||
file:
|
||||
state: directory
|
||||
dest: '{{item}}'
|
||||
with_items:
|
||||
- ~/.local/bin
|
||||
- ~/.local/share/zsh/site-functions
|
||||
|
||||
- name: zsh create symbolic links
|
||||
file:
|
||||
state: link
|
||||
src: '{{item.src}}'
|
||||
dest: '{{item.dest}}'
|
||||
with_items:
|
||||
- src: ~/.config/zsh/zlogin
|
||||
dest: ~/.zlogin
|
||||
- src: ~/.config/zsh/zlogout
|
||||
dest: ~/.zlogout
|
||||
- src: ~/.config/zsh/zprofile
|
||||
dest: ~/.zprofile
|
||||
- src: ~/.config/zsh/zshenv
|
||||
dest: ~/.zshenv
|
||||
- src: ~/.config/zsh/zshrc
|
||||
dest: ~/.zshrc
|
||||
- src: ~/.config/zsh/prompt_fresh_setup
|
||||
dest: ~/.local/share/zsh/site-functions/prompt_fresh_setup
|
||||
- src: ~/.config/zsh/build/_build-dir
|
||||
dest: ~/.local/share/zsh/site-functions/_build-dir
|
||||
- src: ~/.config/zsh/sandbox/_sandbox
|
||||
dest: ~/.local/share/zsh/site-functions/_sandbox
|
||||
- src: ~/.config/zsh/layout/_layout
|
||||
dest: ~/.local/share/zsh/site-functions/_layout
|
||||
- src: ~/.config/zsh/notes/_note
|
||||
dest: ~/.local/share/zsh/site-functions/_note
|
||||
- src: ~/.config/zsh/fzf/bin/fzf
|
||||
dest: ~/.local/bin/fzf
|
||||
- src: ~/.config/zsh/fzf/bin/fzf-tmux
|
||||
dest: ~/.local/bin/fzf-tmux
|
||||
- src: ~/.config/zsh/cmake-uninstall
|
||||
dest: ~/.local/bin/cmake-uninstall
|
||||
- src: ~/.config/zsh/$
|
||||
dest: ~/.local/bin/$
|
||||
|
||||
- name: zsh get absolute path
|
||||
shell: command -v zsh
|
||||
register: zsh
|
||||
changed_when: false
|
||||
|
||||
- name: zsh set default shell
|
||||
user:
|
||||
name: '{{lookup("env", "USER")}}'
|
||||
shell: '{{zsh.stdout}}'
|
||||
become: true
|
||||
@@ -1,19 +0,0 @@
|
||||
#!/usr/bin/env zsh
|
||||
|
||||
# Check if third party completions are present.
|
||||
local zsh_completions=~/.config/zsh/zsh-completions
|
||||
[ ! -d $zsh_completions ] && return 0
|
||||
|
||||
# Loop over all completions.
|
||||
for completion in $zsh_completions/src/_*; do
|
||||
local name=`basename $completion`
|
||||
local symlink=~/.local/share/zsh/site-functions/$name
|
||||
# Remove existing completion file if it exists.
|
||||
[ -f $symlink ] && rm $symlink
|
||||
# Check if the command exists on the PATH.
|
||||
if command -v ${name:1} &> /dev/null; then
|
||||
# Symlink the completion for the existing command.
|
||||
[ `uname` = Darwin ] && \
|
||||
ln -s $completion $symlink || ln -sr $completion $symlink
|
||||
fi
|
||||
done
|
||||
22
url/_url
Normal file
22
url/_url
Normal file
@@ -0,0 +1,22 @@
|
||||
#compdef url
|
||||
|
||||
_url() {
|
||||
local ret=1 context curcontext="$curcontext" state line
|
||||
typeset -A opt_args
|
||||
|
||||
_arguments -C -w -s \
|
||||
'(-h --help)'{-h,--help}'[show this help message and exit]' \
|
||||
'1: :->command'
|
||||
|
||||
case $state in
|
||||
(command)
|
||||
declare -a commands
|
||||
local commands=(
|
||||
encode:'encode unencoded text'
|
||||
decode:'decode encoded text'
|
||||
)
|
||||
_describe -t commands command commands && ret=0 ;;
|
||||
esac
|
||||
|
||||
return ret
|
||||
}
|
||||
22
url/url
Executable file
22
url/url
Executable file
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
from argparse import ArgumentParser
|
||||
from urllib import parse
|
||||
|
||||
|
||||
def main():
|
||||
cli = ArgumentParser(description=__doc__)
|
||||
cli.add_argument('command', choices=['encode', 'decode'])
|
||||
cli.add_argument('text')
|
||||
args = cli.parse_args()
|
||||
print({
|
||||
'encode': parse.quote_plus,
|
||||
'decode': parse.unquote_plus,
|
||||
}[args.command](args.text))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
try:
|
||||
main()
|
||||
except KeyboardInterrupt:
|
||||
exit(130)
|
||||
18
zshenv
18
zshenv
@@ -22,10 +22,17 @@ INFOPATH=$HOME/.local/share/info:$INFOPATH
|
||||
|
||||
# Add ccache compiler aliases to PATH and use XDG base dir paths
|
||||
if [ `uname` = Darwin ]; then
|
||||
[ -d /usr/local/opt/python/libexec/bin ] && \
|
||||
PATH=/usr/local/opt/python/libexec/bin:$PATH
|
||||
[ -f /usr/local/bin/ccache ] && \
|
||||
PATH=/usr/local/opt/ccache/libexec:$PATH
|
||||
if [ `uname -m` = arm64 ]; then
|
||||
homebrew_root=/opt/homebrew
|
||||
[ -d /opt/homebrew/bin ] && \
|
||||
PATH=$homebrew_root/bin:$PATH
|
||||
else
|
||||
homebrew_root=/usr/local
|
||||
fi
|
||||
[ -d $homebrew_root/opt/python/libexec/bin ] && \
|
||||
PATH=$homebrew_root/opt/python/libexec/bin:$PATH
|
||||
[ -f $homebrew_root/bin/ccache ] && \
|
||||
PATH=$homebrew_root/opt/ccache/libexec:$PATH
|
||||
elif [ -f /usr/bin/ccache ]; then
|
||||
if [ -d /usr/lib/ccache/bin ]; then
|
||||
PATH=/usr/lib/ccache/bin:$PATH
|
||||
@@ -101,5 +108,6 @@ export GTK2_RC_FILES=$HOME/.config/gtk-2.0/gtkrc
|
||||
export PYLINTHOME=$HOME/.cache/pylint
|
||||
command -v rustup &> /dev/null && \
|
||||
export RUSTUP_HOME=$HOME/.local/share/rustup
|
||||
export WGETRC=$HOME/.config/wget/rc
|
||||
[ -f $HOME/.config/wget/rc ] && \
|
||||
export WGETRC=$HOME/.config/wget/rc
|
||||
# TODO: terminfo
|
||||
|
||||
13
zshrc
13
zshrc
@@ -172,12 +172,20 @@ if [[ ! -z "$cursor_block" && ! -z "$cursor_line" ]]; then
|
||||
fi
|
||||
|
||||
# Frequntly used directories
|
||||
function frequent-directory() { export $1; hash -d $1 }
|
||||
function frequent-directory() {
|
||||
# Replace - with _ in environment variable name.
|
||||
local name=$(echo $1 | sed 's/^\(.*\)=.*$/\1/g' | sed 's/-/_/g')
|
||||
local value=$(echo $1 | sed 's/^.*=\(.*$\)/\1/g')
|
||||
export $name=$value
|
||||
hash -d $1
|
||||
}
|
||||
frequent-directory Projects="$HOME/Projects"
|
||||
frequent-directory Sandbox="$HOME/Sandbox"
|
||||
|
||||
# Load work related config
|
||||
[ -f ~/.config/work/zshrc ] && source ~/.config/work/zshrc
|
||||
[ -f ~/.config/private/zshrc ] && source ~/.config/private/zshrc
|
||||
[ -f ~/.config/zsh/local ] && source ~/.config/zsh/local
|
||||
|
||||
# Aliases
|
||||
alias grep='grep --color=always'
|
||||
@@ -203,3 +211,6 @@ case `uname` in
|
||||
alias debug='lldb --'
|
||||
;;
|
||||
esac
|
||||
|
||||
command -v wol > /dev/null && \
|
||||
alias wakeonlan='wol'
|
||||
|
||||
Reference in New Issue
Block a user