⚡ Termux variant
This commit is contained in:
		
							
								
								
									
										79
									
								
								.XCompose
									
									
									
									
									
								
							
							
						
						
									
										79
									
								
								.XCompose
									
									
									
									
									
								
							@@ -1,79 +0,0 @@
 | 
				
			|||||||
# jaandrle customizations
 | 
					 | 
				
			||||||
include "/usr/share/X11/locale/cs_CZ.UTF-8/Compose"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<Multi_key> <backslash> <space> : " " U202F # thin nonbreaking space
 | 
					 | 
				
			||||||
<Multi_key> <bar> <space> : "" U200B
 | 
					 | 
				
			||||||
<Multi_key> <8> <8> : "∞" U221E
 | 
					 | 
				
			||||||
<Multi_key> <equal> <equal>: "≡"
 | 
					 | 
				
			||||||
<Multi_key> <asciitilde> <asciitilde>: "≈"
 | 
					 | 
				
			||||||
<Multi_key> <equal> <asciitilde>: "≃"
 | 
					 | 
				
			||||||
<Multi_key> <asterisk> <asterisk>: "★"
 | 
					 | 
				
			||||||
<Multi_key> <c> <h> <e> <c> <k> : "✓"
 | 
					 | 
				
			||||||
<Multi_key> <c> <r> <o> <s> <s> : "✗"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<Multi_key> <a> <minus> <8> : "↑"
 | 
					 | 
				
			||||||
<Multi_key> <a> <minus> <6> : "→"
 | 
					 | 
				
			||||||
<Multi_key> <a> <minus> <2> : "↓"
 | 
					 | 
				
			||||||
<Multi_key> <a> <minus> <4> : "←"
 | 
					 | 
				
			||||||
<Multi_key> <a> <minus> <5> : "↔"
 | 
					 | 
				
			||||||
<Multi_key> <a> <minus> <7> : "↖"
 | 
					 | 
				
			||||||
<Multi_key> <a> <minus> <9> : "↗"
 | 
					 | 
				
			||||||
<Multi_key> <a> <minus> <3> : "↘"
 | 
					 | 
				
			||||||
<Multi_key> <a> <minus> <1> : "↙"
 | 
					 | 
				
			||||||
<Multi_key> <a> <minus> <KP_8> : "↑"
 | 
					 | 
				
			||||||
<Multi_key> <a> <minus> <KP_6> : "→"
 | 
					 | 
				
			||||||
<Multi_key> <a> <minus> <KP_2> : "↓"
 | 
					 | 
				
			||||||
<Multi_key> <a> <minus> <KP_4> : "←"
 | 
					 | 
				
			||||||
<Multi_key> <a> <minus> <KP_5> : "↔"
 | 
					 | 
				
			||||||
<Multi_key> <a> <minus> <KP_7> : "↖"
 | 
					 | 
				
			||||||
<Multi_key> <a> <minus> <KP_9> : "↗"
 | 
					 | 
				
			||||||
<Multi_key> <a> <minus> <KP_3> : "↘"
 | 
					 | 
				
			||||||
<Multi_key> <a> <minus> <KP_1> : "↙"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<Multi_key> <a> <equal> <8> : "⇑"
 | 
					 | 
				
			||||||
<Multi_key> <a> <equal> <6> : "⇒"
 | 
					 | 
				
			||||||
<Multi_key> <a> <equal> <2> : "⇓"
 | 
					 | 
				
			||||||
<Multi_key> <a> <equal> <4> : "⇐"
 | 
					 | 
				
			||||||
<Multi_key> <a> <equal> <5> : "⇔"
 | 
					 | 
				
			||||||
<Multi_key> <a> <equal> <KP_8> : "⇑"
 | 
					 | 
				
			||||||
<Multi_key> <a> <equal> <KP_6> : "⇒"
 | 
					 | 
				
			||||||
<Multi_key> <a> <equal> <KP_2> : "⇓"
 | 
					 | 
				
			||||||
<Multi_key> <a> <equal> <KP_4> : "⇐"
 | 
					 | 
				
			||||||
<Multi_key> <a> <equal> <KP_5> : "⇔"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Greek ambiguities: epsilon/eta, theta/tau, pi/phi/psi, omega/omicron
 | 
					 | 
				
			||||||
<Multi_key> <g> <a> : "α"
 | 
					 | 
				
			||||||
<Multi_key> <g> <b> : "β"
 | 
					 | 
				
			||||||
<Multi_key> <g> <g> : "γ"
 | 
					 | 
				
			||||||
<Multi_key> <g> <d> : "δ"
 | 
					 | 
				
			||||||
<Multi_key> <g> <3> : "ε"
 | 
					 | 
				
			||||||
<Multi_key> <g> <z> : "ζ"
 | 
					 | 
				
			||||||
<Multi_key> <g> <e> : "η"
 | 
					 | 
				
			||||||
<Multi_key> <g> <h> : "θ"
 | 
					 | 
				
			||||||
<Multi_key> <g> <i> : "ι"
 | 
					 | 
				
			||||||
<Multi_key> <g> <k> : "κ"
 | 
					 | 
				
			||||||
<Multi_key> <g> <l> : "λ"
 | 
					 | 
				
			||||||
<Multi_key> <g> <m> : "μ"
 | 
					 | 
				
			||||||
<Multi_key> <g> <n> : "ν"
 | 
					 | 
				
			||||||
<Multi_key> <g> <x> : "ξ"
 | 
					 | 
				
			||||||
# note: no omicron
 | 
					 | 
				
			||||||
<Multi_key> <g> <p> : "π"
 | 
					 | 
				
			||||||
<Multi_key> <g> <p> : "Ϟ"
 | 
					 | 
				
			||||||
<Multi_key> <g> <r> : "ρ"
 | 
					 | 
				
			||||||
<Multi_key> <g> <s> : "σ"
 | 
					 | 
				
			||||||
<Multi_key> <g> <t> : "τ"
 | 
					 | 
				
			||||||
<Multi_key> <g> <u> : "ψ"
 | 
					 | 
				
			||||||
<Multi_key> <g> <f> : "φ"
 | 
					 | 
				
			||||||
<Multi_key> <g> <c> : "χ"
 | 
					 | 
				
			||||||
<Multi_key> <g> <o> : "ω"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<Multi_key> <g> <G> : "Γ"
 | 
					 | 
				
			||||||
<Multi_key> <g> <D> : "Δ"
 | 
					 | 
				
			||||||
<Multi_key> <g> <H> : "Θ"
 | 
					 | 
				
			||||||
<Multi_key> <g> <L> : "Λ"
 | 
					 | 
				
			||||||
<Multi_key> <g> <X> : "Ξ"
 | 
					 | 
				
			||||||
<Multi_key> <g> <P> : "Π"
 | 
					 | 
				
			||||||
<Multi_key> <g> <S> : "Σ"
 | 
					 | 
				
			||||||
<Multi_key> <g> <F> : "Φ"
 | 
					 | 
				
			||||||
<Multi_key> <g> <U> : "Ψ"
 | 
					 | 
				
			||||||
<Multi_key> <g> <O> : "Ω"
 | 
					 | 
				
			||||||
@@ -1,141 +0,0 @@
 | 
				
			|||||||
									# Make less more friendly for non-text input files, see lesspipe(1)
 | 
					 | 
				
			||||||
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
 | 
					 | 
				
			||||||
alias gitdotfiles='/usr/bin/git --git-dir="$HOME/.dotfiles/" --work-tree="$HOME"'
 | 
					 | 
				
			||||||
# enable color support of ls and also add handy aliases
 | 
					 | 
				
			||||||
if [ -x /usr/bin/dircolors ]; then
 | 
					 | 
				
			||||||
	test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
 | 
					 | 
				
			||||||
	alias ls='ls --color=auto'
 | 
					 | 
				
			||||||
	alias dir='dir --color=auto'
 | 
					 | 
				
			||||||
	alias vdir='vdir --color=auto'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	alias grep='grep --color=auto'
 | 
					 | 
				
			||||||
	alias fgrep='fgrep --color=auto'
 | 
					 | 
				
			||||||
	alias egrep='egrep --color=auto'
 | 
					 | 
				
			||||||
	alias diff='diff --color=auto'
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
alias §rm='rm -vi'
 | 
					 | 
				
			||||||
alias §cp='cp -vi'
 | 
					 | 
				
			||||||
alias §mv='mv -vi'
 | 
					 | 
				
			||||||
alias §df='df -Th'
 | 
					 | 
				
			||||||
§du(){
 | 
					 | 
				
			||||||
	[[ "$1" == '--help' ]] && echo "§du; §du '../*'" && return 0
 | 
					 | 
				
			||||||
	du -h -x -s -- ${1:-*} | sort -r -h;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
alias §xclip-copy='xclip -selection clipboard'
 | 
					 | 
				
			||||||
alias §xclip-paste='xclip -o -selection clipboard'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
LAST_PWD_PATH="$BASH_DOTFILES/.bash_last_pwd"
 | 
					 | 
				
			||||||
[ -f "$LAST_PWD_PATH" ] && OLDPWD=`cat $LAST_PWD_PATH`
 | 
					 | 
				
			||||||
cd(){ builtin cd "$@" && echo `pwd` > "$LAST_PWD_PATH"; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
history_clean(){ awk '!seen[$0]++ {print $0}' $HOME/.bash_history; }
 | 
					 | 
				
			||||||
history_edit(){ vim $HOME/.bash_history; }
 | 
					 | 
				
			||||||
history_cat(){ LC_ALL=C cat ~/.bash_history; }
 | 
					 | 
				
			||||||
history_most_used(){ LC_ALL=C cat ~/.bash_history | cut -d ';' -f 2- | §awk 1 | sort | uniq -c | sort -r -n | head -n ${1-10}; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
§(){
 | 
					 | 
				
			||||||
	[[ -z "$1" ]] && clear && return 0
 | 
					 | 
				
			||||||
	echo "$ [--help]= clear or [print this text]"
 | 
					 | 
				
			||||||
	alias | grep "alias §" --color=never
 | 
					 | 
				
			||||||
	declare -F | grep 'declare -f §' --color=never
 | 
					 | 
				
			||||||
	ls ~/bin | grep -P "^§" | sed 's/^§/~\/bin\/ §/'
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
alias §ls='ls -pQFh --group-directories-first'
 | 
					 | 
				
			||||||
alias §less='less -R -S'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
alias §cd.='clear;§ls'
 | 
					 | 
				
			||||||
§cd..(){ cd $(eval printf '../'%.0s {1..$1}); }
 | 
					 | 
				
			||||||
§cd(){
 | 
					 | 
				
			||||||
	[[ "$1" == '--help' ]] && echo -e "
 | 
					 | 
				
			||||||
	Usage: §cd NUMBER|PATH
 | 
					 | 
				
			||||||
	See: dirs -v
 | 
					 | 
				
			||||||
	" && return 0
 | 
					 | 
				
			||||||
	[[ -z "$1" ]] && dirs -v | sed 1d && return 0
 | 
					 | 
				
			||||||
	[[ $1 =~ ^[0-9]+$ ]] && cd "$(dirs -l +$1)" && dirs -v | sed 1d && return 0
 | 
					 | 
				
			||||||
	builtin pushd "$1" >/dev/null && pushd .
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
alias cd-vifm='cd `vifm --choose-dir -`'
 | 
					 | 
				
			||||||
mkcd(){ mkdir -p -- "$1" && cd -P -- "$1"; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
alias §find.='find . -maxdepth 1'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
alias pdftk='java -jar $HOME/bin/pdftk-all.jar'
 | 
					 | 
				
			||||||
bw-session(){
 | 
					 | 
				
			||||||
	bw logout
 | 
					 | 
				
			||||||
	login=`kwallet-query kdewallet -f accounts -r Bitwarden 2> /dev/null`
 | 
					 | 
				
			||||||
	export BW_CLIENTSECRET=`echo "$login" | jq -r .secret`
 | 
					 | 
				
			||||||
	export BW_CLIENTID=`echo "$login" | jq -r .id`
 | 
					 | 
				
			||||||
	bw login --apikey --raw
 | 
					 | 
				
			||||||
	export BW_SESSION=`bw unlock --raw $(echo "$login" | jq -r .pass)` && echo "Bitwarden session ON" ||  echo "Bitwarden session FAILED"
 | 
					 | 
				
			||||||
	unset BW_CLIENTSECRET
 | 
					 | 
				
			||||||
	unset BW_CLIENTID
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
alias §psmem_all='ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem'
 | 
					 | 
				
			||||||
alias §psmem='§psmem_all | head -n 10'
 | 
					 | 
				
			||||||
alias §pscpu_all='ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu'
 | 
					 | 
				
			||||||
alias §pscpu='§pscpu_all | head -n 10'
 | 
					 | 
				
			||||||
alias §psnet_all='lsof -P -i -n'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
§ping-test(){ # Pings ip address of noip.com and www.google.com.
 | 
					 | 
				
			||||||
  ping -c 1 -q 8.23.224.107 | grep --color=never -A 1 -i '\---'
 | 
					 | 
				
			||||||
  ping -c 1 -q www.google.com | grep --color=never -A 1 -i '\---'
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
§whoami(){
 | 
					 | 
				
			||||||
	[[ "$1" == '--help' ]] && echo '§whoami; §whoami --ip' && return 0
 | 
					 | 
				
			||||||
	local ip=$(curl -s ifconfig.me)
 | 
					 | 
				
			||||||
	[[ "$1" == '--ip' ]] && echo "$ip" && return 0
 | 
					 | 
				
			||||||
	local L="	%s\n"
 | 
					 | 
				
			||||||
	printf "\n"
 | 
					 | 
				
			||||||
	printf "$L" "USER: $(echo $USER)"
 | 
					 | 
				
			||||||
	printf "$L" "IP ADDR: $ip"
 | 
					 | 
				
			||||||
	printf "$L" "HOSTNAME: $(hostname -f)"
 | 
					 | 
				
			||||||
	printf "$L" "KERNEL: $(uname -rms)"
 | 
					 | 
				
			||||||
	printf "\n"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
§cmdfu(){ curl "https://www.commandlinefu.com/commands/matching/$@/$(echo -n $@ | openssl base64)/plaintext"; }
 | 
					 | 
				
			||||||
aai(){
 | 
					 | 
				
			||||||
	[[ "$1" == '--help' ]] && ai ask --help && return 0;
 | 
					 | 
				
			||||||
	echo "ai ask \"$*, thanks for your help\""; ai ask "\"$*, thanks for your help\"";
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
alias npx-wca='npx -y web-component-analyzer'
 | 
					 | 
				
			||||||
alias npx-qnm='npx -y qnm'
 | 
					 | 
				
			||||||
alias npx-hint='npx -y hint'
 | 
					 | 
				
			||||||
alias npx-markdown='nohup npx markserv'
 | 
					 | 
				
			||||||
alias zfz=fzf-carroarmato0.fzf
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
§url-curl(){ curl --silent -I "$1" | grep -i location; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
alias bathelp='bat --plain --language=help'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
rpg(){
 | 
					 | 
				
			||||||
	rpg-cli "$@"
 | 
					 | 
				
			||||||
	if ( [[ "$1" == "cd" ]] || [[ "$1" == "ls" ]] ); then
 | 
					 | 
				
			||||||
		[[ "$2" == "" ]] && $1 . && return 0
 | 
					 | 
				
			||||||
		[[ "$2" == ".." ]] && $1 .. && return 0
 | 
					 | 
				
			||||||
		[[ "-1" != "$(nodejsscript --print "s.ls().findIndex(e=> e==='$2'.replace(/\/$/, ''))")" ]] && $1 "$2" && return 0
 | 
					 | 
				
			||||||
	fi
 | 
					 | 
				
			||||||
	return 0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	# [[ "$(rpg-cli pwd)" == "$(pwd)" ]] && return 0
 | 
					 | 
				
			||||||
	# cd "$(rpg-cli pwd)"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
rpg-dungeon(){
 | 
					 | 
				
			||||||
	current=$(basename $PWD)
 | 
					 | 
				
			||||||
	number_re='^[0-9]+$'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if [[ $current =~ $number_re ]]; then
 | 
					 | 
				
			||||||
		next=$(($current + 1))
 | 
					 | 
				
			||||||
		command mkdir -p $next && cd $next && rpg ls
 | 
					 | 
				
			||||||
	elif [[ -d 1 ]] ; then
 | 
					 | 
				
			||||||
		cd 1 && rpg ls
 | 
					 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
		command mkdir -p dungeon/1 && cd dungeon/1 && rpg ls
 | 
					 | 
				
			||||||
	fi
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# alias adb-device='adb devices | tail -n +2 | head -n 1 | §awk 1'
 | 
					 | 
				
			||||||
# make-completion-wrapper, see https://gdhnotes.blogspot.com/2014/02/alias-bash-completion.html
 | 
					 | 
				
			||||||
@@ -1,49 +0,0 @@
 | 
				
			|||||||
eval "$(gh completion -s bash)"
 | 
					 | 
				
			||||||
# gh tips: https://gist.github.com/ChristopherA/3cca24936fb2c84786a29f67bacacd3e
 | 
					 | 
				
			||||||
# used ectension: heaths/gh-label
 | 
					 | 
				
			||||||
[[ $- != *i* ]] && return                   # dont include rest in Vim
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
SCRIPT_DIR=$( builtin cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
 | 
					 | 
				
			||||||
source "$SCRIPT_DIR/complete-alias/complete_alias"
 | 
					 | 
				
			||||||
complete -F _complete_alias gitdotfiles
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
alias C--asana='eval "$($HOME/bin/asana.mjs completion_bash)"'
 | 
					 | 
				
			||||||
alias C--himalaya='\. "$BASH_DOTFILES/himalaya.completion"'
 | 
					 | 
				
			||||||
alias C--uu='eval "$($HOME/bin/uu --completion-bash)"'
 | 
					 | 
				
			||||||
alias C--bs='eval "$(bs .completion bash)"'
 | 
					 | 
				
			||||||
alias C--jc='eval "$(jc -B)" … newer version needed'
 | 
					 | 
				
			||||||
\. "$BASH_DOTFILES/cordova.completion"
 | 
					 | 
				
			||||||
eval "$(node --completion-bash)"
 | 
					 | 
				
			||||||
eval "$(npm completion)"
 | 
					 | 
				
			||||||
eval "$(nodejsscript --completion bash)"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
_npx() {
 | 
					 | 
				
			||||||
  local cur="${COMP_WORDS[COMP_CWORD]}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  if [[ $COMP_CWORD != 1 ]]; then
 | 
					 | 
				
			||||||
    case "${COMP_WORDS[1]}" in
 | 
					 | 
				
			||||||
      gulp)
 | 
					 | 
				
			||||||
        local compls=$(npx gulp --tasks-simple)
 | 
					 | 
				
			||||||
        if [[ $compls == *"__autocomplete_bash"* ]]; then
 | 
					 | 
				
			||||||
            compls="$compls $(npx gulp -L __autocomplete_bash --_l=$COMP_CWORD --_c=$cur)"
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
      ;;
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
    COMPREPLY=($(compgen -W "$compls" -- "$cur"))
 | 
					 | 
				
			||||||
    return 0;
 | 
					 | 
				
			||||||
  fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  local dir=$(pwd -P)
 | 
					 | 
				
			||||||
  while [[ -n "$dir" ]]; do
 | 
					 | 
				
			||||||
    if [[ ! -d $dir/node_modules/.bin ]]; then
 | 
					 | 
				
			||||||
      dir=${dir%/*}
 | 
					 | 
				
			||||||
      continue
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    local execs=( `cd $dir/node_modules/.bin; find -L . -type f -executable` )
 | 
					 | 
				
			||||||
    execs=( ${execs[@]/#.\//} )
 | 
					 | 
				
			||||||
    COMPREPLY=( $(compgen -W "${execs[*]} serve" -- "$cur" ) )
 | 
					 | 
				
			||||||
    break
 | 
					 | 
				
			||||||
  done
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
complete -F _npx npx
 | 
					 | 
				
			||||||
@@ -1,103 +0,0 @@
 | 
				
			|||||||
function jaaENV {
 | 
					 | 
				
			||||||
	if [ "$1" = "--help" ]; then
 | 
					 | 
				
			||||||
		echo "Utility to combine nvm/sdk/… in one script/config file '.jaaENV'"
 | 
					 | 
				
			||||||
		echo "	 ↘ instead of 'nvm use 16 & sdk use …'"
 | 
					 | 
				
			||||||
		echo ""
 | 
					 | 
				
			||||||
		echo "Usage:"
 | 
					 | 
				
			||||||
		echo "	jaaENV"
 | 
					 | 
				
			||||||
		echo "	jaaENV [--help|--ls]"
 | 
					 | 
				
			||||||
		echo "	jaaENV --save …to_save (example: jaaENV --save nodejs php)"
 | 
					 | 
				
			||||||
		echo ""
 | 
					 | 
				
			||||||
		echo "Description:"
 | 
					 | 
				
			||||||
		echo "	- Without arguments loads infos from '.jaaENV'"
 | 
					 | 
				
			||||||
		echo "	- 'ls' shows supported options to auto load"
 | 
					 | 
				
			||||||
		echo "	- 'save' cerates config file '.jaaENV'"
 | 
					 | 
				
			||||||
		echo ""
 | 
					 | 
				
			||||||
		echo "Usage '.jaaENV' files: "
 | 
					 | 
				
			||||||
		echo "	  typical: '\nphp=5.6\nnodejs=16.13.0'"
 | 
					 | 
				
			||||||
		echo "		 link: '. ../.jaaENV' … use settings from parent folder"
 | 
					 | 
				
			||||||
		echo "	Options:"
 | 
					 | 
				
			||||||
		echo "		'android_home': Exports 'ANDROID_HOME' (uses 'ANDROID_HOME_BAK') instead of new 'ANDROID_SDK_ROOT'. Value can be anything (use '1')."
 | 
					 | 
				
			||||||
		echo "		         'jdk': Exports 'JAVA_HOME' based on wanted version (currently 11/1.8)"
 | 
					 | 
				
			||||||
		echo "		'nodejs'|'php': NodeJS/PHP versions"
 | 
					 | 
				
			||||||
		echo "		      'gradle': Cordova uses folder scoped → so unnecesarly"
 | 
					 | 
				
			||||||
		echo ""
 | 
					 | 
				
			||||||
		echo "Install: "
 | 
					 | 
				
			||||||
		echo "	  gradle ⇒ https://sdkman.io/"
 | 
					 | 
				
			||||||
		echo "		node ⇒ https://github.com/nvm-sh/nvm"
 | 
					 | 
				
			||||||
		echo "		 php ⇒ http://jdem.cz/fgyu56 + https://deb.sury.org/"
 | 
					 | 
				
			||||||
		echo ""
 | 
					 | 
				
			||||||
		echo "Tips:"
 | 
					 | 
				
			||||||
		echo "	sudo update-alternatives --set php /usr/bin/php\$php"
 | 
					 | 
				
			||||||
		return 0
 | 
					 | 
				
			||||||
	fi
 | 
					 | 
				
			||||||
	if [ "$1" = "--save" ]; then
 | 
					 | 
				
			||||||
		shift
 | 
					 | 
				
			||||||
		rm -vi .jaaENV
 | 
					 | 
				
			||||||
		while test $# -gt 0
 | 
					 | 
				
			||||||
		do
 | 
					 | 
				
			||||||
			case "$1" in
 | 
					 | 
				
			||||||
				nodejs|node)
 | 
					 | 
				
			||||||
					local nodejs_version=`node --version`
 | 
					 | 
				
			||||||
					echo "nodejs=${nodejs_version:1}" >> .jaaENV
 | 
					 | 
				
			||||||
					;;
 | 
					 | 
				
			||||||
				gradle)
 | 
					 | 
				
			||||||
					local gradle_version=`gradle --version | head -n 3 | tail -n 1 | §awk 2`
 | 
					 | 
				
			||||||
					echo "gradle=$gradle_version" >> .jaaENV
 | 
					 | 
				
			||||||
					;;
 | 
					 | 
				
			||||||
				php)
 | 
					 | 
				
			||||||
					local php_version=`php --version | head -n 1 | §awk 2`
 | 
					 | 
				
			||||||
					echo "php=$php_version" >> .jaaENV
 | 
					 | 
				
			||||||
					;;
 | 
					 | 
				
			||||||
				*)
 | 
					 | 
				
			||||||
					echo "unknown '$1' – skipped"
 | 
					 | 
				
			||||||
					;;
 | 
					 | 
				
			||||||
			esac
 | 
					 | 
				
			||||||
			shift
 | 
					 | 
				
			||||||
		done
 | 
					 | 
				
			||||||
		return 0
 | 
					 | 
				
			||||||
	fi
 | 
					 | 
				
			||||||
	if [ "$1" = "--ls" ]; then
 | 
					 | 
				
			||||||
		echo ":: nvm ls ::\n"
 | 
					 | 
				
			||||||
		nvm ls
 | 
					 | 
				
			||||||
		echo ":: find /usr/bin/ -name php* ::\n"
 | 
					 | 
				
			||||||
		find /usr/bin/ -name php*
 | 
					 | 
				
			||||||
		echo ":: sdk ls gradle | cat :: "
 | 
					 | 
				
			||||||
		sdk ls gradle | cat
 | 
					 | 
				
			||||||
		return 0
 | 
					 | 
				
			||||||
	fi
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	if [ -f "compose.yaml" ]; then
 | 
					 | 
				
			||||||
		jdk=$(grep -Po 'VERSION_JAVA=\K.*' compose.yaml)
 | 
					 | 
				
			||||||
		nodejs=$(grep -Po 'VERSION_NODEJS=\K.*' compose.yaml)
 | 
					 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
		. ./.jaaENV
 | 
					 | 
				
			||||||
	fi
 | 
					 | 
				
			||||||
	if [ ! -z ${android_home+x} ]; then export ANDROID_HOME=$ANDROID_HOME_BAK; echo "\$ANDROID_HOME=$ANDROID_HOME"; else unset ANDROID_HOME; echo "\$ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT"; fi
 | 
					 | 
				
			||||||
	if [ ! -z ${android_home_is_sdk+x} ]; then export ANDROID_HOME=$ANDROID_SDK_ROOT; echo "\$ANDROID_HOME=$ANDROID_HOME"; fi
 | 
					 | 
				
			||||||
	if [ ! -z ${jdk+x} ]; then
 | 
					 | 
				
			||||||
		if (( $(echo "$jdk > 9" | bc -l) )); then
 | 
					 | 
				
			||||||
			export JAVA_HOME_bk=$JAVA_HOME
 | 
					 | 
				
			||||||
			export JAVA_HOME=/snap/android-studio/current/android-studio/jre;
 | 
					 | 
				
			||||||
		elif [ ! -z ${JAVA_HOME_bk+x} ]; then
 | 
					 | 
				
			||||||
			export JAVA_HOME=$JAVA_HOME_bk
 | 
					 | 
				
			||||||
		fi
 | 
					 | 
				
			||||||
		echo "\$JAVA_HOME=$JAVA_HOME"
 | 
					 | 
				
			||||||
	fi
 | 
					 | 
				
			||||||
	if [ ! -z ${nodejs+x} ]; then nvm use $nodejs; fi
 | 
					 | 
				
			||||||
	if [ ! -z ${gradle+x} ]; then sdk use gradle $gradle | tr -d '\n'; echo ; fi
 | 
					 | 
				
			||||||
	if [ ! -z ${php+x} ];	 then
 | 
					 | 
				
			||||||
		local php_local=`php --version | head -n 1 | §awk 2`
 | 
					 | 
				
			||||||
		if [[ "$php_local" == "$php"* ]]; then
 | 
					 | 
				
			||||||
			echo "php $php"
 | 
					 | 
				
			||||||
		else
 | 
					 | 
				
			||||||
			echo "php $php ← $php_local"
 | 
					 | 
				
			||||||
			sudo update-alternatives --set php /usr/bin/php$php
 | 
					 | 
				
			||||||
			sudo -k
 | 
					 | 
				
			||||||
		fi
 | 
					 | 
				
			||||||
	fi
 | 
					 | 
				
			||||||
	unset android_home
 | 
					 | 
				
			||||||
	unset nodejs
 | 
					 | 
				
			||||||
	unset gradle
 | 
					 | 
				
			||||||
	unset php
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,3 +0,0 @@
 | 
				
			|||||||
export NVM_DIR="$HOME/.nvm"
 | 
					 | 
				
			||||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
 | 
					 | 
				
			||||||
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
 | 
					 | 
				
			||||||
@@ -1,61 +0,0 @@
 | 
				
			|||||||
function setPromt {
 | 
					 | 
				
			||||||
    if [ "$color_prompt" != yes ]; then
 | 
					 | 
				
			||||||
        PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
 | 
					 | 
				
			||||||
        return
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    case "$TERM" in
 | 
					 | 
				
			||||||
    xterm*|rxvt*)
 | 
					 | 
				
			||||||
        ;;
 | 
					 | 
				
			||||||
    *)
 | 
					 | 
				
			||||||
        PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
 | 
					 | 
				
			||||||
        return
 | 
					 | 
				
			||||||
        ;;
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
    PROMPT_COMMAND=updatePromt
 | 
					 | 
				
			||||||
    PS2="|"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function updatePromt {
 | 
					 | 
				
			||||||
    local prev_exit="$?"
 | 
					 | 
				
			||||||
    # color_helper_>>color<< (Note: \[\]= escaping)
 | 
					 | 
				
			||||||
    local chR="\[\e[1;91m\]"      #red
 | 
					 | 
				
			||||||
    local chW="\[\033[00m\]"      #white
 | 
					 | 
				
			||||||
    local chG="\[\033[01;32m\]"   #green
 | 
					 | 
				
			||||||
    local chB="\[\033[0;34m\]"    #blue
 | 
					 | 
				
			||||||
    local chP="\[\033[0;35m\]"    #purple
 | 
					 | 
				
			||||||
    local chY="\[\033[0;33m\]"    #yellow
 | 
					 | 
				
			||||||
    PS1=""
 | 
					 | 
				
			||||||
    if [ $prev_exit == 0 ]; then
 | 
					 | 
				
			||||||
        PS1+="$chG✓ $chW"
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
        PS1+="$chR✗ $chW"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    local jobs="$(jobs | wc -l)"
 | 
					 | 
				
			||||||
    if [ $jobs != 0 ]; then
 | 
					 | 
				
			||||||
        PS1+="${chY}≡$jobs$chW"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    PS1+="${debian_chroot:+($debian_chroot)}"
 | 
					 | 
				
			||||||
    PS1+=" At ${chG}\A${chW}"
 | 
					 | 
				
			||||||
    PS1+=" by ${chP}\u${chW}"
 | 
					 | 
				
			||||||
    if sudo -n true 2>/dev/null; then
 | 
					 | 
				
			||||||
        PS1+="${chR} (sudo)${chW}"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    PS1+=" in "
 | 
					 | 
				
			||||||
    if \git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
 | 
					 | 
				
			||||||
        local branch="$(\git symbolic-ref -q HEAD)"
 | 
					 | 
				
			||||||
        PS1+="[${branch#refs/heads/}"
 | 
					 | 
				
			||||||
        local status="$(git for-each-ref --format='%(upstream:trackshort)' refs/heads | awk '!seen[$1]++ {printf $1}')"
 | 
					 | 
				
			||||||
        status+="$(git status --porcelain | awk '!seen[$1]++ {printf $1}')"
 | 
					 | 
				
			||||||
        if [ "$statua"s ]; then
 | 
					 | 
				
			||||||
            PS1+="|$chY$status$chW"
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
        PS1+="] "
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    PS1+="${chB}\w${chW}"
 | 
					 | 
				
			||||||
    PS1+="\n:"
 | 
					 | 
				
			||||||
    history -a
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
setPromt
 | 
					 | 
				
			||||||
unset color_prompt
 | 
					 | 
				
			||||||
unset -f setPromt
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# vim: set filetype=sh tabstop=4 shiftwidth=4 textwidth=250 expandtab :
 | 
					 | 
				
			||||||
@@ -1,3 +0,0 @@
 | 
				
			|||||||
#THIS MUST BE AT THE END OF THE `$HOME/.bashrc` FOR SDKMAN TO WORK!!!
 | 
					 | 
				
			||||||
export SDKMAN_DIR="$HOME/.sdkman"
 | 
					 | 
				
			||||||
[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh"
 | 
					 | 
				
			||||||
@@ -1,7 +0,0 @@
 | 
				
			|||||||
# IMPORT IN `$HOME/.profile`
 | 
					 | 
				
			||||||
export ANDROID_HOME_BAK="$HOME/.local/share/umake/android/android-studio"
 | 
					 | 
				
			||||||
export ANDROID_SDK_ROOT="$HOME/.local/share/umake/android/android-studio-sdk"
 | 
					 | 
				
			||||||
export PATH=$PATH:$ANDROID_SDK_ROOT/tools/
 | 
					 | 
				
			||||||
export PATH=$PATH:$ANDROID_SDK_ROOT/platform-tools/
 | 
					 | 
				
			||||||
export PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/
 | 
					 | 
				
			||||||
export PATH=$PATH:$ANDROID_SDK_ROOT/emulator/
 | 
					 | 
				
			||||||
@@ -1,11 +0,0 @@
 | 
				
			|||||||
# Bash
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Related files
 | 
					 | 
				
			||||||
- [../.bashrc](../.bashrc)
 | 
					 | 
				
			||||||
- [../.profile](../.profile)
 | 
					 | 
				
			||||||
- [../.inputrc](../.inputrc) – Vim bindings for bash
 | 
					 | 
				
			||||||
- [../.XCompose](../.XCompose) – [Compose key - Wikipedia (en)](https://en.wikipedia.org/wiki/Compose_key), [Klávesa Compose a typografický exkurz z rychlíku (cs)](https://jaandrle.github.io/blog/2020-10/klavesa-compose-a-typografie/)
 | 
					 | 
				
			||||||
- [./\*](./)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Bash completion
 | 
					 | 
				
			||||||
Completions on demand, use `C--*`, see [./.bash_completions](./.bash_completions)
 | 
					 | 
				
			||||||
 Submodule .bash/complete-alias deleted from 7f2555c2fe
									
								
							@@ -1,134 +0,0 @@
 | 
				
			|||||||
#
 | 
					 | 
				
			||||||
# Licensed to the Apache Software Foundation (ASF) under one
 | 
					 | 
				
			||||||
# or more contributor license agreements.  See the NOTICE file
 | 
					 | 
				
			||||||
# distributed with this work for additional information
 | 
					 | 
				
			||||||
# regarding copyright ownership.  The ASF licenses this file
 | 
					 | 
				
			||||||
# to you under the Apache License, Version 2.0 (the
 | 
					 | 
				
			||||||
# "License"); you may not use this file except in compliance
 | 
					 | 
				
			||||||
# with the License.  You may obtain a copy of the License at
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# http://www.apache.org/licenses/LICENSE-2.0
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# Unless required by applicable law or agreed to in writing,
 | 
					 | 
				
			||||||
# software distributed under the License is distributed on an
 | 
					 | 
				
			||||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 | 
					 | 
				
			||||||
#  KIND, either express or implied.  See the License for the
 | 
					 | 
				
			||||||
# specific language governing permissions and limitations
 | 
					 | 
				
			||||||
# under the License.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
platforms() {
 | 
					 | 
				
			||||||
    get_cordova && COMPREPLY=( $(compgen -W "$(${CORDOVA_BIN} platform ls  | tr -d "[]',")" -- $1) )
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
plugins() {
 | 
					 | 
				
			||||||
    get_cordova && COMPREPLY=( $(compgen -W "$(${CORDOVA_BIN} plugin ls  | tr -d "[]',")" -- $1) )
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
get_cordova() {
 | 
					 | 
				
			||||||
    local cordova
 | 
					 | 
				
			||||||
    if [[ -n "${CORDOVA_BIN}" ]]; then return 0; fi
 | 
					 | 
				
			||||||
    cordova=$(eval echo ${COMP_WORDS[0]})
 | 
					 | 
				
			||||||
    if [[ -x $cordova ]]; then CORDOVA_BIN=$cordova; return 0; fi
 | 
					 | 
				
			||||||
    cordova=$(which cordova)
 | 
					 | 
				
			||||||
    if [[ $? -eq 0 ]]; then CORDOVA_BIN=$cordova; return 0; fi
 | 
					 | 
				
			||||||
    return 1
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
get_top_level_dir() {
 | 
					 | 
				
			||||||
    local path
 | 
					 | 
				
			||||||
    path=$(pwd)
 | 
					 | 
				
			||||||
    while [ $path != '/' ]; do
 | 
					 | 
				
			||||||
        if [ -d $path/.cordova ]; then
 | 
					 | 
				
			||||||
            echo $path
 | 
					 | 
				
			||||||
            return 0
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
        path=$(dirname $path)
 | 
					 | 
				
			||||||
    done
 | 
					 | 
				
			||||||
    return 1
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
_cordova()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    local cur prev opts
 | 
					 | 
				
			||||||
    COMPREPLY=()
 | 
					 | 
				
			||||||
    cur="${COMP_WORDS[COMP_CWORD]}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # Skip over any initial command line switches
 | 
					 | 
				
			||||||
    local i=1
 | 
					 | 
				
			||||||
    while [[ $i -lt ${#COMP_WORDS[*]} ]] && [[ "${COMP_WORDS[${i}]}" == -* ]]; do
 | 
					 | 
				
			||||||
        i=$((i+1));
 | 
					 | 
				
			||||||
    done
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # For the first word, supply all of the valid top-level commands
 | 
					 | 
				
			||||||
    if [[ ${COMP_CWORD} -eq $i ]]; then
 | 
					 | 
				
			||||||
        opts="help create info platform plugin prepare compile build clean run emulate serve"
 | 
					 | 
				
			||||||
        COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
 | 
					 | 
				
			||||||
        return 0
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    case "${COMP_WORDS[$i]}" in
 | 
					 | 
				
			||||||
        create)
 | 
					 | 
				
			||||||
            if [[ ${COMP_CWORD} -eq $((i+1)) ]]; then
 | 
					 | 
				
			||||||
                COMPREPLY=( $(compgen -d -- ${cur}) )
 | 
					 | 
				
			||||||
                return 0
 | 
					 | 
				
			||||||
            fi
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
        platform)
 | 
					 | 
				
			||||||
            if [[ ${COMP_CWORD} -eq $((i+1)) ]]; then
 | 
					 | 
				
			||||||
                opts="add rm remove ls"
 | 
					 | 
				
			||||||
                COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
 | 
					 | 
				
			||||||
                return 0
 | 
					 | 
				
			||||||
            fi
 | 
					 | 
				
			||||||
            case "${COMP_WORDS[$((i+1))]}" in
 | 
					 | 
				
			||||||
                add)
 | 
					 | 
				
			||||||
                    opts="ios android wp7 wp8 blackberry www"
 | 
					 | 
				
			||||||
                    COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
 | 
					 | 
				
			||||||
                    return 0;
 | 
					 | 
				
			||||||
                    ;;
 | 
					 | 
				
			||||||
                rm|remove)
 | 
					 | 
				
			||||||
                    platforms ${cur}
 | 
					 | 
				
			||||||
                    return 0
 | 
					 | 
				
			||||||
                    ;;
 | 
					 | 
				
			||||||
            esac
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
        plugin)
 | 
					 | 
				
			||||||
            if [[ ${COMP_CWORD} -eq $((i+1)) ]]; then
 | 
					 | 
				
			||||||
                opts="add rm remove ls"
 | 
					 | 
				
			||||||
                COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
 | 
					 | 
				
			||||||
                return 0
 | 
					 | 
				
			||||||
            fi
 | 
					 | 
				
			||||||
            case "${COMP_WORDS[$((i+1))]}" in
 | 
					 | 
				
			||||||
                add)
 | 
					 | 
				
			||||||
                    COMPREPLY=( $(compgen nospace -d -- ${cur}) )
 | 
					 | 
				
			||||||
                    return 0;
 | 
					 | 
				
			||||||
                ;;
 | 
					 | 
				
			||||||
                rm|remove)
 | 
					 | 
				
			||||||
                    plugins ${cur}
 | 
					 | 
				
			||||||
                    return 0
 | 
					 | 
				
			||||||
                    ;;
 | 
					 | 
				
			||||||
            esac
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
        prepare|compile|emulate)
 | 
					 | 
				
			||||||
            platforms ${cur}
 | 
					 | 
				
			||||||
            return 0
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
        build)
 | 
					 | 
				
			||||||
            platforms ${cur}
 | 
					 | 
				
			||||||
            COMPREPLY+=( $(compgen -W '--release --debug --help --device --emulator --buildConfig' -- ${cur}) )
 | 
					 | 
				
			||||||
            return 0
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
        run)
 | 
					 | 
				
			||||||
            platforms ${cur}
 | 
					 | 
				
			||||||
            COMPREPLY+=( $(compgen -W '--list --noprepare --nobuild --target --release --debug --help --device --emulator --buildConfig' -- ${cur}) )
 | 
					 | 
				
			||||||
            return 0
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
        serve)
 | 
					 | 
				
			||||||
            if [[ ${COMP_CWORD} -eq $((i+1)) ]]; then
 | 
					 | 
				
			||||||
                platforms ${cur}
 | 
					 | 
				
			||||||
                return 0
 | 
					 | 
				
			||||||
            fi
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
complete -F _cordova cordova
 | 
					 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										102
									
								
								.bashrc
									
									
									
									
									
								
							
							
						
						
									
										102
									
								
								.bashrc
									
									
									
									
									
								
							@@ -1,65 +1,59 @@
 | 
				
			|||||||
#### BASH Config file
 | 
					export GREP_COLOR="1;32"
 | 
				
			||||||
### Jan Andrle
 | 
					export EDITOR="vim"
 | 
				
			||||||
## Info:
 | 
					export SUDO_EDITOR="vim"
 | 
				
			||||||
# ~/.bashrc: executed by bash(1) for non-login shells.
 | 
					export VISUAL="vim"
 | 
				
			||||||
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) for examples
 | 
					 | 
				
			||||||
export EDITOR='vim'
 | 
					 | 
				
			||||||
BASH_DOTFILES=$HOME/.bash
 | 
					 | 
				
			||||||
[ -f $BASH_DOTFILES/.bash_aliases ] && . $BASH_DOTFILES/.bash_aliases
 | 
					 | 
				
			||||||
shopt -s expand_aliases
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[ -f $BASH_DOTFILES/.bash_jaaENV ] && . $BASH_DOTFILES/.bash_jaaENV
 | 
					 | 
				
			||||||
[ -f $BASH_DOTFILES/.bash_sdkman ] && . $BASH_DOTFILES/.bash_sdkman
 | 
					 | 
				
			||||||
[ -f $BASH_DOTFILES/.bash_nvm ] && . $BASH_DOTFILES/.bash_nvm
 | 
					 | 
				
			||||||
# Install Ruby Gems to ~/.local/share/gems
 | 
					 | 
				
			||||||
export GEM_HOME="$HOME/.local/share/gems"
 | 
					 | 
				
			||||||
export PATH="$HOME/.local/share/gems/bin:$HOME/.local/bin:$PATH"
 | 
					 | 
				
			||||||
[ -f $BASH_DOTFILES/.bash_completions ] && . $BASH_DOTFILES/.bash_completions # for Vim
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[ -f /etc/bashrc ]] && . /etc/bashrc		# Source global definitions
 | 
				
			||||||
 | 
					[ -d "$HOME/bin" ] && PATH="$HOME/bin:$PATH"
 | 
				
			||||||
[[ $- != *i* ]] && return					# If not running interactively, don't do anything
 | 
					[[ $- != *i* ]] && return					# If not running interactively, don't do anything
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## General
 | 
					export HISTCONTROL=ignoreboth:erasedups
 | 
				
			||||||
set -o vi									# VIM mode for bash
 | 
					shopt -s histappend cmdhist
 | 
				
			||||||
 | 
					shopt -s histverify
 | 
				
			||||||
 | 
					export HISTSIZE=1000
 | 
				
			||||||
 | 
					export HISTFILESIZE=2000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -o vi
 | 
				
			||||||
bind -m vi-command 'Control-l: clear-screen'
 | 
					bind -m vi-command 'Control-l: clear-screen'
 | 
				
			||||||
bind -m vi-insert 'Control-l: clear-screen'
 | 
					bind -m vi-insert 'Control-l: clear-screen'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export MANPAGER="/bin/sh -c \"col -b | vim --not-a-term -c 'set ft=man ts=8 nomod nolist noma' -\""
 | 
					export MANPAGER="/bin/sh -c \"col -b | vim --not-a-term -c 'set ft=man ts=8 nomod nolist noma' -\""
 | 
				
			||||||
shopt -s checkwinsize						# dynamic columns update after every cmd
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## History
 | 
					 | 
				
			||||||
export HISTCONTROL=ignoreboth:erasedups		# No duplicate entries and started with spaces. See bash(1) for more options
 | 
					 | 
				
			||||||
shopt -s histappend cmdhist					# saving multiline + append
 | 
					 | 
				
			||||||
export HISTFILESIZE=10000					# increase history file size (default is 500)
 | 
					 | 
				
			||||||
export HISTSIZE=${HISTFILESIZE}				# increase history size (default is 500)
 | 
					 | 
				
			||||||
export HSTR_CONFIG=hicolor,prompt-bottom
 | 
					 | 
				
			||||||
export HSTR_PROMPT='?: '
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## UI/UX
 | 
					 | 
				
			||||||
									# clors for .inputrc (set colored-stats On)
 | 
					 | 
				
			||||||
export LS_COLORS=$LS_COLORS:'tw=01;04;34:ow=01;04;34:'
 | 
					export LS_COLORS=$LS_COLORS:'tw=01;04;34:ow=01;04;34:'
 | 
				
			||||||
									# set variable identifying the chroot you work in (used in the prompt below)
 | 
					 | 
				
			||||||
[ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ] && debian_chroot=$(cat /etc/debian_chroot)
 | 
					 | 
				
			||||||
									# Set a fancy prompt (non-color, unless we know we "want" color)
 | 
					 | 
				
			||||||
[[ $TERM == "xterm-color" ]] || [[ $TERM == *-256color ]] && color_prompt=yes
 | 
					 | 
				
			||||||
[ ! -x /usr/bin/tput ] || ! tput setaf 1 >&/dev/null && color_prompt=
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ -f $BASH_DOTFILES/.bash_promt ] && . $BASH_DOTFILES/.bash_promt
 | 
					alias myip='curl -s -m 5 https://ipleak.net/json/'
 | 
				
			||||||
 | 
					alias q='exit'
 | 
				
			||||||
 | 
					 	if [ -x /usr/bin/dircolors ]; then
 | 
				
			||||||
 | 
					    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
 | 
				
			||||||
 | 
					    alias ls='ls --color=auto'
 | 
				
			||||||
 | 
					    alias dir='dir --color=auto'
 | 
				
			||||||
 | 
					    alias vdir='vdir --color=auto'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Add an "alert" alias for long running commands.  Use like so:
 | 
					    alias grep='grep --color=auto'
 | 
				
			||||||
#	sleep 10; alert
 | 
					    alias fgrep='fgrep --color=auto'
 | 
				
			||||||
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
 | 
					    alias egrep='egrep --color=auto'
 | 
				
			||||||
 | 
					    alias diff='diff --color=auto'
 | 
				
			||||||
# enable programmable completion features (you don't need to enable
 | 
					 | 
				
			||||||
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
 | 
					 | 
				
			||||||
# sources /etc/bash.bashrc).
 | 
					 | 
				
			||||||
if ! shopt -oq posix; then
 | 
					 | 
				
			||||||
  if [ -f /usr/share/bash-completion/bash_completion ]; then
 | 
					 | 
				
			||||||
	. /usr/share/bash-completion/bash_completion
 | 
					 | 
				
			||||||
  elif [ -f /etc/bash_completion ]; then
 | 
					 | 
				
			||||||
	. /etc/bash_completion
 | 
					 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
fi
 | 
					alias myls='ls -pQFhA --group-directories-first'
 | 
				
			||||||
export GPG_TTY=$(tty)
 | 
					alias myrm='rm -vi'
 | 
				
			||||||
 | 
					alias mycp='cp -vi'
 | 
				
			||||||
 | 
					alias mymv='mv -vi'
 | 
				
			||||||
 | 
					alias mydf='df -Th'
 | 
				
			||||||
 | 
					alias myless='less -R -S'
 | 
				
			||||||
 | 
					mylsl(){ mls -l $* --color=always | mless; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# HSTR configuration - add this to ~/.bashrc
 | 
					myup(){ cd $(eval printf '../'%.0s {1..$1}); }
 | 
				
			||||||
# if this is interactive shell, then bind hstr to Ctrl-space
 | 
					mkcd(){ mkdir -p "${1:?}" && cd "${1}"; }
 | 
				
			||||||
if [[ $- =~ .*i.* ]]; then bind '"\C-@": "\e^ihstr -- \n"'; fi
 | 
					update(){ ~/update.sh && mv ~/update_new.sh ~/update.sh; }
 | 
				
			||||||
 | 
					myping(){ # Pings ip address of noip.com and www.google.com.
 | 
				
			||||||
 | 
					  ping -c 1 -q 8.23.224.107 | grep --color=never -A 1 -i '\---'
 | 
				
			||||||
 | 
					  ping -c 1 -q www.google.com | grep --color=never -A 1 -i '\---'
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					pushd(){ builtin pushd "$@" >/dev/null && dirs -v; }
 | 
				
			||||||
 | 
					popd() { builtin popd "$@" >/dev/null  && dirs -v; }
 | 
				
			||||||
 | 
					usevim() { ln -s $PREFIX/bin/vim ~/bin/termux-file-editor; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LAST_PWD_PATH="$(dirname "${BASH_SOURCE[0]}")/.bash_last_pwd"
 | 
				
			||||||
 | 
					[ -f "$LAST_PWD_PATH" ] && OLDPWD=`cat $LAST_PWD_PATH`
 | 
				
			||||||
 | 
					cd(){ builtin cd "$@" && echo `pwd` > "$LAST_PWD_PATH"; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# termux-setup-storage
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,16 +0,0 @@
 | 
				
			|||||||
[Behavior]
 | 
					 | 
				
			||||||
hideDockIcon=false
 | 
					 | 
				
			||||||
hideMainWindowWhenStarted=true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[MainWindow]
 | 
					 | 
				
			||||||
pos=@Point(0 0)
 | 
					 | 
				
			||||||
size=@Size(640 480)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[RepoTreeView]
 | 
					 | 
				
			||||||
expandedCategories-e77d1fb=Moje knihovny\tNed\xe1vno aktualizovan\xe9\tSd\xedleno se skupinama
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Settings]
 | 
					 | 
				
			||||||
computerName=TUXEDO-InfinityBook-s15gen6
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[UsedServerAddresses]
 | 
					 | 
				
			||||||
main=https://seafile.jaandrle.cz/
 | 
					 | 
				
			||||||
@@ -1,50 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "version": "4.1.33",
 | 
					 | 
				
			||||||
  "hide_promotional_message": false,
 | 
					 | 
				
			||||||
  "beta_enabled": "No",
 | 
					 | 
				
			||||||
  "ignore_all_lsp": false,
 | 
					 | 
				
			||||||
  "creation_time": "2022-04-13T07:50:41.488698952Z",
 | 
					 | 
				
			||||||
  "guuid": null,
 | 
					 | 
				
			||||||
  "semantic_status": {},
 | 
					 | 
				
			||||||
  "enable_telemetry": true,
 | 
					 | 
				
			||||||
  "user_understands_that_enabling_tabnine_cloud_sends_code_to_tabnine_servers": true,
 | 
					 | 
				
			||||||
  "deep_completions_work_mode": "Hybrid",
 | 
					 | 
				
			||||||
  "hosted_deep_completions_enabled": "Disabled",
 | 
					 | 
				
			||||||
  "tabnine_cloud_host": null,
 | 
					 | 
				
			||||||
  "tabnine_cloud_certificate_domain": null,
 | 
					 | 
				
			||||||
  "tabnine_cloud_port": null,
 | 
					 | 
				
			||||||
  "cloud_whitelist": [],
 | 
					 | 
				
			||||||
  "num_of_suggestions": 5,
 | 
					 | 
				
			||||||
  "line_suggestions": null,
 | 
					 | 
				
			||||||
  "rlhf": null,
 | 
					 | 
				
			||||||
  "omit_prefix_suggestions": null,
 | 
					 | 
				
			||||||
  "api_key": null,
 | 
					 | 
				
			||||||
  "api_base_url": null,
 | 
					 | 
				
			||||||
  "binary_update_interval_seconds": null,
 | 
					 | 
				
			||||||
  "local_enabled": "Unset",
 | 
					 | 
				
			||||||
  "disable_local_when_using_battery": false,
 | 
					 | 
				
			||||||
  "hide_deep_information_message": false,
 | 
					 | 
				
			||||||
  "enable_power_saving_mode": false,
 | 
					 | 
				
			||||||
  "rate_limit_interval_seconds": null,
 | 
					 | 
				
			||||||
  "rate_limit_amount": null,
 | 
					 | 
				
			||||||
  "generation": 47,
 | 
					 | 
				
			||||||
  "local_model_size": null,
 | 
					 | 
				
			||||||
  "model_hash_override": null,
 | 
					 | 
				
			||||||
  "local_indexing": null,
 | 
					 | 
				
			||||||
  "heartbeat_interval_seconds": null,
 | 
					 | 
				
			||||||
  "last_service_level": "Cloud",
 | 
					 | 
				
			||||||
  "override_beams": null,
 | 
					 | 
				
			||||||
  "override_context_length": null,
 | 
					 | 
				
			||||||
  "onboarding": null,
 | 
					 | 
				
			||||||
  "has_git_repos": null,
 | 
					 | 
				
			||||||
  "gusr": null,
 | 
					 | 
				
			||||||
  "exclude_file_masks": null,
 | 
					 | 
				
			||||||
  "inline_suggestions_mode": true,
 | 
					 | 
				
			||||||
  "use_specialized_model_if_available": null,
 | 
					 | 
				
			||||||
  "snippets_enabled_v2": true,
 | 
					 | 
				
			||||||
  "inline_suggestions_mode_clients": null,
 | 
					 | 
				
			||||||
  "tabnine_hub_port": null,
 | 
					 | 
				
			||||||
  "manually_selected_model": null,
 | 
					 | 
				
			||||||
  "hybrid_rendering_mode": null,
 | 
					 | 
				
			||||||
  "force_local_hub": false
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,37 +0,0 @@
 | 
				
			|||||||
[core]
 | 
					 | 
				
			||||||
version = 1.8
 | 
					 | 
				
			||||||
debug = 0
 | 
					 | 
				
			||||||
poll_interval = 1
 | 
					 | 
				
			||||||
show_auth_warn = 1
 | 
					 | 
				
			||||||
window_size = [957, 993]
 | 
					 | 
				
			||||||
enabled_plugins = ["libnotifyplugin"]
 | 
					 | 
				
			||||||
plugins_order = ["libnotifyplugin", "spamfilterplugin", "userscriptplugin", "soundplugin"]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[libnotifyplugin]
 | 
					 | 
				
			||||||
show_account_errors = 1
 | 
					 | 
				
			||||||
show_account_name = 1
 | 
					 | 
				
			||||||
show_avatar = 1
 | 
					 | 
				
			||||||
newest_first = 1
 | 
					 | 
				
			||||||
group_mails = 1
 | 
					 | 
				
			||||||
max_visible_mails = 10
 | 
					 | 
				
			||||||
show_unread_count = 1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Account 16a4e497]
 | 
					 | 
				
			||||||
backend = imap
 | 
					 | 
				
			||||||
name = CentrumCZ
 | 
					 | 
				
			||||||
type = internal
 | 
					 | 
				
			||||||
server = imap.centrum.cz
 | 
					 | 
				
			||||||
user = andrle.jan
 | 
					 | 
				
			||||||
proxy = 0
 | 
					 | 
				
			||||||
unsecure = 0
 | 
					 | 
				
			||||||
enabled = 1
 | 
					 | 
				
			||||||
webmail = 
 | 
					 | 
				
			||||||
port = 
 | 
					 | 
				
			||||||
pxytype = 
 | 
					 | 
				
			||||||
pxyurl = 
 | 
					 | 
				
			||||||
pxyport = 
 | 
					 | 
				
			||||||
pxyusr = 
 | 
					 | 
				
			||||||
pxypass = 
 | 
					 | 
				
			||||||
uuid = 16a4e497
 | 
					 | 
				
			||||||
folders = ["INBOX", "Hromadn\u00e1", "_Prace", "_Sluzby"]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@@ -1,38 +0,0 @@
 | 
				
			|||||||
# A valid snippet should starts with:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#		snippet trigger_word [ "description" [ options ] ]
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# and end with:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#		endsnippet
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Snippet options:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#		b - Beginning of line.
 | 
					 | 
				
			||||||
#		i - In-word expansion.
 | 
					 | 
				
			||||||
#		w - Word boundary.
 | 
					 | 
				
			||||||
#		r - Regular expression
 | 
					 | 
				
			||||||
#		e - Custom context snippet
 | 
					 | 
				
			||||||
#		A - Snippet will be triggered automatically, when condition matches.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Basic example:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#		snippet emitter "emitter properties" b
 | 
					 | 
				
			||||||
#		private readonly ${1} = new Emitter<$2>()
 | 
					 | 
				
			||||||
#		public readonly ${1/^_(.*)/$1/}: Event<$2> = this.$1.event
 | 
					 | 
				
			||||||
#		endsnippet
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Online reference: https://github.com/SirVer/ultisnips/blob/master/doc/UltiSnips.txt
 | 
					 | 
				
			||||||
snippet cmt "/* | */"
 | 
					 | 
				
			||||||
${1}/* ${0} */
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
snippet f "inline function"
 | 
					 | 
				
			||||||
${1}function${2}(${3}){${0}}
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
snippet fun "function"
 | 
					 | 
				
			||||||
${1}function ${2:name}(${3:params}){
 | 
					 | 
				
			||||||
    ${0:/* code */}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
@@ -1,20 +0,0 @@
 | 
				
			|||||||
# an idea from https://github.com/robinpokorny/git3moji
 | 
					 | 
				
			||||||
# [](https://robinpokorny.github.io/git3moji/)
 | 
					 | 
				
			||||||
snippet zap--⚡️–features-primary-concerns-3 ""
 | 
					 | 
				
			||||||
:zap:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet bug--🐛-fixes-3 ""
 | 
					 | 
				
			||||||
:bug:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet zapcop--⚡️👮-refactoring-3 ""
 | 
					 | 
				
			||||||
:zap::cop:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet tv--📺–ci-tooling-configuration-3 ""
 | 
					 | 
				
			||||||
:tv:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet cop--👮–tests-linting-comments-3 ""
 | 
					 | 
				
			||||||
:cop:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet abc--🔤-documentation-3 ""
 | 
					 | 
				
			||||||
:abc:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
@@ -1,204 +0,0 @@
 | 
				
			|||||||
snippet alembic--experimenting-new-things "" b
 | 
					 | 
				
			||||||
:alembic:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet alien--updating-code-due-to-external-api-changes "" b
 | 
					 | 
				
			||||||
:alien:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet ambulance--critical-hotfix "" b
 | 
					 | 
				
			||||||
:ambulance:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet apple--fixing-something-on-macos "" b
 | 
					 | 
				
			||||||
:apple:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet arrow_down--downgrading-dependencies "" b
 | 
					 | 
				
			||||||
:arrow_down:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet arrow_up--upgrading-dependencies "" b
 | 
					 | 
				
			||||||
:arrow_up:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet art--improving-structure--format-of-the-code "" b
 | 
					 | 
				
			||||||
:art:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet beers--writing-code-drunkenly "" b
 | 
					 | 
				
			||||||
:beers:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet bento--adding-or-updating-assets "" b
 | 
					 | 
				
			||||||
:bento:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet bookmark--releasing--version-tags "" b
 | 
					 | 
				
			||||||
:bookmark:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet boom--introducing-breaking-changes "" b
 | 
					 | 
				
			||||||
:boom:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet bug--fixing-a-bug "" b
 | 
					 | 
				
			||||||
:bug:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet building_construction--making-architectural-changes "" b
 | 
					 | 
				
			||||||
:building_construction:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet bulb--documenting-source-code "" b
 | 
					 | 
				
			||||||
:bulb:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet busts_in_silhouette--add-contributor(s) "" b
 | 
					 | 
				
			||||||
:busts_in_silhouette:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet camera_flash--adding-or-updating-snapshots "" b
 | 
					 | 
				
			||||||
:camera_flash:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet card_file_box--performing-database-related-changes "" b
 | 
					 | 
				
			||||||
:card_file_box:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet chart_with_upwards_trend--adding-analytics-or-tracking-code "" b
 | 
					 | 
				
			||||||
:chart_with_upwards_trend:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet checkered_flag--fixing-something-on-windows "" b
 | 
					 | 
				
			||||||
:checkered_flag:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet children_crossing--improving-user-experience--usability "" b
 | 
					 | 
				
			||||||
:children_crossing:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet clown_face--mocking-things "" b
 | 
					 | 
				
			||||||
:clown_face:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet construction--work-in-progress "" b
 | 
					 | 
				
			||||||
:construction:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet construction_worker--adding-ci-build-system "" b
 | 
					 | 
				
			||||||
:construction_worker:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet dizzy--adding-or-updating-animations-and-transitions "" b
 | 
					 | 
				
			||||||
:dizzy:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet egg--adding-an-easter-egg "" b
 | 
					 | 
				
			||||||
:egg:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet fire--removing-code-or-files "" b
 | 
					 | 
				
			||||||
:fire:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet globe_with_meridians--internationalization-and-localization "" b
 | 
					 | 
				
			||||||
:globe_with_meridians:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet goal_net--catching-errors"-b
 | 
					 | 
				
			||||||
:goal_net:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet green_apple--fixing-something-on-ios "" b
 | 
					 | 
				
			||||||
:green_apple:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet green_heart--fixing-ci-build "" b
 | 
					 | 
				
			||||||
:green_heart:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet heavy_minus_sign--removing-a-dependency "" b
 | 
					 | 
				
			||||||
:heavy_minus_sign:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet heavy_plus_sign--adding-a-dependency "" b
 | 
					 | 
				
			||||||
:heavy_plus_sign:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet iphone--working-on-responsive-design "" b
 | 
					 | 
				
			||||||
:iphone:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet label--adding-or-updating-types--flow--typescript "" b
 | 
					 | 
				
			||||||
:label:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet lipstick--updating-the-ui-and-style-files "" b
 | 
					 | 
				
			||||||
:lipstick:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet lock--fixing-security-issues "" b
 | 
					 | 
				
			||||||
:lock:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet loud_sound--adding-logs "" b
 | 
					 | 
				
			||||||
:loud_sound:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet mag--improving-seo "" b
 | 
					 | 
				
			||||||
:mag:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet memo--add-or-update-documentation "" b
 | 
					 | 
				
			||||||
:memo:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet mute--removing-logs "" b
 | 
					 | 
				
			||||||
:mute:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet ok_hand--updating-code-due-to-code-review-changes "" b
 | 
					 | 
				
			||||||
:ok_hand:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet package--updating-compiled-files-or-packages "" b
 | 
					 | 
				
			||||||
:package:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet page_facing_up--adding-or-updating-license "" b
 | 
					 | 
				
			||||||
:page_facing_up:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet pencil--writing-docs "" b
 | 
					 | 
				
			||||||
:pencil:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet pencil2--fixing-typos "" b
 | 
					 | 
				
			||||||
:pencil2:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet penguin--fixing-something-on-linux "" b
 | 
					 | 
				
			||||||
:penguin:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet poop--writing-bad-code-that-needs-to-be-improved "" b
 | 
					 | 
				
			||||||
:poop:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet pushpin--pinning-dependencies-to-specific-versions "" b
 | 
					 | 
				
			||||||
:pushpin:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet recycle--refactoring-code "" b
 | 
					 | 
				
			||||||
:recycle:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet rewind--reverting-changes "" b
 | 
					 | 
				
			||||||
:rewind:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet robot--fixing-something-on-android "" b
 | 
					 | 
				
			||||||
:robot:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet rocket--deploying-stuff "" b
 | 
					 | 
				
			||||||
:rocket:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet rotating_light--removing-linter-warnings "" b
 | 
					 | 
				
			||||||
:rotating_light:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet see_no_evil--adding-or-updating-a- "" b
 | 
					 | 
				
			||||||
:see_no_evil:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet seedling--adding-or-updating-seed-files"-b
 | 
					 | 
				
			||||||
:seedling:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet sparkles--introducing-new-features "" b
 | 
					 | 
				
			||||||
:sparkles:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet speech_balloon--updating-text-and-literals "" b
 | 
					 | 
				
			||||||
:speech_balloon:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet tada--initial-commit "" b
 | 
					 | 
				
			||||||
:tada:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet triangular_flag_on_post--adding--updating--or-removing-feature-flags "" b
 | 
					 | 
				
			||||||
:triangular_flag_on_post:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet truck--moving-or-renaming-files "" b
 | 
					 | 
				
			||||||
:truck:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet twisted_rightwards_arrows--merging-branches "" b
 | 
					 | 
				
			||||||
:twisted_rightwards_arrows:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet wastebasket--deprecating-code-that-needs-to-be-cleaned-up "" b
 | 
					 | 
				
			||||||
:wastebasket:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet whale--work-about-docker "" b
 | 
					 | 
				
			||||||
:whale:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet wheel_of_dharma--work-about-kubernetes "" b
 | 
					 | 
				
			||||||
:wheel_of_dharma:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet wheelchair--improving-accessibility "" b
 | 
					 | 
				
			||||||
:wheelchair:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet white_check_mark--updating-tests "" b
 | 
					 | 
				
			||||||
:white_check_mark:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet wrench--changing-configuration-files "" b
 | 
					 | 
				
			||||||
:wrench:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet zap--improving-performance "" b
 | 
					 | 
				
			||||||
:zap:
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
@@ -1,60 +0,0 @@
 | 
				
			|||||||
# A valid snippet should starts with:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#		snippet trigger_word [ "description" [ options ] ]
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# and end with:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#		endsnippet
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Snippet options:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#		b - Beginning of line.
 | 
					 | 
				
			||||||
#		i - In-word expansion.
 | 
					 | 
				
			||||||
#		w - Word boundary.
 | 
					 | 
				
			||||||
#		r - Regular expression
 | 
					 | 
				
			||||||
#		e - Custom context snippet
 | 
					 | 
				
			||||||
#		A - Snippet will be triggered automatically, when condition matches.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Basic example:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#		snippet emitter "emitter properties" b
 | 
					 | 
				
			||||||
#		private readonly ${1} = new Emitter<$2>()
 | 
					 | 
				
			||||||
#		public readonly ${1/^_(.*)/$1/}: Event<$2> = this.$1.event
 | 
					 | 
				
			||||||
#		endsnippet
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Online reference: https://github.com/SirVer/ultisnips/blob/master/doc/UltiSnips.txt
 | 
					 | 
				
			||||||
snippet sceleton "HTML5" b
 | 
					 | 
				
			||||||
<!DOCTYPE html>
 | 
					 | 
				
			||||||
<!-- ${0}DEL IE https://www.paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
 | 
					 | 
				
			||||||
<html class="no-js" lang="en">
 | 
					 | 
				
			||||||
<head>
 | 
					 | 
				
			||||||
    <meta charset="utf-8" />
 | 
					 | 
				
			||||||
<!-- DEL IE https://stackoverflow.com/questions/6771258/what-does-meta-http-equiv-x-ua-compatible-content-ie-edge-do -->
 | 
					 | 
				
			||||||
<!-- DEL https://www.vzhurudolu.cz/prirucka/viewport-meta -->
 | 
					 | 
				
			||||||
    <meta name="viewport" content="width=device-width, initial-scale=1" />
 | 
					 | 
				
			||||||
<!-- DEL CSP https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP | https://github.com/Prinzhorn/minimal-csp -->
 | 
					 | 
				
			||||||
<!-- DEL https://github.com/jensimmons/cssremedy -->
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<!-- DEL meta značky obecně https://www.vzhurudolu.cz/prirucka/meta-open-graph -->
 | 
					 | 
				
			||||||
    <title></title>
 | 
					 | 
				
			||||||
    <meta name="description" content="">
 | 
					 | 
				
			||||||
<!-- DEL IE https://www.sitepoint.com/html5-older-browsers-and-the-shiv/ -->
 | 
					 | 
				
			||||||
<!-- DEL https://www.vzhurudolu.cz/prirucka/checklist -->
 | 
					 | 
				
			||||||
</head>
 | 
					 | 
				
			||||||
<body>
 | 
					 | 
				
			||||||
    <!-- DEL -->
 | 
					 | 
				
			||||||
</body>
 | 
					 | 
				
			||||||
</html>
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
snippet cmt "comment"
 | 
					 | 
				
			||||||
<!-- ${0} -->
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
snippet viewport_cordova "viewport used in cordova apps"
 | 
					 | 
				
			||||||
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1"/>
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet csp_cordova "CSP used in cordova"
 | 
					 | 
				
			||||||
<meta http-equiv="Content-Security-Policy" content="default-src * gap://ready file: gulp_place('app.url_scheme', 'variable'):; style-src 'self' 'unsafe-inline'; img-src * data: *; script-src 'self' 'unsafe-inline' 'unsafe-eval'"/>
 | 
					 | 
				
			||||||
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; img-src 'self' data: android-webview-video-poster:; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
@@ -1,87 +0,0 @@
 | 
				
			|||||||
snippet sceleton_node "nodejs" b
 | 
					 | 
				
			||||||
#!/usr/bin/env node
 | 
					 | 
				
			||||||
/* jshint esversion: 8,-W097, -W040, node: true, expr: true, undef: true */
 | 
					 | 
				
			||||||
${0}
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet sceleton_cli "nodejsscript" b
 | 
					 | 
				
			||||||
#!/usr/bin/env nodejsscript
 | 
					 | 
				
			||||||
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, fetch, cyclicLoop */
 | 
					 | 
				
			||||||
${0}
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet sceleton_zx "zx" b
 | 
					 | 
				
			||||||
#!/usr/bin/env zx
 | 
					 | 
				
			||||||
/* jshint esversion: 8,-W097, -W040, node: true, expr: true, undef: true */
 | 
					 | 
				
			||||||
${0}
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet jshint "JSHint header" b
 | 
					 | 
				
			||||||
/* jshint esversion: 6,-W097, -W040, browser: true, expr: true, undef: true */
 | 
					 | 
				
			||||||
/* global ${0} */
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet global "JSHint global"
 | 
					 | 
				
			||||||
/* global ${0} */
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet global_ns "JSHint global"
 | 
					 | 
				
			||||||
/* ${1} *//* global ${0} */
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet devel "JSHint devel"
 | 
					 | 
				
			||||||
${1}/* jshint devel: true *///gulp.keep.line${0}
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
snippet log "console.log"
 | 
					 | 
				
			||||||
${1}console.log('${0}');
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet stor "localStorage"
 | 
					 | 
				
			||||||
${1}localStorage.${2:g}etItem("${0}");
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
snippet import "import with backward order"
 | 
					 | 
				
			||||||
import ${2:values} from "${1:specifier}";$0
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet promise "return? new Promise"
 | 
					 | 
				
			||||||
${1:return }new Promise(function(resolve, reject){
 | 
					 | 
				
			||||||
    ${0:/* async code */}
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet for "classical loop"
 | 
					 | 
				
			||||||
for(${1:let} ${2:i}= 0, ${2}_length= ${3:ITERABLE}.length; ${2}<${2}_length; ${2}++){
 | 
					 | 
				
			||||||
    ${0:/* statement */}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet foreach "PHP-like name" b
 | 
					 | 
				
			||||||
for(${2:const} ${3:element} of ${1:iterable}){
 | 
					 | 
				
			||||||
    ${0:/* statement */}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet switch "classical switch"
 | 
					 | 
				
			||||||
switch (${1}){
 | 
					 | 
				
			||||||
    case ${2}:
 | 
					 | 
				
			||||||
        ${0}
 | 
					 | 
				
			||||||
        break;
 | 
					 | 
				
			||||||
    default:
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet desctr "object destructure"
 | 
					 | 
				
			||||||
${1:const} { $0 }= ${2:def};
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet ready "document ready"
 | 
					 | 
				
			||||||
${1}document.addEventListener('DOMContentLoaded', ${0}, false)
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet readyEvent "vanilla JS content ready event name"
 | 
					 | 
				
			||||||
${1}DOMContentLoaded${0}
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
snippet selid
 | 
					 | 
				
			||||||
${1}document.getElementById('${0}')
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet seltag
 | 
					 | 
				
			||||||
${1}getElementsByTagName('${0}')
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet selclass
 | 
					 | 
				
			||||||
${1}getElementsByClassName('${0}')
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet sel
 | 
					 | 
				
			||||||
${1}querySelector('${0}')
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet selall
 | 
					 | 
				
			||||||
${1}querySelectorAll('${0}')
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
@@ -1,14 +0,0 @@
 | 
				
			|||||||
snippet jshint "JSHint config for package.json" b
 | 
					 | 
				
			||||||
"jshintConfig": {
 | 
					 | 
				
			||||||
	"esversion": 6,
 | 
					 | 
				
			||||||
	"browser": "true",
 | 
					 | 
				
			||||||
	"undef": "true",
 | 
					 | 
				
			||||||
	"latedef": "true",
 | 
					 | 
				
			||||||
	"maxparams": 4,
 | 
					 | 
				
			||||||
	"maxdepth": 3,
 | 
					 | 
				
			||||||
	"maxcomplexity": 17,
 | 
					 | 
				
			||||||
	"globals": {
 | 
					 | 
				
			||||||
		"gulp_place": false
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
@@ -1,25 +0,0 @@
 | 
				
			|||||||
# A valid snippet should starts with:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#		snippet trigger_word [ "description" [ options ] ]
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# and end with:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#		endsnippet
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Snippet options:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#		b - Beginning of line.
 | 
					 | 
				
			||||||
#		i - In-word expansion.
 | 
					 | 
				
			||||||
#		w - Word boundary.
 | 
					 | 
				
			||||||
#		r - Regular expression
 | 
					 | 
				
			||||||
#		e - Custom context snippet
 | 
					 | 
				
			||||||
#		A - Snippet will be triggered automatically, when condition matches.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Basic example:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#		snippet emitter "emitter properties" b
 | 
					 | 
				
			||||||
#		private readonly ${1} = new Emitter<$2>()
 | 
					 | 
				
			||||||
#		public readonly ${1/^_(.*)/$1/}: Event<$2> = this.$1.event
 | 
					 | 
				
			||||||
#		endsnippet
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Online reference: https://github.com/SirVer/ultisnips/blob/master/doc/UltiSnips.txt
 | 
					 | 
				
			||||||
@@ -1 +0,0 @@
 | 
				
			|||||||
extends php, html
 | 
					 | 
				
			||||||
@@ -1,9 +0,0 @@
 | 
				
			|||||||
snippet sceleton "bash" b
 | 
					 | 
				
			||||||
#!/usr/bin/env ${1:bash}
 | 
					 | 
				
			||||||
set -eou pipefail
 | 
					 | 
				
			||||||
${0}
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
snippet info "script name and version" b
 | 
					 | 
				
			||||||
this="${0##*/}"
 | 
					 | 
				
			||||||
version="`date +%Y-%m-%d`"
 | 
					 | 
				
			||||||
endsnippet
 | 
					 | 
				
			||||||
@@ -1 +0,0 @@
 | 
				
			|||||||
extends javascript, html
 | 
					 | 
				
			||||||
@@ -1,19 +0,0 @@
 | 
				
			|||||||
# What protocol to use when performing git operations. Supported values: ssh, https
 | 
					 | 
				
			||||||
git_protocol: ssh
 | 
					 | 
				
			||||||
# What editor gh should run when creating issues, pull requests, etc. If blank, will refer to environment.
 | 
					 | 
				
			||||||
editor:
 | 
					 | 
				
			||||||
# When to interactively prompt. This is a global config that cannot be overridden by hostname. Supported values: enabled, disabled
 | 
					 | 
				
			||||||
prompt: enabled
 | 
					 | 
				
			||||||
# A pager program to send command output to, e.g. "less". Set the value to "cat" to disable the pager.
 | 
					 | 
				
			||||||
pager:
 | 
					 | 
				
			||||||
# Aliases allow you to create nicknames for gh commands
 | 
					 | 
				
			||||||
aliases:
 | 
					 | 
				
			||||||
    §modules: issue list --label "modules (auxiliary)" --state "closed"
 | 
					 | 
				
			||||||
    §grepAsana_: '!grep "Issue is synchronized with this \[Asana task\]" | §awk -F "(" 2 | §awk -F ")" 1 | §awk -F "/" 6'
 | 
					 | 
				
			||||||
    §indigo: api user/orgs -q '.[0].login'
 | 
					 | 
				
			||||||
    §workflow-test: '!git commit -mWIP .github/workflows/$1 && git push && gh workflow run --ref $(git rev-parse --abbrev-ref HEAD) $@'
 | 
					 | 
				
			||||||
# The path to a unix socket through which send HTTP connections. If blank, HTTP traffic will be handled by net/http.DefaultTransport.
 | 
					 | 
				
			||||||
http_unix_socket:
 | 
					 | 
				
			||||||
# What web browser gh should use when opening URLs. If blank, will refer to environment.
 | 
					 | 
				
			||||||
browser:
 | 
					 | 
				
			||||||
version: "1"
 | 
					 | 
				
			||||||
@@ -1,39 +0,0 @@
 | 
				
			|||||||
name = "Jan Andrle"
 | 
					 | 
				
			||||||
downloads-dir = "~/Stažené"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[centrum]
 | 
					 | 
				
			||||||
default = true
 | 
					 | 
				
			||||||
email = "andrle.jan@centrum.cz"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
imap-host = "imap.centrum.cz"
 | 
					 | 
				
			||||||
imap-port = 993
 | 
					 | 
				
			||||||
imap-login = "andrle.jan@centrum.cz"
 | 
					 | 
				
			||||||
imap-passwd-cmd  =  "bw get password mail-centrum"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
smtp-host = "smtp.centrum.cz"
 | 
					 | 
				
			||||||
smtp-port = 465
 | 
					 | 
				
			||||||
smtp-login = "andrle.jan@centrum.cz"
 | 
					 | 
				
			||||||
smtp-passwd-cmd = "bw get password mail-centrum"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[centrum.mailboxes]
 | 
					 | 
				
			||||||
sent = "Odeslan&AOE- po&AWE-ta"
 | 
					 | 
				
			||||||
draft = "Koncepty"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[indigo]
 | 
					 | 
				
			||||||
email = "jan.andrle@indigo.cz"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
imap-host = "imap.gmail.com"
 | 
					 | 
				
			||||||
imap-port = 993
 | 
					 | 
				
			||||||
imap-login = "jan.andrle@indigo.cz"
 | 
					 | 
				
			||||||
imap-passwd-cmd  = "bw get password mail-gmail-indigo"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
smtp-host = "smtp.gmail.com"
 | 
					 | 
				
			||||||
smtp-port = 465
 | 
					 | 
				
			||||||
smtp-login = "jan.andrle@indigo.cz"
 | 
					 | 
				
			||||||
smtp-passwd-cmd  = "bw get password mail-gmail-indigo"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[indigo.mailboxes]
 | 
					 | 
				
			||||||
sent = "Odeslan&AOE- po&AWE-ta"
 | 
					 | 
				
			||||||
draft = "Koncepty"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# vim: ft=apachestyle cms=#\ %s :
 | 
					 | 
				
			||||||
@@ -1,8 +0,0 @@
 | 
				
			|||||||
[
 | 
					 | 
				
			||||||
	{ "type": "text", "value": "Složka 'Příchozí'" },
 | 
					 | 
				
			||||||
	{ "type": "himalaya", "value": [ "-m", "inbox", "list" ], "label": "inbox" },
 | 
					 | 
				
			||||||
	{ "type": "text", "value": "Složka 'Hromadná'" },
 | 
					 | 
				
			||||||
	{ "type": "himalaya", "value": [ "-m", "Hromadn&AOE-", "list" ], "label": "Hromadná" },
 | 
					 | 
				
			||||||
	{ "type": "text", "value": "Složka 'Práce'" },
 | 
					 | 
				
			||||||
	{ "type": "himalaya", "value": [ "-m", "_Prace", "list" ], "label": "_Prace" }
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
@@ -1,2 +0,0 @@
 | 
				
			|||||||
[Mouse]
 | 
					 | 
				
			||||||
cursorTheme=breeze_cursors
 | 
					 | 
				
			||||||
@@ -1,8 +0,0 @@
 | 
				
			|||||||
[General]
 | 
					 | 
				
			||||||
ColorScheme=BreezeDark
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Icons]
 | 
					 | 
				
			||||||
Theme=breeze-dark
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[KDE]
 | 
					 | 
				
			||||||
widgetStyle=Breeze
 | 
					 | 
				
			||||||
@@ -1,2 +0,0 @@
 | 
				
			|||||||
[Greeter]
 | 
					 | 
				
			||||||
Theme=org.kde.breezedark.desktop
 | 
					 | 
				
			||||||
@@ -1,3 +0,0 @@
 | 
				
			|||||||
[KSplash]
 | 
					 | 
				
			||||||
Engine=KSplashQML
 | 
					 | 
				
			||||||
Theme=org.kde.breezedark.desktop
 | 
					 | 
				
			||||||
@@ -1,11 +0,0 @@
 | 
				
			|||||||
[TabBox]
 | 
					 | 
				
			||||||
DesktopLayout=org.kde.breeze.desktop
 | 
					 | 
				
			||||||
DesktopListLayout=org.kde.breeze.desktop
 | 
					 | 
				
			||||||
LayoutName=org.kde.breeze.desktop
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Windows]
 | 
					 | 
				
			||||||
Placement=Centered
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[org.kde.kdecoration2]
 | 
					 | 
				
			||||||
library=org.kde.breeze
 | 
					 | 
				
			||||||
theme=Breeze
 | 
					 | 
				
			||||||
@@ -1 +0,0 @@
 | 
				
			|||||||
org.kde.breezedark.desktop
 | 
					 | 
				
			||||||
@@ -1,2 +0,0 @@
 | 
				
			|||||||
[Theme]
 | 
					 | 
				
			||||||
name=default
 | 
					 | 
				
			||||||
@@ -1,37 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
	"version": "1.0",
 | 
					 | 
				
			||||||
	"scripts": {
 | 
					 | 
				
			||||||
		"§vim_plugins.mjs": {
 | 
					 | 
				
			||||||
			"npx": false,
 | 
					 | 
				
			||||||
			"completions": {
 | 
					 | 
				
			||||||
				"path": [],
 | 
					 | 
				
			||||||
				"clone": [
 | 
					 | 
				
			||||||
					"-t",
 | 
					 | 
				
			||||||
					"--target",
 | 
					 | 
				
			||||||
					"-b",
 | 
					 | 
				
			||||||
					"--branch"
 | 
					 | 
				
			||||||
				],
 | 
					 | 
				
			||||||
				"C": "clone",
 | 
					 | 
				
			||||||
				"remove": [],
 | 
					 | 
				
			||||||
				"R": "remove",
 | 
					 | 
				
			||||||
				"rm": "remove",
 | 
					 | 
				
			||||||
				"list": [
 | 
					 | 
				
			||||||
					"-t",
 | 
					 | 
				
			||||||
					"--type"
 | 
					 | 
				
			||||||
				],
 | 
					 | 
				
			||||||
				"L": "list",
 | 
					 | 
				
			||||||
				"ls": "list",
 | 
					 | 
				
			||||||
				"export": [],
 | 
					 | 
				
			||||||
				"status": [],
 | 
					 | 
				
			||||||
				"S": "status",
 | 
					 | 
				
			||||||
				"pull": [],
 | 
					 | 
				
			||||||
				"P": "pull",
 | 
					 | 
				
			||||||
				"update": "pull"
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			"completions_all": [
 | 
					 | 
				
			||||||
				"--help",
 | 
					 | 
				
			||||||
				"--version"
 | 
					 | 
				
			||||||
			]
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,18 +0,0 @@
 | 
				
			|||||||
/* --print/--echo aliases */
 | 
					 | 
				
			||||||
Reflect.defineProperty($, "nosed", { get(){ return this.stdin.text(""); }, });
 | 
					 | 
				
			||||||
Reflect.defineProperty($, "nojq", { get(){ return this.stdin.json(null); }, });
 | 
					 | 
				
			||||||
Reflect.defineProperty($, "noawk", { get(){ return this.stdin.lines([]); }, });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* deprecated/fallback */
 | 
					 | 
				
			||||||
globalThis.cyclicLoop= function*(items){
 | 
					 | 
				
			||||||
	if(!items) items= 'win32'===process.platform ? '|/-\\' : "⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏";
 | 
					 | 
				
			||||||
	const { length }= items;
 | 
					 | 
				
			||||||
	for(let i=0; true; i++){
 | 
					 | 
				
			||||||
		if(i===length) i= 0;
 | 
					 | 
				
			||||||
		yield items[i];
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Reflect.defineProperty($, "clipboard", {
 | 
					 | 
				
			||||||
	get(){ return s.$().run`xclip -o -selection clipboard`; }
 | 
					 | 
				
			||||||
})
 | 
					 | 
				
			||||||
@@ -1,11 +0,0 @@
 | 
				
			|||||||
[General]
 | 
					 | 
				
			||||||
color=#FF2E88
 | 
					 | 
				
			||||||
has-screenshot-permission=true
 | 
					 | 
				
			||||||
language=ces, eng
 | 
					 | 
				
			||||||
last-update-check=0
 | 
					 | 
				
			||||||
mode=parse
 | 
					 | 
				
			||||||
notification=true
 | 
					 | 
				
			||||||
show-introduction=false
 | 
					 | 
				
			||||||
tray=false
 | 
					 | 
				
			||||||
update=false
 | 
					 | 
				
			||||||
version=false
 | 
					 | 
				
			||||||
@@ -1,133 +0,0 @@
 | 
				
			|||||||
/*
 | 
					 | 
				
			||||||
 * breeze-dark.rasi
 | 
					 | 
				
			||||||
 * rofi theme inspired by plasma breeze
 | 
					 | 
				
			||||||
 * MonsieurBedard
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
* {
 | 
					 | 
				
			||||||
	/* Base */
 | 
					 | 
				
			||||||
	default-background: rgba(49, 52, 56, 97.5%); // <- change this for transparency
 | 
					 | 
				
			||||||
	default-foreground: rgba(239, 240, 241, 100%);
 | 
					 | 
				
			||||||
	default-border: rgba(97, 101, 105, 100%);
 | 
					 | 
				
			||||||
	alternative-background: rgba(35, 38, 41, 100%);
 | 
					 | 
				
			||||||
	invisible: rgba(0, 0, 0, 0%);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* Colors */
 | 
					 | 
				
			||||||
	hard-blue: rgba(240, 84, 76, 100%);
 | 
					 | 
				
			||||||
	light-blue: rgba(240, 84, 76, 25%);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	hard-red: rgba(141, 58, 80, 100%);
 | 
					 | 
				
			||||||
	light-red: rgba(77, 31, 37, 100%);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	hard-green: rgba(39, 161, 69, 100%);
 | 
					 | 
				
			||||||
	light-green: rgba(19, 55, 35, 100%);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* Universal */
 | 
					 | 
				
			||||||
	background-color: @invisible;
 | 
					 | 
				
			||||||
	border-color: @default-border;
 | 
					 | 
				
			||||||
	font: "Noto Sans 10";
 | 
					 | 
				
			||||||
	text-color: @default-foreground;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#window {
 | 
					 | 
				
			||||||
	background-color: @default-background;
 | 
					 | 
				
			||||||
	border: 1;
 | 
					 | 
				
			||||||
	border-radius: 3;
 | 
					 | 
				
			||||||
	border-color: @default-border;
 | 
					 | 
				
			||||||
	padding: 7;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#mainbox {
 | 
					 | 
				
			||||||
	border:  0;
 | 
					 | 
				
			||||||
	padding: 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#message {
 | 
					 | 
				
			||||||
	border: 1;
 | 
					 | 
				
			||||||
	border-radius: 3;
 | 
					 | 
				
			||||||
	padding: 5;
 | 
					 | 
				
			||||||
	background-color: @alternative-background;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#textbox {
 | 
					 | 
				
			||||||
	background-color: @entry-background;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#listview {
 | 
					 | 
				
			||||||
	fixed-height: 0;
 | 
					 | 
				
			||||||
	spacing: 2;
 | 
					 | 
				
			||||||
	scrollbar: false;
 | 
					 | 
				
			||||||
	padding: 2 0 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#element {
 | 
					 | 
				
			||||||
	padding: 5;
 | 
					 | 
				
			||||||
	border: 1;
 | 
					 | 
				
			||||||
	border-radius: 3;
 | 
					 | 
				
			||||||
	border-color: @invisible;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#element.normal.normal {
 | 
					 | 
				
			||||||
	background-color: @invisible;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#element.normal.urgent {
 | 
					 | 
				
			||||||
	background-color: @light-red;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#element.normal.active {
 | 
					 | 
				
			||||||
	background-color: @light-green;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#element.selected.normal {
 | 
					 | 
				
			||||||
	background-color: @light-blue;
 | 
					 | 
				
			||||||
	border-color:	  @hard-blue;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#element.selected.urgent {
 | 
					 | 
				
			||||||
	background-color: @light-red;
 | 
					 | 
				
			||||||
	border-color:	  @hard-red;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#element.selected.active {
 | 
					 | 
				
			||||||
	background-color: @light-green;
 | 
					 | 
				
			||||||
	border-color:	  @hard-green;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#mode-switcher {
 | 
					 | 
				
			||||||
	spacing: 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#button {
 | 
					 | 
				
			||||||
	border: 0 0 3 0;
 | 
					 | 
				
			||||||
	border-color: @invisible;
 | 
					 | 
				
			||||||
	padding: 3;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#button.selected {
 | 
					 | 
				
			||||||
	border-color: @hard-blue;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#inputbar {
 | 
					 | 
				
			||||||
	spacing: 0;
 | 
					 | 
				
			||||||
	padding: 1;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#case-indicator {
 | 
					 | 
				
			||||||
	spacing: 0;
 | 
					 | 
				
			||||||
	padding: 3px;
 | 
					 | 
				
			||||||
	background-color: @alternative-background;
 | 
					 | 
				
			||||||
	border: 1 1 1 0;
 | 
					 | 
				
			||||||
	border-radius: 0 2 2 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#entry {
 | 
					 | 
				
			||||||
	background-color: @alternative-background;
 | 
					 | 
				
			||||||
	padding: 3px;
 | 
					 | 
				
			||||||
	border: 1 0 1 1;
 | 
					 | 
				
			||||||
	border-radius: 2 0 0 2;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#prompt {
 | 
					 | 
				
			||||||
	padding: 3 7 3 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1 +0,0 @@
 | 
				
			|||||||
@theme "~/.config/rofi/breeze-dark.rasi"
 | 
					 | 
				
			||||||
@@ -1,7 +0,0 @@
 | 
				
			|||||||
[[Accounts]]
 | 
					 | 
				
			||||||
Name = 'jaandrle'
 | 
					 | 
				
			||||||
Server = 'https://fosstodon.org'
 | 
					 | 
				
			||||||
ClientID = 'ggYBuM2y_jtFV_3wR4tGdJUoNh-4ZfVRl1SByK5bihU'
 | 
					 | 
				
			||||||
ClientSecret = 'j7ClbSP2UY8syZgV4E-7Kk1bf8Ph_6GQ7szcqVfqDtI'
 | 
					 | 
				
			||||||
AccessToken = '1iO5wZL-nXcC3dZGjxNHLcbbFoSZ3fmutno96oD_ZY8'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@@ -1,830 +0,0 @@
 | 
				
			|||||||
# Configuration file for tut
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[general]
 | 
					 | 
				
			||||||
# Shows a confirmation view before actions such as favorite, delete toot, boost
 | 
					 | 
				
			||||||
# etc.
 | 
					 | 
				
			||||||
# default=true
 | 
					 | 
				
			||||||
confirmation=true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Enable support for using the mouse in tut to select items.
 | 
					 | 
				
			||||||
# default=false
 | 
					 | 
				
			||||||
mouse-support=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Timelines adds windows of feeds. You can customize the number of feeds, what
 | 
					 | 
				
			||||||
# they should show and the key to activate them.
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# Available timelines: home, direct, local, federated, special, bookmarks,
 | 
					 | 
				
			||||||
# saved, favorited, notifications, lists, mentions, tag
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# The one named special are the home timeline with only boosts and/or replies.
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# Tag is special as you need to add the tag after, see the example below.
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# The syntax is:
 | 
					 | 
				
			||||||
# timelines=feed,[name],[keys...],[showBoosts],[showReplies]
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# Tha values in brackets are optional. You can see the syntax for keys under the
 | 
					 | 
				
			||||||
# [input] section.
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# showBoosts and showReplies must be formated as bools. So either true or false.
 | 
					 | 
				
			||||||
# They always defaults to true.
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# Some examples:
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# home timeline with the name Home
 | 
					 | 
				
			||||||
# timelines=home,Home
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# local timeline with the name Local and it gets focus when you press 2. It will
 | 
					 | 
				
			||||||
# also hide boosts in the timeline, but show toots that are replies.
 | 
					 | 
				
			||||||
# timelines=local,Local,'2',false,true
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# notification timeline with the name [N]otifications and it gets focus when you
 | 
					 | 
				
			||||||
# press n or N
 | 
					 | 
				
			||||||
# timelines=notifications,[N]otifications,'n','N'
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# tag timeline for #linux with the name Linux and it gets focus when you press
 | 
					 | 
				
			||||||
# timelines=tag linux,Linux,"F2"
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# If you don't set any timelines it will default to this:
 | 
					 | 
				
			||||||
# timelines=home
 | 
					 | 
				
			||||||
# timelines=notifications,[N]otifications,'n','N'
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
timelines=lists,Lists,'1'
 | 
					 | 
				
			||||||
timelines=home,Home,'2'
 | 
					 | 
				
			||||||
timelines=notifications,Notifications,'3'
 | 
					 | 
				
			||||||
timelines=tag webdev,Webdev,'4'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The date format to be used. See https://godoc.org/time#Time.Format
 | 
					 | 
				
			||||||
# default=2006-01-02 15:04
 | 
					 | 
				
			||||||
date-format=2006-01-02 15:04
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Format for dates the same day. See date-format for more info.
 | 
					 | 
				
			||||||
# default=15:04
 | 
					 | 
				
			||||||
date-today-format=15:04
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# This displays relative dates instead for statuses that are one day or older
 | 
					 | 
				
			||||||
# the output is 1y2m1d (1 year 2 months and 1 day)
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# The value is an integear
 | 
					 | 
				
			||||||
# -1     = don't use relative dates
 | 
					 | 
				
			||||||
#  0     = always use relative dates, except for dates < 1 day
 | 
					 | 
				
			||||||
#  1 - ∞ = number of days to use relative dates
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# Example: date-relative=28 will display a relative date for toots that are
 | 
					 | 
				
			||||||
# between 1-28 days old. Otherwhise it will use the short or long format.
 | 
					 | 
				
			||||||
# default=-1
 | 
					 | 
				
			||||||
date-relative=-1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The max width of text before it wraps when displaying toots.
 | 
					 | 
				
			||||||
# 0 = no restriction.
 | 
					 | 
				
			||||||
# default=0
 | 
					 | 
				
			||||||
max-width=0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Where do you want the list of toots to be placed?
 | 
					 | 
				
			||||||
# Valid values: left, right, top, bottom.
 | 
					 | 
				
			||||||
# default=left
 | 
					 | 
				
			||||||
list-placement=right
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# If you have notification-feed set to true you can display it under the main
 | 
					 | 
				
			||||||
# list of toots (row) or place it to the right of the main list of toots
 | 
					 | 
				
			||||||
# (column).
 | 
					 | 
				
			||||||
# default=row
 | 
					 | 
				
			||||||
list-split=column
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# You can change the proportions of the list view in relation to the content
 | 
					 | 
				
			||||||
# view list-proportion=1 and content-proportoin=3 will result in the content
 | 
					 | 
				
			||||||
# taking up 3 times more space.
 | 
					 | 
				
			||||||
# Must be n > 0
 | 
					 | 
				
			||||||
# default=1
 | 
					 | 
				
			||||||
list-proportion=2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# See list-proportion
 | 
					 | 
				
			||||||
# default=2
 | 
					 | 
				
			||||||
content-proportion=1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Hide notifications of this type. If you have multiple you separate them with a
 | 
					 | 
				
			||||||
# comma. Valid types: mention, status, boost, follow, follow_request, favorite,
 | 
					 | 
				
			||||||
# poll, edit.
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
notifications-to-hide=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# If you always want to quote original message when replying.
 | 
					 | 
				
			||||||
# default=false
 | 
					 | 
				
			||||||
quote-reply=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# If you want to show icons in the list of toots.
 | 
					 | 
				
			||||||
# default=true
 | 
					 | 
				
			||||||
show-icons=true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# If you've learnt all the shortcut keys you can remove the help text and only
 | 
					 | 
				
			||||||
# show the key in tui. So it gets less cluttered.
 | 
					 | 
				
			||||||
# default=false
 | 
					 | 
				
			||||||
short-hints=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# If you want to display the filter that filtered a toot.
 | 
					 | 
				
			||||||
# default=true
 | 
					 | 
				
			||||||
show-filter-phrase=true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# If you want to show a message in the cmdbar on how to access the help text.
 | 
					 | 
				
			||||||
# default=true
 | 
					 | 
				
			||||||
show-help=true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# If you always want tut to jump to the newest post. May ruin your reading
 | 
					 | 
				
			||||||
# experience.
 | 
					 | 
				
			||||||
# default=false
 | 
					 | 
				
			||||||
stick-to-top=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# If you want to display the username of the person being boosted instead of the
 | 
					 | 
				
			||||||
# person that boosted.
 | 
					 | 
				
			||||||
# default=false
 | 
					 | 
				
			||||||
show-boosted-user=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# 0 = No terminal title
 | 
					 | 
				
			||||||
# 1 = Show title in terminal and top bar
 | 
					 | 
				
			||||||
# 2 = Only show terminal title, and no top bar in tut.
 | 
					 | 
				
			||||||
# default=0
 | 
					 | 
				
			||||||
terminal-title=0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# If you don't want the whole UI to update, and only the text content you can
 | 
					 | 
				
			||||||
# set this option to true. This will lead to some artifacts being left on the
 | 
					 | 
				
			||||||
# screen when emojis are present. But it will keep the UI from flashing on every
 | 
					 | 
				
			||||||
# single toot in some terminals.
 | 
					 | 
				
			||||||
# default=true
 | 
					 | 
				
			||||||
redraw-ui=true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The leader is used as a shortcut to run commands as you can do in Vim. By
 | 
					 | 
				
			||||||
# default this is disabled and you enable it by setting a leader-key. It can
 | 
					 | 
				
			||||||
# only consist of one char and I like to use comma as leader key. So to set it
 | 
					 | 
				
			||||||
# you write leader-key=,
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
leader-key=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Number of milliseconds before the leader command resets. So if you tap the
 | 
					 | 
				
			||||||
# leader-key by mistake or are to slow it empties all the input after X
 | 
					 | 
				
			||||||
# milliseconds.
 | 
					 | 
				
			||||||
# default=1000
 | 
					 | 
				
			||||||
leader-timeout=1000
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# You set actions for the leader-key with one or more leader-action. It consists
 | 
					 | 
				
			||||||
# of two parts first the action then the shortcut. And they're separated by a
 | 
					 | 
				
			||||||
# comma.
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# Available commands: blocking, bookmarks, boosts, clear-notifications,
 | 
					 | 
				
			||||||
# close-window, compose, direct, edit, favorited, favorites, federated,
 | 
					 | 
				
			||||||
# followers, following, history, home, list-placement, list-split, lists, local,
 | 
					 | 
				
			||||||
# mentions, move-window-left, move-window-right, move-window-up,
 | 
					 | 
				
			||||||
# move-window-down, move-window-home, move-window-end, muting, newer,
 | 
					 | 
				
			||||||
# notifications, preferences, profile, proportions, refetch, saved, special-all,
 | 
					 | 
				
			||||||
# special-boosts, special-replies, stick-to-top, switch, tag, tags, window
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# The ones named special-* are the home timeline with only boosts and/or
 | 
					 | 
				
			||||||
# replies. All contains both, -boosts only boosts and -replies only replies.
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# The shortcuts are up to you, but keep them quite short and make sure they
 | 
					 | 
				
			||||||
# don't collide. If you have one shortcut that is "f" and an other one that is
 | 
					 | 
				
			||||||
# "fav", the one with "f" will always run and "fav" will never run. 
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# Some special leaders:
 | 
					 | 
				
			||||||
# tag is special as you need to add the tag after, e.g. tag linux
 | 
					 | 
				
			||||||
# window is special as it's a shortcut for switching between the timelines
 | 
					 | 
				
			||||||
# you've set under general and they are zero indexed. window 0 = your first
 | 
					 | 
				
			||||||
# timeline, window 1 = your second and so on.
 | 
					 | 
				
			||||||
# list-placement as it takes the argument top, right, bottom or left
 | 
					 | 
				
			||||||
# list-split as it takes the argument column or row
 | 
					 | 
				
			||||||
# proportions takes the arguments [int] [int], where the first integer is the
 | 
					 | 
				
			||||||
# list and the other content, e.g. proportions 1 3. See list-proportion above
 | 
					 | 
				
			||||||
# for more information.
 | 
					 | 
				
			||||||
# switch let's you go to a timeline if it already exists, if it doesn't it will
 | 
					 | 
				
			||||||
# open the timeline in a new window. The syntax is almost the same as in
 | 
					 | 
				
			||||||
# timelines= and is displayed under the examples.
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# Some examples:
 | 
					 | 
				
			||||||
# leader-action=local,lo
 | 
					 | 
				
			||||||
# leader-action=lists,li
 | 
					 | 
				
			||||||
# leader-action=federated,fed
 | 
					 | 
				
			||||||
# leader-action=direct,d
 | 
					 | 
				
			||||||
# leader-action=history,h
 | 
					 | 
				
			||||||
# leader-action=tag linux,tl
 | 
					 | 
				
			||||||
# leader-action=window 0,h
 | 
					 | 
				
			||||||
# leader-action=list-placement bottom,b
 | 
					 | 
				
			||||||
# leader-action=list-split column,c
 | 
					 | 
				
			||||||
# leader-action=proportions 1 3,3
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# Syntax for switch:
 | 
					 | 
				
			||||||
# leader-action=switch feed,shortcut,[name],[showBoosts],[showReplies]
 | 
					 | 
				
			||||||
# showBoosts can be either true or false and they are both optional. Here are
 | 
					 | 
				
			||||||
# some examples:
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# leader-action=switch home,h,false,true
 | 
					 | 
				
			||||||
# leader-action=switch tag tut,tt
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[media]
 | 
					 | 
				
			||||||
# Your image viewer.
 | 
					 | 
				
			||||||
# default=xdg-open
 | 
					 | 
				
			||||||
image-viewer=xdg-open
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Open the image viewer in the same terminal as toot. Only for terminal based
 | 
					 | 
				
			||||||
# viewers.
 | 
					 | 
				
			||||||
# default=false
 | 
					 | 
				
			||||||
image-terminal=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# If images should open one by one e.g. "imv image.png" multiple times. If set
 | 
					 | 
				
			||||||
# to false all images will open at the same time like this "imv image1.png
 | 
					 | 
				
			||||||
# image2.png image3.png". Not all image viewers support this, so try it first.
 | 
					 | 
				
			||||||
# default=true
 | 
					 | 
				
			||||||
image-single=true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# If you want to open the images in reverse order. In some image viewers this
 | 
					 | 
				
			||||||
# will display the images in the "right" order.
 | 
					 | 
				
			||||||
# default=false
 | 
					 | 
				
			||||||
image-reverse=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Your video viewer.
 | 
					 | 
				
			||||||
# default=xdg-open
 | 
					 | 
				
			||||||
video-viewer=xdg-open
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Open the video viewer in the same terminal as toot. Only for terminal based
 | 
					 | 
				
			||||||
# viewers.
 | 
					 | 
				
			||||||
# default=false
 | 
					 | 
				
			||||||
video-terminal=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# If videos should open one by one. See image-single.
 | 
					 | 
				
			||||||
# default=true
 | 
					 | 
				
			||||||
video-single=true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# If you want your videos in reverse order. In some video apps this will play
 | 
					 | 
				
			||||||
# the files in the "right" order.
 | 
					 | 
				
			||||||
# default=false
 | 
					 | 
				
			||||||
video-reverse=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Your audio viewer.
 | 
					 | 
				
			||||||
# default=xdg-open
 | 
					 | 
				
			||||||
audio-viewer=xdg-open
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Open the audio viewer in the same terminal as toot. Only for terminal based
 | 
					 | 
				
			||||||
# viewers.
 | 
					 | 
				
			||||||
# default=false
 | 
					 | 
				
			||||||
audio-terminal=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# If audio should open one by one. See image-single.
 | 
					 | 
				
			||||||
# default=true
 | 
					 | 
				
			||||||
audio-single=true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# If you want to play the audio files in reverse order. In some audio apps this
 | 
					 | 
				
			||||||
# will play the files in the "right" order.
 | 
					 | 
				
			||||||
# default=false
 | 
					 | 
				
			||||||
audio-reverse=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Your web browser.
 | 
					 | 
				
			||||||
# default=xdg-open
 | 
					 | 
				
			||||||
link-viewer=xdg-open
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Open the browser in the same terminal as toot. Only for terminal based
 | 
					 | 
				
			||||||
# browsers.
 | 
					 | 
				
			||||||
# default=false
 | 
					 | 
				
			||||||
link-terminal=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[open-custom]
 | 
					 | 
				
			||||||
# This sections allows you to set up to five custom programs to open URLs with.
 | 
					 | 
				
			||||||
# If the url points to an image, you can set c1-name to img and c1-use to imv.
 | 
					 | 
				
			||||||
# If the program runs in a terminal and you want to run it in the same terminal
 | 
					 | 
				
			||||||
# as tut. Set cX-terminal to true. The name will show up in the UI, so keep it
 | 
					 | 
				
			||||||
# short so all five fits.
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# c1-name=name
 | 
					 | 
				
			||||||
# c1-use=program
 | 
					 | 
				
			||||||
# c1-terminal=false
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# c2-name=name
 | 
					 | 
				
			||||||
# c2-use=program
 | 
					 | 
				
			||||||
# c2-terminal=false
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# c3-name=name
 | 
					 | 
				
			||||||
# c3-use=program
 | 
					 | 
				
			||||||
# c3-terminal=false
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# c4-name=name
 | 
					 | 
				
			||||||
# c4-use=program
 | 
					 | 
				
			||||||
# c4-terminal=false
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# c5-name=name
 | 
					 | 
				
			||||||
# c5-use=program
 | 
					 | 
				
			||||||
# c5-terminal=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[open-pattern]
 | 
					 | 
				
			||||||
# Here you can set your own glob patterns for opening matching URLs in the
 | 
					 | 
				
			||||||
# program you want them to open up in. You could for example open Youtube videos
 | 
					 | 
				
			||||||
# in your video player instead of your default browser.
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# You must name the keys foo-pattern, foo-use and foo-terminal, where use is the
 | 
					 | 
				
			||||||
# program that will open up the URL. To see the syntax for glob pattern you can
 | 
					 | 
				
			||||||
# follow this URL https://github.com/gobwas/glob#syntax. foo-terminal is if the
 | 
					 | 
				
			||||||
# program runs in the terminal and should open in the same terminal as tut
 | 
					 | 
				
			||||||
# itself.
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# Example for youtube.com and youtu.be to open up in mpv instead of the browser.
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# y1-pattern=*youtube.com/watch*
 | 
					 | 
				
			||||||
# y1-use=mpv
 | 
					 | 
				
			||||||
# y1-terminal=false
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# y2-pattern=*youtu.be/*
 | 
					 | 
				
			||||||
# y2-use=mpv
 | 
					 | 
				
			||||||
# y2-terminal=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[desktop-notification]
 | 
					 | 
				
			||||||
# Notification when someone follows you.
 | 
					 | 
				
			||||||
# default=false
 | 
					 | 
				
			||||||
followers=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Notification when someone favorites one of your toots.
 | 
					 | 
				
			||||||
# default=false
 | 
					 | 
				
			||||||
favorite=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Notification when someone mentions you.
 | 
					 | 
				
			||||||
# default=false
 | 
					 | 
				
			||||||
mention=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Notification when someone edits their toot.
 | 
					 | 
				
			||||||
# default=false
 | 
					 | 
				
			||||||
update=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Notification when someone boosts one of your toots.
 | 
					 | 
				
			||||||
# default=false
 | 
					 | 
				
			||||||
boost=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Notification of poll results.
 | 
					 | 
				
			||||||
# default=false
 | 
					 | 
				
			||||||
poll=true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Notification when there is new posts in current timeline.
 | 
					 | 
				
			||||||
# default=false
 | 
					 | 
				
			||||||
posts=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[style]
 | 
					 | 
				
			||||||
# All styles can be represented in their HEX value like #ffffff or with their
 | 
					 | 
				
			||||||
# name, so in this case white. The only special value is "default" which equals
 | 
					 | 
				
			||||||
# to transparent, so it will be the same color as your terminal.
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# You can also use xrdb colors like this xrdb:color1 The program will use colors
 | 
					 | 
				
			||||||
# prefixed with an * first then look for URxvt or XTerm if it can't find any
 | 
					 | 
				
			||||||
# color prefixed with an asterisk. If you don't want tut to guess the prefix you
 | 
					 | 
				
			||||||
# can set the prefix yourself. If the xrdb color can't be found a preset color
 | 
					 | 
				
			||||||
# will be used. You'll have to set theme=none for this to work.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The xrdb prefix used for colors in .Xresources.
 | 
					 | 
				
			||||||
# default=guess
 | 
					 | 
				
			||||||
xrdb-prefix=guess
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# You can use some themes that comes bundled with tut. Check out the themes
 | 
					 | 
				
			||||||
# available on the URL below. If a theme is named "nord.ini" you just write
 | 
					 | 
				
			||||||
# theme=nord
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# https://github.com/RasmusLindroth/tut/tree/master/config/themes
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# You can also create a theme file in your config directory e.g.
 | 
					 | 
				
			||||||
# ~/.config/tut/themes/foo.ini and then set theme=foo.
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# If you want to use your own theme but don't want to create a new file, set
 | 
					 | 
				
			||||||
# theme=none and then you can create your own theme below.
 | 
					 | 
				
			||||||
# default=default
 | 
					 | 
				
			||||||
theme=default
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The background color used on most elements.
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
background=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The text color used on most of the text.
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
text=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The color to display subtle elements or subtle text. Like lines and help text.
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
subtle=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The color for errors or warnings
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
warning-text=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# This color is used to display username.
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
text-special-one=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# This color is used to display username and key hints.
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
text-special-two=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The color of the bar at the top
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
top-bar-background=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The color of the text in the bar at the top.
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
top-bar-text=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The color of the bar at the bottom
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
status-bar-background=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The color of the text in the bar at the bottom.
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
status-bar-text=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The color of the bar at the bottom in view mode.
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
status-bar-view-background=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The color of the text in the bar at the bottom in view mode.
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
status-bar-view-text=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The color of the text in the command bar at the bottom.
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
command-text=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Background of selected list items.
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
list-selected-background=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The text color of selected list items.
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
list-selected-text=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The background color of selected list items that are out of focus.
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
list-selected-inactive-background=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The text color of selected list items that are out of focus.
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
list-selected-inactive-text=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The main color of the text for key hints
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
controls-text=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The highlight color of for key hints
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
controls-highlight=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The background color in dropdowns and autocompletions
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
autocomplete-background=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The text color in dropdowns at autocompletions
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
autocomplete-text=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The background color for selected value in dropdowns and autocompletions
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
autocomplete-selected-background=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The text color for selected value in dropdowns and autocompletions
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
autocomplete-selected-text=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The background color on selected button and the text color of unselected
 | 
					 | 
				
			||||||
# buttons
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
button-color-one=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The text color on selected button and the background color of unselected
 | 
					 | 
				
			||||||
# buttons
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
button-color-two=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The background on named timelines.
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
timeline-name-background=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# The text color on named timelines
 | 
					 | 
				
			||||||
# default=
 | 
					 | 
				
			||||||
timeline-name-text=
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[input]
 | 
					 | 
				
			||||||
# You can edit the keys for tut below.
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# The syntax is a bit weird, but it works. And I'll try to explain it as well as
 | 
					 | 
				
			||||||
# I can.
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# Example:
 | 
					 | 
				
			||||||
# status-favorite="[F]avorite","Un[F]avorite",'f','F'
 | 
					 | 
				
			||||||
# status-delete="[D]elete",'d','D'
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# status-favorite and status-delete differs because favorite can be in two
 | 
					 | 
				
			||||||
# states, so you will have to add two key hints.
 | 
					 | 
				
			||||||
# Most keys will only have on key hint. Look at the default value for reference.
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# Key hints must be in some of the following formats. Remember the quotation
 | 
					 | 
				
			||||||
# marks.
 | 
					 | 
				
			||||||
# "" = empty
 | 
					 | 
				
			||||||
# "[D]elete" = Delete with a highlighted D
 | 
					 | 
				
			||||||
# "Un[F]ollow" = UnFollow with a highlighted F
 | 
					 | 
				
			||||||
# "[Enter]" = Enter where everything is highlighted
 | 
					 | 
				
			||||||
# "Yan[K]" = YanK with a highlighted K
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# After the hint (or hints) you must set the keys. You can do this in two ways,
 | 
					 | 
				
			||||||
# with single quotation marks or double ones.
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# The single ones are for single chars like 'a', 'b', 'c' and double marks are
 | 
					 | 
				
			||||||
# for special keys like "Enter". Remember that they are case sensitive.
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# To find the names of special keys you have to go to the following site and
 | 
					 | 
				
			||||||
# look for "var KeyNames = map[Key]string{"
 | 
					 | 
				
			||||||
# 
 | 
					 | 
				
			||||||
# https://github.com/gdamore/tcell/blob/master/key.go
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Keys for moving down
 | 
					 | 
				
			||||||
# default="",'j','J',"Down"
 | 
					 | 
				
			||||||
global-down="",'j','J',"Down"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Keys for moving up
 | 
					 | 
				
			||||||
# default="",'k','K',"Up"
 | 
					 | 
				
			||||||
global-up="",'k','K',"Up"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# To select items
 | 
					 | 
				
			||||||
# default="","Enter"
 | 
					 | 
				
			||||||
global-enter="","Enter"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# To go back
 | 
					 | 
				
			||||||
# default="[Esc]","Esc"
 | 
					 | 
				
			||||||
global-back="[Backspace]","Backspace2"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# To go back and exit Tut
 | 
					 | 
				
			||||||
# default="[Q]uit",'q','Q'
 | 
					 | 
				
			||||||
global-exit="[Q]uit",'q','Q'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Move to the top
 | 
					 | 
				
			||||||
# default="",'g',"Home"
 | 
					 | 
				
			||||||
main-home="",'g',"Home"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Move to the bottom
 | 
					 | 
				
			||||||
# default="",'G',"End"
 | 
					 | 
				
			||||||
main-end="",'G',"End"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Go to previous feed
 | 
					 | 
				
			||||||
# default="",'h','H',"Left"
 | 
					 | 
				
			||||||
main-prev-feed="",'h','H',"Left"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Go to next feed
 | 
					 | 
				
			||||||
# default="",'l','L',"Right"
 | 
					 | 
				
			||||||
main-next-feed="",'l','L',"Right"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Focus on the previous feed window
 | 
					 | 
				
			||||||
# default="","Backtab"
 | 
					 | 
				
			||||||
main-prev-window="","Backtab"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Focus on the next feed window
 | 
					 | 
				
			||||||
# default="","Tab"
 | 
					 | 
				
			||||||
main-next-window="","Tab"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Focus on the notification list
 | 
					 | 
				
			||||||
# default="[N]otifications",'n','N'
 | 
					 | 
				
			||||||
main-notification-focus="[N]otifications",'n','N'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Compose a new toot
 | 
					 | 
				
			||||||
# default="",'c','C'
 | 
					 | 
				
			||||||
main-compose="",'c','C'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Open avatar
 | 
					 | 
				
			||||||
# default="[A]vatar",'a','A'
 | 
					 | 
				
			||||||
status-avatar="[A]vatar",'a','A'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Boost a toot
 | 
					 | 
				
			||||||
# default="[B]oost","Un[B]oost",'b','B'
 | 
					 | 
				
			||||||
status-boost="[B]oost","Un[B]oost",'b','B'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Edit a toot
 | 
					 | 
				
			||||||
# default="[E]dit",'e','E'
 | 
					 | 
				
			||||||
status-edit="[E]dit",'E'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Delete a toot
 | 
					 | 
				
			||||||
# default="[D]elete",'d','D'
 | 
					 | 
				
			||||||
status-delete="[D]elete",'d','D'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Favorite a toot
 | 
					 | 
				
			||||||
# default="[F]avorite","Un[F]avorite",'f','F'
 | 
					 | 
				
			||||||
status-favorite="[F]avorite","Un[F]avorite",'f','F'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Open toots media files
 | 
					 | 
				
			||||||
# default="[M]edia",'m','M'
 | 
					 | 
				
			||||||
status-media="M[e]dia",'e'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Open links
 | 
					 | 
				
			||||||
# default="[O]pen",'o','O'
 | 
					 | 
				
			||||||
status-links="[O]pen",'o','O'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Open poll
 | 
					 | 
				
			||||||
# default="[P]oll",'p','P'
 | 
					 | 
				
			||||||
status-poll="Pol[l]",'l'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Reply to toot
 | 
					 | 
				
			||||||
# default="[R]eply",'r','R'
 | 
					 | 
				
			||||||
status-reply="[R]eply",'r','R'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Save/bookmark a toot
 | 
					 | 
				
			||||||
# default="[S]ave","Un[S]ave",'s','S'
 | 
					 | 
				
			||||||
status-bookmark="[S]ave","Un[S]ave",'s','S'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# View thread
 | 
					 | 
				
			||||||
# default="[T]hread",'t','T'
 | 
					 | 
				
			||||||
status-thread="[T]hread",'t','T'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Open user profile
 | 
					 | 
				
			||||||
# default="[U]ser",'u','U'
 | 
					 | 
				
			||||||
status-user="[P]rofile",'p','P'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Open the view mode
 | 
					 | 
				
			||||||
# default="[V]iew",'v','V'
 | 
					 | 
				
			||||||
status-view-focus="[V]iew",'v','V'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Yank the url of the toot
 | 
					 | 
				
			||||||
# default="[Y]ank",'y','Y'
 | 
					 | 
				
			||||||
status-yank="[Y]ank",'y','Y'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Show the content in a content warning
 | 
					 | 
				
			||||||
# default="Press [Z] to toggle cw",'z','Z'
 | 
					 | 
				
			||||||
status-toggle-cw="Press [x] to toggle cw",'x','X'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Show the content of a filtered toot
 | 
					 | 
				
			||||||
# default="Press [Z] to view filtered toot",'z','Z'
 | 
					 | 
				
			||||||
status-show-filtered="Press [x] to view filtered toot",'x','X'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# View avatar
 | 
					 | 
				
			||||||
# default="[A]vatar",'a','A'
 | 
					 | 
				
			||||||
user-avatar="[A]vatar",'a','A'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Block the user
 | 
					 | 
				
			||||||
# default="[B]lock","Un[B]lock",'b','B'
 | 
					 | 
				
			||||||
user-block="[B]lock","Un[B]lock",'b','B'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Follow user
 | 
					 | 
				
			||||||
# default="[F]ollow","Un[F]ollow",'f','F'
 | 
					 | 
				
			||||||
user-follow="Follo[w]","UnFollo[w]",'w','W'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Follow user
 | 
					 | 
				
			||||||
# default="Follow [R]equest","Follow [R]equest",'r','R'
 | 
					 | 
				
			||||||
user-follow-request-decide="Follow [R]equest","Follow [R]equest",'r','R'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Mute user
 | 
					 | 
				
			||||||
# default="[M]ute","Un[M]ute",'m','M'
 | 
					 | 
				
			||||||
user-mute="[M]ute","Un[M]ute",'m','M'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Open links
 | 
					 | 
				
			||||||
# default="[O]pen",'o','O'
 | 
					 | 
				
			||||||
user-links="[O]pen",'o','O'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# View user profile
 | 
					 | 
				
			||||||
# default="[U]ser",'u','U'
 | 
					 | 
				
			||||||
user-user="[P]rofile",'p','P'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Open view mode
 | 
					 | 
				
			||||||
# default="[V]iew",'v','V'
 | 
					 | 
				
			||||||
user-view-focus="[V]iew",'v','V'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Yank the user URL
 | 
					 | 
				
			||||||
# default="[Y]ank",'y','Y'
 | 
					 | 
				
			||||||
user-yank="[Y]ank",'y','Y'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Open list
 | 
					 | 
				
			||||||
# default="[O]pen",'o','O'
 | 
					 | 
				
			||||||
list-open-feed="[O]pen",'o','O'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# List all users in a list
 | 
					 | 
				
			||||||
# default="[U]sers",'u','U'
 | 
					 | 
				
			||||||
list-user-list="[U]sers",'u','U'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Add user to list
 | 
					 | 
				
			||||||
# default="[A]dd",'a','A'
 | 
					 | 
				
			||||||
list-user-add="[A]dd",'a','A'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Delete user from list
 | 
					 | 
				
			||||||
# default="[D]elete",'d','D'
 | 
					 | 
				
			||||||
list-user-delete="[D]elete",'d','D'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Open URL
 | 
					 | 
				
			||||||
# default="[O]pen",'o','O'
 | 
					 | 
				
			||||||
link-open="[O]pen",'o','O'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Yank the URL
 | 
					 | 
				
			||||||
# default="[Y]ank",'y','Y'
 | 
					 | 
				
			||||||
link-yank="[Y]ank",'y','Y'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Open tag feed
 | 
					 | 
				
			||||||
# default="[O]pen",'o','O'
 | 
					 | 
				
			||||||
tag-open-feed="[O]pen",'o','O'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Toggle follow on tag
 | 
					 | 
				
			||||||
# default="[F]ollow","Un[F]ollow",'f','F'
 | 
					 | 
				
			||||||
tag-follow="[F]ollow","Un[F]ollow",'f','F'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Edit content warning text on new toot
 | 
					 | 
				
			||||||
# default="[C]W text",'c','C'
 | 
					 | 
				
			||||||
compose-edit-cw="[C]W text",'c','C'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Edit the text on new toot
 | 
					 | 
				
			||||||
# default="[E]dit text",'e','E'
 | 
					 | 
				
			||||||
compose-edit-text="[E]dit text",'e','E'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Include a quote when replying
 | 
					 | 
				
			||||||
# default="[I]nclude quote",'i','I'
 | 
					 | 
				
			||||||
compose-include-quote="[I]nclude quote",'i','I'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Focus on adding media to toot
 | 
					 | 
				
			||||||
# default="[M]edia",'m','M'
 | 
					 | 
				
			||||||
compose-media-focus="[M]edia",'m','M'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Post the new toot
 | 
					 | 
				
			||||||
# default="[P]ost",'p','P'
 | 
					 | 
				
			||||||
compose-post="[P]ost",'p','P'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Toggle content warning on toot
 | 
					 | 
				
			||||||
# default="[T]oggle CW",'t','T'
 | 
					 | 
				
			||||||
compose-toggle-content-warning="[T]oggle CW",'t','T'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Edit the visibility on new toot
 | 
					 | 
				
			||||||
# default="[V]isibility",'v','V'
 | 
					 | 
				
			||||||
compose-visibility="[V]isibility",'v','V'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Edit the language of a toot
 | 
					 | 
				
			||||||
# default="[L]ang",'l','L'
 | 
					 | 
				
			||||||
compose-language="[L]ang",'L'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Switch to creating a poll
 | 
					 | 
				
			||||||
# default="P[O]ll",'o','O'
 | 
					 | 
				
			||||||
compose-poll="Pol[l]",'l'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Delete media file
 | 
					 | 
				
			||||||
# default="[D]elete",'d','D'
 | 
					 | 
				
			||||||
media-delete="[D]elete",'d','D'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Edit the description on media file
 | 
					 | 
				
			||||||
# default="[E]dit desc",'e','E'
 | 
					 | 
				
			||||||
media-edit-desc="[E]dit desc",'e','E'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Add a new media file
 | 
					 | 
				
			||||||
# default="[A]dd",'a','A'
 | 
					 | 
				
			||||||
media-add="[A]dd",'a','A'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Vote on poll
 | 
					 | 
				
			||||||
# default="[V]ote",'v','V'
 | 
					 | 
				
			||||||
vote-vote="[V]ote",'v','V'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Select item to vote on
 | 
					 | 
				
			||||||
# default="[Enter] to select",' ', "Enter"
 | 
					 | 
				
			||||||
vote-select="[Enter] to select",' ', "Enter"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Add a new poll option
 | 
					 | 
				
			||||||
# default="[A]dd",'a','A'
 | 
					 | 
				
			||||||
poll-add="[A]dd",'a','A'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Edit a poll option
 | 
					 | 
				
			||||||
# default="[E]dit",'e','E'
 | 
					 | 
				
			||||||
poll-edit="[E]dit",'e','E'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Delete a poll option
 | 
					 | 
				
			||||||
# default="[D]elete",'d','D'
 | 
					 | 
				
			||||||
poll-delete="[D]elete",'d','D'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Toggle voting on multiple options
 | 
					 | 
				
			||||||
# default="Toggle [M]ultiple",'m','M'
 | 
					 | 
				
			||||||
poll-multi-toggle="Toggle [M]ultiple",'m','M'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Change the expiration of poll
 | 
					 | 
				
			||||||
# default="E[X]pires",'x','X'
 | 
					 | 
				
			||||||
poll-expiration="E[X]pires",'x','X'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Change display name
 | 
					 | 
				
			||||||
# default="[N]ame",'n','N'
 | 
					 | 
				
			||||||
preference-name="[N]ame",'n','N'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Change default visibility of toots
 | 
					 | 
				
			||||||
# default="[V]isibility",'v','V'
 | 
					 | 
				
			||||||
preference-visibility="[V]isibility",'v','V'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Change bio in profile
 | 
					 | 
				
			||||||
# default="[B]io",'b','B'
 | 
					 | 
				
			||||||
preference-bio="[B]io",'b','B'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Save your preferences
 | 
					 | 
				
			||||||
# default="[S]ave",'s','S'
 | 
					 | 
				
			||||||
preference-save="[S]ave",'s','S'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Edit profile fields
 | 
					 | 
				
			||||||
# default="[F]ields",'f','F'
 | 
					 | 
				
			||||||
preference-fields="[F]ields",'f','F'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Add new field
 | 
					 | 
				
			||||||
# default="[A]dd",'a','A'
 | 
					 | 
				
			||||||
preference-fields-add="[A]dd",'a','A'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Edit current field
 | 
					 | 
				
			||||||
# default="[E]dit",'e','E'
 | 
					 | 
				
			||||||
preference-fields-edit="[E]dit",'e','E'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Delete current field
 | 
					 | 
				
			||||||
# default="[D]elete",'d','D'
 | 
					 | 
				
			||||||
preference-fields-delete="[D]elete",'d','D'
 | 
					 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,8 +0,0 @@
 | 
				
			|||||||
# Vifm
 | 
					 | 
				
			||||||
[Vifm - Manual](https://vifm.info/manual.shtml).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Related files
 | 
					 | 
				
			||||||
- [./\*](./)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Additional
 | 
					 | 
				
			||||||
- [How to use bat as a fileviewer · Issue #404 · vifm/vifm](https://github.com/vifm/vifm/issues/404)
 | 
					 | 
				
			||||||
@@ -1,81 +0,0 @@
 | 
				
			|||||||
" You can edit this file by hand.
 | 
					 | 
				
			||||||
" The " character at the beginning of a line comments out the line.
 | 
					 | 
				
			||||||
" Blank lines are ignored.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" The Default color scheme is used for any directory that does not have
 | 
					 | 
				
			||||||
" a specified scheme and for parts of user interface like menus. A
 | 
					 | 
				
			||||||
" color scheme set for a base directory will also
 | 
					 | 
				
			||||||
" be used for the sub directories.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" The standard ncurses colors are:
 | 
					 | 
				
			||||||
" Default = -1 = None, can be used for transparency or default color
 | 
					 | 
				
			||||||
" Black = 0
 | 
					 | 
				
			||||||
" Red = 1
 | 
					 | 
				
			||||||
" Green = 2
 | 
					 | 
				
			||||||
" Yellow = 3
 | 
					 | 
				
			||||||
" Blue = 4
 | 
					 | 
				
			||||||
" Magenta = 5
 | 
					 | 
				
			||||||
" Cyan = 6
 | 
					 | 
				
			||||||
" White = 7
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Light versions of colors are also available (set bold attribute):
 | 
					 | 
				
			||||||
" LightBlack
 | 
					 | 
				
			||||||
" LightRed
 | 
					 | 
				
			||||||
" LightGreen
 | 
					 | 
				
			||||||
" LightYellow
 | 
					 | 
				
			||||||
" LightBlue
 | 
					 | 
				
			||||||
" LightMagenta
 | 
					 | 
				
			||||||
" LightCyan
 | 
					 | 
				
			||||||
" LightWhite
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Available attributes (some of them can be combined):
 | 
					 | 
				
			||||||
" bold
 | 
					 | 
				
			||||||
" underline
 | 
					 | 
				
			||||||
" reverse or inverse
 | 
					 | 
				
			||||||
" standout
 | 
					 | 
				
			||||||
" italic (on unsupported systems becomes reverse)
 | 
					 | 
				
			||||||
" none
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Vifm supports 256 colors you can use color numbers 0-255
 | 
					 | 
				
			||||||
" (requires properly set up terminal: set your TERM environment variable
 | 
					 | 
				
			||||||
" (directly or using resources) to some color terminal name (e.g.
 | 
					 | 
				
			||||||
" xterm-256color) from /usr/lib/terminfo/; you can check current number
 | 
					 | 
				
			||||||
" of colors in your terminal with tput colors command)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" highlight group cterm=attrs ctermfg=foreground_color ctermbg=background_color
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
highlight clear
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
highlight Win cterm=none ctermfg=white ctermbg=black
 | 
					 | 
				
			||||||
highlight Directory cterm=bold ctermfg=cyan ctermbg=default
 | 
					 | 
				
			||||||
highlight Link cterm=bold ctermfg=yellow ctermbg=default
 | 
					 | 
				
			||||||
highlight BrokenLink cterm=bold ctermfg=red ctermbg=default
 | 
					 | 
				
			||||||
highlight Socket cterm=bold ctermfg=magenta ctermbg=default
 | 
					 | 
				
			||||||
highlight Device cterm=bold ctermfg=red ctermbg=default
 | 
					 | 
				
			||||||
highlight Fifo cterm=bold ctermfg=cyan ctermbg=default
 | 
					 | 
				
			||||||
highlight Executable cterm=bold ctermfg=green ctermbg=default
 | 
					 | 
				
			||||||
highlight Selected cterm=bold ctermfg=magenta ctermbg=default
 | 
					 | 
				
			||||||
highlight CurrLine cterm=bold,reverse ctermfg=default ctermbg=default
 | 
					 | 
				
			||||||
highlight TopLine cterm=none ctermfg=black ctermbg=white
 | 
					 | 
				
			||||||
highlight TopLineSel cterm=bold ctermfg=black ctermbg=default
 | 
					 | 
				
			||||||
highlight StatusLine cterm=bold ctermfg=black ctermbg=white
 | 
					 | 
				
			||||||
highlight WildMenu cterm=underline,reverse ctermfg=white ctermbg=black
 | 
					 | 
				
			||||||
highlight CmdLine cterm=none ctermfg=white ctermbg=black
 | 
					 | 
				
			||||||
highlight ErrorMsg cterm=none ctermfg=red ctermbg=black
 | 
					 | 
				
			||||||
highlight Border cterm=none ctermfg=black ctermbg=white
 | 
					 | 
				
			||||||
highlight JobLine cterm=bold,reverse ctermfg=black ctermbg=white
 | 
					 | 
				
			||||||
highlight SuggestBox cterm=bold ctermfg=default ctermbg=default
 | 
					 | 
				
			||||||
highlight CmpMismatch cterm=bold ctermfg=white ctermbg=red
 | 
					 | 
				
			||||||
highlight AuxWin cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
 | 
					 | 
				
			||||||
highlight TabLine cterm=none ctermfg=white ctermbg=black
 | 
					 | 
				
			||||||
highlight TabLineSel cterm=bold,reverse ctermfg=default ctermbg=default
 | 
					 | 
				
			||||||
highlight User1 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
 | 
					 | 
				
			||||||
highlight User2 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
 | 
					 | 
				
			||||||
highlight User3 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
 | 
					 | 
				
			||||||
highlight User4 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
 | 
					 | 
				
			||||||
highlight User5 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
 | 
					 | 
				
			||||||
highlight User6 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
 | 
					 | 
				
			||||||
highlight User7 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
 | 
					 | 
				
			||||||
highlight User8 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
 | 
					 | 
				
			||||||
highlight User9 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
 | 
					 | 
				
			||||||
highlight OtherWin cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
 | 
					 | 
				
			||||||
@@ -1,26 +0,0 @@
 | 
				
			|||||||
" codedark like color scheme for vifm
 | 
					 | 
				
			||||||
" Reset all styles first
 | 
					 | 
				
			||||||
highlight clear
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
highlight Win		cterm=none	ctermfg=188	ctermbg=none
 | 
					 | 
				
			||||||
highlight Border	cterm=none	ctermfg=none	ctermbg=none
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
highlight TopLine	cterm=none	ctermfg=117	ctermbg=235
 | 
					 | 
				
			||||||
highlight TopLineSel	cterm=bold	ctermfg=75	ctermbg=235
 | 
					 | 
				
			||||||
highlight StatusLine	cterm=bold	ctermfg=65	ctermbg=234
 | 
					 | 
				
			||||||
highlight ErrorMsg	cterm=bold	ctermfg=203	ctermbg=235
 | 
					 | 
				
			||||||
highlight JobLine	cterm=bold	ctermfg=75	ctermbg=235
 | 
					 | 
				
			||||||
highlight WildMenu	cterm=bold	ctermfg=188	ctermbg=235
 | 
					 | 
				
			||||||
highlight CmdLine	cterm=none	ctermfg=188	ctermbg=235
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
highlight CurrLine	cterm=none	ctermfg=none	ctermbg=0
 | 
					 | 
				
			||||||
highlight OtherLine	cterm=none	ctermfg=247	ctermbg=237
 | 
					 | 
				
			||||||
highlight Selected	cterm=none	ctermfg=none	ctermbg=235
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
highlight Directory	cterm=none	ctermfg=179	ctermbg=none
 | 
					 | 
				
			||||||
highlight Executable	cterm=none	ctermfg=176	ctermbg=none
 | 
					 | 
				
			||||||
highlight Link		cterm=none	ctermfg=173	ctermbg=none
 | 
					 | 
				
			||||||
highlight BrokenLink	cterm=none	ctermfg=164	ctermbg=none
 | 
					 | 
				
			||||||
highlight Device	cterm=none	ctermfg=187	ctermbg=none
 | 
					 | 
				
			||||||
highlight Fifo		cterm=none	ctermfg=187	ctermbg=none
 | 
					 | 
				
			||||||
highlight Socket	cterm=none	ctermfg=187	ctermbg=none
 | 
					 | 
				
			||||||
@@ -1,27 +0,0 @@
 | 
				
			|||||||
" ph
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
highlight clear
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
highlight Win cterm=none ctermfg=248 ctermbg=234
 | 
					 | 
				
			||||||
highlight Directory cterm=bold ctermfg=033 ctermbg=234
 | 
					 | 
				
			||||||
highlight Link cterm=bold ctermfg=yellow ctermbg=234
 | 
					 | 
				
			||||||
highlight BrokenLink cterm=reverse ctermfg=red ctermbg=default
 | 
					 | 
				
			||||||
highlight Socket cterm=bold ctermfg=125 ctermbg=default
 | 
					 | 
				
			||||||
highlight Device cterm=bold ctermfg=red ctermbg=default
 | 
					 | 
				
			||||||
highlight Fifo cterm=bold ctermfg=cyan ctermbg=default
 | 
					 | 
				
			||||||
highlight Executable cterm=bold ctermfg=166 ctermbg=default
 | 
					 | 
				
			||||||
highlight Selected cterm=bold ctermfg=255 ctermbg=237
 | 
					 | 
				
			||||||
highlight CurrLine cterm=bold ctermfg=default ctermbg=237
 | 
					 | 
				
			||||||
highlight TopLine cterm=bold ctermfg=black ctermbg=235
 | 
					 | 
				
			||||||
highlight TopLineSel cterm=bold ctermfg=black ctermbg=default
 | 
					 | 
				
			||||||
highlight StatusLine cterm=bold ctermfg=black ctermbg=235
 | 
					 | 
				
			||||||
highlight WildMenu cterm=underline,reverse ctermfg=white ctermbg=black
 | 
					 | 
				
			||||||
highlight CmdLine cterm=none ctermfg=white ctermbg=black
 | 
					 | 
				
			||||||
highlight ErrorMsg cterm=none ctermfg=red ctermbg=black
 | 
					 | 
				
			||||||
highlight Border cterm=none ctermfg=black ctermbg=234
 | 
					 | 
				
			||||||
highlight JobLine cterm=bold,reverse ctermfg=black ctermbg=white
 | 
					 | 
				
			||||||
highlight SuggestBox cterm=bold ctermfg=default ctermbg=default
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if $USER == 'root'
 | 
					 | 
				
			||||||
    highlight Border ctermbg=red
 | 
					 | 
				
			||||||
endif
 | 
					 | 
				
			||||||
@@ -1,29 +0,0 @@
 | 
				
			|||||||
" zenburn like color scheme for vifm
 | 
					 | 
				
			||||||
" http://kippura.org/zenburnpage/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Reset all styles first
 | 
					 | 
				
			||||||
highlight clear
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
highlight Border	cterm=none	ctermfg=235	ctermbg=237
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
highlight TopLine	cterm=none	ctermfg=108	ctermbg=235
 | 
					 | 
				
			||||||
highlight TopLineSel	cterm=bold	ctermfg=186	ctermbg=235
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
highlight Win		cterm=none	ctermfg=188	ctermbg=237
 | 
					 | 
				
			||||||
highlight Directory	cterm=none	ctermfg=108	ctermbg=237
 | 
					 | 
				
			||||||
highlight CurrLine	cterm=none	ctermfg=223	ctermbg=235
 | 
					 | 
				
			||||||
highlight OtherLine	cterm=none	ctermfg=247	ctermbg=237
 | 
					 | 
				
			||||||
highlight Selected	cterm=none	ctermfg=116	ctermbg=238
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
highlight JobLine	cterm=bold	ctermfg=116	ctermbg=238
 | 
					 | 
				
			||||||
highlight StatusLine	cterm=bold	ctermfg=144	ctermbg=236
 | 
					 | 
				
			||||||
highlight ErrorMsg	cterm=bold	ctermfg=115	ctermbg=237
 | 
					 | 
				
			||||||
highlight WildMenu	cterm=bold	ctermfg=235	ctermbg=144
 | 
					 | 
				
			||||||
highlight CmdLine	cterm=none	ctermfg=188	ctermbg=237
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
highlight Executable	cterm=none	ctermfg=172	ctermbg=237
 | 
					 | 
				
			||||||
highlight Link		cterm=none	ctermfg=142	ctermbg=237
 | 
					 | 
				
			||||||
highlight BrokenLink	cterm=none	ctermfg=174	ctermbg=237
 | 
					 | 
				
			||||||
highlight Device	cterm=none	ctermfg=228	ctermbg=237
 | 
					 | 
				
			||||||
highlight Fifo		cterm=none	ctermfg=109	ctermbg=237
 | 
					 | 
				
			||||||
highlight Socket	cterm=none	ctermfg=110	ctermbg=237
 | 
					 | 
				
			||||||
@@ -1,857 +0,0 @@
 | 
				
			|||||||
vifm-!!	vifm-help.txt	/*vifm-!!*
 | 
					 | 
				
			||||||
vifm-$	vifm-help.txt	/*vifm-$*
 | 
					 | 
				
			||||||
vifm-$HOME	vifm-help.txt	/*vifm-$HOME*
 | 
					 | 
				
			||||||
vifm-$MYVIFMRC	vifm-help.txt	/*vifm-$MYVIFMRC*
 | 
					 | 
				
			||||||
vifm-$VIFM	vifm-help.txt	/*vifm-$VIFM*
 | 
					 | 
				
			||||||
vifm-$VIFM_FUSE_FILE	vifm-help.txt	/*vifm-$VIFM_FUSE_FILE*
 | 
					 | 
				
			||||||
vifm-%	vifm-help.txt	/*vifm-%*
 | 
					 | 
				
			||||||
vifm-%C	vifm-help.txt	/*vifm-%C*
 | 
					 | 
				
			||||||
vifm-%D	vifm-help.txt	/*vifm-%D*
 | 
					 | 
				
			||||||
vifm-%F	vifm-help.txt	/*vifm-%F*
 | 
					 | 
				
			||||||
vifm-%IU	vifm-help.txt	/*vifm-%IU*
 | 
					 | 
				
			||||||
vifm-%Iu	vifm-help.txt	/*vifm-%Iu*
 | 
					 | 
				
			||||||
vifm-%L	vifm-help.txt	/*vifm-%L*
 | 
					 | 
				
			||||||
vifm-%M	vifm-help.txt	/*vifm-%M*
 | 
					 | 
				
			||||||
vifm-%N	vifm-help.txt	/*vifm-%N*
 | 
					 | 
				
			||||||
vifm-%Pl	vifm-help.txt	/*vifm-%Pl*
 | 
					 | 
				
			||||||
vifm-%Pz	vifm-help.txt	/*vifm-%Pz*
 | 
					 | 
				
			||||||
vifm-%S	vifm-help.txt	/*vifm-%S*
 | 
					 | 
				
			||||||
vifm-%U	vifm-help.txt	/*vifm-%U*
 | 
					 | 
				
			||||||
vifm-%a	vifm-help.txt	/*vifm-%a*
 | 
					 | 
				
			||||||
vifm-%b	vifm-help.txt	/*vifm-%b*
 | 
					 | 
				
			||||||
vifm-%c	vifm-help.txt	/*vifm-%c*
 | 
					 | 
				
			||||||
vifm-%d	vifm-help.txt	/*vifm-%d*
 | 
					 | 
				
			||||||
vifm-%f	vifm-help.txt	/*vifm-%f*
 | 
					 | 
				
			||||||
vifm-%i	vifm-help.txt	/*vifm-%i*
 | 
					 | 
				
			||||||
vifm-%l	vifm-help.txt	/*vifm-%l*
 | 
					 | 
				
			||||||
vifm-%m	vifm-help.txt	/*vifm-%m*
 | 
					 | 
				
			||||||
vifm-%n	vifm-help.txt	/*vifm-%n*
 | 
					 | 
				
			||||||
vifm-%pc	vifm-help.txt	/*vifm-%pc*
 | 
					 | 
				
			||||||
vifm-%pd	vifm-help.txt	/*vifm-%pd*
 | 
					 | 
				
			||||||
vifm-%ph	vifm-help.txt	/*vifm-%ph*
 | 
					 | 
				
			||||||
vifm-%pu	vifm-help.txt	/*vifm-%pu*
 | 
					 | 
				
			||||||
vifm-%pw	vifm-help.txt	/*vifm-%pw*
 | 
					 | 
				
			||||||
vifm-%px	vifm-help.txt	/*vifm-%px*
 | 
					 | 
				
			||||||
vifm-%py	vifm-help.txt	/*vifm-%py*
 | 
					 | 
				
			||||||
vifm-%q	vifm-help.txt	/*vifm-%q*
 | 
					 | 
				
			||||||
vifm-%r	vifm-help.txt	/*vifm-%r*
 | 
					 | 
				
			||||||
vifm-%s	vifm-help.txt	/*vifm-%s*
 | 
					 | 
				
			||||||
vifm-%u	vifm-help.txt	/*vifm-%u*
 | 
					 | 
				
			||||||
vifm-%v	vifm-help.txt	/*vifm-%v*
 | 
					 | 
				
			||||||
vifm-'	vifm-help.txt	/*vifm-'*
 | 
					 | 
				
			||||||
vifm-'aproposprg'	vifm-help.txt	/*vifm-'aproposprg'*
 | 
					 | 
				
			||||||
vifm-'autocd'	vifm-help.txt	/*vifm-'autocd'*
 | 
					 | 
				
			||||||
vifm-'autochpos'	vifm-help.txt	/*vifm-'autochpos'*
 | 
					 | 
				
			||||||
vifm-'caseoptions'	vifm-help.txt	/*vifm-'caseoptions'*
 | 
					 | 
				
			||||||
vifm-'cd'	vifm-help.txt	/*vifm-'cd'*
 | 
					 | 
				
			||||||
vifm-'cdpath'	vifm-help.txt	/*vifm-'cdpath'*
 | 
					 | 
				
			||||||
vifm-'cf'	vifm-help.txt	/*vifm-'cf'*
 | 
					 | 
				
			||||||
vifm-'chaselinks'	vifm-help.txt	/*vifm-'chaselinks'*
 | 
					 | 
				
			||||||
vifm-'classify'	vifm-help.txt	/*vifm-'classify'*
 | 
					 | 
				
			||||||
vifm-'co'	vifm-help.txt	/*vifm-'co'*
 | 
					 | 
				
			||||||
vifm-'columns'	vifm-help.txt	/*vifm-'columns'*
 | 
					 | 
				
			||||||
vifm-'confirm'	vifm-help.txt	/*vifm-'confirm'*
 | 
					 | 
				
			||||||
vifm-'cpo'	vifm-help.txt	/*vifm-'cpo'*
 | 
					 | 
				
			||||||
vifm-'cpoptions'	vifm-help.txt	/*vifm-'cpoptions'*
 | 
					 | 
				
			||||||
vifm-'cvoptions'	vifm-help.txt	/*vifm-'cvoptions'*
 | 
					 | 
				
			||||||
vifm-'deleteprg'	vifm-help.txt	/*vifm-'deleteprg'*
 | 
					 | 
				
			||||||
vifm-'dirsize'	vifm-help.txt	/*vifm-'dirsize'*
 | 
					 | 
				
			||||||
vifm-'dotdirs'	vifm-help.txt	/*vifm-'dotdirs'*
 | 
					 | 
				
			||||||
vifm-'dotfiles'	vifm-help.txt	/*vifm-'dotfiles'*
 | 
					 | 
				
			||||||
vifm-'fastrun'	vifm-help.txt	/*vifm-'fastrun'*
 | 
					 | 
				
			||||||
vifm-'fcs'	vifm-help.txt	/*vifm-'fcs'*
 | 
					 | 
				
			||||||
vifm-'fillchars'	vifm-help.txt	/*vifm-'fillchars'*
 | 
					 | 
				
			||||||
vifm-'findprg'	vifm-help.txt	/*vifm-'findprg'*
 | 
					 | 
				
			||||||
vifm-'followlinks'	vifm-help.txt	/*vifm-'followlinks'*
 | 
					 | 
				
			||||||
vifm-'fusehome'	vifm-help.txt	/*vifm-'fusehome'*
 | 
					 | 
				
			||||||
vifm-'gd'	vifm-help.txt	/*vifm-'gd'*
 | 
					 | 
				
			||||||
vifm-'gdefault'	vifm-help.txt	/*vifm-'gdefault'*
 | 
					 | 
				
			||||||
vifm-'grepprg'	vifm-help.txt	/*vifm-'grepprg'*
 | 
					 | 
				
			||||||
vifm-'hi'	vifm-help.txt	/*vifm-'hi'*
 | 
					 | 
				
			||||||
vifm-'histcursor'	vifm-help.txt	/*vifm-'histcursor'*
 | 
					 | 
				
			||||||
vifm-'history'	vifm-help.txt	/*vifm-'history'*
 | 
					 | 
				
			||||||
vifm-'hls'	vifm-help.txt	/*vifm-'hls'*
 | 
					 | 
				
			||||||
vifm-'hlsearch'	vifm-help.txt	/*vifm-'hlsearch'*
 | 
					 | 
				
			||||||
vifm-'ic'	vifm-help.txt	/*vifm-'ic'*
 | 
					 | 
				
			||||||
vifm-'iec'	vifm-help.txt	/*vifm-'iec'*
 | 
					 | 
				
			||||||
vifm-'ignorecase'	vifm-help.txt	/*vifm-'ignorecase'*
 | 
					 | 
				
			||||||
vifm-'incsearch'	vifm-help.txt	/*vifm-'incsearch'*
 | 
					 | 
				
			||||||
vifm-'iooptions'	vifm-help.txt	/*vifm-'iooptions'*
 | 
					 | 
				
			||||||
vifm-'is'	vifm-help.txt	/*vifm-'is'*
 | 
					 | 
				
			||||||
vifm-'laststatus'	vifm-help.txt	/*vifm-'laststatus'*
 | 
					 | 
				
			||||||
vifm-'lines'	vifm-help.txt	/*vifm-'lines'*
 | 
					 | 
				
			||||||
vifm-'locateprg'	vifm-help.txt	/*vifm-'locateprg'*
 | 
					 | 
				
			||||||
vifm-'ls'	vifm-help.txt	/*vifm-'ls'*
 | 
					 | 
				
			||||||
vifm-'lsoptions'	vifm-help.txt	/*vifm-'lsoptions'*
 | 
					 | 
				
			||||||
vifm-'lsview'	vifm-help.txt	/*vifm-'lsview'*
 | 
					 | 
				
			||||||
vifm-'mediaprg'	vifm-help.txt	/*vifm-'mediaprg'*
 | 
					 | 
				
			||||||
vifm-'milleroptions'	vifm-help.txt	/*vifm-'milleroptions'*
 | 
					 | 
				
			||||||
vifm-'millerview'	vifm-help.txt	/*vifm-'millerview'*
 | 
					 | 
				
			||||||
vifm-'mintimeoutlen'	vifm-help.txt	/*vifm-'mintimeoutlen'*
 | 
					 | 
				
			||||||
vifm-'nu'	vifm-help.txt	/*vifm-'nu'*
 | 
					 | 
				
			||||||
vifm-'number'	vifm-help.txt	/*vifm-'number'*
 | 
					 | 
				
			||||||
vifm-'numberwidth'	vifm-help.txt	/*vifm-'numberwidth'*
 | 
					 | 
				
			||||||
vifm-'nuw'	vifm-help.txt	/*vifm-'nuw'*
 | 
					 | 
				
			||||||
vifm-'previewoptions'	vifm-help.txt	/*vifm-'previewoptions'*
 | 
					 | 
				
			||||||
vifm-'previewprg'	vifm-help.txt	/*vifm-'previewprg'*
 | 
					 | 
				
			||||||
vifm-'quickview'	vifm-help.txt	/*vifm-'quickview'*
 | 
					 | 
				
			||||||
vifm-'relativenumber'	vifm-help.txt	/*vifm-'relativenumber'*
 | 
					 | 
				
			||||||
vifm-'rnu'	vifm-help.txt	/*vifm-'rnu'*
 | 
					 | 
				
			||||||
vifm-'ruf'	vifm-help.txt	/*vifm-'ruf'*
 | 
					 | 
				
			||||||
vifm-'rulerformat'	vifm-help.txt	/*vifm-'rulerformat'*
 | 
					 | 
				
			||||||
vifm-'runexec'	vifm-help.txt	/*vifm-'runexec'*
 | 
					 | 
				
			||||||
vifm-'scb'	vifm-help.txt	/*vifm-'scb'*
 | 
					 | 
				
			||||||
vifm-'scrollbind'	vifm-help.txt	/*vifm-'scrollbind'*
 | 
					 | 
				
			||||||
vifm-'scrolloff'	vifm-help.txt	/*vifm-'scrolloff'*
 | 
					 | 
				
			||||||
vifm-'scs'	vifm-help.txt	/*vifm-'scs'*
 | 
					 | 
				
			||||||
vifm-'sessionoptions'	vifm-help.txt	/*vifm-'sessionoptions'*
 | 
					 | 
				
			||||||
vifm-'sh'	vifm-help.txt	/*vifm-'sh'*
 | 
					 | 
				
			||||||
vifm-'shcf'	vifm-help.txt	/*vifm-'shcf'*
 | 
					 | 
				
			||||||
vifm-'shell'	vifm-help.txt	/*vifm-'shell'*
 | 
					 | 
				
			||||||
vifm-'shellcmdflag'	vifm-help.txt	/*vifm-'shellcmdflag'*
 | 
					 | 
				
			||||||
vifm-'shm'	vifm-help.txt	/*vifm-'shm'*
 | 
					 | 
				
			||||||
vifm-'shortmess'	vifm-help.txt	/*vifm-'shortmess'*
 | 
					 | 
				
			||||||
vifm-'showtabline'	vifm-help.txt	/*vifm-'showtabline'*
 | 
					 | 
				
			||||||
vifm-'sizefmt'	vifm-help.txt	/*vifm-'sizefmt'*
 | 
					 | 
				
			||||||
vifm-'slowfs'	vifm-help.txt	/*vifm-'slowfs'*
 | 
					 | 
				
			||||||
vifm-'smartcase'	vifm-help.txt	/*vifm-'smartcase'*
 | 
					 | 
				
			||||||
vifm-'so'	vifm-help.txt	/*vifm-'so'*
 | 
					 | 
				
			||||||
vifm-'sort'	vifm-help.txt	/*vifm-'sort'*
 | 
					 | 
				
			||||||
vifm-'sortgroups'	vifm-help.txt	/*vifm-'sortgroups'*
 | 
					 | 
				
			||||||
vifm-'sortnumbers'	vifm-help.txt	/*vifm-'sortnumbers'*
 | 
					 | 
				
			||||||
vifm-'sortorder'	vifm-help.txt	/*vifm-'sortorder'*
 | 
					 | 
				
			||||||
vifm-'ssop'	vifm-help.txt	/*vifm-'ssop'*
 | 
					 | 
				
			||||||
vifm-'stal'	vifm-help.txt	/*vifm-'stal'*
 | 
					 | 
				
			||||||
vifm-'statusline'	vifm-help.txt	/*vifm-'statusline'*
 | 
					 | 
				
			||||||
vifm-'stl'	vifm-help.txt	/*vifm-'stl'*
 | 
					 | 
				
			||||||
vifm-'suggestoptions'	vifm-help.txt	/*vifm-'suggestoptions'*
 | 
					 | 
				
			||||||
vifm-'syncregs'	vifm-help.txt	/*vifm-'syncregs'*
 | 
					 | 
				
			||||||
vifm-'syscalls'	vifm-help.txt	/*vifm-'syscalls'*
 | 
					 | 
				
			||||||
vifm-'tablabel'	vifm-help.txt	/*vifm-'tablabel'*
 | 
					 | 
				
			||||||
vifm-'tabprefix'	vifm-help.txt	/*vifm-'tabprefix'*
 | 
					 | 
				
			||||||
vifm-'tabscope'	vifm-help.txt	/*vifm-'tabscope'*
 | 
					 | 
				
			||||||
vifm-'tabstop'	vifm-help.txt	/*vifm-'tabstop'*
 | 
					 | 
				
			||||||
vifm-'tabsuffix'	vifm-help.txt	/*vifm-'tabsuffix'*
 | 
					 | 
				
			||||||
vifm-'timefmt'	vifm-help.txt	/*vifm-'timefmt'*
 | 
					 | 
				
			||||||
vifm-'timeoutlen'	vifm-help.txt	/*vifm-'timeoutlen'*
 | 
					 | 
				
			||||||
vifm-'title'	vifm-help.txt	/*vifm-'title'*
 | 
					 | 
				
			||||||
vifm-'tm'	vifm-help.txt	/*vifm-'tm'*
 | 
					 | 
				
			||||||
vifm-'to'	vifm-help.txt	/*vifm-'to'*
 | 
					 | 
				
			||||||
vifm-'trash'	vifm-help.txt	/*vifm-'trash'*
 | 
					 | 
				
			||||||
vifm-'trashdir'	vifm-help.txt	/*vifm-'trashdir'*
 | 
					 | 
				
			||||||
vifm-'ts'	vifm-help.txt	/*vifm-'ts'*
 | 
					 | 
				
			||||||
vifm-'tuioptions'	vifm-help.txt	/*vifm-'tuioptions'*
 | 
					 | 
				
			||||||
vifm-'ul'	vifm-help.txt	/*vifm-'ul'*
 | 
					 | 
				
			||||||
vifm-'undolevels'	vifm-help.txt	/*vifm-'undolevels'*
 | 
					 | 
				
			||||||
vifm-'vicmd'	vifm-help.txt	/*vifm-'vicmd'*
 | 
					 | 
				
			||||||
vifm-'viewcolumns'	vifm-help.txt	/*vifm-'viewcolumns'*
 | 
					 | 
				
			||||||
vifm-'vifminfo'	vifm-help.txt	/*vifm-'vifminfo'*
 | 
					 | 
				
			||||||
vifm-'vimhelp'	vifm-help.txt	/*vifm-'vimhelp'*
 | 
					 | 
				
			||||||
vifm-'vixcmd'	vifm-help.txt	/*vifm-'vixcmd'*
 | 
					 | 
				
			||||||
vifm-'wildmenu'	vifm-help.txt	/*vifm-'wildmenu'*
 | 
					 | 
				
			||||||
vifm-'wildstyle'	vifm-help.txt	/*vifm-'wildstyle'*
 | 
					 | 
				
			||||||
vifm-'wmnu'	vifm-help.txt	/*vifm-'wmnu'*
 | 
					 | 
				
			||||||
vifm-'wordchars'	vifm-help.txt	/*vifm-'wordchars'*
 | 
					 | 
				
			||||||
vifm-'wrap'	vifm-help.txt	/*vifm-'wrap'*
 | 
					 | 
				
			||||||
vifm-'wrapscan'	vifm-help.txt	/*vifm-'wrapscan'*
 | 
					 | 
				
			||||||
vifm-'ws'	vifm-help.txt	/*vifm-'ws'*
 | 
					 | 
				
			||||||
vifm-(	vifm-help.txt	/*vifm-(*
 | 
					 | 
				
			||||||
vifm-)	vifm-help.txt	/*vifm-)*
 | 
					 | 
				
			||||||
vifm-,	vifm-help.txt	/*vifm-,*
 | 
					 | 
				
			||||||
vifm--+c	vifm-help.txt	/*vifm--+c*
 | 
					 | 
				
			||||||
vifm---choose-dir	vifm-help.txt	/*vifm---choose-dir*
 | 
					 | 
				
			||||||
vifm---choose-files	vifm-help.txt	/*vifm---choose-files*
 | 
					 | 
				
			||||||
vifm---delimiter	vifm-help.txt	/*vifm---delimiter*
 | 
					 | 
				
			||||||
vifm---help	vifm-help.txt	/*vifm---help*
 | 
					 | 
				
			||||||
vifm---logging	vifm-help.txt	/*vifm---logging*
 | 
					 | 
				
			||||||
vifm---no-configs	vifm-help.txt	/*vifm---no-configs*
 | 
					 | 
				
			||||||
vifm---on-choose	vifm-help.txt	/*vifm---on-choose*
 | 
					 | 
				
			||||||
vifm---remote	vifm-help.txt	/*vifm---remote*
 | 
					 | 
				
			||||||
vifm---remote-expr	vifm-help.txt	/*vifm---remote-expr*
 | 
					 | 
				
			||||||
vifm---select	vifm-help.txt	/*vifm---select*
 | 
					 | 
				
			||||||
vifm---server-list	vifm-help.txt	/*vifm---server-list*
 | 
					 | 
				
			||||||
vifm---server-name	vifm-help.txt	/*vifm---server-name*
 | 
					 | 
				
			||||||
vifm---version	vifm-help.txt	/*vifm---version*
 | 
					 | 
				
			||||||
vifm--c	vifm-help.txt	/*vifm--c*
 | 
					 | 
				
			||||||
vifm--f	vifm-help.txt	/*vifm--f*
 | 
					 | 
				
			||||||
vifm--h	vifm-help.txt	/*vifm--h*
 | 
					 | 
				
			||||||
vifm--v	vifm-help.txt	/*vifm--v*
 | 
					 | 
				
			||||||
vifm-.	vifm-help.txt	/*vifm-.*
 | 
					 | 
				
			||||||
vifm-/	vifm-help.txt	/*vifm-\/*
 | 
					 | 
				
			||||||
vifm-0	vifm-help.txt	/*vifm-0*
 | 
					 | 
				
			||||||
vifm-:	vifm-help.txt	/*vifm-:*
 | 
					 | 
				
			||||||
vifm-:!	vifm-help.txt	/*vifm-:!*
 | 
					 | 
				
			||||||
vifm-:!!	vifm-help.txt	/*vifm-:!!*
 | 
					 | 
				
			||||||
vifm-:alink	vifm-help.txt	/*vifm-:alink*
 | 
					 | 
				
			||||||
vifm-:apropos	vifm-help.txt	/*vifm-:apropos*
 | 
					 | 
				
			||||||
vifm-:au	vifm-help.txt	/*vifm-:au*
 | 
					 | 
				
			||||||
vifm-:autocmd	vifm-help.txt	/*vifm-:autocmd*
 | 
					 | 
				
			||||||
vifm-:bar	vifm-help.txt	/*vifm-:bar*
 | 
					 | 
				
			||||||
vifm-:bmark	vifm-help.txt	/*vifm-:bmark*
 | 
					 | 
				
			||||||
vifm-:bmarks	vifm-help.txt	/*vifm-:bmarks*
 | 
					 | 
				
			||||||
vifm-:bmgo	vifm-help.txt	/*vifm-:bmgo*
 | 
					 | 
				
			||||||
vifm-:c	vifm-help.txt	/*vifm-:c*
 | 
					 | 
				
			||||||
vifm-:ca	vifm-help.txt	/*vifm-:ca*
 | 
					 | 
				
			||||||
vifm-:cabbrev	vifm-help.txt	/*vifm-:cabbrev*
 | 
					 | 
				
			||||||
vifm-:cd	vifm-help.txt	/*vifm-:cd*
 | 
					 | 
				
			||||||
vifm-:cds	vifm-help.txt	/*vifm-:cds*
 | 
					 | 
				
			||||||
vifm-:change	vifm-help.txt	/*vifm-:change*
 | 
					 | 
				
			||||||
vifm-:chmod	vifm-help.txt	/*vifm-:chmod*
 | 
					 | 
				
			||||||
vifm-:chown	vifm-help.txt	/*vifm-:chown*
 | 
					 | 
				
			||||||
vifm-:clone	vifm-help.txt	/*vifm-:clone*
 | 
					 | 
				
			||||||
vifm-:cm	vifm-help.txt	/*vifm-:cm*
 | 
					 | 
				
			||||||
vifm-:cmap	vifm-help.txt	/*vifm-:cmap*
 | 
					 | 
				
			||||||
vifm-:cno	vifm-help.txt	/*vifm-:cno*
 | 
					 | 
				
			||||||
vifm-:cnorea	vifm-help.txt	/*vifm-:cnorea*
 | 
					 | 
				
			||||||
vifm-:cnoreabbrev	vifm-help.txt	/*vifm-:cnoreabbrev*
 | 
					 | 
				
			||||||
vifm-:cnoremap	vifm-help.txt	/*vifm-:cnoremap*
 | 
					 | 
				
			||||||
vifm-:co	vifm-help.txt	/*vifm-:co*
 | 
					 | 
				
			||||||
vifm-:colo	vifm-help.txt	/*vifm-:colo*
 | 
					 | 
				
			||||||
vifm-:colorscheme	vifm-help.txt	/*vifm-:colorscheme*
 | 
					 | 
				
			||||||
vifm-:com	vifm-help.txt	/*vifm-:com*
 | 
					 | 
				
			||||||
vifm-:comc	vifm-help.txt	/*vifm-:comc*
 | 
					 | 
				
			||||||
vifm-:comclear	vifm-help.txt	/*vifm-:comclear*
 | 
					 | 
				
			||||||
vifm-:command	vifm-help.txt	/*vifm-:command*
 | 
					 | 
				
			||||||
vifm-:command-params	vifm-help.txt	/*vifm-:command-params*
 | 
					 | 
				
			||||||
vifm-:compare	vifm-help.txt	/*vifm-:compare*
 | 
					 | 
				
			||||||
vifm-:cope	vifm-help.txt	/*vifm-:cope*
 | 
					 | 
				
			||||||
vifm-:copen	vifm-help.txt	/*vifm-:copen*
 | 
					 | 
				
			||||||
vifm-:copy	vifm-help.txt	/*vifm-:copy*
 | 
					 | 
				
			||||||
vifm-:cq	vifm-help.txt	/*vifm-:cq*
 | 
					 | 
				
			||||||
vifm-:cquit	vifm-help.txt	/*vifm-:cquit*
 | 
					 | 
				
			||||||
vifm-:cu	vifm-help.txt	/*vifm-:cu*
 | 
					 | 
				
			||||||
vifm-:cuna	vifm-help.txt	/*vifm-:cuna*
 | 
					 | 
				
			||||||
vifm-:cunabbrev	vifm-help.txt	/*vifm-:cunabbrev*
 | 
					 | 
				
			||||||
vifm-:cunmap	vifm-help.txt	/*vifm-:cunmap*
 | 
					 | 
				
			||||||
vifm-:d	vifm-help.txt	/*vifm-:d*
 | 
					 | 
				
			||||||
vifm-:delbmarks	vifm-help.txt	/*vifm-:delbmarks*
 | 
					 | 
				
			||||||
vifm-:delc	vifm-help.txt	/*vifm-:delc*
 | 
					 | 
				
			||||||
vifm-:delcommand	vifm-help.txt	/*vifm-:delcommand*
 | 
					 | 
				
			||||||
vifm-:delete	vifm-help.txt	/*vifm-:delete*
 | 
					 | 
				
			||||||
vifm-:delm	vifm-help.txt	/*vifm-:delm*
 | 
					 | 
				
			||||||
vifm-:delmarks	vifm-help.txt	/*vifm-:delmarks*
 | 
					 | 
				
			||||||
vifm-:delsession	vifm-help.txt	/*vifm-:delsession*
 | 
					 | 
				
			||||||
vifm-:di	vifm-help.txt	/*vifm-:di*
 | 
					 | 
				
			||||||
vifm-:dirs	vifm-help.txt	/*vifm-:dirs*
 | 
					 | 
				
			||||||
vifm-:display	vifm-help.txt	/*vifm-:display*
 | 
					 | 
				
			||||||
vifm-:dm	vifm-help.txt	/*vifm-:dm*
 | 
					 | 
				
			||||||
vifm-:dmap	vifm-help.txt	/*vifm-:dmap*
 | 
					 | 
				
			||||||
vifm-:dn	vifm-help.txt	/*vifm-:dn*
 | 
					 | 
				
			||||||
vifm-:dnoremap	vifm-help.txt	/*vifm-:dnoremap*
 | 
					 | 
				
			||||||
vifm-:du	vifm-help.txt	/*vifm-:du*
 | 
					 | 
				
			||||||
vifm-:dunmap	vifm-help.txt	/*vifm-:dunmap*
 | 
					 | 
				
			||||||
vifm-:e	vifm-help.txt	/*vifm-:e*
 | 
					 | 
				
			||||||
vifm-:ec	vifm-help.txt	/*vifm-:ec*
 | 
					 | 
				
			||||||
vifm-:echo	vifm-help.txt	/*vifm-:echo*
 | 
					 | 
				
			||||||
vifm-:edit	vifm-help.txt	/*vifm-:edit*
 | 
					 | 
				
			||||||
vifm-:el	vifm-help.txt	/*vifm-:el*
 | 
					 | 
				
			||||||
vifm-:else	vifm-help.txt	/*vifm-:else*
 | 
					 | 
				
			||||||
vifm-:elsei	vifm-help.txt	/*vifm-:elsei*
 | 
					 | 
				
			||||||
vifm-:elseif	vifm-help.txt	/*vifm-:elseif*
 | 
					 | 
				
			||||||
vifm-:empty	vifm-help.txt	/*vifm-:empty*
 | 
					 | 
				
			||||||
vifm-:en	vifm-help.txt	/*vifm-:en*
 | 
					 | 
				
			||||||
vifm-:endif	vifm-help.txt	/*vifm-:endif*
 | 
					 | 
				
			||||||
vifm-:exe	vifm-help.txt	/*vifm-:exe*
 | 
					 | 
				
			||||||
vifm-:execute	vifm-help.txt	/*vifm-:execute*
 | 
					 | 
				
			||||||
vifm-:exi	vifm-help.txt	/*vifm-:exi*
 | 
					 | 
				
			||||||
vifm-:exit	vifm-help.txt	/*vifm-:exit*
 | 
					 | 
				
			||||||
vifm-:f	vifm-help.txt	/*vifm-:f*
 | 
					 | 
				
			||||||
vifm-:file	vifm-help.txt	/*vifm-:file*
 | 
					 | 
				
			||||||
vifm-:filet	vifm-help.txt	/*vifm-:filet*
 | 
					 | 
				
			||||||
vifm-:filetype	vifm-help.txt	/*vifm-:filetype*
 | 
					 | 
				
			||||||
vifm-:filev	vifm-help.txt	/*vifm-:filev*
 | 
					 | 
				
			||||||
vifm-:fileviewer	vifm-help.txt	/*vifm-:fileviewer*
 | 
					 | 
				
			||||||
vifm-:filex	vifm-help.txt	/*vifm-:filex*
 | 
					 | 
				
			||||||
vifm-:filextype	vifm-help.txt	/*vifm-:filextype*
 | 
					 | 
				
			||||||
vifm-:filter	vifm-help.txt	/*vifm-:filter*
 | 
					 | 
				
			||||||
vifm-:fin	vifm-help.txt	/*vifm-:fin*
 | 
					 | 
				
			||||||
vifm-:find	vifm-help.txt	/*vifm-:find*
 | 
					 | 
				
			||||||
vifm-:fini	vifm-help.txt	/*vifm-:fini*
 | 
					 | 
				
			||||||
vifm-:finish	vifm-help.txt	/*vifm-:finish*
 | 
					 | 
				
			||||||
vifm-:go	vifm-help.txt	/*vifm-:go*
 | 
					 | 
				
			||||||
vifm-:goto	vifm-help.txt	/*vifm-:goto*
 | 
					 | 
				
			||||||
vifm-:gr	vifm-help.txt	/*vifm-:gr*
 | 
					 | 
				
			||||||
vifm-:grep	vifm-help.txt	/*vifm-:grep*
 | 
					 | 
				
			||||||
vifm-:h	vifm-help.txt	/*vifm-:h*
 | 
					 | 
				
			||||||
vifm-:help	vifm-help.txt	/*vifm-:help*
 | 
					 | 
				
			||||||
vifm-:hi	vifm-help.txt	/*vifm-:hi*
 | 
					 | 
				
			||||||
vifm-:hideui	vifm-help.txt	/*vifm-:hideui*
 | 
					 | 
				
			||||||
vifm-:highlight	vifm-help.txt	/*vifm-:highlight*
 | 
					 | 
				
			||||||
vifm-:his	vifm-help.txt	/*vifm-:his*
 | 
					 | 
				
			||||||
vifm-:histnext	vifm-help.txt	/*vifm-:histnext*
 | 
					 | 
				
			||||||
vifm-:history	vifm-help.txt	/*vifm-:history*
 | 
					 | 
				
			||||||
vifm-:histprev	vifm-help.txt	/*vifm-:histprev*
 | 
					 | 
				
			||||||
vifm-:if	vifm-help.txt	/*vifm-:if*
 | 
					 | 
				
			||||||
vifm-:invert	vifm-help.txt	/*vifm-:invert*
 | 
					 | 
				
			||||||
vifm-:jobs	vifm-help.txt	/*vifm-:jobs*
 | 
					 | 
				
			||||||
vifm-:keepsel	vifm-help.txt	/*vifm-:keepsel*
 | 
					 | 
				
			||||||
vifm-:let	vifm-help.txt	/*vifm-:let*
 | 
					 | 
				
			||||||
vifm-:locate	vifm-help.txt	/*vifm-:locate*
 | 
					 | 
				
			||||||
vifm-:ls	vifm-help.txt	/*vifm-:ls*
 | 
					 | 
				
			||||||
vifm-:lstrash	vifm-help.txt	/*vifm-:lstrash*
 | 
					 | 
				
			||||||
vifm-:m	vifm-help.txt	/*vifm-:m*
 | 
					 | 
				
			||||||
vifm-:ma	vifm-help.txt	/*vifm-:ma*
 | 
					 | 
				
			||||||
vifm-:map	vifm-help.txt	/*vifm-:map*
 | 
					 | 
				
			||||||
vifm-:mark	vifm-help.txt	/*vifm-:mark*
 | 
					 | 
				
			||||||
vifm-:marks	vifm-help.txt	/*vifm-:marks*
 | 
					 | 
				
			||||||
vifm-:media	vifm-help.txt	/*vifm-:media*
 | 
					 | 
				
			||||||
vifm-:mes	vifm-help.txt	/*vifm-:mes*
 | 
					 | 
				
			||||||
vifm-:messages	vifm-help.txt	/*vifm-:messages*
 | 
					 | 
				
			||||||
vifm-:mkdir	vifm-help.txt	/*vifm-:mkdir*
 | 
					 | 
				
			||||||
vifm-:mm	vifm-help.txt	/*vifm-:mm*
 | 
					 | 
				
			||||||
vifm-:mmap	vifm-help.txt	/*vifm-:mmap*
 | 
					 | 
				
			||||||
vifm-:mn	vifm-help.txt	/*vifm-:mn*
 | 
					 | 
				
			||||||
vifm-:mnoremap	vifm-help.txt	/*vifm-:mnoremap*
 | 
					 | 
				
			||||||
vifm-:move	vifm-help.txt	/*vifm-:move*
 | 
					 | 
				
			||||||
vifm-:mu	vifm-help.txt	/*vifm-:mu*
 | 
					 | 
				
			||||||
vifm-:munmap	vifm-help.txt	/*vifm-:munmap*
 | 
					 | 
				
			||||||
vifm-:nm	vifm-help.txt	/*vifm-:nm*
 | 
					 | 
				
			||||||
vifm-:nmap	vifm-help.txt	/*vifm-:nmap*
 | 
					 | 
				
			||||||
vifm-:nn	vifm-help.txt	/*vifm-:nn*
 | 
					 | 
				
			||||||
vifm-:nnoremap	vifm-help.txt	/*vifm-:nnoremap*
 | 
					 | 
				
			||||||
vifm-:no	vifm-help.txt	/*vifm-:no*
 | 
					 | 
				
			||||||
vifm-:noh	vifm-help.txt	/*vifm-:noh*
 | 
					 | 
				
			||||||
vifm-:nohlsearch	vifm-help.txt	/*vifm-:nohlsearch*
 | 
					 | 
				
			||||||
vifm-:noremap	vifm-help.txt	/*vifm-:noremap*
 | 
					 | 
				
			||||||
vifm-:norm	vifm-help.txt	/*vifm-:norm*
 | 
					 | 
				
			||||||
vifm-:normal	vifm-help.txt	/*vifm-:normal*
 | 
					 | 
				
			||||||
vifm-:nun	vifm-help.txt	/*vifm-:nun*
 | 
					 | 
				
			||||||
vifm-:nunmap	vifm-help.txt	/*vifm-:nunmap*
 | 
					 | 
				
			||||||
vifm-:on	vifm-help.txt	/*vifm-:on*
 | 
					 | 
				
			||||||
vifm-:only	vifm-help.txt	/*vifm-:only*
 | 
					 | 
				
			||||||
vifm-:plugin	vifm-help.txt	/*vifm-:plugin*
 | 
					 | 
				
			||||||
vifm-:plugins	vifm-help.txt	/*vifm-:plugins*
 | 
					 | 
				
			||||||
vifm-:popd	vifm-help.txt	/*vifm-:popd*
 | 
					 | 
				
			||||||
vifm-:pu	vifm-help.txt	/*vifm-:pu*
 | 
					 | 
				
			||||||
vifm-:pushd	vifm-help.txt	/*vifm-:pushd*
 | 
					 | 
				
			||||||
vifm-:put	vifm-help.txt	/*vifm-:put*
 | 
					 | 
				
			||||||
vifm-:pw	vifm-help.txt	/*vifm-:pw*
 | 
					 | 
				
			||||||
vifm-:pwd	vifm-help.txt	/*vifm-:pwd*
 | 
					 | 
				
			||||||
vifm-:q	vifm-help.txt	/*vifm-:q*
 | 
					 | 
				
			||||||
vifm-:qa	vifm-help.txt	/*vifm-:qa*
 | 
					 | 
				
			||||||
vifm-:qall	vifm-help.txt	/*vifm-:qall*
 | 
					 | 
				
			||||||
vifm-:qm	vifm-help.txt	/*vifm-:qm*
 | 
					 | 
				
			||||||
vifm-:qmap	vifm-help.txt	/*vifm-:qmap*
 | 
					 | 
				
			||||||
vifm-:qn	vifm-help.txt	/*vifm-:qn*
 | 
					 | 
				
			||||||
vifm-:qnoremap	vifm-help.txt	/*vifm-:qnoremap*
 | 
					 | 
				
			||||||
vifm-:quit	vifm-help.txt	/*vifm-:quit*
 | 
					 | 
				
			||||||
vifm-:qun	vifm-help.txt	/*vifm-:qun*
 | 
					 | 
				
			||||||
vifm-:qunmap	vifm-help.txt	/*vifm-:qunmap*
 | 
					 | 
				
			||||||
vifm-:range	vifm-help.txt	/*vifm-:range*
 | 
					 | 
				
			||||||
vifm-:redr	vifm-help.txt	/*vifm-:redr*
 | 
					 | 
				
			||||||
vifm-:redraw	vifm-help.txt	/*vifm-:redraw*
 | 
					 | 
				
			||||||
vifm-:reg	vifm-help.txt	/*vifm-:reg*
 | 
					 | 
				
			||||||
vifm-:registers	vifm-help.txt	/*vifm-:registers*
 | 
					 | 
				
			||||||
vifm-:regular	vifm-help.txt	/*vifm-:regular*
 | 
					 | 
				
			||||||
vifm-:rename	vifm-help.txt	/*vifm-:rename*
 | 
					 | 
				
			||||||
vifm-:restart	vifm-help.txt	/*vifm-:restart*
 | 
					 | 
				
			||||||
vifm-:restore	vifm-help.txt	/*vifm-:restore*
 | 
					 | 
				
			||||||
vifm-:rlink	vifm-help.txt	/*vifm-:rlink*
 | 
					 | 
				
			||||||
vifm-:s	vifm-help.txt	/*vifm-:s*
 | 
					 | 
				
			||||||
vifm-:screen	vifm-help.txt	/*vifm-:screen*
 | 
					 | 
				
			||||||
vifm-:se	vifm-help.txt	/*vifm-:se*
 | 
					 | 
				
			||||||
vifm-:select	vifm-help.txt	/*vifm-:select*
 | 
					 | 
				
			||||||
vifm-:session	vifm-help.txt	/*vifm-:session*
 | 
					 | 
				
			||||||
vifm-:set	vifm-help.txt	/*vifm-:set*
 | 
					 | 
				
			||||||
vifm-:setg	vifm-help.txt	/*vifm-:setg*
 | 
					 | 
				
			||||||
vifm-:setglobal	vifm-help.txt	/*vifm-:setglobal*
 | 
					 | 
				
			||||||
vifm-:setl	vifm-help.txt	/*vifm-:setl*
 | 
					 | 
				
			||||||
vifm-:setlocal	vifm-help.txt	/*vifm-:setlocal*
 | 
					 | 
				
			||||||
vifm-:sh	vifm-help.txt	/*vifm-:sh*
 | 
					 | 
				
			||||||
vifm-:shell	vifm-help.txt	/*vifm-:shell*
 | 
					 | 
				
			||||||
vifm-:siblnext	vifm-help.txt	/*vifm-:siblnext*
 | 
					 | 
				
			||||||
vifm-:siblprev	vifm-help.txt	/*vifm-:siblprev*
 | 
					 | 
				
			||||||
vifm-:so	vifm-help.txt	/*vifm-:so*
 | 
					 | 
				
			||||||
vifm-:sor	vifm-help.txt	/*vifm-:sor*
 | 
					 | 
				
			||||||
vifm-:sort	vifm-help.txt	/*vifm-:sort*
 | 
					 | 
				
			||||||
vifm-:source	vifm-help.txt	/*vifm-:source*
 | 
					 | 
				
			||||||
vifm-:sp	vifm-help.txt	/*vifm-:sp*
 | 
					 | 
				
			||||||
vifm-:split	vifm-help.txt	/*vifm-:split*
 | 
					 | 
				
			||||||
vifm-:st	vifm-help.txt	/*vifm-:st*
 | 
					 | 
				
			||||||
vifm-:stop	vifm-help.txt	/*vifm-:stop*
 | 
					 | 
				
			||||||
vifm-:substitute	vifm-help.txt	/*vifm-:substitute*
 | 
					 | 
				
			||||||
vifm-:sync	vifm-help.txt	/*vifm-:sync*
 | 
					 | 
				
			||||||
vifm-:tabc	vifm-help.txt	/*vifm-:tabc*
 | 
					 | 
				
			||||||
vifm-:tabclose	vifm-help.txt	/*vifm-:tabclose*
 | 
					 | 
				
			||||||
vifm-:tabm	vifm-help.txt	/*vifm-:tabm*
 | 
					 | 
				
			||||||
vifm-:tabmove	vifm-help.txt	/*vifm-:tabmove*
 | 
					 | 
				
			||||||
vifm-:tabn	vifm-help.txt	/*vifm-:tabn*
 | 
					 | 
				
			||||||
vifm-:tabname	vifm-help.txt	/*vifm-:tabname*
 | 
					 | 
				
			||||||
vifm-:tabnew	vifm-help.txt	/*vifm-:tabnew*
 | 
					 | 
				
			||||||
vifm-:tabnext	vifm-help.txt	/*vifm-:tabnext*
 | 
					 | 
				
			||||||
vifm-:tabo	vifm-help.txt	/*vifm-:tabo*
 | 
					 | 
				
			||||||
vifm-:tabonly	vifm-help.txt	/*vifm-:tabonly*
 | 
					 | 
				
			||||||
vifm-:tabp	vifm-help.txt	/*vifm-:tabp*
 | 
					 | 
				
			||||||
vifm-:tabprevious	vifm-help.txt	/*vifm-:tabprevious*
 | 
					 | 
				
			||||||
vifm-:touch	vifm-help.txt	/*vifm-:touch*
 | 
					 | 
				
			||||||
vifm-:tr	vifm-help.txt	/*vifm-:tr*
 | 
					 | 
				
			||||||
vifm-:trashes	vifm-help.txt	/*vifm-:trashes*
 | 
					 | 
				
			||||||
vifm-:tree	vifm-help.txt	/*vifm-:tree*
 | 
					 | 
				
			||||||
vifm-:undol	vifm-help.txt	/*vifm-:undol*
 | 
					 | 
				
			||||||
vifm-:undolist	vifm-help.txt	/*vifm-:undolist*
 | 
					 | 
				
			||||||
vifm-:unl	vifm-help.txt	/*vifm-:unl*
 | 
					 | 
				
			||||||
vifm-:unlet	vifm-help.txt	/*vifm-:unlet*
 | 
					 | 
				
			||||||
vifm-:unm	vifm-help.txt	/*vifm-:unm*
 | 
					 | 
				
			||||||
vifm-:unmap	vifm-help.txt	/*vifm-:unmap*
 | 
					 | 
				
			||||||
vifm-:unselect	vifm-help.txt	/*vifm-:unselect*
 | 
					 | 
				
			||||||
vifm-:ve	vifm-help.txt	/*vifm-:ve*
 | 
					 | 
				
			||||||
vifm-:version	vifm-help.txt	/*vifm-:version*
 | 
					 | 
				
			||||||
vifm-:vie	vifm-help.txt	/*vifm-:vie*
 | 
					 | 
				
			||||||
vifm-:view	vifm-help.txt	/*vifm-:view*
 | 
					 | 
				
			||||||
vifm-:vifm	vifm-help.txt	/*vifm-:vifm*
 | 
					 | 
				
			||||||
vifm-:vm	vifm-help.txt	/*vifm-:vm*
 | 
					 | 
				
			||||||
vifm-:vmap	vifm-help.txt	/*vifm-:vmap*
 | 
					 | 
				
			||||||
vifm-:vn	vifm-help.txt	/*vifm-:vn*
 | 
					 | 
				
			||||||
vifm-:vnoremap	vifm-help.txt	/*vifm-:vnoremap*
 | 
					 | 
				
			||||||
vifm-:volume	vifm-help.txt	/*vifm-:volume*
 | 
					 | 
				
			||||||
vifm-:vs	vifm-help.txt	/*vifm-:vs*
 | 
					 | 
				
			||||||
vifm-:vsplit	vifm-help.txt	/*vifm-:vsplit*
 | 
					 | 
				
			||||||
vifm-:vu	vifm-help.txt	/*vifm-:vu*
 | 
					 | 
				
			||||||
vifm-:vunmap	vifm-help.txt	/*vifm-:vunmap*
 | 
					 | 
				
			||||||
vifm-:w	vifm-help.txt	/*vifm-:w*
 | 
					 | 
				
			||||||
vifm-:winc	vifm-help.txt	/*vifm-:winc*
 | 
					 | 
				
			||||||
vifm-:wincmd	vifm-help.txt	/*vifm-:wincmd*
 | 
					 | 
				
			||||||
vifm-:windo	vifm-help.txt	/*vifm-:windo*
 | 
					 | 
				
			||||||
vifm-:winrun	vifm-help.txt	/*vifm-:winrun*
 | 
					 | 
				
			||||||
vifm-:wq	vifm-help.txt	/*vifm-:wq*
 | 
					 | 
				
			||||||
vifm-:wqa	vifm-help.txt	/*vifm-:wqa*
 | 
					 | 
				
			||||||
vifm-:wqall	vifm-help.txt	/*vifm-:wqall*
 | 
					 | 
				
			||||||
vifm-:write	vifm-help.txt	/*vifm-:write*
 | 
					 | 
				
			||||||
vifm-:x	vifm-help.txt	/*vifm-:x*
 | 
					 | 
				
			||||||
vifm-:xa	vifm-help.txt	/*vifm-:xa*
 | 
					 | 
				
			||||||
vifm-:xall	vifm-help.txt	/*vifm-:xall*
 | 
					 | 
				
			||||||
vifm-:xit	vifm-help.txt	/*vifm-:xit*
 | 
					 | 
				
			||||||
vifm-:y	vifm-help.txt	/*vifm-:y*
 | 
					 | 
				
			||||||
vifm-:yank	vifm-help.txt	/*vifm-:yank*
 | 
					 | 
				
			||||||
vifm-;	vifm-help.txt	/*vifm-;*
 | 
					 | 
				
			||||||
vifm-=	vifm-help.txt	/*vifm-=*
 | 
					 | 
				
			||||||
vifm-?	vifm-help.txt	/*vifm-?*
 | 
					 | 
				
			||||||
vifm-C	vifm-help.txt	/*vifm-C*
 | 
					 | 
				
			||||||
vifm-CTRL-A	vifm-help.txt	/*vifm-CTRL-A*
 | 
					 | 
				
			||||||
vifm-CTRL-B	vifm-help.txt	/*vifm-CTRL-B*
 | 
					 | 
				
			||||||
vifm-CTRL-C	vifm-help.txt	/*vifm-CTRL-C*
 | 
					 | 
				
			||||||
vifm-CTRL-D	vifm-help.txt	/*vifm-CTRL-D*
 | 
					 | 
				
			||||||
vifm-CTRL-E	vifm-help.txt	/*vifm-CTRL-E*
 | 
					 | 
				
			||||||
vifm-CTRL-F	vifm-help.txt	/*vifm-CTRL-F*
 | 
					 | 
				
			||||||
vifm-CTRL-G	vifm-help.txt	/*vifm-CTRL-G*
 | 
					 | 
				
			||||||
vifm-CTRL-I	vifm-help.txt	/*vifm-CTRL-I*
 | 
					 | 
				
			||||||
vifm-CTRL-L	vifm-help.txt	/*vifm-CTRL-L*
 | 
					 | 
				
			||||||
vifm-CTRL-N	vifm-help.txt	/*vifm-CTRL-N*
 | 
					 | 
				
			||||||
vifm-CTRL-O	vifm-help.txt	/*vifm-CTRL-O*
 | 
					 | 
				
			||||||
vifm-CTRL-P	vifm-help.txt	/*vifm-CTRL-P*
 | 
					 | 
				
			||||||
vifm-CTRL-R	vifm-help.txt	/*vifm-CTRL-R*
 | 
					 | 
				
			||||||
vifm-CTRL-U	vifm-help.txt	/*vifm-CTRL-U*
 | 
					 | 
				
			||||||
vifm-CTRL-W_+	vifm-help.txt	/*vifm-CTRL-W_+*
 | 
					 | 
				
			||||||
vifm-CTRL-W_-	vifm-help.txt	/*vifm-CTRL-W_-*
 | 
					 | 
				
			||||||
vifm-CTRL-W_<	vifm-help.txt	/*vifm-CTRL-W_<*
 | 
					 | 
				
			||||||
vifm-CTRL-W_=	vifm-help.txt	/*vifm-CTRL-W_=*
 | 
					 | 
				
			||||||
vifm-CTRL-W_>	vifm-help.txt	/*vifm-CTRL-W_>*
 | 
					 | 
				
			||||||
vifm-CTRL-W_H	vifm-help.txt	/*vifm-CTRL-W_H*
 | 
					 | 
				
			||||||
vifm-CTRL-W_J	vifm-help.txt	/*vifm-CTRL-W_J*
 | 
					 | 
				
			||||||
vifm-CTRL-W_K	vifm-help.txt	/*vifm-CTRL-W_K*
 | 
					 | 
				
			||||||
vifm-CTRL-W_L	vifm-help.txt	/*vifm-CTRL-W_L*
 | 
					 | 
				
			||||||
vifm-CTRL-W__	vifm-help.txt	/*vifm-CTRL-W__*
 | 
					 | 
				
			||||||
vifm-CTRL-W_b	vifm-help.txt	/*vifm-CTRL-W_b*
 | 
					 | 
				
			||||||
vifm-CTRL-W_bar	vifm-help.txt	/*vifm-CTRL-W_bar*
 | 
					 | 
				
			||||||
vifm-CTRL-W_h	vifm-help.txt	/*vifm-CTRL-W_h*
 | 
					 | 
				
			||||||
vifm-CTRL-W_j	vifm-help.txt	/*vifm-CTRL-W_j*
 | 
					 | 
				
			||||||
vifm-CTRL-W_k	vifm-help.txt	/*vifm-CTRL-W_k*
 | 
					 | 
				
			||||||
vifm-CTRL-W_l	vifm-help.txt	/*vifm-CTRL-W_l*
 | 
					 | 
				
			||||||
vifm-CTRL-W_o	vifm-help.txt	/*vifm-CTRL-W_o*
 | 
					 | 
				
			||||||
vifm-CTRL-W_p	vifm-help.txt	/*vifm-CTRL-W_p*
 | 
					 | 
				
			||||||
vifm-CTRL-W_s	vifm-help.txt	/*vifm-CTRL-W_s*
 | 
					 | 
				
			||||||
vifm-CTRL-W_t	vifm-help.txt	/*vifm-CTRL-W_t*
 | 
					 | 
				
			||||||
vifm-CTRL-W_v	vifm-help.txt	/*vifm-CTRL-W_v*
 | 
					 | 
				
			||||||
vifm-CTRL-W_w	vifm-help.txt	/*vifm-CTRL-W_w*
 | 
					 | 
				
			||||||
vifm-CTRL-W_x	vifm-help.txt	/*vifm-CTRL-W_x*
 | 
					 | 
				
			||||||
vifm-CTRL-W_z	vifm-help.txt	/*vifm-CTRL-W_z*
 | 
					 | 
				
			||||||
vifm-CTRL-X	vifm-help.txt	/*vifm-CTRL-X*
 | 
					 | 
				
			||||||
vifm-CTRL-Y	vifm-help.txt	/*vifm-CTRL-Y*
 | 
					 | 
				
			||||||
vifm-D	vifm-help.txt	/*vifm-D*
 | 
					 | 
				
			||||||
vifm-DD	vifm-help.txt	/*vifm-DD*
 | 
					 | 
				
			||||||
vifm-Enter	vifm-help.txt	/*vifm-Enter*
 | 
					 | 
				
			||||||
vifm-Escape	vifm-help.txt	/*vifm-Escape*
 | 
					 | 
				
			||||||
vifm-F	vifm-help.txt	/*vifm-F*
 | 
					 | 
				
			||||||
vifm-FUSE_MOUNT	vifm-help.txt	/*vifm-FUSE_MOUNT*
 | 
					 | 
				
			||||||
vifm-FUSE_MOUNT2	vifm-help.txt	/*vifm-FUSE_MOUNT2*
 | 
					 | 
				
			||||||
vifm-FUSE_MOUNT3	vifm-help.txt	/*vifm-FUSE_MOUNT3*
 | 
					 | 
				
			||||||
vifm-G	vifm-help.txt	/*vifm-G*
 | 
					 | 
				
			||||||
vifm-H	vifm-help.txt	/*vifm-H*
 | 
					 | 
				
			||||||
vifm-L	vifm-help.txt	/*vifm-L*
 | 
					 | 
				
			||||||
vifm-M	vifm-help.txt	/*vifm-M*
 | 
					 | 
				
			||||||
vifm-N	vifm-help.txt	/*vifm-N*
 | 
					 | 
				
			||||||
vifm-P	vifm-help.txt	/*vifm-P*
 | 
					 | 
				
			||||||
vifm-PageDown	vifm-help.txt	/*vifm-PageDown*
 | 
					 | 
				
			||||||
vifm-PageUp	vifm-help.txt	/*vifm-PageUp*
 | 
					 | 
				
			||||||
vifm-SHIFT-Tab	vifm-help.txt	/*vifm-SHIFT-Tab*
 | 
					 | 
				
			||||||
vifm-Space	vifm-help.txt	/*vifm-Space*
 | 
					 | 
				
			||||||
vifm-Tab	vifm-help.txt	/*vifm-Tab*
 | 
					 | 
				
			||||||
vifm-V	vifm-help.txt	/*vifm-V*
 | 
					 | 
				
			||||||
vifm-Y	vifm-help.txt	/*vifm-Y*
 | 
					 | 
				
			||||||
vifm-ZQ	vifm-help.txt	/*vifm-ZQ*
 | 
					 | 
				
			||||||
vifm-ZZ	vifm-help.txt	/*vifm-ZZ*
 | 
					 | 
				
			||||||
vifm-[R	vifm-help.txt	/*vifm-[R*
 | 
					 | 
				
			||||||
vifm-[c	vifm-help.txt	/*vifm-[c*
 | 
					 | 
				
			||||||
vifm-[count]	vifm-help.txt	/*vifm-[count]*
 | 
					 | 
				
			||||||
vifm-[d	vifm-help.txt	/*vifm-[d*
 | 
					 | 
				
			||||||
vifm-[r	vifm-help.txt	/*vifm-[r*
 | 
					 | 
				
			||||||
vifm-[s	vifm-help.txt	/*vifm-[s*
 | 
					 | 
				
			||||||
vifm-[z	vifm-help.txt	/*vifm-[z*
 | 
					 | 
				
			||||||
vifm-]R	vifm-help.txt	/*vifm-]R*
 | 
					 | 
				
			||||||
vifm-]c	vifm-help.txt	/*vifm-]c*
 | 
					 | 
				
			||||||
vifm-]d	vifm-help.txt	/*vifm-]d*
 | 
					 | 
				
			||||||
vifm-]r	vifm-help.txt	/*vifm-]r*
 | 
					 | 
				
			||||||
vifm-]s	vifm-help.txt	/*vifm-]s*
 | 
					 | 
				
			||||||
vifm-]z	vifm-help.txt	/*vifm-]z*
 | 
					 | 
				
			||||||
vifm-^	vifm-help.txt	/*vifm-^*
 | 
					 | 
				
			||||||
vifm-al	vifm-help.txt	/*vifm-al*
 | 
					 | 
				
			||||||
vifm-app.txt	vifm-help.txt	/*vifm-app.txt*
 | 
					 | 
				
			||||||
vifm-av	vifm-help.txt	/*vifm-av*
 | 
					 | 
				
			||||||
vifm-cW	vifm-help.txt	/*vifm-cW*
 | 
					 | 
				
			||||||
vifm-c_ALT-.	vifm-help.txt	/*vifm-c_ALT-.*
 | 
					 | 
				
			||||||
vifm-c_ALT-B	vifm-help.txt	/*vifm-c_ALT-B*
 | 
					 | 
				
			||||||
vifm-c_ALT-D	vifm-help.txt	/*vifm-c_ALT-D*
 | 
					 | 
				
			||||||
vifm-c_ALT-F	vifm-help.txt	/*vifm-c_ALT-F*
 | 
					 | 
				
			||||||
vifm-c_Backspace	vifm-help.txt	/*vifm-c_Backspace*
 | 
					 | 
				
			||||||
vifm-c_CTRL-A	vifm-help.txt	/*vifm-c_CTRL-A*
 | 
					 | 
				
			||||||
vifm-c_CTRL-B	vifm-help.txt	/*vifm-c_CTRL-B*
 | 
					 | 
				
			||||||
vifm-c_CTRL-C	vifm-help.txt	/*vifm-c_CTRL-C*
 | 
					 | 
				
			||||||
vifm-c_CTRL-D	vifm-help.txt	/*vifm-c_CTRL-D*
 | 
					 | 
				
			||||||
vifm-c_CTRL-E	vifm-help.txt	/*vifm-c_CTRL-E*
 | 
					 | 
				
			||||||
vifm-c_CTRL-F	vifm-help.txt	/*vifm-c_CTRL-F*
 | 
					 | 
				
			||||||
vifm-c_CTRL-G	vifm-help.txt	/*vifm-c_CTRL-G*
 | 
					 | 
				
			||||||
vifm-c_CTRL-H	vifm-help.txt	/*vifm-c_CTRL-H*
 | 
					 | 
				
			||||||
vifm-c_CTRL-I	vifm-help.txt	/*vifm-c_CTRL-I*
 | 
					 | 
				
			||||||
vifm-c_CTRL-K	vifm-help.txt	/*vifm-c_CTRL-K*
 | 
					 | 
				
			||||||
vifm-c_CTRL-M	vifm-help.txt	/*vifm-c_CTRL-M*
 | 
					 | 
				
			||||||
vifm-c_CTRL-N	vifm-help.txt	/*vifm-c_CTRL-N*
 | 
					 | 
				
			||||||
vifm-c_CTRL-P	vifm-help.txt	/*vifm-c_CTRL-P*
 | 
					 | 
				
			||||||
vifm-c_CTRL-R_=	vifm-help.txt	/*vifm-c_CTRL-R_=*
 | 
					 | 
				
			||||||
vifm-c_CTRL-T	vifm-help.txt	/*vifm-c_CTRL-T*
 | 
					 | 
				
			||||||
vifm-c_CTRL-U	vifm-help.txt	/*vifm-c_CTRL-U*
 | 
					 | 
				
			||||||
vifm-c_CTRL-W	vifm-help.txt	/*vifm-c_CTRL-W*
 | 
					 | 
				
			||||||
vifm-c_CTRL-X_/	vifm-help.txt	/*vifm-c_CTRL-X_\/*
 | 
					 | 
				
			||||||
vifm-c_CTRL-X_=	vifm-help.txt	/*vifm-c_CTRL-X_=*
 | 
					 | 
				
			||||||
vifm-c_CTRL-X_CTRL-X_c	vifm-help.txt	/*vifm-c_CTRL-X_CTRL-X_c*
 | 
					 | 
				
			||||||
vifm-c_CTRL-X_CTRL-X_d	vifm-help.txt	/*vifm-c_CTRL-X_CTRL-X_d*
 | 
					 | 
				
			||||||
vifm-c_CTRL-X_CTRL-X_e	vifm-help.txt	/*vifm-c_CTRL-X_CTRL-X_e*
 | 
					 | 
				
			||||||
vifm-c_CTRL-X_CTRL-X_r	vifm-help.txt	/*vifm-c_CTRL-X_CTRL-X_r*
 | 
					 | 
				
			||||||
vifm-c_CTRL-X_CTRL-X_t	vifm-help.txt	/*vifm-c_CTRL-X_CTRL-X_t*
 | 
					 | 
				
			||||||
vifm-c_CTRL-X_a	vifm-help.txt	/*vifm-c_CTRL-X_a*
 | 
					 | 
				
			||||||
vifm-c_CTRL-X_c	vifm-help.txt	/*vifm-c_CTRL-X_c*
 | 
					 | 
				
			||||||
vifm-c_CTRL-X_d	vifm-help.txt	/*vifm-c_CTRL-X_d*
 | 
					 | 
				
			||||||
vifm-c_CTRL-X_e	vifm-help.txt	/*vifm-c_CTRL-X_e*
 | 
					 | 
				
			||||||
vifm-c_CTRL-X_m	vifm-help.txt	/*vifm-c_CTRL-X_m*
 | 
					 | 
				
			||||||
vifm-c_CTRL-X_r	vifm-help.txt	/*vifm-c_CTRL-X_r*
 | 
					 | 
				
			||||||
vifm-c_CTRL-X_t	vifm-help.txt	/*vifm-c_CTRL-X_t*
 | 
					 | 
				
			||||||
vifm-c_CTRL-]	vifm-help.txt	/*vifm-c_CTRL-]*
 | 
					 | 
				
			||||||
vifm-c_CTRL-_	vifm-help.txt	/*vifm-c_CTRL-_*
 | 
					 | 
				
			||||||
vifm-c_Delete	vifm-help.txt	/*vifm-c_Delete*
 | 
					 | 
				
			||||||
vifm-c_Down	vifm-help.txt	/*vifm-c_Down*
 | 
					 | 
				
			||||||
vifm-c_End	vifm-help.txt	/*vifm-c_End*
 | 
					 | 
				
			||||||
vifm-c_Enter	vifm-help.txt	/*vifm-c_Enter*
 | 
					 | 
				
			||||||
vifm-c_Esc	vifm-help.txt	/*vifm-c_Esc*
 | 
					 | 
				
			||||||
vifm-c_Home	vifm-help.txt	/*vifm-c_Home*
 | 
					 | 
				
			||||||
vifm-c_Left	vifm-help.txt	/*vifm-c_Left*
 | 
					 | 
				
			||||||
vifm-c_Right	vifm-help.txt	/*vifm-c_Right*
 | 
					 | 
				
			||||||
vifm-c_SHIFT-Tab	vifm-help.txt	/*vifm-c_SHIFT-Tab*
 | 
					 | 
				
			||||||
vifm-c_Tab	vifm-help.txt	/*vifm-c_Tab*
 | 
					 | 
				
			||||||
vifm-c_Up	vifm-help.txt	/*vifm-c_Up*
 | 
					 | 
				
			||||||
vifm-cancellation	vifm-help.txt	/*vifm-cancellation*
 | 
					 | 
				
			||||||
vifm-cg	vifm-help.txt	/*vifm-cg*
 | 
					 | 
				
			||||||
vifm-chooseopt()	vifm-help.txt	/*vifm-chooseopt()*
 | 
					 | 
				
			||||||
vifm-cl	vifm-help.txt	/*vifm-cl*
 | 
					 | 
				
			||||||
vifm-clientserver	vifm-help.txt	/*vifm-clientserver*
 | 
					 | 
				
			||||||
vifm-co	vifm-help.txt	/*vifm-co*
 | 
					 | 
				
			||||||
vifm-color-schemes	vifm-help.txt	/*vifm-color-schemes*
 | 
					 | 
				
			||||||
vifm-colors	vifm-help.txt	/*vifm-colors*
 | 
					 | 
				
			||||||
vifm-column-view	vifm-help.txt	/*vifm-column-view*
 | 
					 | 
				
			||||||
vifm-command-line	vifm-help.txt	/*vifm-command-line*
 | 
					 | 
				
			||||||
vifm-command-line-edit	vifm-help.txt	/*vifm-command-line-edit*
 | 
					 | 
				
			||||||
vifm-commands	vifm-help.txt	/*vifm-commands*
 | 
					 | 
				
			||||||
vifm-commands-and-selection	vifm-help.txt	/*vifm-commands-and-selection*
 | 
					 | 
				
			||||||
vifm-commands-bg	vifm-help.txt	/*vifm-commands-bg*
 | 
					 | 
				
			||||||
vifm-compare-views	vifm-help.txt	/*vifm-compare-views*
 | 
					 | 
				
			||||||
vifm-configure	vifm-help.txt	/*vifm-configure*
 | 
					 | 
				
			||||||
vifm-count	vifm-help.txt	/*vifm-count*
 | 
					 | 
				
			||||||
vifm-count-variable	vifm-help.txt	/*vifm-count-variable*
 | 
					 | 
				
			||||||
vifm-count1-variable	vifm-help.txt	/*vifm-count1-variable*
 | 
					 | 
				
			||||||
vifm-cp	vifm-help.txt	/*vifm-cp*
 | 
					 | 
				
			||||||
vifm-cpo-f	vifm-help.txt	/*vifm-cpo-f*
 | 
					 | 
				
			||||||
vifm-cpo-s	vifm-help.txt	/*vifm-cpo-s*
 | 
					 | 
				
			||||||
vifm-cpo-t	vifm-help.txt	/*vifm-cpo-t*
 | 
					 | 
				
			||||||
vifm-custom-views	vifm-help.txt	/*vifm-custom-views*
 | 
					 | 
				
			||||||
vifm-cw	vifm-help.txt	/*vifm-cw*
 | 
					 | 
				
			||||||
vifm-d	vifm-help.txt	/*vifm-d*
 | 
					 | 
				
			||||||
vifm-dd	vifm-help.txt	/*vifm-dd*
 | 
					 | 
				
			||||||
vifm-do	vifm-help.txt	/*vifm-do*
 | 
					 | 
				
			||||||
vifm-dp	vifm-help.txt	/*vifm-dp*
 | 
					 | 
				
			||||||
vifm-e	vifm-help.txt	/*vifm-e*
 | 
					 | 
				
			||||||
vifm-env-vars	vifm-help.txt	/*vifm-env-vars*
 | 
					 | 
				
			||||||
vifm-executable()	vifm-help.txt	/*vifm-executable()*
 | 
					 | 
				
			||||||
vifm-expand()	vifm-help.txt	/*vifm-expand()*
 | 
					 | 
				
			||||||
vifm-expr-!=	vifm-help.txt	/*vifm-expr-!=*
 | 
					 | 
				
			||||||
vifm-expr-'	vifm-help.txt	/*vifm-expr-'*
 | 
					 | 
				
			||||||
vifm-expr-+	vifm-help.txt	/*vifm-expr-+*
 | 
					 | 
				
			||||||
vifm-expr--	vifm-help.txt	/*vifm-expr--*
 | 
					 | 
				
			||||||
vifm-expr-.	vifm-help.txt	/*vifm-expr-.*
 | 
					 | 
				
			||||||
vifm-expr-<	vifm-help.txt	/*vifm-expr-<*
 | 
					 | 
				
			||||||
vifm-expr-<=	vifm-help.txt	/*vifm-expr-<=*
 | 
					 | 
				
			||||||
vifm-expr-==	vifm-help.txt	/*vifm-expr-==*
 | 
					 | 
				
			||||||
vifm-expr->	vifm-help.txt	/*vifm-expr->*
 | 
					 | 
				
			||||||
vifm-expr->=	vifm-help.txt	/*vifm-expr->=*
 | 
					 | 
				
			||||||
vifm-expr-env	vifm-help.txt	/*vifm-expr-env*
 | 
					 | 
				
			||||||
vifm-expr-function	vifm-help.txt	/*vifm-expr-function*
 | 
					 | 
				
			||||||
vifm-expr-nesting	vifm-help.txt	/*vifm-expr-nesting*
 | 
					 | 
				
			||||||
vifm-expr-number	vifm-help.txt	/*vifm-expr-number*
 | 
					 | 
				
			||||||
vifm-expr-option	vifm-help.txt	/*vifm-expr-option*
 | 
					 | 
				
			||||||
vifm-expr-quote	vifm-help.txt	/*vifm-expr-quote*
 | 
					 | 
				
			||||||
vifm-expr-string	vifm-help.txt	/*vifm-expr-string*
 | 
					 | 
				
			||||||
vifm-expr-unary-!	vifm-help.txt	/*vifm-expr-unary-!*
 | 
					 | 
				
			||||||
vifm-expr-unary-+	vifm-help.txt	/*vifm-expr-unary-+*
 | 
					 | 
				
			||||||
vifm-expr-unary--	vifm-help.txt	/*vifm-expr-unary--*
 | 
					 | 
				
			||||||
vifm-expr-variable	vifm-help.txt	/*vifm-expr-variable*
 | 
					 | 
				
			||||||
vifm-expr1	vifm-help.txt	/*vifm-expr1*
 | 
					 | 
				
			||||||
vifm-expr2	vifm-help.txt	/*vifm-expr2*
 | 
					 | 
				
			||||||
vifm-expr3	vifm-help.txt	/*vifm-expr3*
 | 
					 | 
				
			||||||
vifm-expr4	vifm-help.txt	/*vifm-expr4*
 | 
					 | 
				
			||||||
vifm-expr5	vifm-help.txt	/*vifm-expr5*
 | 
					 | 
				
			||||||
vifm-expr6	vifm-help.txt	/*vifm-expr6*
 | 
					 | 
				
			||||||
vifm-expr7	vifm-help.txt	/*vifm-expr7*
 | 
					 | 
				
			||||||
vifm-expression-syntax	vifm-help.txt	/*vifm-expression-syntax*
 | 
					 | 
				
			||||||
vifm-ext-rename	vifm-help.txt	/*vifm-ext-rename*
 | 
					 | 
				
			||||||
vifm-extcached()	vifm-help.txt	/*vifm-extcached()*
 | 
					 | 
				
			||||||
vifm-f	vifm-help.txt	/*vifm-f*
 | 
					 | 
				
			||||||
vifm-filename-modifiers	vifm-help.txt	/*vifm-filename-modifiers*
 | 
					 | 
				
			||||||
vifm-filetype()	vifm-help.txt	/*vifm-filetype()*
 | 
					 | 
				
			||||||
vifm-filters	vifm-help.txt	/*vifm-filters*
 | 
					 | 
				
			||||||
vifm-fnameescape()	vifm-help.txt	/*vifm-fnameescape()*
 | 
					 | 
				
			||||||
vifm-functions	vifm-help.txt	/*vifm-functions*
 | 
					 | 
				
			||||||
vifm-fuse	vifm-help.txt	/*vifm-fuse*
 | 
					 | 
				
			||||||
vifm-gA	vifm-help.txt	/*vifm-gA*
 | 
					 | 
				
			||||||
vifm-gF	vifm-help.txt	/*vifm-gF*
 | 
					 | 
				
			||||||
vifm-gT	vifm-help.txt	/*vifm-gT*
 | 
					 | 
				
			||||||
vifm-gU	vifm-help.txt	/*vifm-gU*
 | 
					 | 
				
			||||||
vifm-gUU	vifm-help.txt	/*vifm-gUU*
 | 
					 | 
				
			||||||
vifm-gUgU	vifm-help.txt	/*vifm-gUgU*
 | 
					 | 
				
			||||||
vifm-ga	vifm-help.txt	/*vifm-ga*
 | 
					 | 
				
			||||||
vifm-general-keys	vifm-help.txt	/*vifm-general-keys*
 | 
					 | 
				
			||||||
vifm-getpanetype()	vifm-help.txt	/*vifm-getpanetype()*
 | 
					 | 
				
			||||||
vifm-gf	vifm-help.txt	/*vifm-gf*
 | 
					 | 
				
			||||||
vifm-gg	vifm-help.txt	/*vifm-gg*
 | 
					 | 
				
			||||||
vifm-gh	vifm-help.txt	/*vifm-gh*
 | 
					 | 
				
			||||||
vifm-gj	vifm-help.txt	/*vifm-gj*
 | 
					 | 
				
			||||||
vifm-gk	vifm-help.txt	/*vifm-gk*
 | 
					 | 
				
			||||||
vifm-gl	vifm-help.txt	/*vifm-gl*
 | 
					 | 
				
			||||||
vifm-globs	vifm-help.txt	/*vifm-globs*
 | 
					 | 
				
			||||||
vifm-gr	vifm-help.txt	/*vifm-gr*
 | 
					 | 
				
			||||||
vifm-gs	vifm-help.txt	/*vifm-gs*
 | 
					 | 
				
			||||||
vifm-gt	vifm-help.txt	/*vifm-gt*
 | 
					 | 
				
			||||||
vifm-gu	vifm-help.txt	/*vifm-gu*
 | 
					 | 
				
			||||||
vifm-gugu	vifm-help.txt	/*vifm-gugu*
 | 
					 | 
				
			||||||
vifm-guu	vifm-help.txt	/*vifm-guu*
 | 
					 | 
				
			||||||
vifm-gv	vifm-help.txt	/*vifm-gv*
 | 
					 | 
				
			||||||
vifm-h	vifm-help.txt	/*vifm-h*
 | 
					 | 
				
			||||||
vifm-has()	vifm-help.txt	/*vifm-has()*
 | 
					 | 
				
			||||||
vifm-i	vifm-help.txt	/*vifm-i*
 | 
					 | 
				
			||||||
vifm-j	vifm-help.txt	/*vifm-j*
 | 
					 | 
				
			||||||
vifm-jobcount-variable	vifm-help.txt	/*vifm-jobcount-variable*
 | 
					 | 
				
			||||||
vifm-k	vifm-help.txt	/*vifm-k*
 | 
					 | 
				
			||||||
vifm-l	vifm-help.txt	/*vifm-l*
 | 
					 | 
				
			||||||
vifm-layoutis()	vifm-help.txt	/*vifm-layoutis()*
 | 
					 | 
				
			||||||
vifm-literal-string	vifm-help.txt	/*vifm-literal-string*
 | 
					 | 
				
			||||||
vifm-local-options	vifm-help.txt	/*vifm-local-options*
 | 
					 | 
				
			||||||
vifm-ls-view	vifm-help.txt	/*vifm-ls-view*
 | 
					 | 
				
			||||||
vifm-m	vifm-help.txt	/*vifm-m*
 | 
					 | 
				
			||||||
vifm-m_/	vifm-help.txt	/*vifm-m_\/*
 | 
					 | 
				
			||||||
vifm-m_:	vifm-help.txt	/*vifm-m_:*
 | 
					 | 
				
			||||||
vifm-m_:exi	vifm-help.txt	/*vifm-m_:exi*
 | 
					 | 
				
			||||||
vifm-m_:exit	vifm-help.txt	/*vifm-m_:exit*
 | 
					 | 
				
			||||||
vifm-m_:noh	vifm-help.txt	/*vifm-m_:noh*
 | 
					 | 
				
			||||||
vifm-m_:nohlsearch	vifm-help.txt	/*vifm-m_:nohlsearch*
 | 
					 | 
				
			||||||
vifm-m_:q	vifm-help.txt	/*vifm-m_:q*
 | 
					 | 
				
			||||||
vifm-m_:quit	vifm-help.txt	/*vifm-m_:quit*
 | 
					 | 
				
			||||||
vifm-m_:range	vifm-help.txt	/*vifm-m_:range*
 | 
					 | 
				
			||||||
vifm-m_:w	vifm-help.txt	/*vifm-m_:w*
 | 
					 | 
				
			||||||
vifm-m_:write	vifm-help.txt	/*vifm-m_:write*
 | 
					 | 
				
			||||||
vifm-m_:x	vifm-help.txt	/*vifm-m_:x*
 | 
					 | 
				
			||||||
vifm-m_:xit	vifm-help.txt	/*vifm-m_:xit*
 | 
					 | 
				
			||||||
vifm-m_?	vifm-help.txt	/*vifm-m_?*
 | 
					 | 
				
			||||||
vifm-m_B	vifm-help.txt	/*vifm-m_B*
 | 
					 | 
				
			||||||
vifm-m_CTRL-B	vifm-help.txt	/*vifm-m_CTRL-B*
 | 
					 | 
				
			||||||
vifm-m_CTRL-C	vifm-help.txt	/*vifm-m_CTRL-C*
 | 
					 | 
				
			||||||
vifm-m_CTRL-D	vifm-help.txt	/*vifm-m_CTRL-D*
 | 
					 | 
				
			||||||
vifm-m_CTRL-E	vifm-help.txt	/*vifm-m_CTRL-E*
 | 
					 | 
				
			||||||
vifm-m_CTRL-F	vifm-help.txt	/*vifm-m_CTRL-F*
 | 
					 | 
				
			||||||
vifm-m_CTRL-L	vifm-help.txt	/*vifm-m_CTRL-L*
 | 
					 | 
				
			||||||
vifm-m_CTRL-N	vifm-help.txt	/*vifm-m_CTRL-N*
 | 
					 | 
				
			||||||
vifm-m_CTRL-P	vifm-help.txt	/*vifm-m_CTRL-P*
 | 
					 | 
				
			||||||
vifm-m_CTRL-U	vifm-help.txt	/*vifm-m_CTRL-U*
 | 
					 | 
				
			||||||
vifm-m_CTRL-Y	vifm-help.txt	/*vifm-m_CTRL-Y*
 | 
					 | 
				
			||||||
vifm-m_Enter	vifm-help.txt	/*vifm-m_Enter*
 | 
					 | 
				
			||||||
vifm-m_Escape	vifm-help.txt	/*vifm-m_Escape*
 | 
					 | 
				
			||||||
vifm-m_G	vifm-help.txt	/*vifm-m_G*
 | 
					 | 
				
			||||||
vifm-m_H	vifm-help.txt	/*vifm-m_H*
 | 
					 | 
				
			||||||
vifm-m_L	vifm-help.txt	/*vifm-m_L*
 | 
					 | 
				
			||||||
vifm-m_M	vifm-help.txt	/*vifm-m_M*
 | 
					 | 
				
			||||||
vifm-m_N	vifm-help.txt	/*vifm-m_N*
 | 
					 | 
				
			||||||
vifm-m_ZQ	vifm-help.txt	/*vifm-m_ZQ*
 | 
					 | 
				
			||||||
vifm-m_ZZ	vifm-help.txt	/*vifm-m_ZZ*
 | 
					 | 
				
			||||||
vifm-m_b	vifm-help.txt	/*vifm-m_b*
 | 
					 | 
				
			||||||
vifm-m_c	vifm-help.txt	/*vifm-m_c*
 | 
					 | 
				
			||||||
vifm-m_e	vifm-help.txt	/*vifm-m_e*
 | 
					 | 
				
			||||||
vifm-m_gf	vifm-help.txt	/*vifm-m_gf*
 | 
					 | 
				
			||||||
vifm-m_gg	vifm-help.txt	/*vifm-m_gg*
 | 
					 | 
				
			||||||
vifm-m_j	vifm-help.txt	/*vifm-m_j*
 | 
					 | 
				
			||||||
vifm-m_k	vifm-help.txt	/*vifm-m_k*
 | 
					 | 
				
			||||||
vifm-m_l	vifm-help.txt	/*vifm-m_l*
 | 
					 | 
				
			||||||
vifm-m_n	vifm-help.txt	/*vifm-m_n*
 | 
					 | 
				
			||||||
vifm-m_q	vifm-help.txt	/*vifm-m_q*
 | 
					 | 
				
			||||||
vifm-m_v	vifm-help.txt	/*vifm-m_v*
 | 
					 | 
				
			||||||
vifm-m_zH	vifm-help.txt	/*vifm-m_zH*
 | 
					 | 
				
			||||||
vifm-m_zL	vifm-help.txt	/*vifm-m_zL*
 | 
					 | 
				
			||||||
vifm-m_zb	vifm-help.txt	/*vifm-m_zb*
 | 
					 | 
				
			||||||
vifm-m_zh	vifm-help.txt	/*vifm-m_zh*
 | 
					 | 
				
			||||||
vifm-m_zl	vifm-help.txt	/*vifm-m_zl*
 | 
					 | 
				
			||||||
vifm-m_zt	vifm-help.txt	/*vifm-m_zt*
 | 
					 | 
				
			||||||
vifm-m_zz	vifm-help.txt	/*vifm-m_zz*
 | 
					 | 
				
			||||||
vifm-macros	vifm-help.txt	/*vifm-macros*
 | 
					 | 
				
			||||||
vifm-mappings	vifm-help.txt	/*vifm-mappings*
 | 
					 | 
				
			||||||
vifm-menus-and-dialogs	vifm-help.txt	/*vifm-menus-and-dialogs*
 | 
					 | 
				
			||||||
vifm-more	vifm-help.txt	/*vifm-more*
 | 
					 | 
				
			||||||
vifm-n	vifm-help.txt	/*vifm-n*
 | 
					 | 
				
			||||||
vifm-normal	vifm-help.txt	/*vifm-normal*
 | 
					 | 
				
			||||||
vifm-options	vifm-help.txt	/*vifm-options*
 | 
					 | 
				
			||||||
vifm-p	vifm-help.txt	/*vifm-p*
 | 
					 | 
				
			||||||
vifm-pager	vifm-help.txt	/*vifm-pager*
 | 
					 | 
				
			||||||
vifm-paneisat()	vifm-help.txt	/*vifm-paneisat()*
 | 
					 | 
				
			||||||
vifm-patterns	vifm-help.txt	/*vifm-patterns*
 | 
					 | 
				
			||||||
vifm-plugin	vifm-help.txt	/*vifm-plugin*
 | 
					 | 
				
			||||||
vifm-q/	vifm-help.txt	/*vifm-q\/*
 | 
					 | 
				
			||||||
vifm-q:	vifm-help.txt	/*vifm-q:*
 | 
					 | 
				
			||||||
vifm-q=	vifm-help.txt	/*vifm-q=*
 | 
					 | 
				
			||||||
vifm-q?	vifm-help.txt	/*vifm-q?*
 | 
					 | 
				
			||||||
vifm-q_%	vifm-help.txt	/*vifm-q_%*
 | 
					 | 
				
			||||||
vifm-q_/	vifm-help.txt	/*vifm-q_\/*
 | 
					 | 
				
			||||||
vifm-q_<	vifm-help.txt	/*vifm-q_<*
 | 
					 | 
				
			||||||
vifm-q_>	vifm-help.txt	/*vifm-q_>*
 | 
					 | 
				
			||||||
vifm-q_?	vifm-help.txt	/*vifm-q_?*
 | 
					 | 
				
			||||||
vifm-q_A	vifm-help.txt	/*vifm-q_A*
 | 
					 | 
				
			||||||
vifm-q_ALT-<	vifm-help.txt	/*vifm-q_ALT-<*
 | 
					 | 
				
			||||||
vifm-q_ALT->	vifm-help.txt	/*vifm-q_ALT->*
 | 
					 | 
				
			||||||
vifm-q_ALT-Space	vifm-help.txt	/*vifm-q_ALT-Space*
 | 
					 | 
				
			||||||
vifm-q_ALT-V	vifm-help.txt	/*vifm-q_ALT-V*
 | 
					 | 
				
			||||||
vifm-q_CTRL-B	vifm-help.txt	/*vifm-q_CTRL-B*
 | 
					 | 
				
			||||||
vifm-q_CTRL-D	vifm-help.txt	/*vifm-q_CTRL-D*
 | 
					 | 
				
			||||||
vifm-q_CTRL-E	vifm-help.txt	/*vifm-q_CTRL-E*
 | 
					 | 
				
			||||||
vifm-q_CTRL-F	vifm-help.txt	/*vifm-q_CTRL-F*
 | 
					 | 
				
			||||||
vifm-q_CTRL-K	vifm-help.txt	/*vifm-q_CTRL-K*
 | 
					 | 
				
			||||||
vifm-q_CTRL-L	vifm-help.txt	/*vifm-q_CTRL-L*
 | 
					 | 
				
			||||||
vifm-q_CTRL-N	vifm-help.txt	/*vifm-q_CTRL-N*
 | 
					 | 
				
			||||||
vifm-q_CTRL-P	vifm-help.txt	/*vifm-q_CTRL-P*
 | 
					 | 
				
			||||||
vifm-q_CTRL-R	vifm-help.txt	/*vifm-q_CTRL-R*
 | 
					 | 
				
			||||||
vifm-q_CTRL-U	vifm-help.txt	/*vifm-q_CTRL-U*
 | 
					 | 
				
			||||||
vifm-q_CTRL-V	vifm-help.txt	/*vifm-q_CTRL-V*
 | 
					 | 
				
			||||||
vifm-q_CTRL-Y	vifm-help.txt	/*vifm-q_CTRL-Y*
 | 
					 | 
				
			||||||
vifm-q_Enter	vifm-help.txt	/*vifm-q_Enter*
 | 
					 | 
				
			||||||
vifm-q_F	vifm-help.txt	/*vifm-q_F*
 | 
					 | 
				
			||||||
vifm-q_G	vifm-help.txt	/*vifm-q_G*
 | 
					 | 
				
			||||||
vifm-q_N	vifm-help.txt	/*vifm-q_N*
 | 
					 | 
				
			||||||
vifm-q_Q	vifm-help.txt	/*vifm-q_Q*
 | 
					 | 
				
			||||||
vifm-q_R	vifm-help.txt	/*vifm-q_R*
 | 
					 | 
				
			||||||
vifm-q_SHIFT-Tab	vifm-help.txt	/*vifm-q_SHIFT-Tab*
 | 
					 | 
				
			||||||
vifm-q_Space	vifm-help.txt	/*vifm-q_Space*
 | 
					 | 
				
			||||||
vifm-q_Tab	vifm-help.txt	/*vifm-q_Tab*
 | 
					 | 
				
			||||||
vifm-q_ZZ	vifm-help.txt	/*vifm-q_ZZ*
 | 
					 | 
				
			||||||
vifm-q_a	vifm-help.txt	/*vifm-q_a*
 | 
					 | 
				
			||||||
vifm-q_b	vifm-help.txt	/*vifm-q_b*
 | 
					 | 
				
			||||||
vifm-q_d	vifm-help.txt	/*vifm-q_d*
 | 
					 | 
				
			||||||
vifm-q_e	vifm-help.txt	/*vifm-q_e*
 | 
					 | 
				
			||||||
vifm-q_f	vifm-help.txt	/*vifm-q_f*
 | 
					 | 
				
			||||||
vifm-q_g	vifm-help.txt	/*vifm-q_g*
 | 
					 | 
				
			||||||
vifm-q_i	vifm-help.txt	/*vifm-q_i*
 | 
					 | 
				
			||||||
vifm-q_j	vifm-help.txt	/*vifm-q_j*
 | 
					 | 
				
			||||||
vifm-q_k	vifm-help.txt	/*vifm-q_k*
 | 
					 | 
				
			||||||
vifm-q_n	vifm-help.txt	/*vifm-q_n*
 | 
					 | 
				
			||||||
vifm-q_p	vifm-help.txt	/*vifm-q_p*
 | 
					 | 
				
			||||||
vifm-q_q	vifm-help.txt	/*vifm-q_q*
 | 
					 | 
				
			||||||
vifm-q_r	vifm-help.txt	/*vifm-q_r*
 | 
					 | 
				
			||||||
vifm-q_u	vifm-help.txt	/*vifm-q_u*
 | 
					 | 
				
			||||||
vifm-q_v	vifm-help.txt	/*vifm-q_v*
 | 
					 | 
				
			||||||
vifm-q_w	vifm-help.txt	/*vifm-q_w*
 | 
					 | 
				
			||||||
vifm-q_y	vifm-help.txt	/*vifm-q_y*
 | 
					 | 
				
			||||||
vifm-q_z	vifm-help.txt	/*vifm-q_z*
 | 
					 | 
				
			||||||
vifm-ranges	vifm-help.txt	/*vifm-ranges*
 | 
					 | 
				
			||||||
vifm-regexp	vifm-help.txt	/*vifm-regexp*
 | 
					 | 
				
			||||||
vifm-registers	vifm-help.txt	/*vifm-registers*
 | 
					 | 
				
			||||||
vifm-reserved	vifm-help.txt	/*vifm-reserved*
 | 
					 | 
				
			||||||
vifm-rl	vifm-help.txt	/*vifm-rl*
 | 
					 | 
				
			||||||
vifm-scripts	vifm-help.txt	/*vifm-scripts*
 | 
					 | 
				
			||||||
vifm-see-also	vifm-help.txt	/*vifm-see-also*
 | 
					 | 
				
			||||||
vifm-selection	vifm-help.txt	/*vifm-selection*
 | 
					 | 
				
			||||||
vifm-selectors	vifm-help.txt	/*vifm-selectors*
 | 
					 | 
				
			||||||
vifm-servername-variable	vifm-help.txt	/*vifm-servername-variable*
 | 
					 | 
				
			||||||
vifm-session-variable	vifm-help.txt	/*vifm-session-variable*
 | 
					 | 
				
			||||||
vifm-sessions	vifm-help.txt	/*vifm-sessions*
 | 
					 | 
				
			||||||
vifm-set-options	vifm-help.txt	/*vifm-set-options*
 | 
					 | 
				
			||||||
vifm-skip-param	vifm-help.txt	/*vifm-skip-param*
 | 
					 | 
				
			||||||
vifm-startup	vifm-help.txt	/*vifm-startup*
 | 
					 | 
				
			||||||
vifm-system()	vifm-help.txt	/*vifm-system()*
 | 
					 | 
				
			||||||
vifm-t	vifm-help.txt	/*vifm-t*
 | 
					 | 
				
			||||||
vifm-tabpagenr()	vifm-help.txt	/*vifm-tabpagenr()*
 | 
					 | 
				
			||||||
vifm-term()	vifm-help.txt	/*vifm-term()*
 | 
					 | 
				
			||||||
vifm-to-l	vifm-help.txt	/*vifm-to-l*
 | 
					 | 
				
			||||||
vifm-to-p	vifm-help.txt	/*vifm-to-p*
 | 
					 | 
				
			||||||
vifm-to-r	vifm-help.txt	/*vifm-to-r*
 | 
					 | 
				
			||||||
vifm-to-s	vifm-help.txt	/*vifm-to-s*
 | 
					 | 
				
			||||||
vifm-to-u	vifm-help.txt	/*vifm-to-u*
 | 
					 | 
				
			||||||
vifm-to-v	vifm-help.txt	/*vifm-to-v*
 | 
					 | 
				
			||||||
vifm-trash	vifm-help.txt	/*vifm-trash*
 | 
					 | 
				
			||||||
vifm-u	vifm-help.txt	/*vifm-u*
 | 
					 | 
				
			||||||
vifm-v	vifm-help.txt	/*vifm-v*
 | 
					 | 
				
			||||||
vifm-v:count	vifm-help.txt	/*vifm-v:count*
 | 
					 | 
				
			||||||
vifm-v:count1	vifm-help.txt	/*vifm-v:count1*
 | 
					 | 
				
			||||||
vifm-v:jobcount	vifm-help.txt	/*vifm-v:jobcount*
 | 
					 | 
				
			||||||
vifm-v:servername	vifm-help.txt	/*vifm-v:servername*
 | 
					 | 
				
			||||||
vifm-v:session	vifm-help.txt	/*vifm-v:session*
 | 
					 | 
				
			||||||
vifm-v_:	vifm-help.txt	/*vifm-v_:*
 | 
					 | 
				
			||||||
vifm-v_CTRL-C	vifm-help.txt	/*vifm-v_CTRL-C*
 | 
					 | 
				
			||||||
vifm-v_CTRL-G	vifm-help.txt	/*vifm-v_CTRL-G*
 | 
					 | 
				
			||||||
vifm-v_Enter	vifm-help.txt	/*vifm-v_Enter*
 | 
					 | 
				
			||||||
vifm-v_Escape	vifm-help.txt	/*vifm-v_Escape*
 | 
					 | 
				
			||||||
vifm-v_O	vifm-help.txt	/*vifm-v_O*
 | 
					 | 
				
			||||||
vifm-v_U	vifm-help.txt	/*vifm-v_U*
 | 
					 | 
				
			||||||
vifm-v_V	vifm-help.txt	/*vifm-v_V*
 | 
					 | 
				
			||||||
vifm-v_av	vifm-help.txt	/*vifm-v_av*
 | 
					 | 
				
			||||||
vifm-v_cl	vifm-help.txt	/*vifm-v_cl*
 | 
					 | 
				
			||||||
vifm-v_cw	vifm-help.txt	/*vifm-v_cw*
 | 
					 | 
				
			||||||
vifm-v_gU	vifm-help.txt	/*vifm-v_gU*
 | 
					 | 
				
			||||||
vifm-v_gu	vifm-help.txt	/*vifm-v_gu*
 | 
					 | 
				
			||||||
vifm-v_gv	vifm-help.txt	/*vifm-v_gv*
 | 
					 | 
				
			||||||
vifm-v_o	vifm-help.txt	/*vifm-v_o*
 | 
					 | 
				
			||||||
vifm-v_u	vifm-help.txt	/*vifm-v_u*
 | 
					 | 
				
			||||||
vifm-v_v	vifm-help.txt	/*vifm-v_v*
 | 
					 | 
				
			||||||
vifm-view	vifm-help.txt	/*vifm-view*
 | 
					 | 
				
			||||||
vifm-view-look	vifm-help.txt	/*vifm-view-look*
 | 
					 | 
				
			||||||
vifm-vifminfo	vifm-help.txt	/*vifm-vifminfo*
 | 
					 | 
				
			||||||
vifm-vifmrc	vifm-help.txt	/*vifm-vifmrc*
 | 
					 | 
				
			||||||
vifm-visual	vifm-help.txt	/*vifm-visual*
 | 
					 | 
				
			||||||
vifm-y	vifm-help.txt	/*vifm-y*
 | 
					 | 
				
			||||||
vifm-yy	vifm-help.txt	/*vifm-yy*
 | 
					 | 
				
			||||||
vifm-zM	vifm-help.txt	/*vifm-zM*
 | 
					 | 
				
			||||||
vifm-zO	vifm-help.txt	/*vifm-zO*
 | 
					 | 
				
			||||||
vifm-zR	vifm-help.txt	/*vifm-zR*
 | 
					 | 
				
			||||||
vifm-za	vifm-help.txt	/*vifm-za*
 | 
					 | 
				
			||||||
vifm-zb	vifm-help.txt	/*vifm-zb*
 | 
					 | 
				
			||||||
vifm-zd	vifm-help.txt	/*vifm-zd*
 | 
					 | 
				
			||||||
vifm-zf	vifm-help.txt	/*vifm-zf*
 | 
					 | 
				
			||||||
vifm-zj	vifm-help.txt	/*vifm-zj*
 | 
					 | 
				
			||||||
vifm-zk	vifm-help.txt	/*vifm-zk*
 | 
					 | 
				
			||||||
vifm-zm	vifm-help.txt	/*vifm-zm*
 | 
					 | 
				
			||||||
vifm-zo	vifm-help.txt	/*vifm-zo*
 | 
					 | 
				
			||||||
vifm-zr	vifm-help.txt	/*vifm-zr*
 | 
					 | 
				
			||||||
vifm-zt	vifm-help.txt	/*vifm-zt*
 | 
					 | 
				
			||||||
vifm-zx	vifm-help.txt	/*vifm-zx*
 | 
					 | 
				
			||||||
vifm-zz	vifm-help.txt	/*vifm-zz*
 | 
					 | 
				
			||||||
vifm-{	vifm-help.txt	/*vifm-{*
 | 
					 | 
				
			||||||
vifm-}	vifm-help.txt	/*vifm-}*
 | 
					 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,373 +0,0 @@
 | 
				
			|||||||
"" VIFM Config file / 2023-03-16 / Jan Andrle
 | 
					 | 
				
			||||||
"" #region B – Bookmarks
 | 
					 | 
				
			||||||
	if !has('win')
 | 
					 | 
				
			||||||
		:bmark! "~/" home
 | 
					 | 
				
			||||||
		:bmark! "~/Stažené/" downloads
 | 
					 | 
				
			||||||
		:bmark! "~/Dokumenty/" documents
 | 
					 | 
				
			||||||
		:bmark! "~/Dokumenty/Projekty/" projects
 | 
					 | 
				
			||||||
		:bmark! "~/Vzdálené/GitHub/" git github
 | 
					 | 
				
			||||||
		:bmark! "~/Vzdálené/ftp/" ftp
 | 
					 | 
				
			||||||
		:bmark! "~/Vzdálené/OneDrive" onedrive
 | 
					 | 
				
			||||||
		:bmark! "~/.config/vifm/" vifm
 | 
					 | 
				
			||||||
		:bmark! "~/.chatgpt/notes" chatgpt-notes
 | 
					 | 
				
			||||||
		:bmark! "/media/jaandrle/" volumes
 | 
					 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
		:bmark! "~/" home
 | 
					 | 
				
			||||||
		:bmark! "C:/Projekty/" projects cordova
 | 
					 | 
				
			||||||
		:bmark! "~/Documents/GitHub/" projects git github
 | 
					 | 
				
			||||||
		:bmark! "y:/" qnap
 | 
					 | 
				
			||||||
		:bmark! "y:/DHL/" qnap dhl
 | 
					 | 
				
			||||||
		:bmark! "~/Downloads/" downloads
 | 
					 | 
				
			||||||
		:bmark! "~/Downloads/FTPtemp/" ftp temp
 | 
					 | 
				
			||||||
		:bmark! "~/AppData/Roaming/Vifm/" vifm
 | 
					 | 
				
			||||||
	endif
 | 
					 | 
				
			||||||
	mark b ~/bin/
 | 
					 | 
				
			||||||
	mark h ~/
 | 
					 | 
				
			||||||
"" #endregion B
 | 
					 | 
				
			||||||
"" #region G – General
 | 
					 | 
				
			||||||
														" set vicmd=elvis\ -G\ termcap | " set vicmd=vile
 | 
					 | 
				
			||||||
	set vicmd=vim
 | 
					 | 
				
			||||||
	"set vimhelp
 | 
					 | 
				
			||||||
	command! README :!vim ~/Dokumenty/GitHub/dotfiles/vifm/README.md
 | 
					 | 
				
			||||||
	command! Help :!vim ~/.config/vifm/vifm-help.txt
 | 
					 | 
				
			||||||
	map <f1> :Help<cr>
 | 
					 | 
				
			||||||
	cabbrev help Help
 | 
					 | 
				
			||||||
	if !has('win')
 | 
					 | 
				
			||||||
		set fusehome=/tmp/vifm_FUSE
 | 
					 | 
				
			||||||
		set slowfs=curlftpfs
 | 
					 | 
				
			||||||
	endif
 | 
					 | 
				
			||||||
	set syscalls norunexec
 | 
					 | 
				
			||||||
														" Automatically resolve symbolic links on l or Enter.
 | 
					 | 
				
			||||||
	set nofollowlinks
 | 
					 | 
				
			||||||
	set trash
 | 
					 | 
				
			||||||
	nmap dd :!trash %"f<cr>
 | 
					 | 
				
			||||||
	nmap d? :exe "!clear && echo 'Native system trash (`trash-cli`): use `trash`|`trash-empty`|`trash-list`|`trash-put`|`trash-restore`|`trash-rm`' && trash-list | sort -r" | shell<cr>
 | 
					 | 
				
			||||||
	set history=100 undolevels=100
 | 
					 | 
				
			||||||
	" What should be saved automatically between vifm sessions.  Drop "savedirs"
 | 
					 | 
				
			||||||
	" value if you don't want vifm to remember last visited directories for you.
 | 
					 | 
				
			||||||
	set vifminfo=dhistory,savedirs,chistory,state,tui,shistory,
 | 
					 | 
				
			||||||
		\phistory,fhistory,dirstack,registers,bookmarks,bmarks
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	cmap  <c-b>
 | 
					 | 
				
			||||||
	cmap  <c-f>
 | 
					 | 
				
			||||||
	nmap ; :
 | 
					 | 
				
			||||||
	nmap š <tab>
 | 
					 | 
				
			||||||
	nnoremap <c-h> :history<cr>
 | 
					 | 
				
			||||||
	nnoremap \= :filter !{}<left><left>
 | 
					 | 
				
			||||||
	" Open console in current directory
 | 
					 | 
				
			||||||
	if !has('win')
 | 
					 | 
				
			||||||
		nnoremap Ot :!(exo-open --launch TerminalEmulator --working-directory %d > /dev/null 2>&1) &<cr>
 | 
					 | 
				
			||||||
		nnoremap Ov :!(exo-open --launch TerminalEmulator --working-directory %d -- -e "vifm ." > /dev/null 2>&1) &<cr>
 | 
					 | 
				
			||||||
		nnoremap OV :!vim<cr>
 | 
					 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
		nnoremap Ot :!start "[Vifm] PowerShell %d" powershell.exe -c "powershell.exe -NoExit -Command Set-Location -LiteralPath '%d'"<cr>
 | 
					 | 
				
			||||||
	endif
 | 
					 | 
				
			||||||
"" #endregion G
 | 
					 | 
				
			||||||
"" #region AD – Apperance/Default
 | 
					 | 
				
			||||||
	set quickview
 | 
					 | 
				
			||||||
	command! SetView :view
 | 
					 | 
				
			||||||
	set dotfiles
 | 
					 | 
				
			||||||
	colorscheme codedark
 | 
					 | 
				
			||||||
	set wildmenu wildstyle=popup
 | 
					 | 
				
			||||||
	set suggestoptions=normal,visual,view,otherpane,keys,foldsubkeys,marks,registers
 | 
					 | 
				
			||||||
	set ignorecase smartcase incsearch
 | 
					 | 
				
			||||||
	set scrolloff=4
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	highlight User1 cterm=italic
 | 
					 | 
				
			||||||
	set statusline=" %-E  %-d  %-A	 %1*»%-z«%* %= %{&sort} "
 | 
					 | 
				
			||||||
																	" hide side borders + use Unicode ellipsis
 | 
					 | 
				
			||||||
	set tuioptions-=s
 | 
					 | 
				
			||||||
	if $TERM != 'linux' | set tuioptions+=u | endif
 | 
					 | 
				
			||||||
	" change appearance of middle border
 | 
					 | 
				
			||||||
	" set fillchars=vborder:·
 | 
					 | 
				
			||||||
	if has('win')
 | 
					 | 
				
			||||||
		set columns=97
 | 
					 | 
				
			||||||
		nnoremap <c-L>c :set columns=97<cr>
 | 
					 | 
				
			||||||
		map <c-L>1 33<c-W>|
 | 
					 | 
				
			||||||
		map <c-L>2 49<c-W>|
 | 
					 | 
				
			||||||
		map <c-L>3 66<c-W>|
 | 
					 | 
				
			||||||
	endif
 | 
					 | 
				
			||||||
"" #endregion AD
 | 
					 | 
				
			||||||
"" #region AT – Apperance/Texts
 | 
					 | 
				
			||||||
																	" Use KiB, MiB, ... instead of KB, MB, ...
 | 
					 | 
				
			||||||
	set noiec
 | 
					 | 
				
			||||||
	set tabstop=2
 | 
					 | 
				
			||||||
	set timefmt=%y-%m-%dT%H:%M
 | 
					 | 
				
			||||||
									" Customize view columns a bit (enable ellipsis for truncated file names)
 | 
					 | 
				
			||||||
	set viewcolumns=-{root}..,5.4{ext},-6{}
 | 
					 | 
				
			||||||
	command! SetViewColumnsDefault :set viewcolumns=-{root}..,5.4{ext},-6{}
 | 
					 | 
				
			||||||
	command! SetViewColumnsShort :set viewcolumns=-{name}..,{}
 | 
					 | 
				
			||||||
	command! SetWrap :set wrap!
 | 
					 | 
				
			||||||
"" #endregion AT
 | 
					 | 
				
			||||||
"" #region AS – Apperance/Sorting+Numbers
 | 
					 | 
				
			||||||
	set sortnumbers sort=+iname
 | 
					 | 
				
			||||||
	command! SetSortAll :sort
 | 
					 | 
				
			||||||
	command! SetSort
 | 
					 | 
				
			||||||
			\ :if &sort == '-size,+name'
 | 
					 | 
				
			||||||
			\ |    set sort=-mtime
 | 
					 | 
				
			||||||
			\ |    echo 'Sorted by modification date (from latest)'
 | 
					 | 
				
			||||||
			\ |elseif &sort == '-size,+iname'
 | 
					 | 
				
			||||||
			\ |    set sort=-mtime
 | 
					 | 
				
			||||||
			\ |    echo 'Sorted by modification date (from latest)'
 | 
					 | 
				
			||||||
			\ |elseif &sort == '+iname'
 | 
					 | 
				
			||||||
			\ |    set sort=-size
 | 
					 | 
				
			||||||
			\ |    echo 'Sorted by size'
 | 
					 | 
				
			||||||
			\ |else
 | 
					 | 
				
			||||||
			\ |    set sort=+iname
 | 
					 | 
				
			||||||
			\ |    echo 'Sorted by name'
 | 
					 | 
				
			||||||
			\ |endif
 | 
					 | 
				
			||||||
	set number
 | 
					 | 
				
			||||||
	command! SetNumber
 | 
					 | 
				
			||||||
			\ :if &relativenumber
 | 
					 | 
				
			||||||
			\ |    set norelativenumber
 | 
					 | 
				
			||||||
			\ |    set number
 | 
					 | 
				
			||||||
			\ |    echo 'Numbers showned'
 | 
					 | 
				
			||||||
			\ |elseif &number
 | 
					 | 
				
			||||||
			\ |    set nonumber
 | 
					 | 
				
			||||||
			\ |    echo 'No Numbers'
 | 
					 | 
				
			||||||
			\ |else
 | 
					 | 
				
			||||||
			\ |    set relativenumber
 | 
					 | 
				
			||||||
			\ |    echo 'Relative numbers showned'
 | 
					 | 
				
			||||||
			\ |endif
 | 
					 | 
				
			||||||
"" #endregion AS
 | 
					 | 
				
			||||||
"" #region C – Commands
 | 
					 | 
				
			||||||
	cnoremap <c-b> <a-b>
 | 
					 | 
				
			||||||
	cnoremap <c-f> <a-f>
 | 
					 | 
				
			||||||
	cnoremap <> <><left>
 | 
					 | 
				
			||||||
	cnoremap () ()<left>
 | 
					 | 
				
			||||||
	cnoremap {} {}<left>
 | 
					 | 
				
			||||||
	cnoremap "" ""<left>
 | 
					 | 
				
			||||||
	cnoremap '' ''<left>
 | 
					 | 
				
			||||||
	" #region :com[mand][!] command_name action
 | 
					 | 
				
			||||||
	" The following macros can be used in a command
 | 
					 | 
				
			||||||
	" %a is replaced with the user arguments.
 | 
					 | 
				
			||||||
	" %c the current file under the cursor.
 | 
					 | 
				
			||||||
	" %C the current file under the cursor in the other directory.
 | 
					 | 
				
			||||||
	" %f the current selected file, or files.
 | 
					 | 
				
			||||||
	" %F the current selected file, or files in the other directory.
 | 
					 | 
				
			||||||
	" %b same as %f %F.
 | 
					 | 
				
			||||||
	" %d the current directory name.
 | 
					 | 
				
			||||||
	" %D the other window directory name.
 | 
					 | 
				
			||||||
	" %m run the command in a menu window
 | 
					 | 
				
			||||||
	" #endregion
 | 
					 | 
				
			||||||
	if has('win')
 | 
					 | 
				
			||||||
		command! meld "C:\Program Files (x86)\Meld\Meld.exe" %"f %"F &
 | 
					 | 
				
			||||||
		command! zipAll powershell Compress-Archive -Path %"c/* -CompressionLevel Fastest -DestinationPath %c:r.zip
 | 
					 | 
				
			||||||
		command! isrunnig %m tasklist /FI "IMAGENAME eq %a" 2>NUL |   find /I /N "%a"
 | 
					 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
		command! onedrive xfce4-terminal -x bash -c 'echo Microsoft Onedrive Log:; onedrive --synchronize &
 | 
					 | 
				
			||||||
		command! meld meld %"f %"F 2> /dev/null &
 | 
					 | 
				
			||||||
		command! zipAll zip -r "%c:r.zip" ./*
 | 
					 | 
				
			||||||
		command! terminal !(exo-open --launch TerminalEmulator > /dev/null 2>&1) &
 | 
					 | 
				
			||||||
		nmap \t :terminal<cr>
 | 
					 | 
				
			||||||
	endif
 | 
					 | 
				
			||||||
	if !has('win')
 | 
					 | 
				
			||||||
		command! volumes :cd /media/jaandrle/
 | 
					 | 
				
			||||||
	endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	command! df df -h %m 2> /dev/null
 | 
					 | 
				
			||||||
	command! diff vim -d %f %F
 | 
					 | 
				
			||||||
	command! vim vim %"f
 | 
					 | 
				
			||||||
	command! make !!make %a
 | 
					 | 
				
			||||||
	command! mkcd :mkdir %a | cd %a
 | 
					 | 
				
			||||||
	command! vgrep vim "+grep %a"
 | 
					 | 
				
			||||||
	command! reload :write | restart
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	command! run !! ./%f
 | 
					 | 
				
			||||||
	command! runGUI !! ./%f &
 | 
					 | 
				
			||||||
	nmap or :runGUI<cr>
 | 
					 | 
				
			||||||
	nmap oR :run<cr>
 | 
					 | 
				
			||||||
"" #endregion C
 | 
					 | 
				
			||||||
" #region F – Filetypes
 | 
					 | 
				
			||||||
	nnoremap ov :!vim %"f<cr>
 | 
					 | 
				
			||||||
	nnoremap oo :file &<cr>l
 | 
					 | 
				
			||||||
	nnoremap oO :file &<cr>/[#$]<cr>l
 | 
					 | 
				
			||||||
	nnoremap on :file &<cr>/xdg-open<cr>l
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	" #region Farch – Archives
 | 
					 | 
				
			||||||
		if has('win')
 | 
					 | 
				
			||||||
			fileviewer *.zip,*.jar,*.war,*.ear,*.oxt,
 | 
					 | 
				
			||||||
			\*.docx,*.pptx,*.xmlx,*.epub
 | 
					 | 
				
			||||||
				\ tar -tf %c
 | 
					 | 
				
			||||||
		else
 | 
					 | 
				
			||||||
			fileviewer *.zip,*.jar,*.war,*.ear,*.oxt,
 | 
					 | 
				
			||||||
			\*.docx,*.pptx,*.xmlx,*.epub
 | 
					 | 
				
			||||||
				\ zip -sf %c
 | 
					 | 
				
			||||||
		endif
 | 
					 | 
				
			||||||
		filetype *.zip,*.jar,*.war,*.ear,*.oxt,*.apkg,
 | 
					 | 
				
			||||||
			\*.docx,*.pptx,*.xmlx,
 | 
					 | 
				
			||||||
			\*.epub,*.eml
 | 
					 | 
				
			||||||
				\ {Mount with fuse-zip}
 | 
					 | 
				
			||||||
				\ FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR,
 | 
					 | 
				
			||||||
				\ {View contents}
 | 
					 | 
				
			||||||
				\ zip -sf %c | less,
 | 
					 | 
				
			||||||
				\ {Extract here}
 | 
					 | 
				
			||||||
				\ §extract %"f
 | 
					 | 
				
			||||||
		filetype *.tar,*.tar.bz2,*.tbz2,*.tgz,*.tar.gz,*.tar.xz,*.txz
 | 
					 | 
				
			||||||
			\ {Mount with archivemount}
 | 
					 | 
				
			||||||
			\ FUSE_MOUNT|archivemount %SOURCE_FILE %DESTINATION_DIR,
 | 
					 | 
				
			||||||
			\ {Extract here}
 | 
					 | 
				
			||||||
			\ §extract %"f
 | 
					 | 
				
			||||||
		fileviewer *.tgz,*.tar.gz tar -tzf %c
 | 
					 | 
				
			||||||
		fileviewer *.tar.bz2,*.tbz2 tar -tjf %c
 | 
					 | 
				
			||||||
		fileviewer *.tar.txz,*.txz xz --list %c
 | 
					 | 
				
			||||||
		fileviewer *.tar tar -tf %c
 | 
					 | 
				
			||||||
		filetype *.rar {Mount with rar2fs}
 | 
					 | 
				
			||||||
			\ FUSE_MOUNT|rar2fs %SOURCE_FILE %DESTINATION_DIR,
 | 
					 | 
				
			||||||
			\ {Extract here}
 | 
					 | 
				
			||||||
			\ §extract %"f
 | 
					 | 
				
			||||||
		fileviewer *.rar unrar v %c
 | 
					 | 
				
			||||||
		filetype *.iso {Mount with fuseiso}
 | 
					 | 
				
			||||||
			\ FUSE_MOUNT|fuseiso %SOURCE_FILE %DESTINATION_DIR,
 | 
					 | 
				
			||||||
			\ {Extract here}
 | 
					 | 
				
			||||||
			\ §extract %"f
 | 
					 | 
				
			||||||
		filetype *.7z {Mount with fuse-7z}
 | 
					 | 
				
			||||||
			\ FUSE_MOUNT|fuse-7z %SOURCE_FILE %DESTINATION_DIR,
 | 
					 | 
				
			||||||
			\ {Extract here}
 | 
					 | 
				
			||||||
			\ §extract %"f
 | 
					 | 
				
			||||||
		fileviewer *.7z 7z l %c
 | 
					 | 
				
			||||||
	" #endregion Farch
 | 
					 | 
				
			||||||
	filetype *.ftp {Mount with curlftpfs}
 | 
					 | 
				
			||||||
		\ FUSE_MOUNT2|curlftpfs -o disable_eprt %PARAM %DESTINATION_DIR %FOREGROUND %CLEAR,
 | 
					 | 
				
			||||||
		"\ FUSE_MOUNT2|curlftpfs -o ftp_port=-,,disable_eprt %PARAM %DESTINATION_DIR %FOREGROUND %CLEAR,
 | 
					 | 
				
			||||||
	filetype *.ssh {Mount with sshfs}
 | 
					 | 
				
			||||||
		\ FUSE_MOUNT2|sshfs %PARAM %DESTINATION_DIR %FOREGROUND,
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	if has('win')
 | 
					 | 
				
			||||||
		" filetype * start, explorer
 | 
					 | 
				
			||||||
		filetype *
 | 
					 | 
				
			||||||
			\ {File Explorer}
 | 
					 | 
				
			||||||
				\ explorer %"c:p &,
 | 
					 | 
				
			||||||
			\ {Total Commander}
 | 
					 | 
				
			||||||
				\ "C:\Program Files (x86)\totalcmd\TOTALCMD.EXE" /O %"c:p &,
 | 
					 | 
				
			||||||
			\ {Notepad++}
 | 
					 | 
				
			||||||
				\ "C:\Program Files\Notepad++\notepad++.exe" %"c:p &
 | 
					 | 
				
			||||||
		filextype *.txt {Open with Notepad} start notepad.exe %f
 | 
					 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
		filetype * {Native Open} xdg-open > /dev/null 2>&1 &
 | 
					 | 
				
			||||||
	endif
 | 
					 | 
				
			||||||
	" #region Futils – Utils (eg. hashs checks)
 | 
					 | 
				
			||||||
		filetype *.torrent ktorrent %f &
 | 
					 | 
				
			||||||
		fileviewer *.torrent dumptorrent -v %c
 | 
					 | 
				
			||||||
		" Object
 | 
					 | 
				
			||||||
		filetype *.o nm %f | less
 | 
					 | 
				
			||||||
		" Man page
 | 
					 | 
				
			||||||
		filetype *.[1-8] man ./%c
 | 
					 | 
				
			||||||
		fileviewer *.[1-8] man ./%c | col -b
 | 
					 | 
				
			||||||
		" MD5 SHA1 SHA256 SHA512 GPG signature
 | 
					 | 
				
			||||||
		filetype *.md5 {Check MD5 hash sum} 
 | 
					 | 
				
			||||||
			\ md5sum -c %f %S,
 | 
					 | 
				
			||||||
		filetype *.sha1 {Check SHA1 hash sum}
 | 
					 | 
				
			||||||
			\ sha1sum -c %f %S,
 | 
					 | 
				
			||||||
		filetype *.sha256 {Check SHA256 hash sum}
 | 
					 | 
				
			||||||
			\ sha256sum -c %f %S,
 | 
					 | 
				
			||||||
		filetype *.sha512 {Check SHA512 hash sum}
 | 
					 | 
				
			||||||
			\ sha512sum -c %f %S,
 | 
					 | 
				
			||||||
		filetype *.asc {Check signature}
 | 
					 | 
				
			||||||
			\ !!gpg --verify %c,
 | 
					 | 
				
			||||||
	" #endregion Futils
 | 
					 | 
				
			||||||
	" #region FmediaBin
 | 
					 | 
				
			||||||
		if has('win')
 | 
					 | 
				
			||||||
			fileviewer 
 | 
					 | 
				
			||||||
				\*.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm,
 | 
					 | 
				
			||||||
				\*.exe,*.epub,*.doc,*.docx
 | 
					 | 
				
			||||||
				\*.wav,*.mp3,*.flac,*.m4a,*.wma,*.ape,*.ac3,*.og[agx],*.spx,*.opus,
 | 
					 | 
				
			||||||
				\*.avi,*.mp4,*.wmv,*.dat,*.3gp,*.ogv,*.mkv,*.mpg,*.mpeg,*.vob,
 | 
					 | 
				
			||||||
				\*.fl[icv],*.m2v,*.mov,*.webm,*.ts,*.mts,*.m4v,*.r[am],*.qt,*.divx,
 | 
					 | 
				
			||||||
				\*.as[fx]
 | 
					 | 
				
			||||||
			"	 \ powershell New-Object System.IO.FileInfo(\"%c:p\")
 | 
					 | 
				
			||||||
				\ forfiles /M %"c /C "cmd /c (echo @path && echo . . . && echo Last modification: @fdate @ftime)" && echo . . . && type %"c
 | 
					 | 
				
			||||||
		else
 | 
					 | 
				
			||||||
			fileviewer
 | 
					 | 
				
			||||||
				\*.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm,
 | 
					 | 
				
			||||||
				\ env -u COLORTERM viu-image-viewer.viu %"c -w %pw -t &&
 | 
					 | 
				
			||||||
				\ echo $(file -b %f)
 | 
					 | 
				
			||||||
				\ %pc
 | 
					 | 
				
			||||||
			fileviewer 
 | 
					 | 
				
			||||||
				\*.exe,*.doc,
 | 
					 | 
				
			||||||
				\*.svg,
 | 
					 | 
				
			||||||
				\ echo $(file -b %f) && echo — && echo $(ls -lh %f)&& echo — && echo $(head %f | tr -d '\0')
 | 
					 | 
				
			||||||
			fileviewer *.pdf pdftotext -nopgbrk %c -
 | 
					 | 
				
			||||||
			fileviewer <video/*>,<audio/*> mediainfo %c
 | 
					 | 
				
			||||||
		endif
 | 
					 | 
				
			||||||
	" #endregion FmediaBin
 | 
					 | 
				
			||||||
	fileviewer .*/,*/ tree %c -L 3 &
 | 
					 | 
				
			||||||
	fileviewer ../ tree %c -L 1 &
 | 
					 | 
				
			||||||
	fileviewer	 *.js,*.mjs,*.ts,*.sh,
 | 
					 | 
				
			||||||
				\*.css,*.scss,
 | 
					 | 
				
			||||||
				\*.php,
 | 
					 | 
				
			||||||
				\*.md,*.html,
 | 
					 | 
				
			||||||
				\*.json,*.xml
 | 
					 | 
				
			||||||
				\ env -uCOLORTERM bat --color always --theme 'Visual Studio Dark+' --wrap never --pager never --tabs 2 %c -p
 | 
					 | 
				
			||||||
	fileviewer <text/x-*>,<application/*> env -uCOLORTERM bat --color always --theme 'Visual Studio Dark+' --wrap never --pager never --tabs 2 %c -p
 | 
					 | 
				
			||||||
" #endregion F
 | 
					 | 
				
			||||||
" #region S – sS keys
 | 
					 | 
				
			||||||
	nnoremap sf :file &
 | 
					 | 
				
			||||||
	nnoremap sjj :cd ./
 | 
					 | 
				
			||||||
	nnoremap sjh :cd ~/
 | 
					 | 
				
			||||||
	nnoremap sjg :cd ~/Vzdálené/GitHub/
 | 
					 | 
				
			||||||
	nnoremap sjp :cd ~/Dokumenty/Projekty/
 | 
					 | 
				
			||||||
	nnoremap sb :bmg
 | 
					 | 
				
			||||||
	nnoremap sS :Set
 | 
					 | 
				
			||||||
	nnoremap SS :<up><cr>
 | 
					 | 
				
			||||||
" #endregion S
 | 
					 | 
				
			||||||
" #region Y – Copy files/names/…
 | 
					 | 
				
			||||||
	nmap ycc :clone <cr>
 | 
					 | 
				
			||||||
																			" copy/move files to the opposite pane
 | 
					 | 
				
			||||||
	nmap yp :copy <cr>
 | 
					 | 
				
			||||||
	nmap yP :move <cr>
 | 
					 | 
				
			||||||
								" Interaction with system clipboard (yank directory path/curr.file path/filename)
 | 
					 | 
				
			||||||
	if has('win')
 | 
					 | 
				
			||||||
		nnoremap ycp :!echo %"d:gs!\!/! %i | clip<cr>:echo expand('%"d') "is yanked to clipboard"<cr>
 | 
					 | 
				
			||||||
		nnoremap ycf :!echo %"c:gs!\!/! %i | clip<cr>:echo expand('%"c:p') "is yanked to clipboard"<cr>
 | 
					 | 
				
			||||||
		nnoremap ycn :!echo %"c %i | clip<cr>:echo expand('%"c') "is yanked to clipboard"<cr>
 | 
					 | 
				
			||||||
	elseif executable('xclip')
 | 
					 | 
				
			||||||
		nnoremap ycd :!echo -n %d | xclip -selection clipboard	%i<cr>:echo expand('%"d') "is yanked to clipboard"<cr>
 | 
					 | 
				
			||||||
		nnoremap ycf :!echo -n %c:p | xclip -selection clipboard %i<cr>:echo expand('%"c:p') "is yanked to clipboard"<cr>
 | 
					 | 
				
			||||||
		nnoremap ycn :!echo -n %c | xclip -selection clipboard %i<cr>:echo expand('%"c') "is yanked to clipboard"<cr>
 | 
					 | 
				
			||||||
	elseif executable('xsel')
 | 
					 | 
				
			||||||
		nnoremap ycd :!echo -n %d | xsel --input --primary %i && echo -n %d | xsel --clipboard --input %i<cr>:echo expand('%"d') "is yanked to clipboard"<cr>
 | 
					 | 
				
			||||||
		nnoremap ycf :!echo -n %c:p | xsel --input --primary %i && echo -n %c:p | xsel --clipboard --input %i<cr>:echo expand('%"c:p') "is yanked to clipboard"<cr>
 | 
					 | 
				
			||||||
		nnoremap ycn :!echo -n %c | xsel --input --primary %i && echo -n %c | xsel --clipboard --input %i<cr>:echo expand('%"c') "is yanked to clipboard"<cr>
 | 
					 | 
				
			||||||
	endif
 | 
					 | 
				
			||||||
" #endregion Y
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
"" #region N – Notes
 | 
					 | 
				
			||||||
	"Filter-out build and temporary files
 | 
					 | 
				
			||||||
	"	 windo filter! /^.*\.(lo|o|d|class|py[co])$|.*~$/
 | 
					 | 
				
			||||||
	" Example of standard two-panel file managers mappings
 | 
					 | 
				
			||||||
	" nnoremap <f3> :!less %f<cr>
 | 
					 | 
				
			||||||
	" nnoremap <f4> :edit<cr>
 | 
					 | 
				
			||||||
	" nnoremap <f5> :copy<cr>
 | 
					 | 
				
			||||||
	" nnoremap <f6> :move<cr>
 | 
					 | 
				
			||||||
	" nnoremap <f7> :mkdir<space>
 | 
					 | 
				
			||||||
	" nnoremap <f8> :delete<cr>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	" ------------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	" Various customization examples
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	" Use ag (the silver searcher) instead of grep
 | 
					 | 
				
			||||||
	"
 | 
					 | 
				
			||||||
	" set grepprg=ag\ --line-numbers\ %i\ %a\ %s
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	" Add additional place to look for executables
 | 
					 | 
				
			||||||
	"
 | 
					 | 
				
			||||||
	" let $PATH = $HOME.'/bin/fuse:'.$PATH
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	" Block particular shortcut
 | 
					 | 
				
			||||||
	"
 | 
					 | 
				
			||||||
	" nnoremap <left> <nop>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	" Export IPC name of current instance as environment variable and use it to
 | 
					 | 
				
			||||||
	" communicate with the instance later.
 | 
					 | 
				
			||||||
	"
 | 
					 | 
				
			||||||
	" It can be used in some shell script that gets run from inside vifm, for
 | 
					 | 
				
			||||||
	" example, like this:
 | 
					 | 
				
			||||||
	"	  vifm --server-name "$VIFM_SERVER_NAME" --remote +"cd '$PWD'"
 | 
					 | 
				
			||||||
	"
 | 
					 | 
				
			||||||
	" let $VIFM_SERVER_NAME = v:servername
 | 
					 | 
				
			||||||
" #endregion N
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" vim: set filetype=vifm tabstop=4 shiftwidth=4 textwidth=250 noexpandtab :
 | 
					 | 
				
			||||||
" vim>60: set foldmethod=marker foldmarker=#region,#endregion :
 | 
					 | 
				
			||||||
							
								
								
									
										4
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							@@ -1,4 +0,0 @@
 | 
				
			|||||||
[submodule ".bash/complete-alias"]
 | 
					 | 
				
			||||||
	path = .bash/complete-alias
 | 
					 | 
				
			||||||
	url = git@github.com:cykerway/complete-alias.git
 | 
					 | 
				
			||||||
	branch = master
 | 
					 | 
				
			||||||
@@ -1,147 +0,0 @@
 | 
				
			|||||||
[ColorEffects:Disabled]
 | 
					 | 
				
			||||||
Color=56,56,56
 | 
					 | 
				
			||||||
ColorAmount=0
 | 
					 | 
				
			||||||
ColorEffect=0
 | 
					 | 
				
			||||||
ContrastAmount=0.65
 | 
					 | 
				
			||||||
ContrastEffect=1
 | 
					 | 
				
			||||||
IntensityAmount=0.1
 | 
					 | 
				
			||||||
IntensityEffect=2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[ColorEffects:Inactive]
 | 
					 | 
				
			||||||
ChangeSelectionColor=true
 | 
					 | 
				
			||||||
Color=112,111,110
 | 
					 | 
				
			||||||
ColorAmount=0.025
 | 
					 | 
				
			||||||
ColorEffect=2
 | 
					 | 
				
			||||||
ContrastAmount=0.1
 | 
					 | 
				
			||||||
ContrastEffect=2
 | 
					 | 
				
			||||||
Enable=false
 | 
					 | 
				
			||||||
IntensityAmount=0
 | 
					 | 
				
			||||||
IntensityEffect=0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:Button]
 | 
					 | 
				
			||||||
BackgroundAlternate=30,87,116
 | 
					 | 
				
			||||||
BackgroundNormal=49,54,59
 | 
					 | 
				
			||||||
DecorationFocus=61,174,233
 | 
					 | 
				
			||||||
DecorationHover=61,174,233
 | 
					 | 
				
			||||||
ForegroundActive=61,174,233
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=29,153,243
 | 
					 | 
				
			||||||
ForegroundNegative=218,68,83
 | 
					 | 
				
			||||||
ForegroundNeutral=246,116,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=39,174,96
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:Complementary]
 | 
					 | 
				
			||||||
BackgroundAlternate=30,87,116
 | 
					 | 
				
			||||||
BackgroundNormal=42,46,50
 | 
					 | 
				
			||||||
DecorationFocus=61,174,233
 | 
					 | 
				
			||||||
DecorationHover=61,174,233
 | 
					 | 
				
			||||||
ForegroundActive=61,174,233
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=29,153,243
 | 
					 | 
				
			||||||
ForegroundNegative=218,68,83
 | 
					 | 
				
			||||||
ForegroundNeutral=246,116,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=39,174,96
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:Header]
 | 
					 | 
				
			||||||
BackgroundAlternate=42,46,50
 | 
					 | 
				
			||||||
BackgroundNormal=49,54,59
 | 
					 | 
				
			||||||
DecorationFocus=61,174,233
 | 
					 | 
				
			||||||
DecorationHover=61,174,233
 | 
					 | 
				
			||||||
ForegroundActive=61,174,233
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=29,153,243
 | 
					 | 
				
			||||||
ForegroundNegative=218,68,83
 | 
					 | 
				
			||||||
ForegroundNeutral=246,116,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=39,174,96
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:Header][Inactive]
 | 
					 | 
				
			||||||
BackgroundAlternate=49,54,59
 | 
					 | 
				
			||||||
BackgroundNormal=42,46,50
 | 
					 | 
				
			||||||
DecorationFocus=61,174,233
 | 
					 | 
				
			||||||
DecorationHover=61,174,233
 | 
					 | 
				
			||||||
ForegroundActive=61,174,233
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=29,153,243
 | 
					 | 
				
			||||||
ForegroundNegative=218,68,83
 | 
					 | 
				
			||||||
ForegroundNeutral=246,116,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=39,174,96
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:Selection]
 | 
					 | 
				
			||||||
BackgroundAlternate=30,87,116
 | 
					 | 
				
			||||||
BackgroundNormal=61,174,233
 | 
					 | 
				
			||||||
DecorationFocus=61,174,233
 | 
					 | 
				
			||||||
DecorationHover=61,174,233
 | 
					 | 
				
			||||||
ForegroundActive=252,252,252
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=253,188,75
 | 
					 | 
				
			||||||
ForegroundNegative=176,55,69
 | 
					 | 
				
			||||||
ForegroundNeutral=198,92,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=23,104,57
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:Tooltip]
 | 
					 | 
				
			||||||
BackgroundAlternate=42,46,50
 | 
					 | 
				
			||||||
BackgroundNormal=49,54,59
 | 
					 | 
				
			||||||
DecorationFocus=61,174,233
 | 
					 | 
				
			||||||
DecorationHover=61,174,233
 | 
					 | 
				
			||||||
ForegroundActive=61,174,233
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=29,153,243
 | 
					 | 
				
			||||||
ForegroundNegative=218,68,83
 | 
					 | 
				
			||||||
ForegroundNeutral=246,116,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=39,174,96
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:View]
 | 
					 | 
				
			||||||
BackgroundAlternate=35,38,41
 | 
					 | 
				
			||||||
BackgroundNormal=27,30,32
 | 
					 | 
				
			||||||
DecorationFocus=61,174,233
 | 
					 | 
				
			||||||
DecorationHover=61,174,233
 | 
					 | 
				
			||||||
ForegroundActive=61,174,233
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=29,153,243
 | 
					 | 
				
			||||||
ForegroundNegative=218,68,83
 | 
					 | 
				
			||||||
ForegroundNeutral=246,116,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=39,174,96
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:Window]
 | 
					 | 
				
			||||||
BackgroundAlternate=49,54,59
 | 
					 | 
				
			||||||
BackgroundNormal=42,46,50
 | 
					 | 
				
			||||||
DecorationFocus=61,174,233
 | 
					 | 
				
			||||||
DecorationHover=61,174,233
 | 
					 | 
				
			||||||
ForegroundActive=61,174,233
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=29,153,243
 | 
					 | 
				
			||||||
ForegroundNegative=218,68,83
 | 
					 | 
				
			||||||
ForegroundNeutral=246,116,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=39,174,96
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[General]
 | 
					 | 
				
			||||||
ColorScheme=BreezeDark
 | 
					 | 
				
			||||||
Name=Breeze Tmavé (upraveno)
 | 
					 | 
				
			||||||
shadeSortColumn=true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[KDE]
 | 
					 | 
				
			||||||
contrast=7
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[WM]
 | 
					 | 
				
			||||||
activeBackground=49,54,59
 | 
					 | 
				
			||||||
activeBlend=252,252,252
 | 
					 | 
				
			||||||
activeForeground=252,252,252
 | 
					 | 
				
			||||||
inactiveBackground=42,46,50
 | 
					 | 
				
			||||||
inactiveBlend=161,169,177
 | 
					 | 
				
			||||||
inactiveForeground=161,169,177
 | 
					 | 
				
			||||||
@@ -1,162 +0,0 @@
 | 
				
			|||||||
[ColorEffects:Disabled]
 | 
					 | 
				
			||||||
Color=56,56,56
 | 
					 | 
				
			||||||
ColorAmount=0
 | 
					 | 
				
			||||||
ColorEffect=0
 | 
					 | 
				
			||||||
ContrastAmount=0.65
 | 
					 | 
				
			||||||
ContrastEffect=1
 | 
					 | 
				
			||||||
IntensityAmount=0.1
 | 
					 | 
				
			||||||
IntensityEffect=2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[ColorEffects:Inactive]
 | 
					 | 
				
			||||||
ChangeSelectionColor=true
 | 
					 | 
				
			||||||
Color=112,111,110
 | 
					 | 
				
			||||||
ColorAmount=0.025
 | 
					 | 
				
			||||||
ColorEffect=2
 | 
					 | 
				
			||||||
ContrastAmount=0.1
 | 
					 | 
				
			||||||
ContrastEffect=2
 | 
					 | 
				
			||||||
Enable=false
 | 
					 | 
				
			||||||
IntensityAmount=0
 | 
					 | 
				
			||||||
IntensityEffect=0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:Button]
 | 
					 | 
				
			||||||
BackgroundAlternate=30,87,116
 | 
					 | 
				
			||||||
BackgroundNormal=49,54,59
 | 
					 | 
				
			||||||
DecorationFocus=61,174,233
 | 
					 | 
				
			||||||
DecorationHover=61,174,233
 | 
					 | 
				
			||||||
ForegroundActive=61,174,233
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=29,153,243
 | 
					 | 
				
			||||||
ForegroundNegative=218,68,83
 | 
					 | 
				
			||||||
ForegroundNeutral=246,116,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=39,174,96
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:Complementary]
 | 
					 | 
				
			||||||
BackgroundAlternate=30,87,116
 | 
					 | 
				
			||||||
BackgroundNormal=42,46,50
 | 
					 | 
				
			||||||
DecorationFocus=61,174,233
 | 
					 | 
				
			||||||
DecorationHover=61,174,233
 | 
					 | 
				
			||||||
ForegroundActive=61,174,233
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=29,153,243
 | 
					 | 
				
			||||||
ForegroundNegative=218,68,83
 | 
					 | 
				
			||||||
ForegroundNeutral=246,116,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=39,174,96
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:Header]
 | 
					 | 
				
			||||||
BackgroundAlternate=42,46,50
 | 
					 | 
				
			||||||
BackgroundNormal=49,54,59
 | 
					 | 
				
			||||||
DecorationFocus=61,174,233
 | 
					 | 
				
			||||||
DecorationHover=61,174,233
 | 
					 | 
				
			||||||
ForegroundActive=61,174,233
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=29,153,243
 | 
					 | 
				
			||||||
ForegroundNegative=218,68,83
 | 
					 | 
				
			||||||
ForegroundNeutral=246,116,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=39,174,96
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:Header][Inactive]
 | 
					 | 
				
			||||||
BackgroundAlternate=49,54,59
 | 
					 | 
				
			||||||
BackgroundNormal=42,46,50
 | 
					 | 
				
			||||||
DecorationFocus=61,174,233
 | 
					 | 
				
			||||||
DecorationHover=61,174,233
 | 
					 | 
				
			||||||
ForegroundActive=61,174,233
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=29,153,243
 | 
					 | 
				
			||||||
ForegroundNegative=218,68,83
 | 
					 | 
				
			||||||
ForegroundNeutral=246,116,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=39,174,96
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:Selection]
 | 
					 | 
				
			||||||
BackgroundAlternate=30,87,116
 | 
					 | 
				
			||||||
BackgroundNormal=61,174,233
 | 
					 | 
				
			||||||
DecorationFocus=61,174,233
 | 
					 | 
				
			||||||
DecorationHover=61,174,233
 | 
					 | 
				
			||||||
ForegroundActive=252,252,252
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=253,188,75
 | 
					 | 
				
			||||||
ForegroundNegative=176,55,69
 | 
					 | 
				
			||||||
ForegroundNeutral=198,92,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=23,104,57
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:Tooltip]
 | 
					 | 
				
			||||||
BackgroundAlternate=42,46,50
 | 
					 | 
				
			||||||
BackgroundNormal=49,54,59
 | 
					 | 
				
			||||||
DecorationFocus=61,174,233
 | 
					 | 
				
			||||||
DecorationHover=61,174,233
 | 
					 | 
				
			||||||
ForegroundActive=61,174,233
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=29,153,243
 | 
					 | 
				
			||||||
ForegroundNegative=218,68,83
 | 
					 | 
				
			||||||
ForegroundNeutral=246,116,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=39,174,96
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:View]
 | 
					 | 
				
			||||||
BackgroundAlternate=35,38,41
 | 
					 | 
				
			||||||
BackgroundNormal=27,30,32
 | 
					 | 
				
			||||||
DecorationFocus=61,174,233
 | 
					 | 
				
			||||||
DecorationHover=61,174,233
 | 
					 | 
				
			||||||
ForegroundActive=61,174,233
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=29,153,243
 | 
					 | 
				
			||||||
ForegroundNegative=218,68,83
 | 
					 | 
				
			||||||
ForegroundNeutral=246,116,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=39,174,96
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:Window]
 | 
					 | 
				
			||||||
BackgroundAlternate=49,54,59
 | 
					 | 
				
			||||||
BackgroundNormal=42,46,50
 | 
					 | 
				
			||||||
DecorationFocus=61,174,233
 | 
					 | 
				
			||||||
DecorationHover=61,174,233
 | 
					 | 
				
			||||||
ForegroundActive=61,174,233
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=29,153,243
 | 
					 | 
				
			||||||
ForegroundNegative=218,68,83
 | 
					 | 
				
			||||||
ForegroundNeutral=246,116,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=39,174,96
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[General]
 | 
					 | 
				
			||||||
ColorScheme=BreezeDark
 | 
					 | 
				
			||||||
Name[cs_CZ]=Breeze Tmavé
 | 
					 | 
				
			||||||
Name=Breeze Dark
 | 
					 | 
				
			||||||
font=Ubuntu Condensed,10.5,-1,5,50,0,0,0,0,0
 | 
					 | 
				
			||||||
menuFont=Ubuntu,10,-1,5,50,0,0,0,0,0
 | 
					 | 
				
			||||||
shadeSortColumn=true
 | 
					 | 
				
			||||||
smallestReadableFont=Ubuntu,9,-1,5,50,0,0,0,0,0
 | 
					 | 
				
			||||||
toolBarFont=Ubuntu,10,-1,5,50,0,0,0,0,0
 | 
					 | 
				
			||||||
widgetStyle=Breeze
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Icons]
 | 
					 | 
				
			||||||
Theme=breeze-dark
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[KDE]
 | 
					 | 
				
			||||||
ShowIconsInMenuItems=true
 | 
					 | 
				
			||||||
ShowIconsOnPushButtons=true
 | 
					 | 
				
			||||||
contrast=4
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Toolbar style]
 | 
					 | 
				
			||||||
ToolButtonStyle=TextBesideIcon
 | 
					 | 
				
			||||||
ToolButtonStyleOtherToolbars=TextBesideIcon
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[WM]
 | 
					 | 
				
			||||||
activeBackground=49,54,59
 | 
					 | 
				
			||||||
activeBlend=252,252,252
 | 
					 | 
				
			||||||
activeForeground=252,252,252
 | 
					 | 
				
			||||||
inactiveBackground=42,46,50
 | 
					 | 
				
			||||||
inactiveBlend=161,169,177
 | 
					 | 
				
			||||||
inactiveForeground=161,169,177
 | 
					 | 
				
			||||||
@@ -1,147 +0,0 @@
 | 
				
			|||||||
[ColorEffects:Disabled]
 | 
					 | 
				
			||||||
Color=56,56,56
 | 
					 | 
				
			||||||
ColorAmount=0
 | 
					 | 
				
			||||||
ColorEffect=0
 | 
					 | 
				
			||||||
ContrastAmount=0.65
 | 
					 | 
				
			||||||
ContrastEffect=1
 | 
					 | 
				
			||||||
IntensityAmount=0.1
 | 
					 | 
				
			||||||
IntensityEffect=2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[ColorEffects:Inactive]
 | 
					 | 
				
			||||||
ChangeSelectionColor=true
 | 
					 | 
				
			||||||
Color=112,111,110
 | 
					 | 
				
			||||||
ColorAmount=0.025
 | 
					 | 
				
			||||||
ColorEffect=2
 | 
					 | 
				
			||||||
ContrastAmount=0.1
 | 
					 | 
				
			||||||
ContrastEffect=2
 | 
					 | 
				
			||||||
Enable=false
 | 
					 | 
				
			||||||
IntensityAmount=0
 | 
					 | 
				
			||||||
IntensityEffect=0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:Button]
 | 
					 | 
				
			||||||
BackgroundAlternate=30,87,116
 | 
					 | 
				
			||||||
BackgroundNormal=49,54,59
 | 
					 | 
				
			||||||
DecorationFocus=240,84,76
 | 
					 | 
				
			||||||
DecorationHover=240,84,76
 | 
					 | 
				
			||||||
ForegroundActive=61,174,233
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=29,153,243
 | 
					 | 
				
			||||||
ForegroundNegative=218,68,83
 | 
					 | 
				
			||||||
ForegroundNeutral=246,116,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=39,174,96
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:Complementary]
 | 
					 | 
				
			||||||
BackgroundAlternate=30,87,116
 | 
					 | 
				
			||||||
BackgroundNormal=42,46,50
 | 
					 | 
				
			||||||
DecorationFocus=61,174,233
 | 
					 | 
				
			||||||
DecorationHover=61,174,233
 | 
					 | 
				
			||||||
ForegroundActive=61,174,233
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=29,153,243
 | 
					 | 
				
			||||||
ForegroundNegative=218,68,83
 | 
					 | 
				
			||||||
ForegroundNeutral=246,116,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=39,174,96
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:Header]
 | 
					 | 
				
			||||||
BackgroundAlternate=42,46,50
 | 
					 | 
				
			||||||
BackgroundNormal=49,54,59
 | 
					 | 
				
			||||||
DecorationFocus=61,174,233
 | 
					 | 
				
			||||||
DecorationHover=61,174,233
 | 
					 | 
				
			||||||
ForegroundActive=61,174,233
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=29,153,243
 | 
					 | 
				
			||||||
ForegroundNegative=218,68,83
 | 
					 | 
				
			||||||
ForegroundNeutral=246,116,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=39,174,96
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:Header][Inactive]
 | 
					 | 
				
			||||||
BackgroundAlternate=49,54,59
 | 
					 | 
				
			||||||
BackgroundNormal=42,46,50
 | 
					 | 
				
			||||||
DecorationFocus=61,174,233
 | 
					 | 
				
			||||||
DecorationHover=61,174,233
 | 
					 | 
				
			||||||
ForegroundActive=61,174,233
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=29,153,243
 | 
					 | 
				
			||||||
ForegroundNegative=218,68,83
 | 
					 | 
				
			||||||
ForegroundNeutral=246,116,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=39,174,96
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:Selection]
 | 
					 | 
				
			||||||
BackgroundAlternate=30,87,116
 | 
					 | 
				
			||||||
BackgroundNormal=240,84,76
 | 
					 | 
				
			||||||
DecorationFocus=240,84,76
 | 
					 | 
				
			||||||
DecorationHover=240,84,76
 | 
					 | 
				
			||||||
ForegroundActive=252,252,252
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=253,188,75
 | 
					 | 
				
			||||||
ForegroundNegative=176,55,69
 | 
					 | 
				
			||||||
ForegroundNeutral=198,92,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=23,104,57
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:Tooltip]
 | 
					 | 
				
			||||||
BackgroundAlternate=42,46,50
 | 
					 | 
				
			||||||
BackgroundNormal=49,54,59
 | 
					 | 
				
			||||||
DecorationFocus=240,84,76
 | 
					 | 
				
			||||||
DecorationHover=240,84,76
 | 
					 | 
				
			||||||
ForegroundActive=61,174,233
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=29,153,243
 | 
					 | 
				
			||||||
ForegroundNegative=218,68,83
 | 
					 | 
				
			||||||
ForegroundNeutral=246,116,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=39,174,96
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:View]
 | 
					 | 
				
			||||||
BackgroundAlternate=35,38,41
 | 
					 | 
				
			||||||
BackgroundNormal=27,30,32
 | 
					 | 
				
			||||||
DecorationFocus=240,84,76
 | 
					 | 
				
			||||||
DecorationHover=240,84,76
 | 
					 | 
				
			||||||
ForegroundActive=61,174,233
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=29,153,243
 | 
					 | 
				
			||||||
ForegroundNegative=218,68,83
 | 
					 | 
				
			||||||
ForegroundNeutral=246,116,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=39,174,96
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Colors:Window]
 | 
					 | 
				
			||||||
BackgroundAlternate=49,54,59
 | 
					 | 
				
			||||||
BackgroundNormal=42,46,50
 | 
					 | 
				
			||||||
DecorationFocus=240,84,76
 | 
					 | 
				
			||||||
DecorationHover=240,84,76
 | 
					 | 
				
			||||||
ForegroundActive=61,174,233
 | 
					 | 
				
			||||||
ForegroundInactive=161,169,177
 | 
					 | 
				
			||||||
ForegroundLink=29,153,243
 | 
					 | 
				
			||||||
ForegroundNegative=218,68,83
 | 
					 | 
				
			||||||
ForegroundNeutral=246,116,0
 | 
					 | 
				
			||||||
ForegroundNormal=252,252,252
 | 
					 | 
				
			||||||
ForegroundPositive=39,174,96
 | 
					 | 
				
			||||||
ForegroundVisited=155,89,182
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[General]
 | 
					 | 
				
			||||||
ColorScheme=BreezeDark
 | 
					 | 
				
			||||||
Name=Breeze Tmavé (numix)
 | 
					 | 
				
			||||||
shadeSortColumn=true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[KDE]
 | 
					 | 
				
			||||||
contrast=4
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[WM]
 | 
					 | 
				
			||||||
activeBackground=49,54,59
 | 
					 | 
				
			||||||
activeBlend=252,252,252
 | 
					 | 
				
			||||||
activeForeground=252,252,252
 | 
					 | 
				
			||||||
inactiveBackground=33,38,43
 | 
					 | 
				
			||||||
inactiveBlend=161,169,177
 | 
					 | 
				
			||||||
inactiveForeground=161,169,177
 | 
					 | 
				
			||||||
@@ -1,15 +0,0 @@
 | 
				
			|||||||
[Appearance]
 | 
					 | 
				
			||||||
AntiAliasFonts=true
 | 
					 | 
				
			||||||
BoldIntense=true
 | 
					 | 
				
			||||||
ColorScheme=DarkPastels
 | 
					 | 
				
			||||||
DimmValue=54
 | 
					 | 
				
			||||||
Font=Ubuntu Mono,9,-1,5,75,0,0,0,0,0,Bold
 | 
					 | 
				
			||||||
UseFontLineChararacters=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[General]
 | 
					 | 
				
			||||||
DimWhenInactive=false
 | 
					 | 
				
			||||||
Name=Můj
 | 
					 | 
				
			||||||
Parent=FALLBACK/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[Scrolling]
 | 
					 | 
				
			||||||
ScrollBarPosition=2
 | 
					 | 
				
			||||||
@@ -1,26 +0,0 @@
 | 
				
			|||||||
# Mozilla Firefox
 | 
					 | 
				
			||||||
In fact, lots of settings are synced by Firefox itself.
 | 
					 | 
				
			||||||
So this folder contains just some infos around and settings for [tridactyl](#tridactyl).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Related files
 | 
					 | 
				
			||||||
- [../../.tridactylrc](../../.tridactylrc)
 | 
					 | 
				
			||||||
- [../native-messaging-hosts/tridactyl.json](../native-messaging-hosts/tridactyl.json)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Extensions
 | 
					 | 
				
			||||||
1. My collections:
 | 
					 | 
				
			||||||
    1. [Main](https://addons.mozilla.org/cs/firefox/collections/13245610/Ubuntu/)
 | 
					 | 
				
			||||||
    1. [Specific](https://addons.mozilla.org/cs/firefox/collections/13245610/Specific/)
 | 
					 | 
				
			||||||
    1. [Bin](https://addons.mozilla.org/cs/firefox/collections/13245610/Bin/)
 | 
					 | 
				
			||||||
1. Notes
 | 
					 | 
				
			||||||
    1. tridactyl: [see below](#tridactyl).
 | 
					 | 
				
			||||||
    1. _History AutoDelete_ can clean _LoadTabOnSelect_’s temp urls in history (e.g. `^.*4808bb0d\-324e\-4b8d\-bb9e\-a998b765153c.*$`).
 | 
					 | 
				
			||||||
1. Shortcuts
 | 
					 | 
				
			||||||
    1. _Open containers panel_: `Ctrl+.`
 | 
					 | 
				
			||||||
    1. _Open the Firefox Screenshots UI_: `Ctrl+Shift+s`
 | 
					 | 
				
			||||||
    1. _Sidebar_: `Shift+Alt+w` (default for Firefox Notes plugin)
 | 
					 | 
				
			||||||
    1. _To Google Translate_: `Ctrl+Shift+\d` (\d= 1,2,3).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## tridactyl
 | 
					 | 
				
			||||||
1. Plugin can be found on [tridactyl/tridactyl](https://github.com/tridactyl/tridactyl).
 | 
					 | 
				
			||||||
1. Load/Export settings see [tridactyl/tridactyl FAQ section](https://github.com/tridactyl/tridactyl#frequently-asked-questions-faq).
 | 
					 | 
				
			||||||
1. `gn*` (goto quickmark – new tab), `o` in vmode ⇒ reverse selection
 | 
					 | 
				
			||||||
@@ -1,7 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
    "name": "tridactyl",
 | 
					 | 
				
			||||||
    "description": "Tridactyl native command handler",
 | 
					 | 
				
			||||||
    "path": "/home/jaandrle/.local/share/tridactyl/native_main",
 | 
					 | 
				
			||||||
    "type": "stdio",
 | 
					 | 
				
			||||||
    "allowed_extensions": [ "tridactyl.vim@cmcaine.co.uk","tridactyl.vim.betas@cmcaine.co.uk", "tridactyl.vim.betas.nonewtab@cmcaine.co.uk" ]
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										1
									
								
								.termux/termux.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.termux/termux.properties
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					extra-keys = [['ESC','~','-','HOME','UP','END','PGUP'],['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN']]
 | 
				
			||||||
							
								
								
									
										119
									
								
								.tridactylrc
									
									
									
									
									
								
							
							
						
						
									
										119
									
								
								.tridactylrc
									
									
									
									
									
								
							@@ -1,119 +0,0 @@
 | 
				
			|||||||
""" Tridactyl config file | Jan Andrle | 2024-02-28
 | 
					 | 
				
			||||||
" General Settings 
 | 
					 | 
				
			||||||
set configversion 2.0
 | 
					 | 
				
			||||||
set theme dark
 | 
					 | 
				
			||||||
set modeindicatorshowkeys true
 | 
					 | 
				
			||||||
set modeindicatormodes.ignore false
 | 
					 | 
				
			||||||
set modeindicator true
 | 
					 | 
				
			||||||
set hintfiltermode simple
 | 
					 | 
				
			||||||
set hintchars fsahjklgyuiopqwertnmzxcvb
 | 
					 | 
				
			||||||
set smoothscroll true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
unbind zI
 | 
					 | 
				
			||||||
unbind zM
 | 
					 | 
				
			||||||
unbind zO
 | 
					 | 
				
			||||||
unbind zR
 | 
					 | 
				
			||||||
unbind zi
 | 
					 | 
				
			||||||
unbind zm
 | 
					 | 
				
			||||||
unbind zo
 | 
					 | 
				
			||||||
unbind zr
 | 
					 | 
				
			||||||
unbind zz
 | 
					 | 
				
			||||||
bind zt hint -z
 | 
					 | 
				
			||||||
bind zz composite hint -z ; scrollpage -0.5
 | 
					 | 
				
			||||||
bind zb composite hint -z ; scrollpage -0.95
 | 
					 | 
				
			||||||
bind gm scrollto 42.5 x
 | 
					 | 
				
			||||||
bind gM scrollto 42.5 x
 | 
					 | 
				
			||||||
bind 0zo zoom 1
 | 
					 | 
				
			||||||
bind zo zoom 0.1 true
 | 
					 | 
				
			||||||
bind §zo zoom 0.5 true
 | 
					 | 
				
			||||||
bind zO zoom -0.1 true
 | 
					 | 
				
			||||||
bind §zO zoom -0.5 true
 | 
					 | 
				
			||||||
bind §§h scrollpx -1000
 | 
					 | 
				
			||||||
bind §h scrollpx -500
 | 
					 | 
				
			||||||
bind §l scrollpx 500
 | 
					 | 
				
			||||||
bind §§l scrollpx 1000
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" /?*# … search collising with native ui + another problems
 | 
					 | 
				
			||||||
" https://gist.github.com/BurntSushi/393546a65db38d57cedcfd72c6d89bf3#file-tridactylrc-L18
 | 
					 | 
				
			||||||
unbind <c-f> " pgdown for scrolling
 | 
					 | 
				
			||||||
bind gi hint -Jc input,textarea,[contenteditable="true"]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
unbindurl ^https://www.youtube.com/* >>
 | 
					 | 
				
			||||||
unbindurl ^https://www.youtube.com/* <<
 | 
					 | 
				
			||||||
" see https://gist.github.com/jaandrle/031198ab5130deb903065138532cc066
 | 
					 | 
				
			||||||
bindurl ^https://www.youtube.com/* ss fillcmdline open B: YT
 | 
					 | 
				
			||||||
bindurl ^https://www.o2tv.cz/* ss fillcmdline open B: O2
 | 
					 | 
				
			||||||
bindurl ^https://chat.openai.com/* ss fillcmdline open B: OPENAI
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
command pauseVideos js Array.from(document.querySelectorAll("video")).forEach(el=> ( location.hostname!=="www.o2tv.cz" ? el.pause() : [ "Pauza" ].map(l=> document.querySelector(`[aria-label=${l}]`)).find(Boolean)?.dispatchEvent(new Event("click")) ))
 | 
					 | 
				
			||||||
tri.controller.acceptExCmd(`tabopen -c pracovní https://gist.github.com/jaandrle/ff1de72c500557f401e190b4ec05aa62#${document.title.replace(/["':|\.,\?\!_]/g, '').replace(/ /g, '-').toLowerCase()}`)
 | 
					 | 
				
			||||||
bind ůp js (v=> { if(!v) return; v.paused ? v.play() : tri.controller.acceptExCmd("pauseVideos"); })(document.querySelector("video"))
 | 
					 | 
				
			||||||
bind ůP js (v=> { if(!v) return; v.playbackRate ? (v.playbackRate= 0) : (v.playbackRate= 1); })(document.querySelector("video"))
 | 
					 | 
				
			||||||
bind ůl js (v=> { if(!v) return; v.currentTime+= 15 })(document.querySelector("video"))
 | 
					 | 
				
			||||||
bind ůh js (v=> { if(!v) return; v.currentTime-= 15 })(document.querySelector("video"))
 | 
					 | 
				
			||||||
bind ůL fillcmdline_notrail js document.querySelector("video").currentTime+= 15*30
 | 
					 | 
				
			||||||
bind ůůl fillcmdline_notrail js document.querySelector("video").currentTime+= 15*30
 | 
					 | 
				
			||||||
bind ůk js (v=> { if(!v) return; v.playbackRate+= 0.25 })(document.querySelector("video"))
 | 
					 | 
				
			||||||
bind ůj js (v=> { if(!v) return; v.playbackRate-= 0.25 })(document.querySelector("video"))
 | 
					 | 
				
			||||||
bind ů= js (v=> { if(!v) return; v.playbackRate= 1 })(document.querySelector("video"))
 | 
					 | 
				
			||||||
bind ůG js (v=> { if(!v) return; v.play(); v.currentTime= v.duration-10; setTimeout(()=> tri.controller.acceptExCmd("pauseVideos"), 5000); })(document.querySelector("video"))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
unbind --mode=normal d
 | 
					 | 
				
			||||||
bind dd tabclose
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
unbind --mode=normal s
 | 
					 | 
				
			||||||
bind st fillcmdline_notrail tab
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" h keyboardlayoutoverrides … https://gistpreview.github.io/?324119c773fac31651f6422087b36804
 | 
					 | 
				
			||||||
" set keyboardlayoutoverrides "Digit2: ;, Backquote: :"
 | 
					 | 
				
			||||||
set keytranslatemap {"ě":";",";":":"}
 | 
					 | 
				
			||||||
bindurl ^https://mail.centrum.cz/* ;; composite hint_focus ; js document.activeElement.dispatchEvent(new CustomEvent("mouseover"))
 | 
					 | 
				
			||||||
bind --mode=normal ;gt hint -c [tabindex]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bind š tab #
 | 
					 | 
				
			||||||
bind sš fillcmdline tab
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" b→t→n to make more consistent with gn*
 | 
					 | 
				
			||||||
unbind --mode=normal b
 | 
					 | 
				
			||||||
unbind --mode=normal B
 | 
					 | 
				
			||||||
bind --mode=normal t fillcmdline tab
 | 
					 | 
				
			||||||
bind --mode=normal T fillcmdline taball
 | 
					 | 
				
			||||||
bind --mode=normal n fillcmdline tabopen
 | 
					 | 
				
			||||||
bind --mode=normal N current_url tabopen
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bind -c fillcmdline recontain
 | 
					 | 
				
			||||||
bind sc fillcmdline_notrail container
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bind --mode=visual \t composite js "https://libretranslate.com/?source=auto&target=cs&q="+encodeURI(document.getSelection().toString()) | tabopen
 | 
					 | 
				
			||||||
bind --mode=visual \T composite js "https://translate.google.com/?sl=auto&tl=cs&op=translate&text="+encodeURI(document.getSelection().toString()) | tabopen
 | 
					 | 
				
			||||||
bind --mode=normal \t composite js "http://translate.google.com/translate?js=n&tl=cs&u="+encodeURI(location.href) | tabopen
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bind gnk tabopen -c osobní https://keep.google.com/u/0/#NOTE/1UXE_BEihe2EexHwZqEYA2oSdILLxF74SPcaLFMStfIpMkWPnStWJDQqH5C1TryJld_dC
 | 
					 | 
				
			||||||
bind gok open -c osobní https://keep.google.com/u/0/#NOTE/1UXE_BEihe2EexHwZqEYA2oSdILLxF74SPcaLFMStfIpMkWPnStWJDQqH5C1TryJld_dC
 | 
					 | 
				
			||||||
bind gwk winopen -c osobní https://keep.google.com/u/0/#NOTE/1UXE_BEihe2EexHwZqEYA2oSdILLxF74SPcaLFMStfIpMkWPnStWJDQqH5C1TryJld_dC
 | 
					 | 
				
			||||||
bind gnC tabopen -c osobní https://calendar.google.com
 | 
					 | 
				
			||||||
bind goC open -c osobní https://calendar.google.com
 | 
					 | 
				
			||||||
bind gwC winopen -c osobní https://calendar.google.com
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Sites (mails) notes using Github Gists
 | 
					 | 
				
			||||||
bind sn js tri.controller.acceptExCmd(`tabopen -c pracovní https://gist.github.com/jaandrle/ff1de72c500557f401e190b4ec05aa62#${document.title.replace(/["':|\.,\?\!_]/g, '').replace(/ /g, '-').toLowerCase()}`)
 | 
					 | 
				
			||||||
bind sN composite clipboard yankmd ; tabopen -c pracovní https://gist.github.com/jaandrle/ff1de72c500557f401e190b4ec05aa62/edit
 | 
					 | 
				
			||||||
bindurl ^https://mail.centrum.cz/* sn js tri.controller.acceptExCmd(`tabopen -c pracovní https://gist.github.com/jaandrle/ff1de72c500557f401e190b4ec05aa62#${(new URLSearchParams(window.location.search)).get("msg")}`)
 | 
					 | 
				
			||||||
bindurl ^https://mail.centrum.cz/* sN composite js tri.controller.acceptExCmd(`clipboard yank [${(new URLSearchParams(window.location.search)).get("msg")}](https://mail.centrum.cz/?msg=${(new URLSearchParams(window.location.search)).get("msg")})`) ; tabopen -c pracovní https://gist.github.com/jaandrle/ff1de72c500557f401e190b4ec05aa62/edit
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
alias hint_focus hint -;
 | 
					 | 
				
			||||||
quickmark c moz-extension://616498c0-3916-4f0b-b0a9-ce01ecf2298d/popup.html
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
command mastodonUncoverAll composite hint_focus .scrollable ; js (onclick=document.createEvent("Events"), onclick.initEvent("click", true, false), Array.from(document.activeElement.getElementsByClassName("status__content__spoiler-link")).forEach(el=> el.dispatchEvent(onclick)))
 | 
					 | 
				
			||||||
command mastodonRedirectHome js const parts = location.pathname.split('/'); if(parts.length===2) location.href= `https://fosstodon.org/${parts[1]}@${location.host}`; else location.href= `https://fosstodon.org/authorize_interaction?uri=${location.href}`;
 | 
					 | 
				
			||||||
bind sm fillcmdline_notrail mastodon
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
command data_delall composite hint_focus * ; js document.activeElement.querySelectorAll("input").forEach(el=> el.checked=false)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
command scrollblur js tri.scrolling.setCurrentFocus(document.documentElement || document.body)
 | 
					 | 
				
			||||||
autocmd DocLoad https://user.centrum.cz/?url=http%3A%2F%2Fmail.centrum.cz open https://mail.centrum.cz/?fld=-666
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" For syntax highlighting see https://github.com/tridactyl/vim-tridactyl
 | 
					 | 
				
			||||||
" vim: set filetype=tridactyl
 | 
					 | 
				
			||||||
" vim: set ft=vim :
 | 
					 | 
				
			||||||
@@ -1,17 +0,0 @@
 | 
				
			|||||||
# Vim
 | 
					 | 
				
			||||||
My cross-platform config file. Now primarly **Ubuntu**, in the past also Windows (I don't use them so much now → not tested!).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
To navigate my secondary editor use [../vscode](../vscode).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Related files
 | 
					 | 
				
			||||||
- [../.vimrc](../.vimrc)
 | 
					 | 
				
			||||||
- [../.config/coc/ultisnips](../.config/coc/ultisnips)
 | 
					 | 
				
			||||||
- [./\*](./)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Plugins
 | 
					 | 
				
			||||||
See [./§vim_plugins_export-v0.json](./§vim_plugins_export-v0.json). Also call `:helptags ~/.vim/bundle/`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## To consider
 | 
					 | 
				
			||||||
- [yaegassy/coc-html-css-support: HTML id and class attribute "completion" for coc.nvim.](https://github.com/yaegassy/coc-html-css-support): `alpine.js`, `petite-vue`
 | 
					 | 
				
			||||||
- [vimwiki/vimwiki: Personal Wiki for Vim](https://github.com/vimwiki/vimwiki)
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
nmap <leader>vd /diff --git<cr>0vG$
 | 
					 | 
				
			||||||
command! AIcommit ALTredir !§ai-commit.mjs
 | 
					 | 
				
			||||||
command! AIcommitConventional ALTredir !§ai-commit.mjs --format conventional
 | 
					 | 
				
			||||||
command! AIcommitGitmoji ALTredir !§ai-commit.mjs --format gitmoji
 | 
					 | 
				
			||||||
command! AIcommitGit3moji ALTredir !§ai-commit.mjs --format git3moji
 | 
					 | 
				
			||||||
nmap <leader><f1> :AIcommitOP
 | 
					 | 
				
			||||||
@@ -1,113 +0,0 @@
 | 
				
			|||||||
" Fold expressions {{{1
 | 
					 | 
				
			||||||
function! StackedMarkdownFolds()
 | 
					 | 
				
			||||||
  let line = getline(v:lnum)
 | 
					 | 
				
			||||||
  let prevline = getline(v:lnum - 1)
 | 
					 | 
				
			||||||
  let nextline = getline(v:lnum + 1)
 | 
					 | 
				
			||||||
  " fenced block
 | 
					 | 
				
			||||||
  if line =~ '^```.*$' && prevline =~ '^\s*$'  " start of a fenced block
 | 
					 | 
				
			||||||
    return ">2"
 | 
					 | 
				
			||||||
  elseif line =~ '^```$' && nextline =~ '^\s*$'  " end of a fenced block
 | 
					 | 
				
			||||||
    return "<2"
 | 
					 | 
				
			||||||
  endif
 | 
					 | 
				
			||||||
  " headers
 | 
					 | 
				
			||||||
  if s:HeadingDepth(v:lnum)
 | 
					 | 
				
			||||||
    return ">1"
 | 
					 | 
				
			||||||
  endif
 | 
					 | 
				
			||||||
  " frontmatter
 | 
					 | 
				
			||||||
  if line =~ '^----*$'
 | 
					 | 
				
			||||||
    return v:lnum == 1 ? ">1" : '<1'
 | 
					 | 
				
			||||||
  endif
 | 
					 | 
				
			||||||
  return '='
 | 
					 | 
				
			||||||
endfunction
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Helpers {{{1
 | 
					 | 
				
			||||||
function! s:SID()
 | 
					 | 
				
			||||||
  return matchstr(expand('<sfile>'), '<SNR>\d\+_')
 | 
					 | 
				
			||||||
endfunction
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function! s:HeadingDepth(lnum)
 | 
					 | 
				
			||||||
  if s:LineIsFenced(a:lnum) | return 0 | endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  let thisline = getline(a:lnum)
 | 
					 | 
				
			||||||
  if thisline =~ '^#\+\s\+'
 | 
					 | 
				
			||||||
    return len(matchstr(thisline, '^#\{1,6}'))
 | 
					 | 
				
			||||||
  else
 | 
					 | 
				
			||||||
  if thisline != ''
 | 
					 | 
				
			||||||
    let prevline = getline(a:lnum - 1)
 | 
					 | 
				
			||||||
    let nextline = getline(a:lnum + 1)
 | 
					 | 
				
			||||||
    if (nextline =~ '^=\+$') && (prevline =~ '^\s*$')
 | 
					 | 
				
			||||||
      return 1
 | 
					 | 
				
			||||||
    elseif (nextline =~ '^-\+$') && (prevline =~ '^\s*$')
 | 
					 | 
				
			||||||
      return 2
 | 
					 | 
				
			||||||
    endif
 | 
					 | 
				
			||||||
  endif
 | 
					 | 
				
			||||||
  return 0
 | 
					 | 
				
			||||||
endfunction
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function! s:LineIsFenced(lnum)
 | 
					 | 
				
			||||||
  if exists("b:current_syntax") && b:current_syntax ==# 'markdown' || &filetype ==# 'markdown'
 | 
					 | 
				
			||||||
    " It's cheap to check if the current line has 'markdownCode' syntax group
 | 
					 | 
				
			||||||
    return s:HasSyntaxGroup(a:lnum, '\vmarkdown(Code|Highlight)')
 | 
					 | 
				
			||||||
  else
 | 
					 | 
				
			||||||
    " Using searchpairpos() is expensive, so only do it if syntax highlighting
 | 
					 | 
				
			||||||
    " is not enabled
 | 
					 | 
				
			||||||
    return s:HasSurroundingFencemarks(a:lnum)
 | 
					 | 
				
			||||||
  endif
 | 
					 | 
				
			||||||
endfunction
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function! s:HasSyntaxGroup(lnum, targetGroup)
 | 
					 | 
				
			||||||
  let syntaxGroup = map(synstack(a:lnum, 1), 'synIDattr(v:val, "name")')
 | 
					 | 
				
			||||||
  for value in syntaxGroup
 | 
					 | 
				
			||||||
    if value =~ a:targetGroup
 | 
					 | 
				
			||||||
        return 1
 | 
					 | 
				
			||||||
    endif
 | 
					 | 
				
			||||||
  endfor
 | 
					 | 
				
			||||||
endfunction
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function! s:HasSurroundingFencemarks(lnum)
 | 
					 | 
				
			||||||
  let cursorPosition = [line("."), col(".")]
 | 
					 | 
				
			||||||
  call cursor(a:lnum, 1)
 | 
					 | 
				
			||||||
  let startFence = '\%^```\|^\n\zs```'
 | 
					 | 
				
			||||||
  let endFence = '```\n^$'
 | 
					 | 
				
			||||||
  let fenceEndPosition = searchpairpos(startFence,'',endFence,'W')
 | 
					 | 
				
			||||||
  call cursor(cursorPosition)
 | 
					 | 
				
			||||||
  return fenceEndPosition != [0,0]
 | 
					 | 
				
			||||||
endfunction
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function! s:FoldText()
 | 
					 | 
				
			||||||
  if getline(v:foldstart) =~ '^----*$'
 | 
					 | 
				
			||||||
      let title= ''
 | 
					 | 
				
			||||||
      let i= v:foldstart+1
 | 
					 | 
				
			||||||
      let I= v:foldend
 | 
					 | 
				
			||||||
      while i<I && title !~ '^title'
 | 
					 | 
				
			||||||
          let title= getline(i)
 | 
					 | 
				
			||||||
          let i+= 1
 | 
					 | 
				
			||||||
      endwhile
 | 
					 | 
				
			||||||
      if title !~ '^title'
 | 
					 | 
				
			||||||
        let title= 'Front Matter'
 | 
					 | 
				
			||||||
      endif
 | 
					 | 
				
			||||||
      return title
 | 
					 | 
				
			||||||
  endif
 | 
					 | 
				
			||||||
  let indent = repeat('#', s:HeadingDepth(v:foldstart))
 | 
					 | 
				
			||||||
  let title = substitute(getline(v:foldstart), '^#\+\s\+', '', '')
 | 
					 | 
				
			||||||
  let foldsize = (v:foldend - v:foldstart)
 | 
					 | 
				
			||||||
  let linecount = '['.foldsize.' line'.(foldsize>1?'s':'').']'
 | 
					 | 
				
			||||||
  return indent.' '.title.' '.linecount.' '
 | 
					 | 
				
			||||||
endfunction
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function! FoldMarkdownToggle()
 | 
					 | 
				
			||||||
  if &l:foldexpr ==# 'StackedMarkdownFolds()'
 | 
					 | 
				
			||||||
    setlocal foldmethod< foldtext< foldexpr<
 | 
					 | 
				
			||||||
  else
 | 
					 | 
				
			||||||
    setlocal foldmethod=expr
 | 
					 | 
				
			||||||
    let &l:foldtext = s:SID().'FoldText()'
 | 
					 | 
				
			||||||
    let &l:foldexpr = 'StackedMarkdownFolds()'
 | 
					 | 
				
			||||||
  endif
 | 
					 | 
				
			||||||
endfunction
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Teardown {{{1
 | 
					 | 
				
			||||||
if !exists("b:undo_ftplugin") | let b:undo_ftplugin = '' | endif
 | 
					 | 
				
			||||||
let b:undo_ftplugin .= '
 | 
					 | 
				
			||||||
  \ | setlocal foldmethod< foldtext< foldexpr<
 | 
					 | 
				
			||||||
  \ '
 | 
					 | 
				
			||||||
" vim:set fdm=marker:
 | 
					 | 
				
			||||||
@@ -1,3 +0,0 @@
 | 
				
			|||||||
execute "source ".system("mdexpr-agenda vim 2> /dev/null")
 | 
					 | 
				
			||||||
command MDEXPRclose lclose | lexpr []
 | 
					 | 
				
			||||||
call scommands#map('m', 'MDEXPR', "n")
 | 
					 | 
				
			||||||
@@ -1,3 +0,0 @@
 | 
				
			|||||||
unlet b:current_syntax
 | 
					 | 
				
			||||||
syntax include @Yaml syntax/yaml.vim
 | 
					 | 
				
			||||||
syntax region yamlFrontmatter start=/\%^---$/ end=/^---$/ keepend contains=@Yaml
 | 
					 | 
				
			||||||
@@ -1,30 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
	"workspace.rootPatterns": [ ".git", ".vscode" ],
 | 
					 | 
				
			||||||
	"coc.preferences.formatOnType": false,
 | 
					 | 
				
			||||||
	"diagnostic.separateRelatedInformationAsDiagnostics": true,
 | 
					 | 
				
			||||||
	"diagnostic.errorSign": "┅",
 | 
					 | 
				
			||||||
	"diagnostic.warningSign": "┉",
 | 
					 | 
				
			||||||
	"diagnostic.infoSign": "┄",
 | 
					 | 
				
			||||||
	"diagnostic.hintSign": "·",
 | 
					 | 
				
			||||||
	"javascript.showUnused": true,
 | 
					 | 
				
			||||||
	"coc.source.emoji.filetypes": [ "markdown", "magit", "gitcommit" ],
 | 
					 | 
				
			||||||
	"html.filetypes": [ "html", "handlebars", "htmldjango", "blade", "liquid" ],
 | 
					 | 
				
			||||||
	"html.autoClosingTags": false,
 | 
					 | 
				
			||||||
	"html.autoCreateQuotes": false,
 | 
					 | 
				
			||||||
	"javascript.preferences.quoteStyle": "double",
 | 
					 | 
				
			||||||
	"javascript.preferences.importModuleSpecifierEnding": "js",
 | 
					 | 
				
			||||||
	"javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": true,
 | 
					 | 
				
			||||||
	"___eslint.options": {
 | 
					 | 
				
			||||||
		"overrideConfig":{
 | 
					 | 
				
			||||||
			"extends": [
 | 
					 | 
				
			||||||
				"eslint:recommended"
 | 
					 | 
				
			||||||
			],
 | 
					 | 
				
			||||||
			"rules": {
 | 
					 | 
				
			||||||
				"no-use-before-define": ["error", "nofunc"],
 | 
					 | 
				
			||||||
				"max-params": ["error", 4],
 | 
					 | 
				
			||||||
				"max-depth": ["error", 4],
 | 
					 | 
				
			||||||
				"complexity": ["error", 15]
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,5 +0,0 @@
 | 
				
			|||||||
" npm install -g jshint
 | 
					 | 
				
			||||||
CompilerSet makeprg=jshint
 | 
					 | 
				
			||||||
CompilerSet errorformat=%f:\ line\ %l\\,\ col\ %c\\,\ %m
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" vim: set sts=4 sw=4 expandtab ff=unix fdm=syntax :
 | 
					 | 
				
			||||||
@@ -1,51 +0,0 @@
 | 
				
			|||||||
```
 | 
					 | 
				
			||||||
                  %%VERSION%%
 | 
					 | 
				
			||||||
                                    
 | 
					 | 
				
			||||||
                                    Autor: Bram Moolenaar a další
 | 
					 | 
				
			||||||
                               Modified by team+vim@tracker.debian.org
 | 
					 | 
				
			||||||
                     Vim je volně šiřitelný program s otevřeným zdrojovým kódem
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                                   Pomozte chudým dětem v Ugandě!
 | 
					 | 
				
			||||||
                       podrobnější informace získáte pomocí :help iccf<Enter>
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Získání nápovědy
 | 
					 | 
				
			||||||
- `:help<Enter>`: Zobrazit nápovědu (nebo také `<F1>`, `:help __něco__<Enter>`, …)
 | 
					 | 
				
			||||||
- `:help version8<Enter>`: Zobrazit informace o této verzi
 | 
					 | 
				
			||||||
- `sh\`, `shs`, `shh<Enter>`: Zobrazit kombinace kláves začínající `\`, `s` a jiné zajímavé
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Jak ukončit VIM
 | 
					 | 
				
			||||||
- `:q<Enter>`: Ukončit program/okno (nebo také `:qa<Enter>`, `ZZ` a `ZQ` … viz `:help write-quit`)
 | 
					 | 
				
			||||||
- `:bd<Enter>`: Zavřít soubor (tzv. „buffer”)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Rychlá navigace na této stránce
 | 
					 | 
				
			||||||
- `w`: Otevřít *sezení* (viz `:CLsessionLoad`), `W` zkratka pro vyfiltrování jen pracovních
 | 
					 | 
				
			||||||
- Otevřít soubor:
 | 
					 | 
				
			||||||
    - `o`: *dříve otevřený* (viz `:help oldfiles<Enter>`)
 | 
					 | 
				
			||||||
    - `e`: *prázdný*
 | 
					 | 
				
			||||||
    - `p`: *prázdný a vložit text ze systémové schránky*
 | 
					 | 
				
			||||||
- `m`: Seznam záložek (viz `:help mark-motions<Enter>`)
 | 
					 | 
				
			||||||
- `c`: Upravit tento soubor
 | 
					 | 
				
			||||||
- `P`: Rozbalit poznámky níže
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<!--region Poznámky -->
 | 
					 | 
				
			||||||
## Poznámky
 | 
					 | 
				
			||||||
- `:help 'suffixesadd'` [gf (goto file) doesn't work in PHP file : vim](https://www.reddit.com/r/vim/comments/t8o0bw/gf_goto_file_doesnt_work_in_php_file/)
 | 
					 | 
				
			||||||
<!--endregion-->
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Náhodná část z konfiguračního souboru `.vimrc`
 | 
					 | 
				
			||||||
```vim %%VIMRC%%
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<!--region Mapování -->
 | 
					 | 
				
			||||||
nnoremap <buffer><silent> e :bd<cr>
 | 
					 | 
				
			||||||
nnoremap <buffer><silent> p :bd<bar>normal "+p<cr>
 | 
					 | 
				
			||||||
nnoremap <buffer><silent> o :ALToldfiles<cr>
 | 
					 | 
				
			||||||
nnoremap <buffer> w :call feedkeys(':CLSESSIONload ', 'tn')<cr>
 | 
					 | 
				
			||||||
nnoremap <buffer> W :call feedkeys(':CLSESSIONload work_', 'tn')<cr>
 | 
					 | 
				
			||||||
nnoremap <buffer><silent> m :marks<cr>
 | 
					 | 
				
			||||||
nnoremap <buffer> P /region<cr>za
 | 
					 | 
				
			||||||
nnoremap <buffer><silent> c :e ~/.vim/intro-template.md<cr>
 | 
					 | 
				
			||||||
<!--endregion-->
 | 
					 | 
				
			||||||
@@ -1 +0,0 @@
 | 
				
			|||||||
off
 | 
					 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							@@ -1,495 +0,0 @@
 | 
				
			|||||||
" vifm syntax file
 | 
					 | 
				
			||||||
" Maintainer:  xaizek <xaizek@posteo.net>
 | 
					 | 
				
			||||||
" Last Change: October 5, 2021
 | 
					 | 
				
			||||||
" Inspired By: Vim syntax file by Dr. Charles E. Campbell, Jr.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if exists('b:current_syntax')
 | 
					 | 
				
			||||||
	finish
 | 
					 | 
				
			||||||
endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
let b:current_syntax = 'vifm'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
let s:cpo_save = &cpo
 | 
					 | 
				
			||||||
set cpo-=C
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" General commands
 | 
					 | 
				
			||||||
syntax keyword vifmCommand contained
 | 
					 | 
				
			||||||
		\ alink apropos bmark bmarks bmgo cds change chmod chown clone compare
 | 
					 | 
				
			||||||
		\ cope[n] co[py] cq[uit] d[elete] delbmarks delm[arks] delsession di[splay]
 | 
					 | 
				
			||||||
		\ dirs e[dit] el[se] empty en[dif] exi[t] file fin[d] fini[sh] go[to] gr[ep]
 | 
					 | 
				
			||||||
		\ h[elp] hideui histnext his[tory] histprev jobs locate ls lstrash marks
 | 
					 | 
				
			||||||
		\ media mes[sages] mkdir m[ove] noh[lsearch] on[ly] plugin plugins popd
 | 
					 | 
				
			||||||
		\ pushd pu[t] pw[d] qa[ll] q[uit] redr[aw] reg[isters] regular rename
 | 
					 | 
				
			||||||
		\ restart restore rlink screen sh[ell] siblnext siblprev sor[t] sp[lit]
 | 
					 | 
				
			||||||
		\ st[op] s[ubstitute] tabc[lose] tabm[ove] tabname tabnew tabn[ext]
 | 
					 | 
				
			||||||
		\ tabo[nly] tabp[revious] touch tr trashes tree session sync undol[ist]
 | 
					 | 
				
			||||||
		\ ve[rsion] vie[w] vifm vs[plit] winc[md] w[rite] wq wqa[ll] xa[ll] x[it]
 | 
					 | 
				
			||||||
		\ y[ank]
 | 
					 | 
				
			||||||
		\ nextgroup=vifmArgs
 | 
					 | 
				
			||||||
syntax keyword vifmCommandCN contained
 | 
					 | 
				
			||||||
		\ alink apropos bmark bmarks bmgo cds change chmod chown clone compare
 | 
					 | 
				
			||||||
		\ cope[n] co[py] cq[uit] d[elete] delbmarks delm[arks] delsession di[splay]
 | 
					 | 
				
			||||||
		\ dirs e[dit] el[se] empty en[dif] exi[t] file fin[d] fini[sh] go[to] gr[ep]
 | 
					 | 
				
			||||||
		\ h[elp] hideui histnext his[tory] histprev jobs locate ls lstrash marks
 | 
					 | 
				
			||||||
		\ media mes[sages] mkdir m[ove] noh[lsearch] on[ly] popd pushd pu[t] pw[d]
 | 
					 | 
				
			||||||
		\ qa[ll] q[uit] redr[aw] reg[isters] regular rename restart restore rlink
 | 
					 | 
				
			||||||
		\ screen sh[ell] siblnext siblprev sor[t] sp[lit] s[ubstitute] tabc[lose]
 | 
					 | 
				
			||||||
		\ tabm[ove] tabname tabnew tabn[ext] tabo[nly] tabp[revious] touch tr
 | 
					 | 
				
			||||||
		\ trashes tree session sync undol[ist] ve[rsion] vie[w] vifm vs[plit]
 | 
					 | 
				
			||||||
		\ winc[md] w[rite] wq wqa[ll] xa[ll] x[it] y[ank]
 | 
					 | 
				
			||||||
		\ nextgroup=vifmArgsCN
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" commands that might be prepended to a command without changing everything else
 | 
					 | 
				
			||||||
syntax keyword vifmPrefixCommands contained windo winrun
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Map commands
 | 
					 | 
				
			||||||
syntax keyword vifmMap contained dm[ap] dn[oremap] du[nmap] map mm[ap]
 | 
					 | 
				
			||||||
		\ mn[oremap] mu[nmap] nm[ap] nn[oremap] no[remap] nun[map] qm[ap] qn[oremap]
 | 
					 | 
				
			||||||
		\ qun[map] unm[ap] vm[ap] vn[oremap] vu[nmap]
 | 
					 | 
				
			||||||
		\ skipwhite nextgroup=vifmMapArgs
 | 
					 | 
				
			||||||
syntax keyword vifmCMapAbbr contained ca[bbrev] cm[ap] cnorea[bbrev] cno[remap]
 | 
					 | 
				
			||||||
		\ cuna[bbrev] cu[nmap]
 | 
					 | 
				
			||||||
		\ skipwhite nextgroup=vifmCMapArgs
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Other commands
 | 
					 | 
				
			||||||
syntax keyword vifmAutocmdCommand contained au[tocmd] nextgroup=vifmAutoEvent
 | 
					 | 
				
			||||||
syntax keyword vifmCdCommand contained cd
 | 
					 | 
				
			||||||
syntax keyword vifmCmdCommand contained com[mand] nextgroup=vifmCmdCommandName
 | 
					 | 
				
			||||||
syntax keyword vifmColoCommand contained colo[rscheme]
 | 
					 | 
				
			||||||
syntax keyword vifmHiCommand contained hi[ghlight]
 | 
					 | 
				
			||||||
syntax keyword vifmInvertCommand contained invert
 | 
					 | 
				
			||||||
syntax keyword vifmLetCommand contained let
 | 
					 | 
				
			||||||
syntax keyword vifmUnletCommand contained unl[et]
 | 
					 | 
				
			||||||
syntax keyword vifmSetCommand contained se[t] setl[ocal] setg[lobal]
 | 
					 | 
				
			||||||
syntax keyword vifmSoCommand contained so[urce]
 | 
					 | 
				
			||||||
syntax keyword vifmMarkCommand contained ma[rk]
 | 
					 | 
				
			||||||
syntax keyword vifmFtCommand contained filet[ype] filex[type] filev[iewer]
 | 
					 | 
				
			||||||
syntax keyword vifmExprCommand contained if ec[ho] elsei[f] exe[cute]
 | 
					 | 
				
			||||||
syntax keyword vifmNormalCommand contained norm[al]
 | 
					 | 
				
			||||||
		\ nextgroup=vifmColonSubcommand
 | 
					 | 
				
			||||||
syntax match vifmPatternCommands contained /\<\(filter\(!\|\>\)\|select\(!\|\>\)\|unselect\>\)/ skipwhite
 | 
					 | 
				
			||||||
		\ nextgroup=vifmPatterns
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" List of event names for autocommands (case insensitive)
 | 
					 | 
				
			||||||
syntax case ignore
 | 
					 | 
				
			||||||
syntax keyword vifmAutoEvent contained DirEnter nextgroup=vifmStatementC
 | 
					 | 
				
			||||||
syntax case match
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Builtin functions
 | 
					 | 
				
			||||||
syntax match vifmBuiltinFunction
 | 
					 | 
				
			||||||
		\ '\(chooseopt\|expand\|executable\|extcached\|filetype\|fnameescape\|getpanetype\|has\|layoutis\|paneisat\|system\|tabpagenr\|term\)\ze('
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Operators
 | 
					 | 
				
			||||||
syntax match vifmOperator "\(==\|!=\|>=\?\|<=\?\|\.\|-\|+\|&&\|||\)" skipwhite
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Highlight groups
 | 
					 | 
				
			||||||
syntax keyword vifmHiArgs contained cterm ctermfg ctermbg gui guifg guibg
 | 
					 | 
				
			||||||
syntax case ignore
 | 
					 | 
				
			||||||
syntax keyword vifmHiGroups contained WildMenu Border Win CmdLine CurrLine
 | 
					 | 
				
			||||||
		\ OtherLine Directory Link Socket Device Executable Selected BrokenLink
 | 
					 | 
				
			||||||
		\ TopLine TopLineSel StatusLine JobLine SuggestBox Fifo ErrorMsg CmpMismatch
 | 
					 | 
				
			||||||
		\ AuxWin OtherWin TabLine TabLineSel HardLink LineNr OddLine
 | 
					 | 
				
			||||||
		\ User1 User2 User3 User4 User5 User6 User7 User8 User9
 | 
					 | 
				
			||||||
syntax keyword vifmHiStyles contained
 | 
					 | 
				
			||||||
		\ bold underline reverse inverse standout italic combine none
 | 
					 | 
				
			||||||
syntax keyword vifmHiColors contained black red green yellow blue magenta cyan
 | 
					 | 
				
			||||||
		\ white default lightblack lightred lightgreen lightyellow lightblue
 | 
					 | 
				
			||||||
		\ lightmagenta lightcyan lightwhite Grey0 NavyBlue DarkBlue Blue3 Blue3_2
 | 
					 | 
				
			||||||
		\ Blue1 DarkGreen DeepSkyBlue4 DeepSkyBlue4_2 DeepSkyBlue4_3 DodgerBlue3
 | 
					 | 
				
			||||||
		\ DodgerBlue2 Green4 SpringGreen4 Turquoise4 DeepSkyBlue3 DeepSkyBlue3_2
 | 
					 | 
				
			||||||
		\ DodgerBlue1 Green3 SpringGreen3 DarkCyan LightSeaGreen DeepSkyBlue2
 | 
					 | 
				
			||||||
		\ DeepSkyBlue1 Green3_2 SpringGreen3_2 SpringGreen2 Cyan3 DarkTurquoise
 | 
					 | 
				
			||||||
		\ Turquoise2 Green1 SpringGreen2_2 SpringGreen1 MediumSpringGreen Cyan2
 | 
					 | 
				
			||||||
		\ Cyan1 DarkRed DeepPink4 Purple4 Purple4_2 Purple3 BlueViolet Orange4
 | 
					 | 
				
			||||||
		\ Grey37 MediumPurple4 SlateBlue3 SlateBlue3_2 RoyalBlue1 Chartreuse4
 | 
					 | 
				
			||||||
		\ DarkSeaGreen4 PaleTurquoise4 SteelBlue SteelBlue3 CornflowerBlue
 | 
					 | 
				
			||||||
		\ Chartreuse3 DarkSeaGreen4_2 CadetBlue CadetBlue_2 SkyBlue3 SteelBlue1
 | 
					 | 
				
			||||||
		\ Chartreuse3_2 PaleGreen3 SeaGreen3 Aquamarine3 MediumTurquoise
 | 
					 | 
				
			||||||
		\ SteelBlue1_2 Chartreuse2 SeaGreen2 SeaGreen1 SeaGreen1_2 Aquamarine1
 | 
					 | 
				
			||||||
		\ DarkSlateGray2 DarkRed_2 DeepPink4_2 DarkMagenta DarkMagenta_2 DarkViolet
 | 
					 | 
				
			||||||
		\ Purple Orange4_2 LightPink4 Plum4 MediumPurple3 MediumPurple3_2 SlateBlue1
 | 
					 | 
				
			||||||
		\ Yellow4 Wheat4 Grey53 LightSlateGrey MediumPurple LightSlateBlue Yellow4_2
 | 
					 | 
				
			||||||
		\ DarkOliveGreen3 DarkSeaGreen LightSkyBlue3 LightSkyBlue3_2 SkyBlue2
 | 
					 | 
				
			||||||
		\ Chartreuse2_2 DarkOliveGreen3_2 PaleGreen3_2 DarkSeaGreen3 DarkSlateGray3
 | 
					 | 
				
			||||||
		\ SkyBlue1 Chartreuse1 LightGreen_2 LightGreen_3 PaleGreen1 Aquamarine1_2
 | 
					 | 
				
			||||||
		\ DarkSlateGray1 Red3 DeepPink4_3 MediumVioletRed Magenta3 DarkViolet_2
 | 
					 | 
				
			||||||
		\ Purple_2 DarkOrange3 IndianRed HotPink3 MediumOrchid3 MediumOrchid
 | 
					 | 
				
			||||||
		\ MediumPurple2 DarkGoldenrod LightSalmon3 RosyBrown Grey63 MediumPurple2_2
 | 
					 | 
				
			||||||
		\ MediumPurple1 Gold3 DarkKhaki NavajoWhite3 Grey69 LightSteelBlue3
 | 
					 | 
				
			||||||
		\ LightSteelBlue Yellow3 DarkOliveGreen3_3 DarkSeaGreen3_2 DarkSeaGreen2
 | 
					 | 
				
			||||||
		\ LightCyan3 LightSkyBlue1 GreenYellow DarkOliveGreen2 PaleGreen1_2
 | 
					 | 
				
			||||||
		\ DarkSeaGreen2_2 DarkSeaGreen1 PaleTurquoise1 Red3_2 DeepPink3 DeepPink3_2
 | 
					 | 
				
			||||||
		\ Magenta3_2 Magenta3_3 Magenta2 DarkOrange3_2 IndianRed_2 HotPink3_2
 | 
					 | 
				
			||||||
		\ HotPink2 Orchid MediumOrchid1 Orange3 LightSalmon3_2 LightPink3 Pink3
 | 
					 | 
				
			||||||
		\ Plum3 Violet Gold3_2 LightGoldenrod3 Tan MistyRose3 Thistle3 Plum2
 | 
					 | 
				
			||||||
		\ Yellow3_2 Khaki3 LightGoldenrod2 LightYellow3 Grey84 LightSteelBlue1
 | 
					 | 
				
			||||||
		\ Yellow2 DarkOliveGreen1 DarkOliveGreen1_2 DarkSeaGreen1_2 Honeydew2
 | 
					 | 
				
			||||||
		\ LightCyan1 Red1 DeepPink2 DeepPink1 DeepPink1_2 Magenta2_2 Magenta1
 | 
					 | 
				
			||||||
		\ OrangeRed1 IndianRed1 IndianRed1_2 HotPink HotPink_2 MediumOrchid1_2
 | 
					 | 
				
			||||||
		\ DarkOrange Salmon1 LightCoral PaleVioletRed1 Orchid2 Orchid1 Orange1
 | 
					 | 
				
			||||||
		\ SandyBrown LightSalmon1 LightPink1 Pink1 Plum1 Gold1 LightGoldenrod2_2
 | 
					 | 
				
			||||||
		\ LightGoldenrod2_3 NavajoWhite1 MistyRose1 Thistle1 Yellow1 LightGoldenrod1
 | 
					 | 
				
			||||||
		\ Khaki1 Wheat1 Cornsilk1 Grey100 Grey3 Grey7 Grey11 Grey15 Grey19 Grey23
 | 
					 | 
				
			||||||
		\ Grey27 Grey30 Grey35 Grey39 Grey42 Grey46 Grey50 Grey54 Grey58 Grey62
 | 
					 | 
				
			||||||
		\ Grey66 Grey70 Grey74 Grey78 Grey82 Grey85 Grey89 Grey93
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
syntax case match
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Options
 | 
					 | 
				
			||||||
syntax keyword vifmOption contained aproposprg autocd autochpos caseoptions
 | 
					 | 
				
			||||||
		\ cdpath cd chaselinks classify columns co confirm cf cpoptions cpo
 | 
					 | 
				
			||||||
		\ cvoptions deleteprg dotdirs dotfiles dirsize fastrun fillchars fcs findprg
 | 
					 | 
				
			||||||
		\ followlinks fusehome gdefault grepprg histcursor history hi hlsearch hls
 | 
					 | 
				
			||||||
		\ iec ignorecase ic iooptions incsearch is laststatus lines locateprg ls
 | 
					 | 
				
			||||||
		\ lsoptions lsview mediaprg milleroptions millerview mintimeoutlen number nu
 | 
					 | 
				
			||||||
		\ numberwidth nuw previewoptions previewprg quickview relativenumber rnu
 | 
					 | 
				
			||||||
		\ rulerformat ruf runexec scrollbind scb scrolloff sessionoptions ssop so
 | 
					 | 
				
			||||||
		\ sort sortgroups sortorder sortnumbers shell sh shellflagcmd shcf shortmess
 | 
					 | 
				
			||||||
		\ shm showtabline stal sizefmt slowfs smartcase scs statusline stl
 | 
					 | 
				
			||||||
		\ suggestoptions syncregs syscalls tablabel tabprefix tabscope tabstop
 | 
					 | 
				
			||||||
		\ tabsuffix timefmt timeoutlen title tm trash trashdir ts tuioptions to
 | 
					 | 
				
			||||||
		\ undolevels ul vicmd viewcolumns vifminfo vimhelp vixcmd wildmenu wmnu
 | 
					 | 
				
			||||||
		\ wildstyle wordchars wrap wrapscan ws
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Disabled boolean options
 | 
					 | 
				
			||||||
syntax keyword vifmOption contained noautocd noautochpos nocf nochaselinks
 | 
					 | 
				
			||||||
		\ nodotfiles nofastrun nofollowlinks nohlsearch nohls noiec noignorecase
 | 
					 | 
				
			||||||
		\ noic noincsearch nois nolaststatus nols nolsview nomillerview nonumber
 | 
					 | 
				
			||||||
		\ nonu noquickview norelativenumber nornu noscrollbind noscb norunexec
 | 
					 | 
				
			||||||
		\ nosmartcase noscs nosortnumbers nosyscalls notitle notrash novimhelp
 | 
					 | 
				
			||||||
		\ nowildmenu nowmnu nowrap nowrapscan nows
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Inverted boolean options
 | 
					 | 
				
			||||||
syntax keyword vifmOption contained invautocd invautochpos invcf invchaselinks
 | 
					 | 
				
			||||||
		\ invdotfiles invfastrun invfollowlinks invhlsearch invhls inviec
 | 
					 | 
				
			||||||
		\ invignorecase invic invincsearch invis invlaststatus invls invlsview
 | 
					 | 
				
			||||||
		\ invmillerview invnumber invnu invquickview invrelativenumber invrnu
 | 
					 | 
				
			||||||
		\ invscrollbind invscb invrunexec invsmartcase invscs invsortnumbers
 | 
					 | 
				
			||||||
		\ invsyscalls invtitle invtrash invvimhelp invwildmenu invwmnu invwrap
 | 
					 | 
				
			||||||
		\ invwrapscan invws
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Expressions
 | 
					 | 
				
			||||||
syntax region vifmStatement start='^\(\s\|:\)*'
 | 
					 | 
				
			||||||
		\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend
 | 
					 | 
				
			||||||
		\ contains=vifmCommand,vifmCmdCommand,vifmCmdCommandSt,vifmMarkCommandSt
 | 
					 | 
				
			||||||
		\,vifmFtCommandSt,vifmCMapAbbr,vifmMap,vifmMapSt,vifmCMapSt,vifmExecute
 | 
					 | 
				
			||||||
		\,vifmComment,vifmInlineComment,vifmNotComment,vifmExprCommandSt,vifmNormalCommandSt
 | 
					 | 
				
			||||||
		\,vifmCdCommandSt,vifmSet,vifmArgument,vifmSoCommandSt,vifmPrefixCommands
 | 
					 | 
				
			||||||
		\,vifmAutocmdCommand,vifmAutoEvent,vifmPatternCommands
 | 
					 | 
				
			||||||
" Contained statement with highlighting of angle-brace notation.
 | 
					 | 
				
			||||||
syntax region vifmStatementCN start='\(\s\|:\)*'
 | 
					 | 
				
			||||||
		\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend contained
 | 
					 | 
				
			||||||
		\ contains=vifmCommandCN,vifmCmdCommand,vifmCmdCommandSt,vifmMarkCommandSt
 | 
					 | 
				
			||||||
		\,vifmFtCommandStN,vifmCMapAbbr,vifmMap,vifmMapSt,vifmCMapSt,vifmExecute
 | 
					 | 
				
			||||||
		\,vifmComment,vifmInlineComment,vifmNotComment,vifmExprCommandSt,vifmNormalCommandSt
 | 
					 | 
				
			||||||
		\,vifmNotation,vifmCdCommandStN,vifmSetN,vifmArgument,vifmSoCommand
 | 
					 | 
				
			||||||
		\,vifmSoCommandStN,vifmInvertCommand,vifmInvertCommandStN,vifmPrefixCommands
 | 
					 | 
				
			||||||
		\,vifmLetCN
 | 
					 | 
				
			||||||
" Contained statement without highlighting of angle-brace notation.
 | 
					 | 
				
			||||||
syntax region vifmStatementC start='\(\s\|:\)*'
 | 
					 | 
				
			||||||
		\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend contained
 | 
					 | 
				
			||||||
		\ contains=vifmCommand,vifmCmdCommand,vifmCmdCommandSt,vifmMarkCommandSt
 | 
					 | 
				
			||||||
		\,vifmFtCommandSt,vifmCMapAbbr,vifmMap,vifmMapSt,vifmCMapSt,vifmExecute
 | 
					 | 
				
			||||||
		\,vifmComment,vifmInlineComment,vifmNotComment,vifmExprCommandSt,vifmNormalCommandSt
 | 
					 | 
				
			||||||
		\,vifmCdCommandSt,vifmSet,vifmArgument,vifmSoCommand,vifmSoCommandSt
 | 
					 | 
				
			||||||
		\,vifmInvertCommand,vifmInvertCommandSt,vifmPrefixCommands
 | 
					 | 
				
			||||||
		\,vifmAutocmdCommand,vifmAutoEvent,vifmPatternCommands,vifmLetC,vifmUnletC
 | 
					 | 
				
			||||||
syntax region vifmCmdCommandSt start='^\(\s\|:\)*com\%[mand]\>'
 | 
					 | 
				
			||||||
		\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend
 | 
					 | 
				
			||||||
		\ contains=vifmCmdCommand,vifmComment,vifmInlineComment,vifmNotComment
 | 
					 | 
				
			||||||
syntax region vifmCmdCommandName contained start='!\?\s\+[a-zA-Z]\+' end='\ze\s'
 | 
					 | 
				
			||||||
		\ skip='\(\s*\\\)\|\(\s*".*$\)'
 | 
					 | 
				
			||||||
		\ nextgroup=vifmCmdArgs
 | 
					 | 
				
			||||||
syntax region vifmCmdArgs start='\(\s*\n\s*\\\)\?\s*\S\+'
 | 
					 | 
				
			||||||
		\ end='\s' skip='\(\n\s*\\\)\|\(\n\s*".*$\)'
 | 
					 | 
				
			||||||
		\ contained
 | 
					 | 
				
			||||||
		\ contains=vifmColonSubcommand,vifmComment
 | 
					 | 
				
			||||||
syntax region vifmColoCommandSt start='^\(\s\|:\)*colo\%[rscheme]\>' end='$'
 | 
					 | 
				
			||||||
		\ keepend oneline contains=vifmColoCommand
 | 
					 | 
				
			||||||
syntax region vifmInvertCommandSt start='\(\s\|:\)*invert\>' end='$\||'
 | 
					 | 
				
			||||||
		\ keepend oneline contains=vifmInvertCommand
 | 
					 | 
				
			||||||
syntax region vifmInvertCommandStN start='\(\s\|:\)*invert\>' end='$\||'
 | 
					 | 
				
			||||||
		\ contained keepend oneline contains=vifmInvertCommand,vifmNotation
 | 
					 | 
				
			||||||
syntax region vifmSoCommandSt start='\(\s\|:\)*so\%[urce]\>' end='$\||'
 | 
					 | 
				
			||||||
		\ keepend oneline contains=vifmSoCommand,vifmEnvVar,vifmStringInExpr
 | 
					 | 
				
			||||||
syntax region vifmSoCommandStN start='\(\s\|:\)*so\%[urce]\>' end='$\||'
 | 
					 | 
				
			||||||
		\ contained keepend oneline
 | 
					 | 
				
			||||||
		\ contains=vifmSoCommand,vifmEnvVar,vifmNotation,vifmStringInExpr
 | 
					 | 
				
			||||||
syntax region vifmMarkCommandSt start='^\(\s\|:\)*ma\%[rk]\>' end='$' keepend
 | 
					 | 
				
			||||||
		\ oneline contains=vifmMarkCommand
 | 
					 | 
				
			||||||
syntax region vifmCdCommandSt start='\(\s\|:\)*cd\>' end='$\||' keepend oneline
 | 
					 | 
				
			||||||
		\ contains=vifmCdCommand,vifmEnvVar,vifmStringInExpr
 | 
					 | 
				
			||||||
" Highlight for :cd command with highlighting of angle-brace notation.
 | 
					 | 
				
			||||||
syntax region vifmCdCommandStN start='\(\s\|:\)*cd\>' end='$\||' keepend oneline
 | 
					 | 
				
			||||||
		\ contained
 | 
					 | 
				
			||||||
		\ contains=vifmCdCommand,vifmEnvVar,vifmNotation,vifmStringInExpr
 | 
					 | 
				
			||||||
syntax region vifmFtCommandSt start='\(\s\|:\)*file[tvx]'
 | 
					 | 
				
			||||||
		\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend
 | 
					 | 
				
			||||||
		\ contained
 | 
					 | 
				
			||||||
		\ contains=vifmFtBeginning,vifmComment
 | 
					 | 
				
			||||||
syntax region vifmFtCommandStN start='\(\s\|:\)*file[tvx]'
 | 
					 | 
				
			||||||
		\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$\|\(<[cC][rR]>\)' keepend
 | 
					 | 
				
			||||||
		\ contained
 | 
					 | 
				
			||||||
		\ contains=vifmComment,vifmNotation,vifmFtBeginning
 | 
					 | 
				
			||||||
syntax region vifmMapSt start='^\(\s\|:\)*\(map\|mm\%[ap]\|mn\%[oremap]\|mu\%[nmap]\|nm\%[ap]\|nn\%[oremap]\|no\%[remap]\|nun\%[map]\|qm\%[ap]\|qn\%[oremap]\|qun\%[map]\|unm\%[ap]\|vm\%[ap]\|vn\%[oremap]\|vu\%[nmap]\)'
 | 
					 | 
				
			||||||
		\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend
 | 
					 | 
				
			||||||
		\ contains=vifmMap
 | 
					 | 
				
			||||||
syntax region vifmCMapSt
 | 
					 | 
				
			||||||
		\ start='^\(\s\|:\)*\(cm\%[ap]\|cno\%[remap]\|cu\%[nmap]\)'
 | 
					 | 
				
			||||||
		\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend
 | 
					 | 
				
			||||||
		\ contains=vifmCMapAbbr
 | 
					 | 
				
			||||||
syntax region vifmExprCommandSt
 | 
					 | 
				
			||||||
		\ start='\<\(if\|ec\%[ho]\|elsei\%[f]\|exe\%[cute]\)\>'
 | 
					 | 
				
			||||||
		\ end='$\||'
 | 
					 | 
				
			||||||
		\ contains=vifmExprCommand,vifmString,vifmStringInExpr,vifmBuiltinFunction
 | 
					 | 
				
			||||||
		\,vifmOperator,vifmEnvVar,vifmNumber
 | 
					 | 
				
			||||||
syntax region vifmNormalCommandSt start='\(\s\|:\)*norm\%[al]\>' end='$' keepend
 | 
					 | 
				
			||||||
		\ oneline
 | 
					 | 
				
			||||||
		\ contains=vifmNormalCommand,vifmComment
 | 
					 | 
				
			||||||
syntax region vifmExecute start='!' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$'
 | 
					 | 
				
			||||||
		\ keepend
 | 
					 | 
				
			||||||
		\ contains=vifmNotation,vifmComment
 | 
					 | 
				
			||||||
syntax region vifmMapArgs start='\ze\S\+'
 | 
					 | 
				
			||||||
		\ end='\ze.' skip='\(\n\s*\\\)\|\(\n\s*".*$\)'
 | 
					 | 
				
			||||||
		\ contained
 | 
					 | 
				
			||||||
		\ nextgroup=vifmMapArgList
 | 
					 | 
				
			||||||
syntax region vifmCMapArgs start='\S\+'
 | 
					 | 
				
			||||||
		\ end='\n\s*\\' skip='\(\n\s*\\\)\|\(\n\s*".*$\)'
 | 
					 | 
				
			||||||
		\ contained
 | 
					 | 
				
			||||||
		\ contains=vifmMapLhs,vifmMapCRhs
 | 
					 | 
				
			||||||
syntax region vifmMapLhs start='\S\+'
 | 
					 | 
				
			||||||
		\ end='\ze\s' skip='\(\s*\\\)\|\(\s*".*$\)'
 | 
					 | 
				
			||||||
		\ contained
 | 
					 | 
				
			||||||
		\ contains=vifmNotation,vifmComment
 | 
					 | 
				
			||||||
		\ nextgroup=vifmMapRhs
 | 
					 | 
				
			||||||
syntax region vifmMapRhs start='.'
 | 
					 | 
				
			||||||
		\ end='\ze<[cC][rR]>' skip='\(\s*\\\)\|\(\s*".*$\)'
 | 
					 | 
				
			||||||
		\ contained keepend
 | 
					 | 
				
			||||||
		\ contains=vifmNotation,vifmComment,vifmColonSubcommandN
 | 
					 | 
				
			||||||
		\ nextgroup=vifmMapRhs
 | 
					 | 
				
			||||||
syntax region vifmMapCRhs start='\s'
 | 
					 | 
				
			||||||
		\ end='<[cC][rR]>' skip='\(\s*\\\)\|\(\s*".*$\)'
 | 
					 | 
				
			||||||
		\ contained keepend
 | 
					 | 
				
			||||||
		\ contains=vifmNotation,vifmComment,vifmSubcommandN
 | 
					 | 
				
			||||||
syntax region vifmColonSubcommand start='\s*\(\s*\n\s*\\\)\?:\s*\S\+'
 | 
					 | 
				
			||||||
		\ end='$' skip='\s*\n\(\s*\\\)\|\(\s*".*$\)'
 | 
					 | 
				
			||||||
		\ contained
 | 
					 | 
				
			||||||
		\ contains=vifmStatementC
 | 
					 | 
				
			||||||
" Contained sub command with highlighting of angle-brace notation.
 | 
					 | 
				
			||||||
syntax region vifmColonSubcommandN start='\s*\(\s*\n\s*\\\)\?:\s*\S\+'
 | 
					 | 
				
			||||||
		\ end='\ze<[cC][rR]>\|$' skip='\s*\n\(\s*\\\)\|\(\s*".*$\)' keepend
 | 
					 | 
				
			||||||
		\ contained
 | 
					 | 
				
			||||||
		\ contains=vifmStatementCN
 | 
					 | 
				
			||||||
syntax region vifmSubcommandN start='\s*\(\s*\n\s*\\\)\?:\?\s*\S\+'
 | 
					 | 
				
			||||||
		\ end='\ze<[cC][rR]>\|$' skip='\s*\n\(\s*\\\)\|\(\s*".*$\)' keepend
 | 
					 | 
				
			||||||
		\ contained
 | 
					 | 
				
			||||||
		\ contains=vifmStatementCN
 | 
					 | 
				
			||||||
" Non-empty pattern or form [!][{]{*.ext,*.e}[}], [!][/]/regex/[/][iI] or
 | 
					 | 
				
			||||||
" <mime-type-globs>, possibly multi-line.
 | 
					 | 
				
			||||||
" [!]/regexp/[iI]*
 | 
					 | 
				
			||||||
syntax region vifmPattern contained
 | 
					 | 
				
			||||||
		\ start='!\?/\ze\(\n\s*\\\|\n\s*".*$\|[^/]\|\\/\)\+/'
 | 
					 | 
				
			||||||
		\ skip='\\/\|\(\n\s*\\\)\|\(\n\s*".*$\)' end='/[iI]*\ze\|/\ze\S\+' keepend
 | 
					 | 
				
			||||||
		\ contains=vifmComment,vifmInlineComment,vifmNotComment,vifmNotPattern
 | 
					 | 
				
			||||||
" [!]//regexp//[iI]*
 | 
					 | 
				
			||||||
syntax region vifmPattern contained
 | 
					 | 
				
			||||||
		\ start='!\?//\ze\(/[^/]\|\n\s*\\\|\n\s*".*$\|[^/]\|\\/\)\+//'
 | 
					 | 
				
			||||||
		\ skip='/[^/]\|\(\n\s*\\\)\|\(\n\s*".*$\)' end='//[iI]*' keepend
 | 
					 | 
				
			||||||
		\ contains=vifmComment,vifmInlineComment,vifmNotComment,vifmNotPattern
 | 
					 | 
				
			||||||
" [!]{regexp}
 | 
					 | 
				
			||||||
syntax region vifmPattern contained
 | 
					 | 
				
			||||||
		\ start='!\?{[^}]' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='}' keepend
 | 
					 | 
				
			||||||
		\ contains=vifmComment,vifmInlineComment,vifmNotComment,vifmNotPattern
 | 
					 | 
				
			||||||
" [!]{{regexp}}
 | 
					 | 
				
			||||||
syntax region vifmPattern contained
 | 
					 | 
				
			||||||
		\ start='!\?{{\ze.\{-}}}' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='}}' keepend
 | 
					 | 
				
			||||||
		\ contains=vifmComment,vifmInlineComment,vifmNotComment,vifmNotPattern
 | 
					 | 
				
			||||||
" [!]<regexp>
 | 
					 | 
				
			||||||
syntax region vifmPattern contained
 | 
					 | 
				
			||||||
		\ start='!\?<[^>]' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='>' keepend
 | 
					 | 
				
			||||||
		\ contains=vifmComment,vifmInlineComment,vifmNotComment,vifmNotPattern
 | 
					 | 
				
			||||||
syntax region vifmPatterns contained
 | 
					 | 
				
			||||||
		\ start='\(^\|\s\)\zs[/{<!]'
 | 
					 | 
				
			||||||
		\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)'
 | 
					 | 
				
			||||||
		\ end='\(/[a-zA-Z]\{,4}\|[}>iI]\)\(\s\)' keepend
 | 
					 | 
				
			||||||
		\ contains=vifmPattern,vifmComment
 | 
					 | 
				
			||||||
syntax match vifmNotPattern contained '!\?\({{}}\|\<//\>\|////\)'
 | 
					 | 
				
			||||||
syntax region vifmHi
 | 
					 | 
				
			||||||
		\ start='^\(\s\|:\)*\<hi\%[ghlight]\>' skip='\(\n\s*\\\)\|\(\n\s*".*$\)'
 | 
					 | 
				
			||||||
		\ end='$' keepend
 | 
					 | 
				
			||||||
		\ contains=vifmHiCommand,vifmHiArgs,vifmHiGroups,vifmHiStyles,vifmHiColors
 | 
					 | 
				
			||||||
		\,vifmNumber,vifmComment,vifmInlineComment,vifmNotComment,vifmHiClear
 | 
					 | 
				
			||||||
		\,vifmPatterns,vifmHexColor
 | 
					 | 
				
			||||||
syntax region vifmFtBeginning contained
 | 
					 | 
				
			||||||
		\ start='\<\(filet\%[ype]\|filext\%[ype]\|filev\%[iewer]\)\>\s\+\S'
 | 
					 | 
				
			||||||
		\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)'
 | 
					 | 
				
			||||||
		\ end='\(\S\zs\s\)' keepend
 | 
					 | 
				
			||||||
		\ contains=vifmFtCommand,vifmPatterns,vifmComment
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" common highlight for :command arguments without highlighting of angle-bracket
 | 
					 | 
				
			||||||
" notation
 | 
					 | 
				
			||||||
syntax region vifmArgs start='!\?\zs\(\s*\S\+\|[^a-zA-Z]\)'
 | 
					 | 
				
			||||||
		\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='|\|$'
 | 
					 | 
				
			||||||
		\ contained
 | 
					 | 
				
			||||||
		\ contains=vifmStringInExpr,vifmComment
 | 
					 | 
				
			||||||
" common highlight for :command arguments with highlighting of angle-bracket
 | 
					 | 
				
			||||||
" notation
 | 
					 | 
				
			||||||
syntax region vifmArgsCN start='!\?\zs\(\s*\S\+\|[^a-zA-Z]\)'
 | 
					 | 
				
			||||||
		\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='|\|$'
 | 
					 | 
				
			||||||
		\ contained
 | 
					 | 
				
			||||||
		\ contains=vifmStringInExpr,vifmNotation
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
syntax region vifmSet
 | 
					 | 
				
			||||||
		\ start='\(\s\|:\)*\<\(se\%[t]\|setg\%[lobal]\|setl\%[ocal]\)\>'
 | 
					 | 
				
			||||||
		\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$'
 | 
					 | 
				
			||||||
		\ keepend
 | 
					 | 
				
			||||||
		\ contains=vifmSetCommand,vifmOption,vifmSetAssignSQS,vifmSetAssignDQS
 | 
					 | 
				
			||||||
		\,vifmSetAssignNS,vifmComment,vifmInlineComment,vifmNotComment
 | 
					 | 
				
			||||||
syntax region vifmSetN
 | 
					 | 
				
			||||||
		\ start='\(\s\|:\)*\<\(se\%[t]\|setg\%[lobal]\|setl\%[ocal]\)\>'
 | 
					 | 
				
			||||||
		\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$'
 | 
					 | 
				
			||||||
		\ keepend
 | 
					 | 
				
			||||||
		\ contains=vifmSetCommand,vifmOption,vifmSetAssignSQS,vifmSetAssignDQS
 | 
					 | 
				
			||||||
		\,vifmSetAssignNSN,vifmComment,vifmInlineComment,vifmNotComment,vifmNotation
 | 
					 | 
				
			||||||
syntax region vifmSet2 contained
 | 
					 | 
				
			||||||
		\ start='^\(\s\|:\)*\<\(se\%[t]\|setg\%[lobal]\|setl\%[ocal]\)\>'
 | 
					 | 
				
			||||||
		\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$'
 | 
					 | 
				
			||||||
		\ keepend
 | 
					 | 
				
			||||||
		\ contains=vifmSetCommand,vifmOption,vifmSetAssignSQS,vifmSetAssignDQS
 | 
					 | 
				
			||||||
		\,vifmSetAssignNSN,vifmComment,vifmInlineComment,vifmNotComment,vifmNotation
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Highlight for =value part of :set arguments of form option=value
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" For single quoted string (check that it starts with =')
 | 
					 | 
				
			||||||
syntax region vifmSetAssignSQS contained
 | 
					 | 
				
			||||||
		\ start="='" skip=+\\\\\|\\'+ end=+'+ keepend
 | 
					 | 
				
			||||||
		\ contains=vifmString
 | 
					 | 
				
			||||||
" For double quoted string (check that it starts with =")
 | 
					 | 
				
			||||||
syntax region vifmSetAssignDQS contained
 | 
					 | 
				
			||||||
		\ start='="' skip=+\\\\\|\\"+ end=+"+ keepend
 | 
					 | 
				
			||||||
		\ contains=vifmString
 | 
					 | 
				
			||||||
" For not strings (check that it doesn't start with either =' or =")
 | 
					 | 
				
			||||||
syntax region vifmSetAssignNS contained
 | 
					 | 
				
			||||||
		\ start='=[^"'' ]' skip='\(\n\s*\\\)\|\(\n\s*".*$\)\|^.*\S.*\\\s' end='^\s*\\\s\|[^\\]\s\|$'
 | 
					 | 
				
			||||||
		\ extend
 | 
					 | 
				
			||||||
		\ contains=vifmNumber,vifmComment,vifmInlineComment
 | 
					 | 
				
			||||||
" For not strings (check that it doesn't start with either =' or =")
 | 
					 | 
				
			||||||
syntax region vifmSetAssignNSN contained
 | 
					 | 
				
			||||||
		\ start='=[^"'' ]' skip='\(\n\s*\\\)\|\(\n\s*".*$\)\|^.*\S.*\\\s' end='^\s*\\\s\|[^\\]\s\|$'
 | 
					 | 
				
			||||||
		\ extend
 | 
					 | 
				
			||||||
		\ contains=vifmNumber,vifmComment,vifmInlineComment,vifmNotation
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" :let command with highlighting of angle-brace notation.
 | 
					 | 
				
			||||||
syntax region vifmLet
 | 
					 | 
				
			||||||
		\ start='^\(\s\|:\)*\<let\>' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$'
 | 
					 | 
				
			||||||
		\ keepend
 | 
					 | 
				
			||||||
		\ contains=vifmLetCommand,vifmEnvVar,vifmString,vifmStringInExpr,vifmComment
 | 
					 | 
				
			||||||
		\,vifmInlineComment,vifmNotComment
 | 
					 | 
				
			||||||
" Contained :let command without highlighting of angle-brace notation.
 | 
					 | 
				
			||||||
syntax region vifmLetC
 | 
					 | 
				
			||||||
		\ start='\<let\>' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$\||'
 | 
					 | 
				
			||||||
		\ keepend
 | 
					 | 
				
			||||||
		\ contains=vifmLetCommand,vifmEnvVar,vifmString,vifmStringInExpr,vifmComment
 | 
					 | 
				
			||||||
		\,vifmInlineComment,vifmNotComment,vifmBuiltinFunction
 | 
					 | 
				
			||||||
" Contained :let command with highlighting of angle-brace notation.
 | 
					 | 
				
			||||||
syntax region vifmLetCN
 | 
					 | 
				
			||||||
		\ start='\<let\>' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$\||'
 | 
					 | 
				
			||||||
		\ keepend
 | 
					 | 
				
			||||||
		\ contains=vifmLetCommand,vifmEnvVar,vifmString,vifmStringInExpr,vifmComment
 | 
					 | 
				
			||||||
		\,vifmInlineComment,vifmNotComment,vifmBuiltinFunction,vifmNotation
 | 
					 | 
				
			||||||
syntax region vifmUnlet
 | 
					 | 
				
			||||||
		\ start='^\(\s\|:\)*\<unl\%[et]\>' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$'
 | 
					 | 
				
			||||||
		\ keepend
 | 
					 | 
				
			||||||
		\ contains=vifmUnletCommand,vifmEnvVar,vifmComment,vifmInlineComment,vifmNotComment
 | 
					 | 
				
			||||||
syntax region vifmUnletC
 | 
					 | 
				
			||||||
		\ start='\<unl\%[et]\>' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$\||'
 | 
					 | 
				
			||||||
		\ keepend
 | 
					 | 
				
			||||||
		\ contains=vifmUnletCommand,vifmEnvVar,vifmComment,vifmInlineComment,vifmNotComment
 | 
					 | 
				
			||||||
syntax region vifmString contained start=+="+hs=s+1 skip=+\\\\\|\\"+  end=+"+
 | 
					 | 
				
			||||||
syntax region vifmString contained start=+='+hs=s+1 skip=+\\\\\|\\'+  end=+'+
 | 
					 | 
				
			||||||
syntax region vifmStringInExpr contained start=+=\@<="+hs=s+1 skip=+\\\\\|\\"+
 | 
					 | 
				
			||||||
		\ end=+"+
 | 
					 | 
				
			||||||
syntax region vifmStringInExpr contained start=+=\@<='+hs=s+1
 | 
					 | 
				
			||||||
		\ skip=+\\\\\|\\'\|''+  end=+'+
 | 
					 | 
				
			||||||
syntax region vifmStringInExpr contained start=+[.( ]"+hs=s+1 skip=+\\\\\|\\"+
 | 
					 | 
				
			||||||
		\ end=+"+
 | 
					 | 
				
			||||||
syntax region vifmStringInExpr contained start=+[.( ]'+hs=s+1
 | 
					 | 
				
			||||||
		\ skip=+\\\\\|\\'\|''+  end=+'+
 | 
					 | 
				
			||||||
syntax region vifmArgument contained start=+"+ skip=+\\\\\|\\"+  end=+"+
 | 
					 | 
				
			||||||
syntax region vifmArgument contained start=+'+ skip=+\\\\\|\\'\|''+  end=+'+
 | 
					 | 
				
			||||||
syntax match vifmEnvVar contained /\$[0-9a-zA-Z_]\+/
 | 
					 | 
				
			||||||
syntax match vifmNumber contained /\d\+/
 | 
					 | 
				
			||||||
syntax match vifmHexColor contained /#[0-9a-fA-F]\{6}/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Optional map arguments right after command name
 | 
					 | 
				
			||||||
syntax match vifmMapArgList '\(<\(silent\|wait\)>\s*\)*' contained
 | 
					 | 
				
			||||||
		\ nextgroup=vifmMapLhs
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Ange-bracket notation
 | 
					 | 
				
			||||||
syntax case ignore
 | 
					 | 
				
			||||||
syntax match vifmNotation '<\(esc\|cr\|space\|del\|nop\|\(s-\)\?tab\|home\|end\|left\|right\|up\|down\|bs\|delete\|insert\|pageup\|pagedown\|\([acms]-\)\?f\d\{1,2\}\|c-s-[a-z[\]^_]\|s-c-[a-z[\]^_]\|c-[a-z[\]^_@]\|[am]-c-[a-z]\|c-[am]-[a-z]\|[am]-[a-z]\)>'
 | 
					 | 
				
			||||||
syntax case match
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Whole line comment
 | 
					 | 
				
			||||||
syntax region vifmComment contained extend
 | 
					 | 
				
			||||||
		\ contains=@Spell start='^\(\s\|:\)*"' end='$'
 | 
					 | 
				
			||||||
" Comment at the end of a line
 | 
					 | 
				
			||||||
syntax match vifmInlineComment contained contains=@Spell '\s"[^"]*$'
 | 
					 | 
				
			||||||
" This prevents highlighting non-first line of multi-line command
 | 
					 | 
				
			||||||
syntax match vifmNotComment contained '\s"[^"]*\(\n\s*\(\\\|"\)\)\@='
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Empty line
 | 
					 | 
				
			||||||
syntax match vifmEmpty /^\s*$/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" :highlight clear
 | 
					 | 
				
			||||||
syntax match vifmHiClear contained /\s*\<clear\>\s*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Check spelling only in syntax elements marked with @Spell
 | 
					 | 
				
			||||||
syntax spell notoplevel
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Highlight
 | 
					 | 
				
			||||||
highlight link vifmAutocmdCommand Statement
 | 
					 | 
				
			||||||
highlight link vifmPatternCommands Statement
 | 
					 | 
				
			||||||
highlight link vifmComment Comment
 | 
					 | 
				
			||||||
highlight link vifmInlineComment Comment
 | 
					 | 
				
			||||||
highlight link vifmCommand Statement
 | 
					 | 
				
			||||||
highlight link vifmCommandCN Statement
 | 
					 | 
				
			||||||
highlight link vifmPrefixCommands Statement
 | 
					 | 
				
			||||||
highlight link vifmCdCommand Statement
 | 
					 | 
				
			||||||
highlight link vifmCmdCommand Statement
 | 
					 | 
				
			||||||
highlight link vifmColoCommand Statement
 | 
					 | 
				
			||||||
highlight link vifmHiCommand Statement
 | 
					 | 
				
			||||||
highlight link vifmHiClear Statement
 | 
					 | 
				
			||||||
highlight link vifmInvertCommand Statement
 | 
					 | 
				
			||||||
highlight link vifmMarkCommand Statement
 | 
					 | 
				
			||||||
highlight link vifmFtCommand Statement
 | 
					 | 
				
			||||||
highlight link vifmExprCommand Statement
 | 
					 | 
				
			||||||
highlight link vifmNormalCommand Statement
 | 
					 | 
				
			||||||
highlight link vifmLetCommand Statement
 | 
					 | 
				
			||||||
highlight link vifmUnletCommand Statement
 | 
					 | 
				
			||||||
highlight link vifmSetCommand Statement
 | 
					 | 
				
			||||||
highlight link vifmSoCommand Statement
 | 
					 | 
				
			||||||
highlight link vifmBuiltinFunction Function
 | 
					 | 
				
			||||||
highlight link vifmOperator Operator
 | 
					 | 
				
			||||||
highlight link vifmMap Statement
 | 
					 | 
				
			||||||
highlight link vifmCMapAbbr Statement
 | 
					 | 
				
			||||||
highlight link vifmHiArgs Type
 | 
					 | 
				
			||||||
highlight link vifmAutoEvent Type
 | 
					 | 
				
			||||||
highlight link vifmHiGroups Identifier
 | 
					 | 
				
			||||||
highlight link vifmPattern String
 | 
					 | 
				
			||||||
highlight link vifmHiStyles PreProc
 | 
					 | 
				
			||||||
highlight link vifmHiColors Special
 | 
					 | 
				
			||||||
highlight link vifmOption PreProc
 | 
					 | 
				
			||||||
highlight link vifmNotation Special
 | 
					 | 
				
			||||||
highlight link vifmMapArgList Special
 | 
					 | 
				
			||||||
highlight link vifmString String
 | 
					 | 
				
			||||||
highlight link vifmStringInExpr String
 | 
					 | 
				
			||||||
highlight link vifmEnvVar PreProc
 | 
					 | 
				
			||||||
highlight link vifmNumber Number
 | 
					 | 
				
			||||||
highlight link vifmHexColor Number
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
let &cpo = s:cpo_save
 | 
					 | 
				
			||||||
let &commentstring = '"%s'
 | 
					 | 
				
			||||||
unlet s:cpo_save
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" vim: set tabstop=2 softtabstop=2 shiftwidth=2 noexpandtab cinoptions-=(0 :
 | 
					 | 
				
			||||||
@@ -1,50 +0,0 @@
 | 
				
			|||||||
let g:user_tips_list= [
 | 
					 | 
				
			||||||
	\ ':vebose ★ * … ★: eg. map/set/…',
 | 
					 | 
				
			||||||
	\ ':clist+:cc :+cc :-cc :copen :cwindow :cclose',
 | 
					 | 
				
			||||||
	\ ':undolist :earlier :later',
 | 
					 | 
				
			||||||
	\ 'git mergetool → vimdiff3 → https://stackoverflow.com/a/163659',
 | 
					 | 
				
			||||||
	\ ':llist+:ll :+ll :-ll :lopen :lwindow :lclose',
 | 
					 | 
				
			||||||
	\ ':m ''>+1 … :m ''<-2',
 | 
					 | 
				
			||||||
	\ 'QuickList → :set ma+‘edit’+;w ;s … ;q',
 | 
					 | 
				
			||||||
	\ ':set foldopen-=search',
 | 
					 | 
				
			||||||
	\ 'Buffer info → <c-g> g<c-g> … :map <buffer><tab>',
 | 
					 | 
				
			||||||
	\ 'Rename file → :saveas * | :silent !rm # | :bw #',
 | 
					 | 
				
			||||||
	\ 'packadd cfilter',
 | 
					 | 
				
			||||||
	\ 'Next word location → ]I [I ]<c-I> [<c-I> … <leader>]I <leader>[I',
 | 
					 | 
				
			||||||
	\ ':w !sudo tee > /dev/null %',
 | 
					 | 
				
			||||||
	\ '`0·`"·`.·`` … last exit·edit·change·pre-jump … also g''*',
 | 
					 | 
				
			||||||
	\ 'q: q? q/ … @: ?<cr> /<cr> :&<cr> , ;',
 | 
					 | 
				
			||||||
	\ '<c-n><c-p> <c-x><c-l> <c-x><c-f> … :h ins-completion',
 | 
					 | 
				
			||||||
	\ ':split +N … open cur. file in N line … :split +/pattern',
 | 
					 | 
				
			||||||
	\ 'vim can edit zip files',
 | 
					 | 
				
			||||||
	\ ':set nowrapscan (cycle search)',
 | 
					 | 
				
			||||||
	\ '<c-x>= <c-v>',
 | 
					 | 
				
			||||||
	\ 'silent! %s/[\\r \\t]\+$//',
 | 
					 | 
				
			||||||
	\ ':ilist pattern … :ijump pattern',
 | 
					 | 
				
			||||||
	\ 'Replace mode → R',
 | 
					 | 
				
			||||||
	\ 'J gJ K gwip g~ ~',
 | 
					 | 
				
			||||||
	\ 'Folds → zm za zi zj zk (zfG/zd) zc zC zo zO … :*fold<tab>',
 | 
					 | 
				
			||||||
	\ '<c-]> (`ž`) <c-t>',
 | 
					 | 
				
			||||||
	\ 'Macro defs. → ]D [D ]<c-D> [<c-D> … :dlist string … :djump string',
 | 
					 | 
				
			||||||
	\ ':update | edit ++ff=dos | setlocal ff=unix',
 | 
					 | 
				
			||||||
	\ 'Shift-V and then type gq → put "overflowed" text on new lines',
 | 
					 | 
				
			||||||
	\ ':set scrollbind (`scb`) … :diffthis :diffoff :diff*<tab>',
 | 
					 | 
				
			||||||
	\ ":let i=10 | 'a,'bg/Abc/s/yy/\=i/ |let i=i+1 # convert yy to 10,11,12 etc",
 | 
					 | 
				
			||||||
	\ 'use \zs \ze \c inside `?`|`/`',
 | 
					 | 
				
			||||||
	\ 'v_* :%s//replacement',
 | 
					 | 
				
			||||||
	\ ':5,10norm! @a … :g/pattern/norm! @a',
 | 
					 | 
				
			||||||
	\ '`textwidth` → n_gq* v_gq',
 | 
					 | 
				
			||||||
	\ 'File encryption → :X … vim -x filename',
 | 
					 | 
				
			||||||
	\ ':sort /,/',
 | 
					 | 
				
			||||||
	\ 'zz zb zt zL zH gm gM',
 | 
					 | 
				
			||||||
	\ '<c-a> <c-x> g<c-a>…',
 | 
					 | 
				
			||||||
	\ ':set spell :spell<tab> … z= zg zug ]s [s',
 | 
					 | 
				
			||||||
	\ ':lhistory :lolder :lnewer',
 | 
					 | 
				
			||||||
	\ ':[m]ove :[co]py (:t) :p :#',
 | 
					 | 
				
			||||||
	\ ':help i_CTRL-<tab> … i_CTRL-Y … i<c-u>',
 | 
					 | 
				
			||||||
	\ '*grep onchange -r . --include=*.\{js,md\} …or http://jdem.cz/fgytv8',
 | 
					 | 
				
			||||||
	\ '%bdelete|edit #|normal `"',
 | 
					 | 
				
			||||||
	\ ':diffget :diffput c] [c',
 | 
					 | 
				
			||||||
	\ ':chistory :colder :cnewer',
 | 
					 | 
				
			||||||
	\ 'Repeat substitution(s) & g& :& :&& :~ … :help :s_flags'
 | 
					 | 
				
			||||||
  \ ]
 | 
					 | 
				
			||||||
@@ -1 +0,0 @@
 | 
				
			|||||||
{"bundle":["https://github.com/tpope/vim-repeat.git","https://github.com/machakann/vim-highlightedyank.git","https://github.com/tpope/vim-surround.git","https://github.com/tpope/vim-liquid.git","https://github.com/junegunn/rainbow_parentheses.vim.git","https://github.com/jaandrle/vim-mini_intro.git","git@github.com:jaandrle/vim-mini_sessions.git","https://github.com/jaandrle/vim-jaandrle_utils.git","https://github.com/jaandrle/vim-scommands.git","https://github.com/jaandrle/vim-mini_enhancement.git","https://github.com/ctrlpvim/ctrlp.vim.git","https://github.com/jaandrle/vim-user_tips.git","https://github.com/rantasub/vim-bash-completion.git","https://github.com/rhysd/git-messenger.vim.git","https://github.com/Yilin-Yang/vim-markbar.git","https://github.com/wellle/context.vim.git","https://github.com/tpope/vim-speeddating.git","https://github.com/jonsmithers/vim-html-template-literals.git","git@github.com:leafOfTree/vim-vue-plugin","git@github.com:madox2/vim-ai","git@github.com:AndrewRadev/linediff.vim.git"],"one_files":["https://gist.githubusercontent.com/jaandrle/9356d737ef5dfda2efbe50248d32cb78/raw/7f73e223b93d9cb889eecc77850604ebe7e102a3/cwordhi.vim","https://gist.githubusercontent.com/jaandrle/d0ce92e67d03dd8da4b7b932b379b879/raw/b47b1260759d32823890c39df31909f386cc3f6c/vifm.vim"],"pack":["git@github.com:Exafunction/codeium.vim.git","git@github.com:MaxMEllon/vim-jsx-pretty","https://github.com/neoclide/coc.nvim.git","git@github.com:editorconfig/editorconfig-vim","git@github.com:jaandrle/coc-custom_elements","https://github.com/mbbill/undotree.git"]}
 | 
					 | 
				
			||||||
							
								
								
									
										484
									
								
								.vimrc
									
									
									
									
									
								
							
							
						
						
									
										484
									
								
								.vimrc
									
									
									
									
									
								
							@@ -1,464 +1,82 @@
 | 
				
			|||||||
""" VIM config file | Jan Andrle | 2024-02-07 (VIM >=8.1)
 | 
					 | 
				
			||||||
"" #region B – Base
 | 
					 | 
				
			||||||
scriptencoding utf-8 | set encoding=utf-8
 | 
					scriptencoding utf-8 | set encoding=utf-8
 | 
				
			||||||
let $BASH_ENV = "~/.bashrc"
 | 
					let $BASH_ENV = "~/.bashrc"
 | 
				
			||||||
	set runtimepath^=~/.vim/bundle/*
 | 
					 | 
				
			||||||
packadd! matchit
 | 
					packadd! matchit
 | 
				
			||||||
set hidden
 | 
					set hidden
 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	set title
 | 
					 | 
				
			||||||
	colorscheme codedark
 | 
					 | 
				
			||||||
	set updatetime=300 lazyredraw ttyfast	" Having longer updatetime (default is 4s) leads to noticeable delays and poor user experience. Also reduce redraw frequency and fast terminal typing
 | 
					 | 
				
			||||||
	set noerrorbells novisualbell
 | 
					 | 
				
			||||||
	set belloff=esc
 | 
					 | 
				
			||||||
set confirm
 | 
					set confirm
 | 
				
			||||||
	set guioptions-=T
 | 
					set belloff=esc
 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	cabbrev <expr> %PWD%  execute('pwd')
 | 
					 | 
				
			||||||
	cabbrev <expr> %CD%   fnameescape(expand('%:p:h'))
 | 
					 | 
				
			||||||
	cabbrev <expr> %CS%   mini_enhancement#selectedText()
 | 
					 | 
				
			||||||
	cabbrev <expr> %CW%   expand('<cword>')
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	let mapleader = "\\"
 | 
					 | 
				
			||||||
	" better for my keyboard, but maybe use `:help keymap`?
 | 
					 | 
				
			||||||
	nnoremap § @
 | 
					 | 
				
			||||||
	nnoremap §§ @@
 | 
					 | 
				
			||||||
	nnoremap ů ;
 | 
					 | 
				
			||||||
	nnoremap ; :
 | 
					 | 
				
			||||||
	nnoremap <leader>u U
 | 
					 | 
				
			||||||
	nnoremap U <c-r>
 | 
					 | 
				
			||||||
	nnoremap ž <c-]>
 | 
					 | 
				
			||||||
	nnoremap <c-up> <c-y>
 | 
					 | 
				
			||||||
	nnoremap <c-down> <c-e>
 | 
					 | 
				
			||||||
	" <c-bs>
 | 
					 | 
				
			||||||
	imap  <c-w>
 | 
					 | 
				
			||||||
	cmap  <c-w>
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	if has("patch-8.1.0360")
 | 
					 | 
				
			||||||
		set diffopt+=algorithm:patience,indent-heuristic | endif
 | 
					 | 
				
			||||||
	set diffopt+=iwhite
 | 
					 | 
				
			||||||
	augroup vimrc_help
 | 
					 | 
				
			||||||
		autocmd!
 | 
					 | 
				
			||||||
		autocmd BufEnter *.txt if &buftype == 'help' | wincmd L | vertical resize 90 | endif
 | 
					 | 
				
			||||||
	augroup END
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	""" #region BB – Build-in plugins
 | 
					 | 
				
			||||||
	" https://github.com/rbtnn/vim-gloaded/blob/master/plugin/gloaded.vim
 | 
					 | 
				
			||||||
	let g:loaded_vimballPlugin = 1 " :h pi_vimball … for plugin creators
 | 
					 | 
				
			||||||
	let g:vifm_replace_netrw= 1 | let g:loaded_netrw= 1 | let g:loaded_netrwPlugin= 1  " this line needs to be commented to let vim dowmload spelllangs!!! … see http://jdem.cz/fgyw25
 | 
					 | 
				
			||||||
	""" #endregion BB
 | 
					 | 
				
			||||||
"" #endregion B
 | 
					 | 
				
			||||||
"" #region H – Helpers + remap 'sS' (primary ss, see `vim-scommands`)
 | 
					 | 
				
			||||||
	nmap sh :execute 'ALTredir :map s \<bar> map '.mapleader.' \<bar> map § \<bar> map ů \<bar> map ; \<bar> map U \<bar> map ž'<cr>:g/^$/d<cr>:g/^v  s/m$<cr>úgg
 | 
					 | 
				
			||||||
	call scommands#map('s', 'CL', "n,v")
 | 
					 | 
				
			||||||
	command! -nargs=?  CLscratch 10split | enew | setlocal buftype=nofile bufhidden=wipe noswapfile nobuflisted | if <q-args>!='' | execute 'normal "'.<q-args>.'p' | endif | nnoremap <buffer> ;q :q<cr>
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	call scommands#map('S', 'SET', "n,v")
 | 
					 | 
				
			||||||
	call scommands#map('a', 'ALT', "n,V")
 | 
					 | 
				
			||||||
	cabbrev ALTR ALTredrawSyntax
 | 
					 | 
				
			||||||
	set grepprg=LC_ALL=C\ grep\ -nrsH
 | 
					 | 
				
			||||||
	command! -nargs=0
 | 
					 | 
				
			||||||
		\ ALTredrawSyntax edit | exec 'normal `"' | exec 'set ft='.&ft
 | 
					 | 
				
			||||||
	command! -complete=command -bar -range -nargs=+
 | 
					 | 
				
			||||||
		\ ALTredir call jaandrle_utils#redir(0, <q-args>, <range>, <line1>, <line2>)
 | 
					 | 
				
			||||||
	command! -nargs=+ -complete=file_in_path -bar
 | 
					 | 
				
			||||||
		\ ALTgrep  cgetexpr jaandrle_utils#grep(<f-args>) | call setqflist([], 'a', {'title': ':' . g:jaandrle_utils#last_command})
 | 
					 | 
				
			||||||
	command! -nargs=+ -complete=file_in_path -bar
 | 
					 | 
				
			||||||
		\ ALTlgrep lgetexpr jaandrle_utils#grep(<f-args>) | call setloclist(0, [], 'a', {'title': ':' . g:jaandrle_utils#last_command})
 | 
					 | 
				
			||||||
	command! -nargs=0
 | 
					 | 
				
			||||||
		\ ALTargsBWQA execute 'argdo bw' | %argdelete
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	let g:quickfix_len= 0
 | 
					 | 
				
			||||||
	function! QuickFixStatus() abort
 | 
					 | 
				
			||||||
		hi! link User1 StatusLine
 | 
					 | 
				
			||||||
		if !g:quickfix_len	| return 'Ø' | endif
 | 
					 | 
				
			||||||
		if g:quickfix_len>0 | return g:quickfix_len | endif
 | 
					 | 
				
			||||||
		let type= &termguicolors ? 'gui' : 'cterm'
 | 
					 | 
				
			||||||
		execute 'hi! User1 '.type.'bg='.synIDattr(synIDtrans(hlID('StatusLine')), 'bg').
 | 
					 | 
				
			||||||
			\' '.type.'fg='.synIDattr(synIDtrans(hlID('WarningMsg')), 'fg')
 | 
					 | 
				
			||||||
		return -g:quickfix_len
 | 
					 | 
				
			||||||
	endfunction
 | 
					 | 
				
			||||||
	function! s:QuickFixCmdPost() abort
 | 
					 | 
				
			||||||
		let q_len= len(getqflist())
 | 
					 | 
				
			||||||
		let g:quickfix_len= q_len ? -q_len : len(getloclist(0))
 | 
					 | 
				
			||||||
	endfunction
 | 
					 | 
				
			||||||
	augroup quickfix
 | 
					 | 
				
			||||||
		autocmd!
 | 
					 | 
				
			||||||
		autocmd QuickFixCmdPost * call <sid>QuickFixCmdPost()
 | 
					 | 
				
			||||||
		autocmd filetype qf
 | 
					 | 
				
			||||||
			\  if filter(getwininfo(), {i,v -> v.winnr == winnr()})[0].loclist
 | 
					 | 
				
			||||||
			\|		nnoremap <buffer> ;q :lclose<cr>
 | 
					 | 
				
			||||||
			\|		nnoremap <buffer> ;w :lgetbuffer<CR>:lclose<CR>:lopen<CR>
 | 
					 | 
				
			||||||
			\|		nnoremap <buffer> ;s :ldo s///gc \| update<c-left><c-left><c-left><right><right>
 | 
					 | 
				
			||||||
			\| else
 | 
					 | 
				
			||||||
			\|		nnoremap <buffer> ;q :cclose<cr>
 | 
					 | 
				
			||||||
			\|		nnoremap <buffer> ;w :cgetbuffer<CR>:cclose<CR>:copen<CR>
 | 
					 | 
				
			||||||
			\|		nnoremap <buffer> ;s :cdo s///gc \| update<c-left><c-left><c-left><right><right>
 | 
					 | 
				
			||||||
			\| endif
 | 
					 | 
				
			||||||
	augroup END
 | 
					 | 
				
			||||||
"" #endregion H
 | 
					 | 
				
			||||||
"" #region SLH – Status Line + Command Line + History (general) + Sessions + File Update, …
 | 
					 | 
				
			||||||
set showcmd cmdheight=2 showmode
 | 
					set showcmd cmdheight=2 showmode
 | 
				
			||||||
	set wildmenu wildoptions=pum
 | 
					set wildmenu wildmode=list:longest,list:full
 | 
				
			||||||
	"" wildmode=list:longest,list:full									" Tab autocomplete in command mode
 | 
					set history=500
 | 
				
			||||||
 | 
					set nobackup nowritebackup noswapfile
 | 
				
			||||||
	cabbrev wbw w<bar>bw
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	set sessionoptions-=options
 | 
					 | 
				
			||||||
	command! -nargs=1
 | 
					 | 
				
			||||||
		\ CLSESSIONcreate :call mini_sessions#create(<f-args>)
 | 
					 | 
				
			||||||
	command! -nargs=0
 | 
					 | 
				
			||||||
		\ CLSESSIONconfig :call mini_sessions#sessionConfig()
 | 
					 | 
				
			||||||
	command! -nargs=1 -complete=customlist,mini_sessions#complete
 | 
					 | 
				
			||||||
		\ CLSESSIONload :call mini_sessions#load(<f-args>)
 | 
					 | 
				
			||||||
	command! -nargs=0
 | 
					 | 
				
			||||||
		\ Scd :call mini_sessions#recoverPwd()
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	if !has("gui_running")
 | 
					 | 
				
			||||||
		execute 'hi! User2 ctermbg='.synIDattr(synIDtrans(hlID('StatusLine')), 'bg').' ctermfg=grey' | endif
 | 
					 | 
				
			||||||
	set laststatus=2																	 " Show status line on startup
 | 
					 | 
				
			||||||
	set statusline+=··%1*≡·%{QuickFixStatus()}%*··%2*»·%{user_tips#current()}%*··%=
 | 
					 | 
				
			||||||
	set statusline+=%<%f%R\%M··▶·%{&fileformat}·%{&fileencoding?&fileencoding:&encoding}·%{&filetype}··∷·%{mini_sessions#name('–')}·· 
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	set history=500													  " How many lines of (cmd) history has to remember
 | 
					 | 
				
			||||||
	set nobackup nowritebackup noswapfile		  " …there is issue #649 (for servers) and I’m using git/system backups
 | 
					 | 
				
			||||||
try
 | 
					try
 | 
				
			||||||
	set undodir=~/.vim/undodir undofile | catch | endtry
 | 
						set undodir=~/.vim/undodir undofile | catch | endtry
 | 
				
			||||||
	command! CLundotree UndotreeToggle | echo 'Use also :undolist :earlier :later' | UndotreeFocus
 | 
					 | 
				
			||||||
	command! SETundoClear let old_undolevels=&undolevels | set undolevels=-1 | exe "normal a \<BS>\<Esc>" | let &undolevels=old_undolevels | unlet old_undolevels | write
 | 
					 | 
				
			||||||
"" #endregion SLH
 | 
					 | 
				
			||||||
"" #region LLW – Left Column + Line + Wrap + Scrolling
 | 
					 | 
				
			||||||
	if has("nvim-0.5.0") || has("patch-8.1.1564")			" Recently vim can merge signcolumn and number column into one
 | 
					 | 
				
			||||||
		set signcolumn=number | else | set signcolumn=yes | endif  " show always to prevent shifting when diagnosticappears
 | 
					 | 
				
			||||||
	set cursorline cursorcolumn															" Always show current position
 | 
					 | 
				
			||||||
	set number foldcolumn=2								  " enable line numbers and add a bit extra margin to the left
 | 
					 | 
				
			||||||
	set colorcolumn=+1																				  " …marker visual
 | 
					 | 
				
			||||||
	command -nargs=? SETtextwidth if <q-args> | let &textwidth=<q-args> | let &colorcolumn='<args>,120,240' | else | let &textwidth=250 | let &colorcolumn='120,240' | endif
 | 
					 | 
				
			||||||
	SETtextwidth																	" wraping lines and show two lines
 | 
					 | 
				
			||||||
	set nowrap											" Don't wrap long lines by default
 | 
					 | 
				
			||||||
	set breakindent breakindentopt=shift:2 showbreak=↳ 
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	set scrolloff=5 sidescrolloff=10										" offset for lines/columns when scrolling
 | 
					nmap s <nop>
 | 
				
			||||||
"" #endregion LLW
 | 
					vmap s <nop>
 | 
				
			||||||
"" #region CN – Clipboard + Navigation throught Buffers + Windows + … (CtrlP)
 | 
					nmap S <nop>
 | 
				
			||||||
	set pastetoggle=<F2> | nnoremap <F2> :set invpaste paste?<CR>
 | 
					vmap S <nop>
 | 
				
			||||||
	nnoremap <silent> <leader>" :call jaandrle_utils#copyRegister()<cr>
 | 
					let mapleader= "s"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	nmap <expr> š buffer_number("#")==-1 ? "sš<cr>" : "\<c-^>"
 | 
					nnoremap <leader>v :
 | 
				
			||||||
	nmap s3 :buffers<cr>:b<space>
 | 
					nnoremap <leader>a @
 | 
				
			||||||
	nmap sš :CtrlPBuffer<cr>
 | 
					nnoremap <leader>A @@
 | 
				
			||||||
	nmap č sš
 | 
					nnoremap <leader>u U
 | 
				
			||||||
	let g:ctrlp_map = 'ě'
 | 
					nnoremap U <c-r>
 | 
				
			||||||
	command! -nargs=?	SETctrlp execute 'nnoremap '.g:ctrlp_map.' :CtrlP <args><cr>'
 | 
					nnoremap <leader>l <c-]>
 | 
				
			||||||
	call scommands#map(g:ctrlp_map, 'CtrlP', "n")
 | 
					nmap <silent><leader>m :nohlsearch<bar>diffupdate<cr>
 | 
				
			||||||
	let g:ctrlp_clear_cache_on_exit = 0
 | 
					 | 
				
			||||||
	let g:ctrlp_prompt_mappings= {
 | 
					 | 
				
			||||||
		\ 'ToggleType(1)':		  ['<c-up>'],
 | 
					 | 
				
			||||||
		\ 'ToggleType(-1)':		  ['<c-down>'],
 | 
					 | 
				
			||||||
		\ 'PrtCurStart()':		  ['<c-b>'],
 | 
					 | 
				
			||||||
	\}
 | 
					 | 
				
			||||||
"" #endregion CN
 | 
					 | 
				
			||||||
"" #region FOS – File(s) + Openning + Saving
 | 
					 | 
				
			||||||
	set autowrite autoread | autocmd FocusGained,BufEnter *.* checktime
 | 
					 | 
				
			||||||
	set modeline
 | 
					 | 
				
			||||||
	command! -nargs=?
 | 
					 | 
				
			||||||
		\ CLmodeline :call jaandrle_utils#AppendModeline(<q-args>=='basic' ? 0 : 1)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	set path+=src/**,app/**,build/**														" File matching for `:find`
 | 
					 | 
				
			||||||
	for ignore in [ '.git', '.npm', 'node_modules' ]
 | 
					 | 
				
			||||||
		exec ':set wildignore+=**'.ignore.'**'
 | 
					 | 
				
			||||||
		exec ':set wildignore+=**/'.ignore.'/**'
 | 
					 | 
				
			||||||
	endfor
 | 
					 | 
				
			||||||
	set wildignore+=*.bmp,*.gif,*.ico,*.jpg,*.png,*.ico
 | 
					 | 
				
			||||||
	set wildignore+=*.pdf,*.psd
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	nmap <leader>e :Vifm<cr>
 | 
					 | 
				
			||||||
	call scommands#map('e', 'Vifm', "n")
 | 
					 | 
				
			||||||
	nnoremap gx :silent exec "!xdg-open '".shellescape(substitute(expand('<cfile>'), '?', '\\?', ''), 1)."'" \| redraw!<cr>
 | 
					 | 
				
			||||||
	vnoremap gx :silent exec "!xdg-open '".shellescape(substitute(mini_enhancement#selectedText(), '?', '\\?', ''), 1)."'" \| redraw!<cr>
 | 
					 | 
				
			||||||
"" #endregion FOS
 | 
					 | 
				
			||||||
"" #region EN – Editor navigation + search
 | 
					 | 
				
			||||||
	set hlsearch incsearch														  " highlight search, start when typing
 | 
					 | 
				
			||||||
	if maparg('<C-L>', 'n') ==# ''
 | 
					 | 
				
			||||||
		nnoremap <silent> <c-l> :nohlsearch<c-r>=has('diff')?'<bar>diffupdate':''<cr><cr><c-l> | endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	call scommands#map('n', 'NAV', "n")
 | 
					 | 
				
			||||||
	command! NAVjumps call jaandrle_utils#gotoJumpChange('jump')
 | 
					 | 
				
			||||||
	command! NAVchanges call jaandrle_utils#gotoJumpChange('change')
 | 
					 | 
				
			||||||
	command! NAVmarks call jaandrle_utils#gotoMarks()
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	let g:markbar_persist_mark_names = v:false
 | 
					 | 
				
			||||||
	nmap <Leader>m <Plug>ToggleMarkbar
 | 
					 | 
				
			||||||
"" #endregion EN
 | 
					 | 
				
			||||||
"" #region EA – Editing adjustment + Syntax + White chars + Folds
 | 
					 | 
				
			||||||
	" use <c-v>§ for §
 | 
					 | 
				
			||||||
	inoremap § <esc>
 | 
					 | 
				
			||||||
	set nrformats-=octal
 | 
					 | 
				
			||||||
	command! -nargs=1 SETTOGGLEnrformats if &nf=~<q-args> | set nf-=<args> | else | set nf+=<args> | endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	let g:htl_css_templates=1
 | 
					 | 
				
			||||||
	let g:markdown_fenced_languages= [ 'javascript', 'js=javascript', 'json', 'html', 'php', 'bash', 'vim', 'vimscript=javascript', 'sass' ]
 | 
					 | 
				
			||||||
	augroup conceal
 | 
					 | 
				
			||||||
		autocmd!
 | 
					 | 
				
			||||||
		au FileType markdown 
 | 
					 | 
				
			||||||
			\  syn region markdownLink matchgroup=markdownLinkDelimiter start="(" end=")" contains=markdownUrl keepend contained conceal
 | 
					 | 
				
			||||||
			\| syn region markdownLinkText matchgroup=markdownLinkTextDelimiter start="!\=\[\%(\%(\_[^][]\|\[\_[^][]*\]\)*]\%( \=[[(]\)\)\@=" end="\]\%( \=[[(]\)\@=" nextgroup=markdownLink,markdownId skipwhite contains=@markdownInline,markdownLineStart concealends
 | 
					 | 
				
			||||||
		au FileType markdown,json 
 | 
					 | 
				
			||||||
			\ setlocal conceallevel=2
 | 
					 | 
				
			||||||
	augroup END
 | 
					 | 
				
			||||||
	augroup convenient
 | 
					 | 
				
			||||||
		autocmd FileType markdown,text setlocal keywordprg=dict
 | 
					 | 
				
			||||||
		autocmd FileType git,gitcommit setlocal foldmethod=syntax foldlevel=1
 | 
					 | 
				
			||||||
	augroup END
 | 
					 | 
				
			||||||
	" PARENTHESES plugin junegunn/rainbow_parentheses.vim
 | 
					 | 
				
			||||||
	let g:rainbow#pairs= [['(', ')'], ['[', ']'], [ '{', '}' ]]
 | 
					 | 
				
			||||||
	let g:rainbow#blacklist = [203,9]
 | 
					 | 
				
			||||||
	autocmd VimEnter * try
 | 
					 | 
				
			||||||
		\| call rainbow_parentheses#toggle() | catch | endtry
 | 
					 | 
				
			||||||
	command! SETTOGGLErainbowParentheses call rainbow_parentheses#toggle()
 | 
					 | 
				
			||||||
	" HIGHLIGHT&YANK plugins machakann/vim-highlightedyank & cwordhi.vim
 | 
					 | 
				
			||||||
	let g:highlightedyank_highlight_duration= 250
 | 
					 | 
				
			||||||
	let g:cwordhi#autoload= 1
 | 
					 | 
				
			||||||
	set showmatch												" Quick highlight oppening bracket/… for currently writted
 | 
					 | 
				
			||||||
	set timeoutlen=1000 ttimeoutlen=0												   " Remove timeout when hitting escape TAB
 | 
					 | 
				
			||||||
	if v:version > 703 || v:version == 703 && has("patch541")
 | 
					 | 
				
			||||||
		set formatoptions+=j | endif							" Delete comment character when joining commented lines
 | 
					 | 
				
			||||||
	set smarttab
 | 
					 | 
				
			||||||
	command! -nargs=1 SETtab let &shiftwidth=<q-args> | let &tabstop=<q-args> | let &softtabstop=<q-args>
 | 
					 | 
				
			||||||
	SETtab 4
 | 
					 | 
				
			||||||
	set backspace=indent,eol,start					" Allow cursor keys in insert mode:  http://vi.stackexchange.com/a/2163
 | 
					 | 
				
			||||||
	set shiftround autoindent	" round diff shifts to the base of n*shiftwidth,  https://stackoverflow.com/a/18415867
 | 
					 | 
				
			||||||
	filetype plugin indent on
 | 
					 | 
				
			||||||
	" SYNTAX&COLORS
 | 
					 | 
				
			||||||
	if ($TERM =~ '256' && has("termguicolors"))
 | 
					 | 
				
			||||||
		set termguicolors | endif
 | 
					 | 
				
			||||||
	if (&t_Co > 2 || has("gui_running")) && !exists("syntax_on")
 | 
					 | 
				
			||||||
		syntax on | endif
 | 
					 | 
				
			||||||
	set list listchars=tab:»·,trail:·,extends:#,nbsp:~,space:·		" Highlight spec. chars / Display extra whitespace
 | 
					 | 
				
			||||||
	augroup syntax_sync_min_lines
 | 
					 | 
				
			||||||
		autocmd!
 | 
					 | 
				
			||||||
		autocmd Syntax * syn sync minlines=2000
 | 
					 | 
				
			||||||
	augroup END
 | 
					 | 
				
			||||||
	let g:vim_vue_plugin_config = { 'foldexpr': 1, 'attribute': 1, 'keyword': 1 }
 | 
					 | 
				
			||||||
	" SPELL
 | 
					 | 
				
			||||||
	if !has("gui_running")
 | 
					 | 
				
			||||||
		hi clear SpellBad | hi SpellBad cterm=underline,italic | endif
 | 
					 | 
				
			||||||
	command! -nargs=? SETspell if <q-args>==&spelllang || <q-args>=='' | set spell! | else | set spell | set spelllang=<args> | endif | if &spell | set spelllang | endif
 | 
					 | 
				
			||||||
	" EDIT HEPERS
 | 
					 | 
				
			||||||
nnoremap <leader>o o<space><bs><esc>
 | 
					nnoremap <leader>o o<space><bs><esc>
 | 
				
			||||||
nnoremap <leader>O O<space><bs><esc>
 | 
					nnoremap <leader>O O<space><bs><esc>
 | 
				
			||||||
nnoremap <s-k> a<cr><esc>
 | 
					nnoremap <s-k> a<cr><esc>
 | 
				
			||||||
for l in [ 'y', 'p', 'P', 'd' ] | for m in [ 'n', 'v' ]
 | 
					for l in [ 'y', 'p', 'P', 'd' ] | for m in [ 'n', 'v' ]
 | 
				
			||||||
	execute m.'noremap <leader>'.l.' "+'.l | endfor | endfor
 | 
						execute m.'noremap <leader>'.l.' "+'.l | endfor | endfor
 | 
				
			||||||
	" ik ak (last change pseudo-text objects) – src: https://www.reddit.com/r/vim/comments/ypt6uf/comment/ivl68xu/?utm_source=share&utm_medium=web2x&context=3
 | 
					
 | 
				
			||||||
	xnoremap ik `]o`[
 | 
					cabbrev <expr> %PWD%  execute('pwd')
 | 
				
			||||||
	onoremap ik :<C-u>normal vik<cr>
 | 
					cabbrev <expr> %CD%   fnameescape(expand('%:p:h'))
 | 
				
			||||||
	onoremap ak :<C-u>normal vikV<cr>
 | 
					cabbrev <expr> %CW%   expand('<cword>')
 | 
				
			||||||
	" FOLDS
 | 
					
 | 
				
			||||||
 | 
					set cursorline cursorcolumn
 | 
				
			||||||
 | 
					set number "foldcolumn=2
 | 
				
			||||||
 | 
					set colorcolumn=+1
 | 
				
			||||||
 | 
					set breakindent breakindentopt=shift:2 showbreak=↳ 
 | 
				
			||||||
 | 
					set scrolloff=5 sidescrolloff=10										" offset for lines/columns when scrolling
 | 
				
			||||||
 | 
					set autowrite autoread | autocmd FocusGained,BufEnter *.* checktime
 | 
				
			||||||
 | 
					set modeline
 | 
				
			||||||
 | 
					set hlsearch incsearch
 | 
				
			||||||
 | 
					set smarttab
 | 
				
			||||||
 | 
					command! -nargs=1 SETtab let &shiftwidth=<q-args> | let &tabstop=<q-args> | let &softtabstop=<q-args>
 | 
				
			||||||
 | 
					SETtab 4
 | 
				
			||||||
 | 
					set showmatch
 | 
				
			||||||
 | 
					set backspace=indent,eol,start
 | 
				
			||||||
 | 
					set shiftround autoindent
 | 
				
			||||||
 | 
					filetype plugin indent on
 | 
				
			||||||
 | 
					colorscheme codedark
 | 
				
			||||||
 | 
					if ($TERM =~ '256' && has("termguicolors"))
 | 
				
			||||||
 | 
						set termguicolors | endif
 | 
				
			||||||
 | 
					if (&t_Co > 2 || has("gui_running")) && !exists("syntax_on")
 | 
				
			||||||
 | 
						syntax on | endif
 | 
				
			||||||
 | 
					set list listchars=tab:»·,trail:·,extends:#,nbsp:~,space:·
 | 
				
			||||||
 | 
					augroup syntax_sync_min_lines
 | 
				
			||||||
 | 
						autocmd!
 | 
				
			||||||
 | 
						autocmd Syntax * syn sync minlines=200
 | 
				
			||||||
 | 
					augroup END
 | 
				
			||||||
 | 
					command! -nargs=? SETspell if <q-args>==&spelllang || <q-args>=='' | set spell! | else | set spell | set spelllang=<args> | endif | if &spell | set spelllang | endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
command! -nargs=0 SETFOLDregions set foldmethod=marker
 | 
					command! -nargs=0 SETFOLDregions set foldmethod=marker
 | 
				
			||||||
command! -nargs=1 SETFOLDindent set foldmethod=indent | let &foldlevel=<q-args> | let &foldnestmax=<q-args>+1
 | 
					command! -nargs=1 SETFOLDindent set foldmethod=indent | let &foldlevel=<q-args> | let &foldnestmax=<q-args>+1
 | 
				
			||||||
command! -nargs=* SETFOLDindents set foldmethod=indent | let &foldlevel=split(<q-args>, ' ')[0] | let &foldnestmax=split(<q-args>, ' ')[1]
 | 
					command! -nargs=* SETFOLDindents set foldmethod=indent | let &foldlevel=split(<q-args>, ' ')[0] | let &foldnestmax=split(<q-args>, ' ')[1]
 | 
				
			||||||
set foldmarker=#region,#endregion
 | 
					set foldmarker=#region,#endregion
 | 
				
			||||||
	" SAVE VIEW
 | 
					
 | 
				
			||||||
set viewoptions=cursor,folds
 | 
					set viewoptions=cursor,folds
 | 
				
			||||||
augroup remember__view
 | 
					augroup remember__view
 | 
				
			||||||
	autocmd!
 | 
						autocmd!
 | 
				
			||||||
	autocmd BufWinLeave *.* if &buflisted | mkview | endif
 | 
						autocmd BufWinLeave *.* if &buflisted | mkview | endif
 | 
				
			||||||
	autocmd BufWinEnter *.* silent! loadview
 | 
						autocmd BufWinEnter *.* silent! loadview
 | 
				
			||||||
augroup END
 | 
					augroup END
 | 
				
			||||||
"" #endregion EA
 | 
					 | 
				
			||||||
"" #region GIT
 | 
					 | 
				
			||||||
	call scommands#map('g', 'GIT', "n,V")
 | 
					 | 
				
			||||||
	function s:gitCompletion(_, CmdLine, __)
 | 
					 | 
				
			||||||
		let l:cmd= a:CmdLine->split()
 | 
					 | 
				
			||||||
		let l:cmd_start= l:cmd[0]
 | 
					 | 
				
			||||||
			\ ->substitute('GIThub', 'gh', '')
 | 
					 | 
				
			||||||
			\ ->substitute('GIT', 'git ', '')->trim()->split(' ')
 | 
					 | 
				
			||||||
		return bash#complete((l:cmd_start+l:cmd[1:])->join())
 | 
					 | 
				
			||||||
	endfunction
 | 
					 | 
				
			||||||
	function s:gitCmd(candidate)
 | 
					 | 
				
			||||||
		execute '!clear && echo ":: git '.a:candidate->escape('"').' ::" && git '.a:candidate
 | 
					 | 
				
			||||||
	endfunction
 | 
					 | 
				
			||||||
	command! -nargs=* -complete=customlist,<sid>gitCompletion
 | 
					 | 
				
			||||||
		\ GIT call <sid>gitCmd(<q-args>)
 | 
					 | 
				
			||||||
	command! -nargs=* -complete=customlist,<sid>gitCompletion
 | 
					 | 
				
			||||||
		\ GITstatus !git status-- <args>
 | 
					 | 
				
			||||||
	command! -nargs=* -complete=customlist,<sid>gitCompletion
 | 
					 | 
				
			||||||
		\ GITcommit !git commit-- <args>
 | 
					 | 
				
			||||||
	command! -nargs=* -complete=customlist,<sid>gitCompletion
 | 
					 | 
				
			||||||
		\ GITpush !git push <args>
 | 
					 | 
				
			||||||
	command! -nargs=* -complete=customlist,<sid>gitCompletion
 | 
					 | 
				
			||||||
		\ GITdiff if <q-args>=='' | execute '!clear && git diff %:p' | else | silent! execute '!git diff <args>' | endif
 | 
					 | 
				
			||||||
	command! -nargs=*
 | 
					 | 
				
			||||||
		\ GITrestore execute '!clear && git status '.(<q-args>=='.' ? '%:p':'<args>').' -bs & git restore '.(<q-args>=='' ? '%:p':'<args>').' --patch'
 | 
					 | 
				
			||||||
	command! -nargs=* -complete=customlist,<sid>gitCompletion
 | 
					 | 
				
			||||||
		\ GIThub execute '!clear && echo ":: gh '.<q-args>->escape('"').' ::" && gh '.<q-args>
 | 
					 | 
				
			||||||
	command! -nargs=?
 | 
					 | 
				
			||||||
		\ GIThubIssue execute '!clear && gh issue view '.expand('<cword>').' '.<q-args>
 | 
					 | 
				
			||||||
	let g:git_messenger_no_default_mappings= v:true
 | 
					 | 
				
			||||||
	let g:git_messenger_date_format= '%Y-%m-%d (%c)'
 | 
					 | 
				
			||||||
	let g:git_messenger_always_into_popup= v:true
 | 
					 | 
				
			||||||
	augroup git_messenger_help
 | 
					 | 
				
			||||||
		autocmd!
 | 
					 | 
				
			||||||
		autocmd FileType gitmessengerpopup setlocal keywordprg=git\ show
 | 
					 | 
				
			||||||
	augroup END
 | 
					 | 
				
			||||||
	command! -nargs=0
 | 
					 | 
				
			||||||
		\ GITblameThis GitMessenger
 | 
					 | 
				
			||||||
"" #endregion GIT
 | 
					 | 
				
			||||||
"" #region COC – COC and so on, compilers, code/commands completions
 | 
					 | 
				
			||||||
	let g:coc_global_extensions= ['coc-css', 'coc-docthis', 'coc-emmet', 'coc-emoji', 'coc-eslint', 'coc-gitmoji', 'coc-html', 'coc-json', 'coc-marketplace', 'coc-phpls', 'coc-sh', 'coc-snippets', 'coc-styled-components', 'coc-svg', 'coc-tabnine', 'coc-tsserver']
 | 
					 | 
				
			||||||
	" https://github.com/antonk52/cssmodules-language-server
 | 
					 | 
				
			||||||
	call coc#config('languageserver.cssmodules', {
 | 
					 | 
				
			||||||
	\ "command": "cssmodules-language-server",
 | 
					 | 
				
			||||||
	\ "initializationOptions": {"camelCase": "dashes"},
 | 
					 | 
				
			||||||
	\ "filetypes": ["javascript", "javascriptreact", "typescript", "typescriptreact"],
 | 
					 | 
				
			||||||
	\ "requireRootPattern": 0,
 | 
					 | 
				
			||||||
	\ "settings": {}
 | 
					 | 
				
			||||||
	\ })
 | 
					 | 
				
			||||||
	autocmd FileType scss setl iskeyword+=@-@
 | 
					 | 
				
			||||||
	command -nargs=? ALTmake if &filetype=='javascript' | compiler jshint | elseif &filetype=='php' | compiler php | endif
 | 
					 | 
				
			||||||
						  \| if <q-args>!='' | silent make <args> | else | silent make '%' | endif | checktime | silent redraw!		   " …prev line, hotfix (filetype detection does’t works)
 | 
					 | 
				
			||||||
	function <sid>ToggleALTmakeOnWrite()
 | 
					 | 
				
			||||||
		if exists('#ALTmake_auto#BufWritePost')
 | 
					 | 
				
			||||||
			augroup ALTmake_auto
 | 
					 | 
				
			||||||
				autocmd!
 | 
					 | 
				
			||||||
			augroup END
 | 
					 | 
				
			||||||
		else
 | 
					 | 
				
			||||||
			augroup ALTmake_auto
 | 
					 | 
				
			||||||
				autocmd!
 | 
					 | 
				
			||||||
				autocmd BufWritePost *.{php,js,mjs} execute 'ALTmake' | call <sid>QuickFixCmdPost()
 | 
					 | 
				
			||||||
			augroup END
 | 
					 | 
				
			||||||
		endif
 | 
					 | 
				
			||||||
	endfunction
 | 
					 | 
				
			||||||
	command! ALTmakeOnWrite call <sid>ToggleALTmakeOnWrite()
 | 
					 | 
				
			||||||
	function! CustomKeyWord(word)
 | 
					 | 
				
			||||||
		if(a:word=="gulp_place")
 | 
					 | 
				
			||||||
			highlight link gulp_place ErrorMsg
 | 
					 | 
				
			||||||
			syntax match gulp_place "gulp_place"
 | 
					 | 
				
			||||||
			augroup gulp_place
 | 
					 | 
				
			||||||
				autocmd!
 | 
					 | 
				
			||||||
				autocmd BufEnter *.{js,html} syntax match gulp_place "gulp_place"
 | 
					 | 
				
			||||||
			augroup END
 | 
					 | 
				
			||||||
			return 0
 | 
					 | 
				
			||||||
		endif
 | 
					 | 
				
			||||||
	endfunction
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	set completeopt=menuone,preview,noinsert,noselect
 | 
					inoremap <silent><expr> <tab> pumvisible() ? "\<c-n>" : <sid>check_back_space() ? "\<tab>" : "\<c-n>"
 | 
				
			||||||
	inoremap <silent><expr> <F1> coc#pum#visible() ? coc#pum#confirm() : coc#refresh()
 | 
					inoremap <silent><expr> <s-tab> pumvisible() ? "\<c-p>" : "\<c-h>"
 | 
				
			||||||
	set wildcharm=<f1>
 | 
					 | 
				
			||||||
	inoremap <silent><expr> <tab> coc#pum#visible() ? coc#pum#next(1) : <sid>check_back_space() ? "\<tab>" : coc#refresh()
 | 
					 | 
				
			||||||
	inoremap <silent><expr> <s-tab> coc#pum#visible() ? coc#pum#prev(1) : "\<c-h>"
 | 
					 | 
				
			||||||
function! s:check_back_space() abort
 | 
					function! s:check_back_space() abort
 | 
				
			||||||
	let col = col('.') - 1
 | 
						let col = col('.') - 1
 | 
				
			||||||
	return !col || getline('.')[col - 1]  =~# '\s'
 | 
						return !col || getline('.')[col - 1]  =~# '\s'
 | 
				
			||||||
endfunction
 | 
					endfunction
 | 
				
			||||||
 | 
					 | 
				
			||||||
	nmap <silent> gd <Plug>(coc-definition)
 | 
					 | 
				
			||||||
	nmap <leader>/ :CocSearch 
 | 
					 | 
				
			||||||
	nmap <leader>? <leader>/
 | 
					 | 
				
			||||||
	command! -bang NAVdiagnostic call CocActionAsync('diagnostic'.( "<bang>" == '!' ? 'Previous' : 'Next' ))
 | 
					 | 
				
			||||||
	command! NAVdefinition		   call CocActionAsync('jumpDefinition')
 | 
					 | 
				
			||||||
	command! NAVtype			   call CocActionAsync('jumpTypeDefinition')
 | 
					 | 
				
			||||||
	command! NAVimplementation	   call CocActionAsync('jumpImplementation')
 | 
					 | 
				
			||||||
	command! NAVreferences		   call CocActionAsync('jumpReferences')
 | 
					 | 
				
			||||||
					" navigate diagnostics, use `:CocDiagnostics` to get all diagnostics of current buffer in location list.
 | 
					 | 
				
			||||||
	nnoremap <silent> gh :call <sid>show_documentation(expand("<cword>"))<cr>
 | 
					 | 
				
			||||||
	vnoremap <silent> gh :<c-u>call <sid>show_documentation(mini_enhancement#selectedText())<cr>
 | 
					 | 
				
			||||||
	nnoremap <leader>gf :let g:ctrlp_default_input=expand("<cword>") <bar> execute 'CtrlP' <bar> unlet g:ctrlp_default_input <cr>
 | 
					 | 
				
			||||||
	vnoremap <leader>gf :<c-u>let g:ctrlp_default_input=mini_enhancement#selectedText() <bar> execute 'CtrlP' <bar> unlet g:ctrlp_default_input <cr>
 | 
					 | 
				
			||||||
	""" #region COCP – Coc popups scroll (Remap <C-f> and <C-b> for scroll float windows/popups.)
 | 
					 | 
				
			||||||
	if has('nvim-0.4.0') || has('patch-8.2.0750')
 | 
					 | 
				
			||||||
		nnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
 | 
					 | 
				
			||||||
		nnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
 | 
					 | 
				
			||||||
		inoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>"
 | 
					 | 
				
			||||||
		inoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>"
 | 
					 | 
				
			||||||
		vnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
 | 
					 | 
				
			||||||
		vnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
 | 
					 | 
				
			||||||
	endif
 | 
					 | 
				
			||||||
	""" #endregion COCP
 | 
					 | 
				
			||||||
	command! -nargs=? SETFOLDcoc :call CocAction('fold', <f-args>)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	call scommands#map('C', 'Coc', "n,v")
 | 
					 | 
				
			||||||
	nmap sc :CocList lists<cr>
 | 
					 | 
				
			||||||
	nmap Sc :CocListResume<cr>
 | 
					 | 
				
			||||||
	nnoremap <c-g> :CLwhereami<cr>
 | 
					 | 
				
			||||||
	command! CLwhereami			   :call popup_notification([
 | 
					 | 
				
			||||||
										\expand('%:t').( coc#status() != "" ? '/'.CocAction("getCurrentFunctionSymbol")."\t…\t".coc#status() : '' ),
 | 
					 | 
				
			||||||
										\"– – –",
 | 
					 | 
				
			||||||
										\"Line:\t".line('.').' / '.line('$'),
 | 
					 | 
				
			||||||
										\"Column:\t".col('.').' / '.col('$'),
 | 
					 | 
				
			||||||
										\"Path:\t".expand('%:p:h')
 | 
					 | 
				
			||||||
										\], #{ line: &lines-3, pos: 'botleft', moved: 'any', close: 'button', time: 3000 })
 | 
					 | 
				
			||||||
	command! CLhelpCocPlug		   call feedkeys(':<c-u>help <Plug>(coc ', 'tn')
 | 
					 | 
				
			||||||
	command! CLhelpCocAction	   call feedkeys(':<c-u>help CocAction(''	', 'tn')
 | 
					 | 
				
			||||||
	command! CLrename			   call CocActionAsync('rename')
 | 
					 | 
				
			||||||
	command! CLrenameFile		   exec 'CocCommand workspace.renameCurrentFile'
 | 
					 | 
				
			||||||
	command! -nargs=? -bang
 | 
					 | 
				
			||||||
		   \ CLreplace			   call feedkeys(':<c-u>'.(<q-args>==''?'.':<q-args>).'s/'.("<bang>"=='!'?mini_enhancement#selectedText():expand('<cword>')).'//cgODODOD', 'tn')
 | 
					 | 
				
			||||||
	command! CLrepeatLastChange    call feedkeys('/\V<C-r>"<CR>cgn<C-a><Esc>', 'tn')
 | 
					 | 
				
			||||||
	command! CLjsdoc			   exec 'CocCommand docthis.documentThis'
 | 
					 | 
				
			||||||
	command! CLjshintGlobal		   normal yiwmm?\/\* global<cr><c-l>f*hi, p`m
 | 
					 | 
				
			||||||
	command! CLcodeactionCursor    call CocActionAsync('codeAction', 'cursor')
 | 
					 | 
				
			||||||
	command! CLfixCodeQuick		   call CocActionAsync('doQuickfix')
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	function! AIcodeFn(range, ...) range abort
 | 
					 | 
				
			||||||
		let l:instruction = 'Hi, can you help me with ' . &filetype . 'code? Thanks in advance. I would like to: '
 | 
					 | 
				
			||||||
		if a:0
 | 
					 | 
				
			||||||
			let l:instruction = l:instruction .  a:1
 | 
					 | 
				
			||||||
		endif
 | 
					 | 
				
			||||||
		if a:range
 | 
					 | 
				
			||||||
			'<,'>call vim_ai#AIRun(a:range, {}, l:instruction)
 | 
					 | 
				
			||||||
		else
 | 
					 | 
				
			||||||
			call vim_ai#AIRun(a:range, {}, l:instruction)
 | 
					 | 
				
			||||||
		endif
 | 
					 | 
				
			||||||
	endfunction
 | 
					 | 
				
			||||||
	command! -range -nargs=? AIcode <line1>,<line2>call AIcodeFn(<range>, <f-args>)
 | 
					 | 
				
			||||||
	vnoremap <f1> :AI<f1>
 | 
					 | 
				
			||||||
	nnoremap <f1> :AI<f1>
 | 
					 | 
				
			||||||
	command! -nargs=?
 | 
					 | 
				
			||||||
		   \ CLcheat call cheat_copilot#open(<q-args>==''?&filetype:<q-args>)
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	function! s:show_documentation(word)
 | 
					 | 
				
			||||||
		if (index(['vim', 'help'], &filetype) >= 0)
 | 
					 | 
				
			||||||
			" inspired by https://github.com/tpope/vim-scriptease/blob/74bd5bf46a63b982b100466f9fd47d2d0597fcdd/autoload/scriptease.vim#L737
 | 
					 | 
				
			||||||
			let syn= get(reverse(map(synstack(line('.'), col('.')), 'synIDattr(v:val,"name")')), 0, '')
 | 
					 | 
				
			||||||
			if		syn ==# 'vimFuncName'		| return <sid>show_documentation_vim('h '.a:word.'()')
 | 
					 | 
				
			||||||
			elseif	syn ==# 'vimOption'			| return <sid>show_documentation_vim("h '".a:word."'")
 | 
					 | 
				
			||||||
			elseif	syn ==# 'vimUserAttrbKey'	| return <sid>show_documentation_vim('h :command-'.a:word)
 | 
					 | 
				
			||||||
			endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			let col= col('.') - 1
 | 
					 | 
				
			||||||
			while col && getline('.')[col] =~# '\k' | let col-= 1 | endwhile
 | 
					 | 
				
			||||||
			let pre= col == 0 ? '' : getline('.')[0 : col]
 | 
					 | 
				
			||||||
			let col= col('.') - 1
 | 
					 | 
				
			||||||
			while col && getline('.')[col] =~# '\k' | let col+= 1 | endwhile
 | 
					 | 
				
			||||||
			if		pre =~# '^\s*:\=$'	| return <sid>show_documentation_vim('h :'.a:word)
 | 
					 | 
				
			||||||
			elseif	pre =~# '\<v:$'		| return <sid>show_documentation_vim('h v:'.a:word)
 | 
					 | 
				
			||||||
			endif
 | 
					 | 
				
			||||||
			
 | 
					 | 
				
			||||||
			let post= getline('.')[col : -0]
 | 
					 | 
				
			||||||
			if a:word ==# 'v' && post =~# ':\w\+' | return <sid>show_documentation_vim('h v'.matchstr(post, ':\w\+')) | endif
 | 
					 | 
				
			||||||
			return <sid>show_documentation_vim('h '.a:word)
 | 
					 | 
				
			||||||
		endif
 | 
					 | 
				
			||||||
		if (!CocAction('hasProvider', 'hover'))
 | 
					 | 
				
			||||||
			return feedkeys('K', 'in')
 | 
					 | 
				
			||||||
		endif
 | 
					 | 
				
			||||||
		if &filetype=='html' && coc#source#custom_elements#hover(a:word)!=0
 | 
					 | 
				
			||||||
			return 0
 | 
					 | 
				
			||||||
		endif
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		return CocActionAsync('doHover')
 | 
					 | 
				
			||||||
	endfunction
 | 
					 | 
				
			||||||
	function! s:show_documentation_vim(cmd)
 | 
					 | 
				
			||||||
		call execute(a:cmd) | call histadd("cmd", a:cmd)
 | 
					 | 
				
			||||||
	endfunction
 | 
					 | 
				
			||||||
"" #endregion COC
 | 
					 | 
				
			||||||
let g:codeium_disable_bindings = 1
 | 
					 | 
				
			||||||
imap <script><silent><nowait><expr> <f3><f3> codeium#Accept()
 | 
					 | 
				
			||||||
imap <f3>n   <Cmd>call codeium#CycleCompletions(1)<CR>
 | 
					 | 
				
			||||||
imap <f3>N   <Cmd>call codeium#CycleCompletions(-1)<CR>
 | 
					 | 
				
			||||||
imap <f3>d   <Cmd>call codeium#Clear()<CR>
 | 
					 | 
				
			||||||
imap <f3>!   <Cmd>call codeium#Complete()<CR>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" vim: set textwidth=250 :
 | 
					 | 
				
			||||||
" vim>60: set foldmethod=marker foldmarker=#region,#endregion :
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,26 +0,0 @@
 | 
				
			|||||||
<!DOCTYPE html>
 | 
					 | 
				
			||||||
<html lang="en">
 | 
					 | 
				
			||||||
<head>
 | 
					 | 
				
			||||||
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
 | 
					 | 
				
			||||||
    <meta charset="UTF-8">
 | 
					 | 
				
			||||||
    <meta name="viewport" content="width=device-width, initial-scale=1">
 | 
					 | 
				
			||||||
    <title>Bing Image Of The Day</title>
 | 
					 | 
				
			||||||
    <style>
 | 
					 | 
				
			||||||
        body{ display: flex; flex-flow: row nowrap;
 | 
					 | 
				
			||||||
            width: 100vw; height: 100vh; overflow: hidden; margin: 0;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        div{ position: relative; flex: 1; }
 | 
					 | 
				
			||||||
        img{ height: 100%; width: 100%; object-fit: contain; }
 | 
					 | 
				
			||||||
        .detail{ position: absolute; bottom: 0; left: 0; padding: .5rem 1rem;
 | 
					 | 
				
			||||||
            text-align: center; background: rgba(0, 0, 0, .35); color: whitesmoke; }
 | 
					 | 
				
			||||||
        .prev .detail{ left: initial; right: 0; }
 | 
					 | 
				
			||||||
        @media screen and (max-aspect-ratio: 16/9){
 | 
					 | 
				
			||||||
            .prev{display: none;}
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    </style>
 | 
					 | 
				
			||||||
</head>
 | 
					 | 
				
			||||||
<body>
 | 
					 | 
				
			||||||
    <div class="now">  <img src="now.jpg">  <div class="detail">::now::</div> </div>
 | 
					 | 
				
			||||||
    <div class="prev"> <img src="prev.jpg"> <div class="detail">::prev::</div> </div>
 | 
					 | 
				
			||||||
</body>
 | 
					 | 
				
			||||||
</html>
 | 
					 | 
				
			||||||
							
								
								
									
										71
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										71
									
								
								README.md
									
									
									
									
									
								
							@@ -3,7 +3,7 @@
 | 
				
			|||||||
 · [*mirrored* on GitHub](https://github.com/jaandrle/dotfiles)
 | 
					 · [*mirrored* on GitHub](https://github.com/jaandrle/dotfiles)
 | 
				
			||||||
 · [older version on GitHub](https://github.com/jaandrle/dotfiles-old)
 | 
					 · [older version on GitHub](https://github.com/jaandrle/dotfiles-old)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# dotfiles **(WIP)**
 | 
					# dotfiles **(Termux variant)**
 | 
				
			||||||
This repository contains my dotfiles. They are managed by using `git clone --bare`,
 | 
					This repository contains my dotfiles. They are managed by using `git clone --bare`,
 | 
				
			||||||
see for example [How to Store Dotfiles - A Bare Git Repository \| Atlassian Git Tutorial](https://www.atlassian.com/git/tutorials/dotfiles).
 | 
					see for example [How to Store Dotfiles - A Bare Git Repository \| Atlassian Git Tutorial](https://www.atlassian.com/git/tutorials/dotfiles).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -12,20 +12,11 @@ see for example [How to Store Dotfiles - A Bare Git Repository \| Atlassian Git
 | 
				
			|||||||
- [Files overview](#files-overview)
 | 
					- [Files overview](#files-overview)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Files overview
 | 
					## Files overview
 | 
				
			||||||
- [Bash](./.bash/README.md)
 | 
					 | 
				
			||||||
- [Vim](./.vim/README.md)
 | 
					 | 
				
			||||||
- [Vifm](./.config/vifm/README.md)
 | 
					 | 
				
			||||||
- [SSH](./.ssh/README.md)
 | 
					 | 
				
			||||||
- [Newsboat](./.newsboat/README.md)
 | 
					 | 
				
			||||||
- Git: [.gitconfig](./.gitconfig), [gh](./.config/gh/config.yml)
 | 
					 | 
				
			||||||
- [KDE Neon](#kde-neon)
 | 
					 | 
				
			||||||
- [Mozilla Firefox](./.mozilla/firefox/README.md)
 | 
					 | 
				
			||||||
- [Bin – scripts and executables](./bin/README.md)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
## On a new machine
 | 
					## On a new machine
 | 
				
			||||||
1. install git
 | 
					1. install git
 | 
				
			||||||
1. `cd ~`
 | 
					1. `cd ~`
 | 
				
			||||||
1. `gd_branch=main`
 | 
					1. `gd_branch=main-termux` (see also branches `main`)
 | 
				
			||||||
1. `git clone --bare --branch $gd_branch --depth 1 --recurse-submodules --shallow-submodules git@jaandrle.cz:jaandrle/dotfiles.git ~/.dotfiles`
 | 
					1. `git clone --bare --branch $gd_branch --depth 1 --recurse-submodules --shallow-submodules git@jaandrle.cz:jaandrle/dotfiles.git ~/.dotfiles`
 | 
				
			||||||
1. `alias gitdotfiles='/usr/bin/git --git-dir="$HOME/.dotfiles/" --work-tree="$HOME"'`
 | 
					1. `alias gitdotfiles='/usr/bin/git --git-dir="$HOME/.dotfiles/" --work-tree="$HOME"'`
 | 
				
			||||||
1. `gitdotfiles config --local status.showUntrackedFiles no`
 | 
					1. `gitdotfiles config --local status.showUntrackedFiles no`
 | 
				
			||||||
@@ -33,61 +24,3 @@ see for example [How to Store Dotfiles - A Bare Git Repository \| Atlassian Git
 | 
				
			|||||||
	1. `gitdotfiles reset` (`git-dotfiles reset --hard HEAD`)
 | 
						1. `gitdotfiles reset` (`git-dotfiles reset --hard HEAD`)
 | 
				
			||||||
	1. `gitdotfiles checkout -f`
 | 
						1. `gitdotfiles checkout -f`
 | 
				
			||||||
	1. `gitdotfiles submodule update --init --recursive`
 | 
						1. `gitdotfiles submodule update --init --recursive`
 | 
				
			||||||
 | 
					 | 
				
			||||||
## KDE Neon
 | 
					 | 
				
			||||||
- [KDE Plasma5 Fixes](https://zren.github.io/kde/)
 | 
					 | 
				
			||||||
- Using ‘HTML Wallpaper’ (wip)
 | 
					 | 
				
			||||||
	- [Bing Image Of The Day](./Obrázky/Bing Image Of The Day/index_template.html)
 | 
					 | 
				
			||||||
- [GNOME Keyring in KDE Plasma - JWillikers](https://www.jwillikers.com/gnome-keyring-in-kde-plasma)
 | 
					 | 
				
			||||||
- `sudo apt install $(check-language-support)`, see [Popup Language support is incomplete](http://unix.stackexchange.com/questions/421066/ddg#421079)
 | 
					 | 
				
			||||||
- [KDE Neon does not have an hibernation option? : kde](https://www.reddit.com/r/kde/comments/6n5m49/kde_neon_does_not_have_an_hibernation_option/dk7hd8v/)
 | 
					 | 
				
			||||||
- [kde plasma 5 - How to use miracast as an extended desktop on Linux? - Super User](https://superuser.com/questions/1160078/how-to-use-miracast-as-an-extended-desktop-on-linux)
 | 
					 | 
				
			||||||
- [Best tiling extensions for kwin? : kde](https://www.reddit.com/r/kde/comments/qgsv2u/best_tiling_extensions_for_kwin/?sort=new)
 | 
					 | 
				
			||||||
- [KDE Plasma5 Fixes](https://zren.github.io/kde/)
 | 
					 | 
				
			||||||
- [Setup git on the CLI to use 2FA with GitHub](https://gist.github.com/ateucher/4634038875263d10fb4817e5ad3d332f)
 | 
					 | 
				
			||||||
- [G'MIC - GREYC's Magic for Image Computing: A Full-Featured Open-Source Framework for Image Processing - Main](https://gmic.eu/)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## PC log (cs)
 | 
					 | 
				
			||||||
Sekce obsahuje log změn v Tuxedo laptopu s KDE Neon.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### KDE neon 5.26 (22.04)
 | 
					 | 
				
			||||||
{DONE <2022-10-25 17:21> *mail* *hud* *klíčenka* agenda}$
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- Ve směs OK
 | 
					 | 
				
			||||||
- HUD ztratil stylování, použito breeze pro celé rofi (vygóglováno)
 | 
					 | 
				
			||||||
- mailnag začal zapomínat heslo po příštím spuštění → nakonec: [Bubblemail - Downloads](http://bubblemail.free.fr/downloads)
 | 
					 | 
				
			||||||
	- z článku [The 10 Best Mail Notification Tools for Linux System](https://www.ubuntupit.com/best-mail-notification-tools-for-linux/)
 | 
					 | 
				
			||||||
	- zkoušen KMail – šlo by s ním žít, jen když už klient tak aby mi vyhovoval/fungoval
 | 
					 | 
				
			||||||
	- thunderbird: nemá možnost notifikací na pozadí (celý program musí běžet)
 | 
					 | 
				
			||||||
	- himalaya: má `watch`, ale detekuje jen nové (ne nově označené jako nepřečtené – asi OK), ale hl. se nedařilo zprovoznit přihlašování (kombinace s bitwarden)
 | 
					 | 
				
			||||||
- `canonical-livepatch` nefunguje
 | 
					 | 
				
			||||||
- Gnome klíčenka se neodemyká → přeinstalováno → uvidíme
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### Konsolidace klíčenek správce hesel
 | 
					 | 
				
			||||||
{DONE <2022-07-14 20:40> *cli* *hesla* agenda}$
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- [x] cli pro KWalletManager
 | 
					 | 
				
			||||||
	1. `keyring get imap centrumCZ`
 | 
					 | 
				
			||||||
	1. `kwalletcli -f imap -e centrumCZ`
 | 
					 | 
				
			||||||
- [x] Firefox
 | 
					 | 
				
			||||||
	- `nss-password -d ~/.mozilla/firefox/ezjfn8hg.default-release NAME`
 | 
					 | 
				
			||||||
	- [infinity0/mozilla-gnome-keyring: A firefox extension that enables Gnome Keyring integration](https://github.com/infinity0/mozilla-gnome-keyring)
 | 
					 | 
				
			||||||
- [x] [Bitwarden CLI](https://bitwarden.com/help/cli/)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### Varování v python scriptech
 | 
					 | 
				
			||||||
{DONE <2022-07-09 20:37> *python* *workaround* agenda}$
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Postupováno podle návodu [Rename the `~/.local/lib/python3.8/site-packages/pkg_resources` folder to `pkg_resources_back`](https://askubuntu.com/a/1398073).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### kwin-tiling
 | 
					 | 
				
			||||||
- https://gitlab.com/faho/kwin-tiling/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<details>
 | 
					 | 
				
			||||||
<summary>`{… cmd}$` explanation</summary>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This is [mdexpr](https://github.com/jaandrle/mdexpr) syntax. This document uses:
 | 
					 | 
				
			||||||
- {use [agenda](https://github.com/jaandrle/mdexpr-agenda) with states=TODO,NEXT|DONE mdexpr}$
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</details>
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,76 +0,0 @@
 | 
				
			|||||||
#!/usr/bin/env nodejsscript
 | 
					 | 
				
			||||||
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, fetch, cyclicLoop */
 | 
					 | 
				
			||||||
$.is_fatal= true;
 | 
					 | 
				
			||||||
const css= echo.css`
 | 
					 | 
				
			||||||
	.code, .url{ color: lightblue; }
 | 
					 | 
				
			||||||
	.code::before, .code::after{ content: "\`"; }
 | 
					 | 
				
			||||||
`;
 | 
					 | 
				
			||||||
testRequirements();
 | 
					 | 
				
			||||||
$.api()
 | 
					 | 
				
			||||||
	.version("2023-03-21")
 | 
					 | 
				
			||||||
	.describe([
 | 
					 | 
				
			||||||
		"Small utility to find out FTP url with credentials using Bitwarden CLI.",
 | 
					 | 
				
			||||||
		echo.format("The idea is to use saved login %cusername%c, %cpassword%c and %curl%c.",
 | 
					 | 
				
			||||||
			css.code, css.unset, css.code, css.unset, css.code, css.unset)
 | 
					 | 
				
			||||||
	])
 | 
					 | 
				
			||||||
	.command("get [name]", "Get url with credentials.")
 | 
					 | 
				
			||||||
		.alias("item")
 | 
					 | 
				
			||||||
		.option("--copy", echo.format("Uses %cxclip -selection clipboard%c.", css.code))
 | 
					 | 
				
			||||||
	.action(get)
 | 
					 | 
				
			||||||
	.command("list", echo.format("List all %cftp-*%c.", css.code))
 | 
					 | 
				
			||||||
		.option("--json", "Print output in JSON format.")
 | 
					 | 
				
			||||||
	.action(list)
 | 
					 | 
				
			||||||
	.parse();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
async function get(name, { copy: is_copy= false }){
 | 
					 | 
				
			||||||
	if(!name)
 | 
					 | 
				
			||||||
		name= await $.read({
 | 
					 | 
				
			||||||
			"-p": "Name",
 | 
					 | 
				
			||||||
			completions: list({ is_internal: true }).map(o=> o.name)
 | 
					 | 
				
			||||||
		});
 | 
					 | 
				
			||||||
	const item= s.$().run`bw get item ${name}`;
 | 
					 | 
				
			||||||
	if(!item.trim())
 | 
					 | 
				
			||||||
		$.error(`No record found for ${name}.`);
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	const { uris, username, password }= item
 | 
					 | 
				
			||||||
		.xargs(JSON.parse)
 | 
					 | 
				
			||||||
		.login;
 | 
					 | 
				
			||||||
	const url= urlFromUris(uris).replace('://', `://${username}:${password}@`);
 | 
					 | 
				
			||||||
	if(!is_copy){
 | 
					 | 
				
			||||||
		echo(url);
 | 
					 | 
				
			||||||
		$.exit(0);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	s.echo(url).run`xclip -selection clipboard 2>1 > /dev/null`;
 | 
					 | 
				
			||||||
	$.exit(0);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function list({ json= false, is_internal= false }){
 | 
					 | 
				
			||||||
	const list= s.$().run`bw list items --search="ftp"`
 | 
					 | 
				
			||||||
		.xargs(JSON.parse)
 | 
					 | 
				
			||||||
		.filter(o=> o.name.startsWith("ftp-"))
 | 
					 | 
				
			||||||
		.map(({ name, note, login: { uris } })=> ({ name, url: urlFromUris(uris), note }))
 | 
					 | 
				
			||||||
		.filter(o=> o.url);
 | 
					 | 
				
			||||||
	if(is_internal)
 | 
					 | 
				
			||||||
		return list;
 | 
					 | 
				
			||||||
	if(json)
 | 
					 | 
				
			||||||
		$.exit(0, echo(JSON.stringify(list)));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	list.forEach(pipe(
 | 
					 | 
				
			||||||
		line=> echo.format(line),
 | 
					 | 
				
			||||||
		t=> t.replaceAll("\n", " ").slice(2, -2),
 | 
					 | 
				
			||||||
		echo
 | 
					 | 
				
			||||||
	));
 | 
					 | 
				
			||||||
	$.exit(0);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function urlFromUris(uris){ return uris.find(o=> o.uri)?.uri; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function testRequirements(){
 | 
					 | 
				
			||||||
	if(!s.which("bw"))
 | 
					 | 
				
			||||||
		$.error([
 | 
					 | 
				
			||||||
			echo.format("The %cbw%c utility has not been found.", css.code),
 | 
					 | 
				
			||||||
			echo.format("Please install it using %cnpm i @bitwarden/cli --location=global%c.", css.code),
 | 
					 | 
				
			||||||
			echo.format("Respectively, follow the instructions at %chttps://github.com/bitwarden/clients/tree/master/apps/cli", css.url)
 | 
					 | 
				
			||||||
		].join("\n"));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
// vim: set tabstop=4 shiftwidth=4 textwidth=250 noexpandtab :
 | 
					 | 
				
			||||||
// vim>60: set foldmethod=indent foldlevel=1 foldnestmax=2:
 | 
					 | 
				
			||||||
@@ -1,82 +0,0 @@
 | 
				
			|||||||
#!/usr/bin/env nodejsscript
 | 
					 | 
				
			||||||
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, fetch, cyclicLoop */
 | 
					 | 
				
			||||||
const css= echo.css`
 | 
					 | 
				
			||||||
	.url{ color: lightblue; }
 | 
					 | 
				
			||||||
	.code { font-style: italic; }
 | 
					 | 
				
			||||||
	.code::before, .code::after { content: "\`"; }
 | 
					 | 
				
			||||||
`;
 | 
					 | 
				
			||||||
$.api()
 | 
					 | 
				
			||||||
	.version("2023-03-23")
 | 
					 | 
				
			||||||
	.describe([
 | 
					 | 
				
			||||||
		echo.format("This is small utility around %cchrome-remote-interface%c¹ to auto open inspect for cordova apps.", css.code),
 | 
					 | 
				
			||||||
		echo.format("[1] %chttps://github.com/cyrus-and/chrome-remote-interface", css.url)
 | 
					 | 
				
			||||||
	])
 | 
					 | 
				
			||||||
	.command("open", "This open browser and after 30secs enable auto inspect openning.", true)
 | 
					 | 
				
			||||||
	.option("--browser, -B", "Browser exec. Use one of supported browsers, such as chrome, chromium, opera, edge, …", "chromium")
 | 
					 | 
				
			||||||
	.option("--port, -P", "Chanhe debugging port", 9222)
 | 
					 | 
				
			||||||
	.action(async function({ browser, port }){
 | 
					 | 
				
			||||||
		s.runA`${browser} --remote-debugging-port=${port}`;
 | 
					 | 
				
			||||||
		const { setTimeout }= await import("node:timers/promises");
 | 
					 | 
				
			||||||
		await setTimeout(30_000);
 | 
					 | 
				
			||||||
		await register();
 | 
					 | 
				
			||||||
		$.exit(0);
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	.command("enable", "Enable auto inspect openning for already running browser.")
 | 
					 | 
				
			||||||
	.action(async function(){
 | 
					 | 
				
			||||||
		await register();
 | 
					 | 
				
			||||||
		$.exit(0);
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	.parse();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
async function register(){
 | 
					 | 
				
			||||||
	const { default: CDP } = await import($.xdg.globalPackage`chrome-remote-interface`);
 | 
					 | 
				
			||||||
	let client;
 | 
					 | 
				
			||||||
	try{
 | 
					 | 
				
			||||||
		await CDP.New();
 | 
					 | 
				
			||||||
		client= await CDP();
 | 
					 | 
				
			||||||
		const { Network, Page, Runtime }= client;
 | 
					 | 
				
			||||||
		await Network.enable();
 | 
					 | 
				
			||||||
		await Page.enable();
 | 
					 | 
				
			||||||
		await Page.navigate({url: 'chrome://inspect/#devices'});
 | 
					 | 
				
			||||||
		await Page.loadEventFired();
 | 
					 | 
				
			||||||
		await Runtime.evaluate({ expression: `const debugCordova= (${autoRunCordovaAppInspect.toString()})();` });
 | 
					 | 
				
			||||||
	} finally {
 | 
					 | 
				
			||||||
		if(!client) return;
 | 
					 | 
				
			||||||
		return await client.close();
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function autoRunCordovaAppInspect(){
 | 
					 | 
				
			||||||
	const { filter, map }= Array.prototype;
 | 
					 | 
				
			||||||
	let /* filters */
 | 
					 | 
				
			||||||
		device_filter, app_filter, last_state;
 | 
					 | 
				
			||||||
	const /* get elements */
 | 
					 | 
				
			||||||
		devicesElements= ()=> filter.call(document.getElementsByClassName("device"), el=> el.id!=="device:localhost"),
 | 
					 | 
				
			||||||
		getApp= el=> el.getElementsByClassName("browser-name")[0].textContent,
 | 
					 | 
				
			||||||
		appTest= browser_candidate_el=> getApp(browser_candidate_el).indexOf(app_filter)!==-1,
 | 
					 | 
				
			||||||
		browsersElements= wrapper_el=> wrapper_el.getElementsByClassName("browser"),
 | 
					 | 
				
			||||||
		actionElementFilter= wrapper_el=> filter.call(wrapper_el.getElementsByClassName("action"), el=> el.textContent==="inspect")[0];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	function run(){
 | 
					 | 
				
			||||||
		const device= !device_filter ? (d=> d&&d[d.length-1])(devicesElements()) : filter.call(devicesElements(), el=> el.id===device_filter)[0];
 | 
					 | 
				
			||||||
		if(!device) return false;
 | 
					 | 
				
			||||||
		const app= !app_filter ? (a=> a&&a[a.length-1])(browsersElements(device)) : filter.call(browsersElements(document), appTest)[0];
 | 
					 | 
				
			||||||
		if(!app) return false;
 | 
					 | 
				
			||||||
		const { id }= app;
 | 
					 | 
				
			||||||
		if(last_state===id) return false;
 | 
					 | 
				
			||||||
		last_state= id;
 | 
					 | 
				
			||||||
		const action= actionElementFilter(app);
 | 
					 | 
				
			||||||
		if(!action) return false;
 | 
					 | 
				
			||||||
		action.click();
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	const observer= new MutationObserver(run);
 | 
					 | 
				
			||||||
	observer.observe(document.getElementById("devices-list"), { childList: true, subtree: true })
 | 
					 | 
				
			||||||
	return {
 | 
					 | 
				
			||||||
		/* Set string to filter, typically app id or ip */
 | 
					 | 
				
			||||||
		setApp: _app_filter=> app_filter= _app_filter,
 | 
					 | 
				
			||||||
		/* Apply only for given device (see debugCordova.devices). */
 | 
					 | 
				
			||||||
		setDevice: _device_filter=> device_filter= _device_filter,
 | 
					 | 
				
			||||||
		get apps(){ return map.call(browsersElements(document), getApp); },
 | 
					 | 
				
			||||||
		get devices(){ return map.call(devicesElements(), el=> el.id); }
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,418 +0,0 @@
 | 
				
			|||||||
#!/usr/bin/env node
 | 
					 | 
				
			||||||
/* jshint esversion: 8,-W097, -W040, node: true, expr: true, undef: true */
 | 
					 | 
				
			||||||
const /* dependencies */
 | 
					 | 
				
			||||||
	[ fs, readline, https, { spawn } ]= [ "fs", "readline", "https", "child_process" ].map(p=> require(p));
 | 
					 | 
				
			||||||
const /* helper for coloring console | main program params */
 | 
					 | 
				
			||||||
	colors= { e: "\x1b[38;2;252;76;76m", s: "\x1b[38;2;76;252;125m", w: "\x1b[33m", R: "\x1b[0m", y: "\x1b[38;2;200;190;90m", g: "\x1b[38;2;150;150;150m" },
 | 
					 | 
				
			||||||
	info= {
 | 
					 | 
				
			||||||
		name: __filename.slice(__filename.lastIndexOf("/")+1, __filename.lastIndexOf(".")),
 | 
					 | 
				
			||||||
		version: "1.2.1",
 | 
					 | 
				
			||||||
		description: "Helper for working with “packages” stored in GitHub releases.",
 | 
					 | 
				
			||||||
		config: `${__filename.slice(0, __filename.lastIndexOf("."))}.json`,
 | 
					 | 
				
			||||||
		folder: __filename.slice(0, __filename.lastIndexOf("/")+1),
 | 
					 | 
				
			||||||
		commands: [
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				cmd: "help", args: [ "--help", "-h" ],
 | 
					 | 
				
			||||||
				desc: "Shows this text"
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				cmd: "config", args: [ "--config" ],
 | 
					 | 
				
			||||||
				desc: "Opens config file in terminal editor (defaults to vim)"
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				cmd: "check", args: [ "--check", "-c" ],
 | 
					 | 
				
			||||||
				desc: "Shows/checks updates for registered packages"
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				cmd: "update", args: [ "--update", "-u" ], param: "group",
 | 
					 | 
				
			||||||
				desc: "Installs lates versions of registered packages"
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				cmd: "uninstall", args: [ "--uninstall", "-u" ], param: "package",
 | 
					 | 
				
			||||||
				desc: "Deletes downloaded file and moves package to the 'skip' group"
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				cmd: "register", args: [ "--register", "--change" ], param: "package",
 | 
					 | 
				
			||||||
				desc: "Add package infos to internal list to be able installing/updating"
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				cmd: "remove", args: [ "--remove" ], param: "package",
 | 
					 | 
				
			||||||
				desc: ([
 | 
					 | 
				
			||||||
					"Uninstall package if needed (see `-u`)",
 | 
					 | 
				
			||||||
					"And remove it from internal list (see `--config`)"
 | 
					 | 
				
			||||||
				]).join(". ")
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		],
 | 
					 | 
				
			||||||
		params: {
 | 
					 | 
				
			||||||
			group: ([
 | 
					 | 
				
			||||||
				"You can label each package to update only choosen one",
 | 
					 | 
				
			||||||
				"There are sereved options:",
 | 
					 | 
				
			||||||
				"  - '' (empty): these packages are includes in all groups",
 | 
					 | 
				
			||||||
				"  - 'all': in case of `--update` process all packages (except skipped)",
 | 
					 | 
				
			||||||
				"  - 'skip': these packages are “uninstalled”",
 | 
					 | 
				
			||||||
				"			 No updates will be downloaded",
 | 
					 | 
				
			||||||
				"Group can be setted via '--register'"
 | 
					 | 
				
			||||||
			]).join(". "),
 | 
					 | 
				
			||||||
			package: ([
 | 
					 | 
				
			||||||
				"Represents package identificator, it is in fact GitHub repository path",
 | 
					 | 
				
			||||||
				"So, it schould be in the form `username/repository`"
 | 
					 | 
				
			||||||
			]).join(". ")
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
printMain();
 | 
					 | 
				
			||||||
const current= getCurrent(process.argv.slice(2));
 | 
					 | 
				
			||||||
(function main_(){
 | 
					 | 
				
			||||||
	const { cmd }= current.command;
 | 
					 | 
				
			||||||
	if(!cmd) return Promise.resolve("No arguments (use `--help` for showing all oprions).");
 | 
					 | 
				
			||||||
	switch(cmd){
 | 
					 | 
				
			||||||
		case "help":		return Promise.resolve(printHelp());
 | 
					 | 
				
			||||||
		case "config":		return vim_(info.config);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	const config= getConfig();
 | 
					 | 
				
			||||||
	switch(cmd){
 | 
					 | 
				
			||||||
		case "register":	return register_(config);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if(!config.packages)	return Promise.resolve("No packages yet!");
 | 
					 | 
				
			||||||
	switch(cmd){
 | 
					 | 
				
			||||||
		case "check":		return check_(config);
 | 
					 | 
				
			||||||
		case "update":		return update_(config);
 | 
					 | 
				
			||||||
		case "uninstall":
 | 
					 | 
				
			||||||
		case "remove":
 | 
					 | 
				
			||||||
							return uninstall_(cmd, config);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
})()
 | 
					 | 
				
			||||||
.then(function(message){
 | 
					 | 
				
			||||||
	if(message)
 | 
					 | 
				
			||||||
		log(1, `Operation '${current.command.cmd}' successfull: @s_${message}`);
 | 
					 | 
				
			||||||
	process.exit();
 | 
					 | 
				
			||||||
})
 | 
					 | 
				
			||||||
.catch(error);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
async function uninstall_(cmd, config){
 | 
					 | 
				
			||||||
	const progress= [
 | 
					 | 
				
			||||||
		[ "Deleting file", "not needed" ],
 | 
					 | 
				
			||||||
		[ "Check out from updates", "yes" ],
 | 
					 | 
				
			||||||
		[ "Remove from packages list", "no" ]
 | 
					 | 
				
			||||||
	];
 | 
					 | 
				
			||||||
	const pkg_name= current.param;
 | 
					 | 
				
			||||||
	const pkg_index= config.packages.findIndex(({ repository })=> repository===pkg_name);
 | 
					 | 
				
			||||||
	if(pkg_index===-1) return "nothing to do (maybe typo)";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	const pkg= config.packages[pkg_index];
 | 
					 | 
				
			||||||
	const { downloads }= pkg;
 | 
					 | 
				
			||||||
	if(downloads&&fs.existsSync(downloads)){
 | 
					 | 
				
			||||||
		try{ fs.unlinkSync(downloads); progress[0][1]= "done"; }
 | 
					 | 
				
			||||||
		catch (_){ progress[0][1]= colors.e+"error, try manually – "+downloads; }
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	Reflect.deleteProperty(pkg, "last_update");
 | 
					 | 
				
			||||||
	Reflect.set(pkg, "group", "skip");
 | 
					 | 
				
			||||||
	progress[1][1]= "done";
 | 
					 | 
				
			||||||
	if(cmd!=="remove") return gotoEnd();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	const y= await promt_(`Are you realy want to remove package ${pkg.repository} (yes/no)`, "no");
 | 
					 | 
				
			||||||
	if(y!=="yes") return gotoEnd();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	config.packages.splice(pkg_index, 1);
 | 
					 | 
				
			||||||
	progress[2][1]= "done";
 | 
					 | 
				
			||||||
	return gotoEnd();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	function gotoEnd(){
 | 
					 | 
				
			||||||
		const o= progress.reduce((o, [ k, v ])=> Reflect.set(o, k, v)&&o, {});
 | 
					 | 
				
			||||||
		logSection("  ", pkg_name, o);
 | 
					 | 
				
			||||||
		save(config);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function vim_(file){ return new Promise(function(resolve, reject){
 | 
					 | 
				
			||||||
	const cmd= spawn((process.env.EDITOR||"vim")+(process.platform==="win32"?".bat":""), [ file ], { stdio: 'inherit' });
 | 
					 | 
				
			||||||
	cmd.on('exit', e=> e ? reject("Editor error, try manually: "+file) : resolve("OK"));
 | 
					 | 
				
			||||||
});}
 | 
					 | 
				
			||||||
async function update_(config){
 | 
					 | 
				
			||||||
	const filter= current.param;
 | 
					 | 
				
			||||||
	const is_all= filter==="all";
 | 
					 | 
				
			||||||
	let updates= [];
 | 
					 | 
				
			||||||
	log(1, "Collecting packages to download:");
 | 
					 | 
				
			||||||
	for(const [
 | 
					 | 
				
			||||||
		i, { repository, last_update, group, file_name, exec, downloaded, tag_name_regex }
 | 
					 | 
				
			||||||
	] of Object.entries(config.packages)){
 | 
					 | 
				
			||||||
		if(group==="skip") continue;
 | 
					 | 
				
			||||||
		if(!is_all&&group&&filter!==group) continue;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		const { tag_name, published_at, html_url, assets_url }= await githubRelease_(repository, tag_name_regex);
 | 
					 | 
				
			||||||
		const status= packageStatus(last_update, published_at);
 | 
					 | 
				
			||||||
		if(status!==3) continue;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		const assets= await downloadJSON_(repository, assets_url);
 | 
					 | 
				
			||||||
		if(!assets.length){
 | 
					 | 
				
			||||||
			console.log("  Nothing to download: Visit "+html_url);
 | 
					 | 
				
			||||||
			continue;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		const options= assets.map(({ name, download_count, size })=>
 | 
					 | 
				
			||||||
			`${name} | size: ${Math.round(size/1048576)}MB | downloads: ${download_count}`);
 | 
					 | 
				
			||||||
		logSection("  ", " "+repository, {
 | 
					 | 
				
			||||||
			"Version": tag_name,
 | 
					 | 
				
			||||||
			"Url": html_url
 | 
					 | 
				
			||||||
		});
 | 
					 | 
				
			||||||
		logSection("   ", " Available assets:", options);
 | 
					 | 
				
			||||||
		const choose= await promt_("	  Choose (empty for skip)", "");
 | 
					 | 
				
			||||||
		if(choose==="") continue;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		const { browser_download_url: url, name: remote_name, size }= assets[choose];
 | 
					 | 
				
			||||||
		updates.push({
 | 
					 | 
				
			||||||
			index: i,
 | 
					 | 
				
			||||||
			file_name, exec, downloaded,
 | 
					 | 
				
			||||||
			repository, version: tag_name, last_update: published_at,
 | 
					 | 
				
			||||||
			url, remote_name, size
 | 
					 | 
				
			||||||
		});
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if(!updates.length){
 | 
					 | 
				
			||||||
		log(2, "No packages in "+`group ${filter} needs updates.`);
 | 
					 | 
				
			||||||
		return Promise.resolve("nothing to update");
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	log(1, "Downloading:");
 | 
					 | 
				
			||||||
	return applySequentially_(updates, async function(todo){
 | 
					 | 
				
			||||||
		const to= todo.file_name ? info.folder+todo.file_name : (
 | 
					 | 
				
			||||||
				  todo.downloaded ? todo.downloaded : info.folder+todo.remote_name);
 | 
					 | 
				
			||||||
		const d= await downloadFile_(to, todo);
 | 
					 | 
				
			||||||
		return Object.assign(todo, d);
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	.then(function(dones){
 | 
					 | 
				
			||||||
		log(1, "Finalizing:");
 | 
					 | 
				
			||||||
		let e= 0;
 | 
					 | 
				
			||||||
		for(const nth of dones){
 | 
					 | 
				
			||||||
			if(!nth.success){
 | 
					 | 
				
			||||||
				e+= 1;
 | 
					 | 
				
			||||||
				log(2, `${nth.repository}: @e_${nth.message}`);
 | 
					 | 
				
			||||||
				continue;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			Object.assign(config.packages[nth.index], registerDownloads(nth));
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		save(config);
 | 
					 | 
				
			||||||
		const { length }= dones;
 | 
					 | 
				
			||||||
		const msg= `updated ${length-e} of ${length} packages.`;
 | 
					 | 
				
			||||||
		return e ? Promise.reject(msg) : Promise.resolve(msg);
 | 
					 | 
				
			||||||
	});
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function registerDownloads({ repository, last_update, message: downloads, exec, version }){
 | 
					 | 
				
			||||||
	let msg= colors.s+"OK";
 | 
					 | 
				
			||||||
	if(exec==="yes"){
 | 
					 | 
				
			||||||
		try{ fs.chmodSync(downloads, 0o755); }
 | 
					 | 
				
			||||||
		catch(e){ msg= colors.e+"try manual `chmod+x` for '"+downloads+"'"; }
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	log(2, `${repository}: ${msg}`);
 | 
					 | 
				
			||||||
	return { last_update, downloads, version };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
async function check_({ packages }){
 | 
					 | 
				
			||||||
	let updates= 0, skipped= 0;
 | 
					 | 
				
			||||||
	for(const { repository, name, version, last_update, group, tag_name_regex } of packages){
 | 
					 | 
				
			||||||
		const { tag_name, published_at }= await githubRelease_(repository, tag_name_regex);
 | 
					 | 
				
			||||||
		const status= packageStatus(last_update, published_at);
 | 
					 | 
				
			||||||
		updates+= status===3;
 | 
					 | 
				
			||||||
		const skip= group==="skip";
 | 
					 | 
				
			||||||
		skipped+= skip;
 | 
					 | 
				
			||||||
		log(2, `@g_${repository} [${group}]: `+( !version ? "not installed" : packageStatusText(status, skip) ));
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	const u= updates-skipped;
 | 
					 | 
				
			||||||
	const s= skipped ? ` (inc. skipped: ${updates})` : "";
 | 
					 | 
				
			||||||
	return (!u ? "" : colors.w)+u+" update(s) available"+s;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
async function register_(config){
 | 
					 | 
				
			||||||
	const { param: repository }= current;
 | 
					 | 
				
			||||||
	if(!Reflect.has(config, "packages")) Reflect.set(config, "packages", []);
 | 
					 | 
				
			||||||
	const packages= Reflect.get(config, "packages");
 | 
					 | 
				
			||||||
	let local_id= packages.findIndex(p=> p.repository===repository);
 | 
					 | 
				
			||||||
	if(local_id===-1)
 | 
					 | 
				
			||||||
		local_id= packages.push({ repository })-1;
 | 
					 | 
				
			||||||
	const local= config.packages[local_id];
 | 
					 | 
				
			||||||
	const remote= await githubRepo_(repository) || {};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	log(1, "Registering: "+repository);
 | 
					 | 
				
			||||||
	const spaces= "    ";
 | 
					 | 
				
			||||||
	local.name= await promt_(spaces+"Name", local.name || remote.name || "");
 | 
					 | 
				
			||||||
	if(!local.description) local.description= remote.description;
 | 
					 | 
				
			||||||
	logLines(2, [
 | 
					 | 
				
			||||||
		"@g_Group info:",
 | 
					 | 
				
			||||||
		"- you can update specific packages by using their group name",
 | 
					 | 
				
			||||||
		"- There some reserved options:",
 | 
					 | 
				
			||||||
		"  - '' (empty): will be included in all groups",
 | 
					 | 
				
			||||||
		"  - 'skip': will be always skipped"
 | 
					 | 
				
			||||||
	]);
 | 
					 | 
				
			||||||
	local.group= await promt_(spaces+"Group", local.group || "");
 | 
					 | 
				
			||||||
	local.file_name= await promt_(spaces+"File Name", local.file_name || local.name.toLowerCase().replace(/\s/g, "-") || "");
 | 
					 | 
				
			||||||
	local.exec= await promt_(spaces+"Make executable (yes/no)", local.exec || "no");
 | 
					 | 
				
			||||||
	save(config);
 | 
					 | 
				
			||||||
	return `${repository}: saved`;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function packageStatusText(status, skip){
 | 
					 | 
				
			||||||
	const s= skip ? colors.R+"skipped – "+colors.g : "";
 | 
					 | 
				
			||||||
	switch(status){
 | 
					 | 
				
			||||||
		case 0: return s+"nothing to compare";
 | 
					 | 
				
			||||||
		case 1: return s+"@s_up-to-date";
 | 
					 | 
				
			||||||
		case 2: return s+"newer";
 | 
					 | 
				
			||||||
		case 3: return s+"@e_outdated/not instaled";
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function packageStatus(local, remote){
 | 
					 | 
				
			||||||
	if(!remote) return 0;
 | 
					 | 
				
			||||||
	if(!local) return 3;
 | 
					 | 
				
			||||||
	if(remote===local) return 1;
 | 
					 | 
				
			||||||
	return 2+(local<remote);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function logSection(spaces, name, data){
 | 
					 | 
				
			||||||
	console.log(spaces+name);
 | 
					 | 
				
			||||||
	for(const [ key, value ] of Object.entries(data))
 | 
					 | 
				
			||||||
		console.log(spaces.repeat(2)+colors.g+key+": "+value.replace(/@(\w)_/g, (_, m)=> colors[m])+colors.R);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function githubRelease_(repository, tag_name_regex= ""){
 | 
					 | 
				
			||||||
	return downloadJSON_(repository, "https://api.github.com/repos/"+repository+"/releases")
 | 
					 | 
				
			||||||
	.then(data=> data.find(function find({ draft, published_at, tag_name }){
 | 
					 | 
				
			||||||
		if(draft||!published_at) return false;
 | 
					 | 
				
			||||||
		if(!tag_name_regex) return true;
 | 
					 | 
				
			||||||
		return (new RegExp(tag_name_regex, 'g')).test(tag_name);
 | 
					 | 
				
			||||||
	})||{});
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function githubRepo_(repository){ return downloadJSON_(repository, "https://api.github.com/repos/"+repository); }
 | 
					 | 
				
			||||||
function promt_(q, def){
 | 
					 | 
				
			||||||
	const rl= readline.createInterface({ input: process.stdin, output: process.stdout });
 | 
					 | 
				
			||||||
	return new Promise(function(resolve){
 | 
					 | 
				
			||||||
		rl.question(q+": ", a=> { rl.close(); resolve(a); });
 | 
					 | 
				
			||||||
		rl.write(def);
 | 
					 | 
				
			||||||
	});
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function getConfig(){
 | 
					 | 
				
			||||||
	let config;
 | 
					 | 
				
			||||||
	try{ config= JSON.parse(fs.readFileSync(info.config)); }
 | 
					 | 
				
			||||||
	catch(e){ config= {}; log(1, "@w_Missing or corrupted config file. Creates empty one."); }
 | 
					 | 
				
			||||||
	return config;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function save(config){
 | 
					 | 
				
			||||||
	return fs.writeFileSync(info.config, JSON.stringify(config, null, "    "));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function getCurrent(args){
 | 
					 | 
				
			||||||
	let command, command_arg, param;
 | 
					 | 
				
			||||||
	const hasArg= arg=> ({ args })=> args.includes(arg);
 | 
					 | 
				
			||||||
	for(let i=0, { length }= args, arg; i<length; i++){
 | 
					 | 
				
			||||||
		arg= args[i];
 | 
					 | 
				
			||||||
		if(!command){
 | 
					 | 
				
			||||||
			command= info.commands.find(hasArg(arg));
 | 
					 | 
				
			||||||
			command_arg= arg;
 | 
					 | 
				
			||||||
			continue;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		if(!command.param||typeof param!=="undefined")
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		param= arg;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if(!command)
 | 
					 | 
				
			||||||
		command= { cmd: "" };
 | 
					 | 
				
			||||||
	if(command.param&&typeof param==="undefined")
 | 
					 | 
				
			||||||
		return error(`Missign arguments for '${command_arg}'.`);
 | 
					 | 
				
			||||||
	return { command, param };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function downloadJSON_(repository, url){
 | 
					 | 
				
			||||||
	return downloadText_(url)
 | 
					 | 
				
			||||||
	.then(function(data){
 | 
					 | 
				
			||||||
		try{
 | 
					 | 
				
			||||||
			const response= JSON.parse(data);
 | 
					 | 
				
			||||||
			if(Reflect.has(response, "message")) throw new Error(response.message);
 | 
					 | 
				
			||||||
			return Promise.resolve(JSON.parse(data));
 | 
					 | 
				
			||||||
		} catch(e){
 | 
					 | 
				
			||||||
			log(1, "Received data: "+data);
 | 
					 | 
				
			||||||
			log(1, "@e_"+e);
 | 
					 | 
				
			||||||
			return Promise.reject(`JSON from '${repository}' failed.`);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	});
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function downloadText_(url){
 | 
					 | 
				
			||||||
	return get_(url)
 | 
					 | 
				
			||||||
	.then(function(response){ return new Promise(function(resolve){
 | 
					 | 
				
			||||||
		let data= "";
 | 
					 | 
				
			||||||
		response.on("data", chunk=> data+= chunk);
 | 
					 | 
				
			||||||
		response.on("end", ()=> resolve(data));
 | 
					 | 
				
			||||||
	}); });
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function downloadFile_(to, { url, repository, size }){
 | 
					 | 
				
			||||||
	const file= fs.createWriteStream(to);
 | 
					 | 
				
			||||||
	return get_(url)
 | 
					 | 
				
			||||||
	.then(r=> get_(r.headers.location))
 | 
					 | 
				
			||||||
	.then(function(response){ return new Promise(function(resolve){
 | 
					 | 
				
			||||||
		let progress= 0, pc_prev= 0, avg= 0;
 | 
					 | 
				
			||||||
		const start= new Date();
 | 
					 | 
				
			||||||
		const i= setInterval(function(){
 | 
					 | 
				
			||||||
			readline.clearLine(process.stdout);
 | 
					 | 
				
			||||||
			const pc= (100*progress/size).toFixed(2);
 | 
					 | 
				
			||||||
			if(!pc_prev) pc_prev= pc;
 | 
					 | 
				
			||||||
			else {
 | 
					 | 
				
			||||||
				avg= ((100-pc)/(60*(pc-pc_prev))).toFixed(2);
 | 
					 | 
				
			||||||
				pc_prev= 0;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			const running= ((new Date()-start)/60000).toFixed(2);
 | 
					 | 
				
			||||||
			log(2, repository+": "+pc+"%"+` (end in ~${avg} mins, running ${running} mins)`);
 | 
					 | 
				
			||||||
			readline.moveCursor(process.stdout, 0, -1);
 | 
					 | 
				
			||||||
		}, 500);
 | 
					 | 
				
			||||||
		response.on('data', function(chunk){
 | 
					 | 
				
			||||||
			file.write(chunk);
 | 
					 | 
				
			||||||
			progress+= chunk.length;
 | 
					 | 
				
			||||||
		});
 | 
					 | 
				
			||||||
		response.on('end', function(){
 | 
					 | 
				
			||||||
			clearInterval(i);
 | 
					 | 
				
			||||||
			readline.clearLine(process.stdout);
 | 
					 | 
				
			||||||
			log(2, repository+": @s_OK");
 | 
					 | 
				
			||||||
			file.close(()=> resolve({ success: 1, message: to })); /* close() is async, call cb after close completes. */
 | 
					 | 
				
			||||||
		});
 | 
					 | 
				
			||||||
	}); })
 | 
					 | 
				
			||||||
	.catch(({ message })=> {
 | 
					 | 
				
			||||||
		fs.unlink(to); // Delete the file async. (But we don't check the result)
 | 
					 | 
				
			||||||
		return { success: 0, message };
 | 
					 | 
				
			||||||
	});
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function get_(url){ return new Promise(function(resolve, reject){
 | 
					 | 
				
			||||||
	https.get(
 | 
					 | 
				
			||||||
		url,
 | 
					 | 
				
			||||||
		{ headers: { 'Cache-Control': 'no-cache', 'User-Agent': 'node' } },
 | 
					 | 
				
			||||||
		resolve
 | 
					 | 
				
			||||||
	).on("error", reject);
 | 
					 | 
				
			||||||
});}
 | 
					 | 
				
			||||||
function applySequentially_(input, pF){
 | 
					 | 
				
			||||||
	const data= [];
 | 
					 | 
				
			||||||
	let p= pF(input[0]);
 | 
					 | 
				
			||||||
	const tie= nth=> result_mth=> ( data.push(result_mth), pF(input[nth]) );
 | 
					 | 
				
			||||||
	for(let i= 1, { length }= input; i<length; i++)
 | 
					 | 
				
			||||||
		p= p.then(tie(i));
 | 
					 | 
				
			||||||
	return p.then(o=> (data.push(o), data));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function error(message){
 | 
					 | 
				
			||||||
	const help_text= `@w_See help using '${info.commands[0].args[0]}'.`;
 | 
					 | 
				
			||||||
	log(1, `@e_Error: ${message} ${help_text}`);
 | 
					 | 
				
			||||||
	return process.exit(1);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function printMain(){
 | 
					 | 
				
			||||||
	const { name, version, description }= info;
 | 
					 | 
				
			||||||
	log(1, `@w_${name}@${version}`);
 | 
					 | 
				
			||||||
	log(1, description);
 | 
					 | 
				
			||||||
	const cmds= info.commands.map(({args})=> args[0].replace("--", "")).join(", ");
 | 
					 | 
				
			||||||
	log(1, `@w_Usage: ${name} --[cmd] [param]`);
 | 
					 | 
				
			||||||
	log(2, `…cmd: ${cmds}`);
 | 
					 | 
				
			||||||
	log(2, "…param: Based on cmd\n");
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function printHelp(){
 | 
					 | 
				
			||||||
	log(1, "@s_Help:");
 | 
					 | 
				
			||||||
	log(2, "Commands:");
 | 
					 | 
				
			||||||
	info.commands.forEach(({ args, param, desc })=> {
 | 
					 | 
				
			||||||
		const args_text= args.join("|");
 | 
					 | 
				
			||||||
		param= param ? " "+param : "";
 | 
					 | 
				
			||||||
		log(3, `@g_${args_text}@R_${param}`);
 | 
					 | 
				
			||||||
		logLines(4, desc);
 | 
					 | 
				
			||||||
	});
 | 
					 | 
				
			||||||
	log(2, "Params:");
 | 
					 | 
				
			||||||
	for(const [ param, desc ] of Object.entries(info.params)){
 | 
					 | 
				
			||||||
		log(3, `@g_${param}`);
 | 
					 | 
				
			||||||
		logLines(4, desc);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function log(tab, text){
 | 
					 | 
				
			||||||
	return console.log("  ".repeat(tab)+text.replace(/@(\w)_/g, (_, m)=> colors[m])+colors.R);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function logLines(tab, multiline_text){
 | 
					 | 
				
			||||||
	if(!Array.isArray(multiline_text)) multiline_text= multiline_text.split(/(?<=\.) /g);
 | 
					 | 
				
			||||||
	return log(tab, multiline_text.join("\n"+"	".repeat(tab)));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,216 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
    "packages": [
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "repository": "shiftkey/desktop",
 | 
					 | 
				
			||||||
            "name": "GitHub Desktop",
 | 
					 | 
				
			||||||
            "group": "dev",
 | 
					 | 
				
			||||||
            "file_name": "github-desktop",
 | 
					 | 
				
			||||||
            "exec": "yes",
 | 
					 | 
				
			||||||
            "description": "Fork of GitHub Desktop to support various Linux distributions",
 | 
					 | 
				
			||||||
            "last_update": "2023-12-20T15:25:06Z",
 | 
					 | 
				
			||||||
            "downloads": "/home/jaandrle/bin/github-desktop",
 | 
					 | 
				
			||||||
            "version": "release-3.3.6-linux3"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "repository": "jaandrle/jaaCSS-cli",
 | 
					 | 
				
			||||||
            "name": "jaaCSS",
 | 
					 | 
				
			||||||
            "description": "EXPERIMENT – Helper for managing functional CSS classes",
 | 
					 | 
				
			||||||
            "group": "dev",
 | 
					 | 
				
			||||||
            "file_name": "jaaCSS.js",
 | 
					 | 
				
			||||||
            "exec": "yes",
 | 
					 | 
				
			||||||
            "downloads": "/home/jaandrle/bin/jaaCSS.js",
 | 
					 | 
				
			||||||
            "version": "v1.3.2",
 | 
					 | 
				
			||||||
            "last_update": "2022-09-02T13:33:16Z"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "repository": "th-ch/youtube-music",
 | 
					 | 
				
			||||||
            "name": "youtube-music",
 | 
					 | 
				
			||||||
            "description": "YouTube Music Desktop App bundled with custom plugins (and built-in ad blocker / downloader)",
 | 
					 | 
				
			||||||
            "group": "nondev",
 | 
					 | 
				
			||||||
            "file_name": "youtube-music",
 | 
					 | 
				
			||||||
            "exec": "yes",
 | 
					 | 
				
			||||||
            "last_update": "2024-01-05T14:44:27Z",
 | 
					 | 
				
			||||||
            "downloads": "/home/jaandrle/bin/youtube-music",
 | 
					 | 
				
			||||||
            "version": "v3.2.2"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "repository": "ArchGPT/insomnium",
 | 
					 | 
				
			||||||
            "name": "insomnium",
 | 
					 | 
				
			||||||
            "description": "Insomnium is a fast local API testing tool that is privacy-focused and 100% local. For testing GraphQL, REST, WebSockets and gRPC. This is a fork of Kong/insomnia",
 | 
					 | 
				
			||||||
            "group": "dev",
 | 
					 | 
				
			||||||
            "file_name": "insomnium",
 | 
					 | 
				
			||||||
            "exec": "yes",
 | 
					 | 
				
			||||||
            "last_update": "2023-11-13T10:03:28Z",
 | 
					 | 
				
			||||||
            "downloads": "/home/jaandrle/bin/insomnium",
 | 
					 | 
				
			||||||
            "tag_name_regex": "core@.*",
 | 
					 | 
				
			||||||
            "version": "core@0.2.3-a"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "repository": "Kong/insomnia",
 | 
					 | 
				
			||||||
            "name": "insomnia",
 | 
					 | 
				
			||||||
            "description": "The open-source, cross-platform API client for GraphQL, REST, and gRPC.",
 | 
					 | 
				
			||||||
            "group": "skip",
 | 
					 | 
				
			||||||
            "file_name": "insomnia",
 | 
					 | 
				
			||||||
            "exec": "yes",
 | 
					 | 
				
			||||||
            "last_update": "2023-10-16T10:03:28Z",
 | 
					 | 
				
			||||||
            "downloads": "/home/jaandrle/bin/insomnia",
 | 
					 | 
				
			||||||
            "tag_name_regex": "core@.*",
 | 
					 | 
				
			||||||
            "version": "core@8.3.0"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "repository": "rvpanoz/luna",
 | 
					 | 
				
			||||||
            "name": "luna",
 | 
					 | 
				
			||||||
            "description": "Manage npm dependencies through a modern UI.",
 | 
					 | 
				
			||||||
            "group": "skip",
 | 
					 | 
				
			||||||
            "file_name": "luna",
 | 
					 | 
				
			||||||
            "exec": "yes"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "repository": "angela-d/wifi-channel-watcher",
 | 
					 | 
				
			||||||
            "name": "wifi-channel-watcher",
 | 
					 | 
				
			||||||
            "group": "skip",
 | 
					 | 
				
			||||||
            "file_name": "wifi-channel-watcher",
 | 
					 | 
				
			||||||
            "exec": "no",
 | 
					 | 
				
			||||||
            "description": "Monitor channel usage of neighboring routers & get an alert if your active channel is not optimal.\tTroubleshoot wifi without lifting a finger!"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "repository": "vinceliuice/Tela-circle-icon-theme",
 | 
					 | 
				
			||||||
            "name": "Tela-circle-icon-theme",
 | 
					 | 
				
			||||||
            "description": "Tela-circle-icon-theme",
 | 
					 | 
				
			||||||
            "group": "themes",
 | 
					 | 
				
			||||||
            "file_name": "tela-circle-icon-theme.zip",
 | 
					 | 
				
			||||||
            "last_update": "2021-07-19T14:12:05Z",
 | 
					 | 
				
			||||||
            "exec": "no"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "repository": "AppImage/AppImageKit",
 | 
					 | 
				
			||||||
            "name": "AppImageKit",
 | 
					 | 
				
			||||||
            "group": "skip",
 | 
					 | 
				
			||||||
            "file_name": "appimagekit",
 | 
					 | 
				
			||||||
            "exec": "yes",
 | 
					 | 
				
			||||||
            "description": "Package desktop applications as AppImages that run on common Linux-based operating systems, such as RHEL, CentOS, openSUSE, SLED, Ubuntu, Fedora, debian and derivatives. Join #AppImage on irc.freenode.net"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "repository": "dynobo/normcap",
 | 
					 | 
				
			||||||
            "name": "NormCap",
 | 
					 | 
				
			||||||
            "description": "OCR powered screen-capture tool to capture information instead of images",
 | 
					 | 
				
			||||||
            "group": "nondev",
 | 
					 | 
				
			||||||
            "file_name": "normcap",
 | 
					 | 
				
			||||||
            "exec": "yes",
 | 
					 | 
				
			||||||
            "last_update": "2023-12-12T22:23:37Z",
 | 
					 | 
				
			||||||
            "downloads": "/home/jaandrle/bin/normcap",
 | 
					 | 
				
			||||||
            "version": "v0.5.2"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "repository": "upscayl/upscayl",
 | 
					 | 
				
			||||||
            "name": "upscayl",
 | 
					 | 
				
			||||||
            "description": "🆙 Upscayl - Free and Open Source AI Image Upscaler for Linux, MacOS and Windows built with Linux-First philosophy.",
 | 
					 | 
				
			||||||
            "group": "nondev",
 | 
					 | 
				
			||||||
            "file_name": "upscayl",
 | 
					 | 
				
			||||||
            "exec": "yes",
 | 
					 | 
				
			||||||
            "last_update": "2024-01-16T09:54:25Z",
 | 
					 | 
				
			||||||
            "downloads": "/home/jaandrle/bin/upscayl",
 | 
					 | 
				
			||||||
            "version": "v2.9.8"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "repository": "RasmusLindroth/tut",
 | 
					 | 
				
			||||||
            "name": "tut",
 | 
					 | 
				
			||||||
            "description": "TUI for Mastodon with vim inspired keys",
 | 
					 | 
				
			||||||
            "group": "nondev",
 | 
					 | 
				
			||||||
            "file_name": "tut",
 | 
					 | 
				
			||||||
            "exec": "yes",
 | 
					 | 
				
			||||||
            "last_update": "2023-01-26T17:48:00Z",
 | 
					 | 
				
			||||||
            "downloads": "/home/jaandrle/bin/tut",
 | 
					 | 
				
			||||||
            "version": "2.0.1"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "repository": "sunner/ChatALL",
 | 
					 | 
				
			||||||
            "name": "ChatALL",
 | 
					 | 
				
			||||||
            "description": " Concurrently chat with ChatGPT, Bing Chat, bard, Alpaca, Vincuna, Claude, ChatGLM, MOSS, iFlytek Spark, ERNIE and more, discover the best answers",
 | 
					 | 
				
			||||||
            "group": "skip",
 | 
					 | 
				
			||||||
            "file_name": "chatall",
 | 
					 | 
				
			||||||
            "exec": "yes",
 | 
					 | 
				
			||||||
            "last_update": "2023-09-30T14:08:00Z",
 | 
					 | 
				
			||||||
            "downloads": "/home/jaandrle/bin/chatall",
 | 
					 | 
				
			||||||
            "version": "v1.50.73"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "repository": "jaandrle/bs",
 | 
					 | 
				
			||||||
            "name": "bs",
 | 
					 | 
				
			||||||
            "description": "The simplest possible build system using executables",
 | 
					 | 
				
			||||||
            "group": "dev",
 | 
					 | 
				
			||||||
            "file_name": "bs",
 | 
					 | 
				
			||||||
            "exec": "yes",
 | 
					 | 
				
			||||||
            "last_update": "2023-06-30T07:48:58Z",
 | 
					 | 
				
			||||||
            "downloads": "/home/jaandrle/bin/bs",
 | 
					 | 
				
			||||||
            "version": "v0.7.3"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "repository": "h3poteto/fedistar",
 | 
					 | 
				
			||||||
            "name": "Fedistar",
 | 
					 | 
				
			||||||
            "description": "Multi-column Mastodon, Pleroma, and Friendica client for desktop",
 | 
					 | 
				
			||||||
            "group": "nondev",
 | 
					 | 
				
			||||||
            "file_name": "fedistar",
 | 
					 | 
				
			||||||
            "exec": "yes",
 | 
					 | 
				
			||||||
            "last_update": "2024-01-29T10:29:58Z",
 | 
					 | 
				
			||||||
            "downloads": "/home/jaandrle/bin/fedistar",
 | 
					 | 
				
			||||||
            "version": "v1.8.3"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "repository": "ollama/ollama",
 | 
					 | 
				
			||||||
            "name": "ollama",
 | 
					 | 
				
			||||||
            "description": "Get up and running with Llama 2 and other large language models locally",
 | 
					 | 
				
			||||||
            "group": "ai",
 | 
					 | 
				
			||||||
            "file_name": "ollama",
 | 
					 | 
				
			||||||
            "exec": "yes",
 | 
					 | 
				
			||||||
            "last_update": "2024-01-26T18:19:36Z",
 | 
					 | 
				
			||||||
            "downloads": "/home/jaandrle/bin/ollama",
 | 
					 | 
				
			||||||
            "version": "v0.1.22"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "repository": "neovim/neovim",
 | 
					 | 
				
			||||||
            "name": "neovim",
 | 
					 | 
				
			||||||
            "tag_name_regex": "v.*",
 | 
					 | 
				
			||||||
            "description": "Vim-fork focused on extensibility and usability",
 | 
					 | 
				
			||||||
            "group": "dev-test",
 | 
					 | 
				
			||||||
            "file_name": "nvim",
 | 
					 | 
				
			||||||
            "exec": "yes",
 | 
					 | 
				
			||||||
            "downloads": "/home/jaandrle/bin/nvim",
 | 
					 | 
				
			||||||
            "version": "v0.9.5",
 | 
					 | 
				
			||||||
            "last_update": "2023-12-30T13:31:47Z"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "repository": "viarotel-org/escrcpy",
 | 
					 | 
				
			||||||
            "name": "Escrcpy",
 | 
					 | 
				
			||||||
            "description": "📱 Graphical Scrcpy to display and control Android, devices powered by Electron. | 使用图形化的 Scrcpy 显示和控制您的 Android 设备,由 Electron 驱动。",
 | 
					 | 
				
			||||||
            "group": "dev",
 | 
					 | 
				
			||||||
            "file_name": "escrcpy",
 | 
					 | 
				
			||||||
            "exec": "yes",
 | 
					 | 
				
			||||||
            "last_update": "2023-12-27T01:18:21Z",
 | 
					 | 
				
			||||||
            "downloads": "/home/jaandrle/bin/escrcpy",
 | 
					 | 
				
			||||||
            "version": "v1.16.8"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "repository": "drovp/drovp",
 | 
					 | 
				
			||||||
            "name": "drovp",
 | 
					 | 
				
			||||||
            "description": "Desktop app for encoding, converting, upscaling, and much more.",
 | 
					 | 
				
			||||||
            "group": "dev-test",
 | 
					 | 
				
			||||||
            "file_name": "drovp",
 | 
					 | 
				
			||||||
            "exec": "yes",
 | 
					 | 
				
			||||||
            "last_update": "2023-12-06T11:30:02Z",
 | 
					 | 
				
			||||||
            "downloads": "/home/jaandrle/bin/drovp",
 | 
					 | 
				
			||||||
            "version": "0.8.0"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "repository": "janhq/jan",
 | 
					 | 
				
			||||||
            "name": "Jan",
 | 
					 | 
				
			||||||
            "description": "Jan is an open source alternative to ChatGPT that runs 100% offline on your computer",
 | 
					 | 
				
			||||||
            "group": "ai",
 | 
					 | 
				
			||||||
            "file_name": "jan",
 | 
					 | 
				
			||||||
            "exec": "yes",
 | 
					 | 
				
			||||||
            "last_update": "2024-01-29T05:19:22Z",
 | 
					 | 
				
			||||||
            "downloads": "/home/jaandrle/bin/jan",
 | 
					 | 
				
			||||||
            "version": "v0.4.5"
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    ]
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,19 +0,0 @@
 | 
				
			|||||||
#!/usr/bin/env nodejsscript
 | 
					 | 
				
			||||||
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, fetch, cyclicLoop */
 | 
					 | 
				
			||||||
const url_api= "https://nocodb.jaandrle.cz/api/v1/db/data/v1/Linky/Linky";
 | 
					 | 
				
			||||||
$.api()
 | 
					 | 
				
			||||||
.command("add-md")
 | 
					 | 
				
			||||||
	.action(async function addMd(){
 | 
					 | 
				
			||||||
		const { clipboard }= $;
 | 
					 | 
				
			||||||
		const [ title, url ]= clipboard.split("](");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		const res= await fetch(url_api, {
 | 
					 | 
				
			||||||
			body: JSON.stringify({ Popis: title.slice(1), Url: url.slice(0, -1) }),
 | 
					 | 
				
			||||||
			headers: { "xc-token": "Js7Qu0oT_wTmGJDFKlIZEBhwk87WF0L1wLmQO01F",
 | 
					 | 
				
			||||||
				"accept": "application/json", "Content-Type": "application/json"
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			method: "post"
 | 
					 | 
				
			||||||
		}).then(res=>res.json());
 | 
					 | 
				
			||||||
		echo(res);
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
.parse();
 | 
					 | 
				
			||||||
@@ -1,9 +0,0 @@
 | 
				
			|||||||
#!/bin/bash
 | 
					 | 
				
			||||||
if [[ $(mount | grep OneDrive) ]]; then
 | 
					 | 
				
			||||||
    fusermount -uz ~/Vzdálené/OneDrive
 | 
					 | 
				
			||||||
    notify-send -i system-file-manager  "OneDrive disk ODPOJEN"
 | 
					 | 
				
			||||||
else
 | 
					 | 
				
			||||||
    rclone --vfs-cache-mode full mount "onedrive":  ~/Vzdálené/OneDrive &
 | 
					 | 
				
			||||||
    dolphin ~/Vzdálené/OneDrive/ &
 | 
					 | 
				
			||||||
    notify-send -i system-file-manager  "OneDrive disk PŘIPOJEN"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
@@ -1,71 +0,0 @@
 | 
				
			|||||||
#!/usr/bin/env nodejsscript
 | 
					 | 
				
			||||||
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, fetch, cyclicLoop */
 | 
					 | 
				
			||||||
const p_home= $.xdg.home`Applications/piper/`
 | 
					 | 
				
			||||||
const p_models= p_home+"models/"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
$.api("", true)
 | 
					 | 
				
			||||||
.version("2023-05-31")
 | 
					 | 
				
			||||||
.describe([
 | 
					 | 
				
			||||||
	"This is a wrapper around the piper CLI.",
 | 
					 | 
				
			||||||
	"It allows you to get the list of available models, or to simplify `piper` callings.",
 | 
					 | 
				
			||||||
	"",
 | 
					 | 
				
			||||||
	"Visit: https://github.com/rhasspy/piper",
 | 
					 | 
				
			||||||
	"Original help:",
 | 
					 | 
				
			||||||
	...s.$().run`${p_home}piper --help`.stderr.split("\n").filter(Boolean).map(l=> "\t"+l)
 | 
					 | 
				
			||||||
])
 | 
					 | 
				
			||||||
.option("--models", "prints available models")
 | 
					 | 
				
			||||||
.option("--model, -m", "chooses voice model by it's index or by text search (full name)")
 | 
					 | 
				
			||||||
.option("--input_file, -I", "path to input text file (defaults to stdin)")
 | 
					 | 
				
			||||||
	.action(function main({
 | 
					 | 
				
			||||||
		models: is_models,
 | 
					 | 
				
			||||||
		model= 0,
 | 
					 | 
				
			||||||
		input_file,
 | 
					 | 
				
			||||||
		_,
 | 
					 | 
				
			||||||
		...pass
 | 
					 | 
				
			||||||
	}){
 | 
					 | 
				
			||||||
		if(is_models){
 | 
					 | 
				
			||||||
			models()
 | 
					 | 
				
			||||||
				.forEach(l=> echo(l));
 | 
					 | 
				
			||||||
			echo(helpTextModels("…for more models"))
 | 
					 | 
				
			||||||
			$.exit(0);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		model= getModel(model);
 | 
					 | 
				
			||||||
		pass= Object.entries(pass)
 | 
					 | 
				
			||||||
			.map(([ name, value ])=> `${name.length > 1 ? "--" : "-"}${name} '${value}'`)
 | 
					 | 
				
			||||||
			.join(" ");
 | 
					 | 
				
			||||||
		const o= s.run(`echo ${text(input_file)} | ${p_home}piper --model ${model} ${pass}`);
 | 
					 | 
				
			||||||
		$.exit(o.code);
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
.parse();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function text(input_file){
 | 
					 | 
				
			||||||
	const candidate= input_file ? s.cat(input_file).stdout : $.stdin.text();
 | 
					 | 
				
			||||||
	if(typeof candidate!=="string")
 | 
					 | 
				
			||||||
		$.error("Missing input text file or piped text. Use `--help` for more information.");
 | 
					 | 
				
			||||||
	return "'"+candidate.trim().replaceAll("\n", "\t — \t").replaceAll("'", "\"")+"'";
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function getModel(identifier){
 | 
					 | 
				
			||||||
	const candidate= typeof identifier==="number" ?
 | 
					 | 
				
			||||||
		models()[identifier] :
 | 
					 | 
				
			||||||
		models().find(l=> l.includes(identifier));
 | 
					 | 
				
			||||||
	if(!candidate)
 | 
					 | 
				
			||||||
		$.error([
 | 
					 | 
				
			||||||
			`Model identifier '${identifier}' seems not to matching any existing model.`,
 | 
					 | 
				
			||||||
			"Try `--models` to see all available models."
 | 
					 | 
				
			||||||
		].join("\n"));
 | 
					 | 
				
			||||||
	return candidate.slice(candidate.indexOf(" ")+1);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function models(){
 | 
					 | 
				
			||||||
	const out= s.ls(`${p_models}*.onnx`)
 | 
					 | 
				
			||||||
		.map((l, n)=> `${n}: ${l}`);
 | 
					 | 
				
			||||||
	if(!out.length)
 | 
					 | 
				
			||||||
		$.error(helpTextModels("No available models."));
 | 
					 | 
				
			||||||
	return out;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function helpTextModels(...text_initial){
 | 
					 | 
				
			||||||
	return [
 | 
					 | 
				
			||||||
		...text_initial,
 | 
					 | 
				
			||||||
		"Visits https://github.com/rhasspy/piper",
 | 
					 | 
				
			||||||
		"and download/extract model(s) into "+p_models
 | 
					 | 
				
			||||||
	].join("\n");
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,10 +0,0 @@
 | 
				
			|||||||
[ ! -r ~/.config/pocketshaddrc ] && echo "\`~/.config/pocketshaddrc\` not found" && exit 1
 | 
					 | 
				
			||||||
. ~/.config/pocketshaddrc
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
curl -sS -X POST \
 | 
					 | 
				
			||||||
	-F "url=$1" \
 | 
					 | 
				
			||||||
	-F "title=$2" \
 | 
					 | 
				
			||||||
	-F "consumer_key=$CONSUMER_KEY" \
 | 
					 | 
				
			||||||
	-F "access_token=$ACCESS_TOKEN" \
 | 
					 | 
				
			||||||
	https://getpocket.com/v3/add \
 | 
					 | 
				
			||||||
	> /dev/null
 | 
					 | 
				
			||||||
@@ -1,80 +0,0 @@
 | 
				
			|||||||
#!/usr/bin/env nodejsscript
 | 
					 | 
				
			||||||
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, fetch, cyclicLoop */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
$.api("")
 | 
					 | 
				
			||||||
.version("2023-08-11")
 | 
					 | 
				
			||||||
.command("textInImage [file]", "Generovat obrázek s textem pro sdílení na sociálních sítích.")
 | 
					 | 
				
			||||||
	.alias("tii")
 | 
					 | 
				
			||||||
	.option("--pointsize", "Text size", "62")
 | 
					 | 
				
			||||||
	.option("--gravity", "`convert -list gravity`", "Center")
 | 
					 | 
				
			||||||
	.option("--text", "Text")
 | 
					 | 
				
			||||||
	.action(textInImage)
 | 
					 | 
				
			||||||
.command("textSplit <file>", "Rozdělit text dle zadaného limitu.")
 | 
					 | 
				
			||||||
	.alias("ts")
 | 
					 | 
				
			||||||
	.option("--limit", "Počet znaků kde text rozdělovat.", 500)
 | 
					 | 
				
			||||||
	.option("--counter", "Prepend counter, set no. of chars of counter.", 5)
 | 
					 | 
				
			||||||
	.option("--text", "Text")
 | 
					 | 
				
			||||||
	.action(textSplit)
 | 
					 | 
				
			||||||
.parse();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function textSplit(file, { limit, counter, text }){
 | 
					 | 
				
			||||||
	limit= parseInt(limit) - parseInt(counter);
 | 
					 | 
				
			||||||
	const words= getText(file, text).split(" ");
 | 
					 | 
				
			||||||
	let buffer= [], i= -1, chars= limit;
 | 
					 | 
				
			||||||
	for(const word of words){
 | 
					 | 
				
			||||||
		const { length }= word;
 | 
					 | 
				
			||||||
		if((chars+length) < limit){
 | 
					 | 
				
			||||||
			chars+= ( is_empty ? 0 : 1 ) + length;
 | 
					 | 
				
			||||||
			buffer[i].end= i;
 | 
					 | 
				
			||||||
			continue;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		chars= 0;
 | 
					 | 
				
			||||||
		i+= 1;
 | 
					 | 
				
			||||||
		buffer[i]= { start: i };
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	const { length }= buffer;
 | 
					 | 
				
			||||||
	echo(buffer.map(function({ start, end }, i){
 | 
					 | 
				
			||||||
		return (i+1)+"/"+length+" "+words.slice(start, end).join(" ");
 | 
					 | 
				
			||||||
	}).join("\n============\n"));
 | 
					 | 
				
			||||||
	$.exit(0);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function textInImage(file, { text, gravity, pointsize }){
 | 
					 | 
				
			||||||
	text= getText(file, text);
 | 
					 | 
				
			||||||
	const output= !file ? "textInImage.png" : (({ pathname: p })=> p.slice(1, p.lastIndexOf(".")+1)+"png")(new URL(file, "file://"));
 | 
					 | 
				
			||||||
	const round_corners= [ //https://9to5answer.com/rounding-corners-of-pictures-with-imagemagick
 | 
					 | 
				
			||||||
		"\\(",
 | 
					 | 
				
			||||||
			"+clone  -alpha extract",
 | 
					 | 
				
			||||||
			"-draw 'fill black polygon 0,0 0,15 15,0 fill white circle 15,15 15,0'",
 | 
					 | 
				
			||||||
			"\\( +clone -flip \\) -compose Multiply -composite",
 | 
					 | 
				
			||||||
			"\\( +clone -flop \\) -compose Multiply -composite",
 | 
					 | 
				
			||||||
		"\\) -alpha off -compose CopyOpacity -composite",
 | 
					 | 
				
			||||||
	].join(" ");
 | 
					 | 
				
			||||||
	s.run([
 | 
					 | 
				
			||||||
		"convert",
 | 
					 | 
				
			||||||
		"\\(",
 | 
					 | 
				
			||||||
			"-size ::size::",
 | 
					 | 
				
			||||||
			"-pointsize ::pointsize::",
 | 
					 | 
				
			||||||
			"-fill ::fill:: -background ::background::",
 | 
					 | 
				
			||||||
			"-gravity ::gravity::",
 | 
					 | 
				
			||||||
			"-family ::family:: -weight Bold",
 | 
					 | 
				
			||||||
			"-bordercolor ::background:: -border 5%",
 | 
					 | 
				
			||||||
			"caption:::text::",
 | 
					 | 
				
			||||||
		"\\)",
 | 
					 | 
				
			||||||
		round_corners,
 | 
					 | 
				
			||||||
		"::output::"
 | 
					 | 
				
			||||||
	].join(" "), {
 | 
					 | 
				
			||||||
		fill: "whitesmoke",
 | 
					 | 
				
			||||||
		background: "#2b2b2b",
 | 
					 | 
				
			||||||
		size: "1024x512",
 | 
					 | 
				
			||||||
		family: "Ubuntu Mono",
 | 
					 | 
				
			||||||
		output, text, gravity, pointsize
 | 
					 | 
				
			||||||
	});
 | 
					 | 
				
			||||||
	$.exit(0);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function getText(file, text){
 | 
					 | 
				
			||||||
	if(file && s.test("-f", file))
 | 
					 | 
				
			||||||
		return s.cat(file).toString();
 | 
					 | 
				
			||||||
	if(!text)
 | 
					 | 
				
			||||||
		return $.stdin.text().trim();
 | 
					 | 
				
			||||||
	return text;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,166 +0,0 @@
 | 
				
			|||||||
#!/usr/bin/env nodejsscript
 | 
					 | 
				
			||||||
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, fetch, cyclicLoop */
 | 
					 | 
				
			||||||
$.is_fatal= true;
 | 
					 | 
				
			||||||
const token_file= "~/.config/openai.token";
 | 
					 | 
				
			||||||
let token;
 | 
					 | 
				
			||||||
const gitmoji_list= {
 | 
					 | 
				
			||||||
		build: "building_construction",
 | 
					 | 
				
			||||||
		chore: "bricks",
 | 
					 | 
				
			||||||
		ci: "construction_worker",
 | 
					 | 
				
			||||||
		docs: "memo",
 | 
					 | 
				
			||||||
		feat: "sparkles",
 | 
					 | 
				
			||||||
		fix: "bug",
 | 
					 | 
				
			||||||
		perf: "zap",
 | 
					 | 
				
			||||||
		refactor: "recycle",
 | 
					 | 
				
			||||||
		revert: "rewind",
 | 
					 | 
				
			||||||
		style: "art",
 | 
					 | 
				
			||||||
		test: "white_check_mark"
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
const git3moji_list= {
 | 
					 | 
				
			||||||
		build: "tv",
 | 
					 | 
				
			||||||
		chore: "tv",
 | 
					 | 
				
			||||||
		ci: "tv",
 | 
					 | 
				
			||||||
		docs: "abc",
 | 
					 | 
				
			||||||
		feat: "zap",
 | 
					 | 
				
			||||||
		fix: "bug",
 | 
					 | 
				
			||||||
		perf: "zap",
 | 
					 | 
				
			||||||
		refactor: "cop",
 | 
					 | 
				
			||||||
		style: "zap",
 | 
					 | 
				
			||||||
		test: "cop"
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
const conventional_desc= [
 | 
					 | 
				
			||||||
		"Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)",
 | 
					 | 
				
			||||||
		"Other changes that don't modify src or test files",
 | 
					 | 
				
			||||||
		"Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)",
 | 
					 | 
				
			||||||
		"Documentation only changes",
 | 
					 | 
				
			||||||
		"A new feature",
 | 
					 | 
				
			||||||
		"A bug Fix",
 | 
					 | 
				
			||||||
		"A code change that improves performance",
 | 
					 | 
				
			||||||
		"A code change that neither fixes a bug nor adds a feature",
 | 
					 | 
				
			||||||
		"Reverts a previous commit",
 | 
					 | 
				
			||||||
		"Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)",
 | 
					 | 
				
			||||||
		"Adding missing tests or correcting existing tests"
 | 
					 | 
				
			||||||
];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
$.api("", true)
 | 
					 | 
				
			||||||
	.version("2024-02-28")
 | 
					 | 
				
			||||||
	.describe([
 | 
					 | 
				
			||||||
		"Utility to use ChatGPT to generate a commit message from COMMIT_EDITMSG file.",
 | 
					 | 
				
			||||||
		`Don't forget to set the token in ${token_file} file.`,
 | 
					 | 
				
			||||||
		"",
 | 
					 | 
				
			||||||
		"Conventional/gitmoji commits should follow https://www.conventionalcommits.org/en/v1.0.0/ (https://github.com/pvdlg/conventional-commit-types).",
 | 
					 | 
				
			||||||
		"For the gitmoji the <type> uses emojis as follows:",
 | 
					 | 
				
			||||||
		...Object.entries(gitmoji_list).map(( v, i )=> echo.format("%c"+v[0]+` (${v[1]}): ${conventional_desc[i]}`, "display: list-item")),
 | 
					 | 
				
			||||||
		...Object.entries(git3moji_list).map(( v, i )=> echo.format("%c"+v[0]+` (${v[1]}): ${conventional_desc[i]}`, "display: list-item"))
 | 
					 | 
				
			||||||
	])
 | 
					 | 
				
			||||||
	.option("--format, -f", [ "Use one of the following formats to generate the commit message: [regular (default), conventional, gitmoji, git3moji]",
 | 
					 | 
				
			||||||
		"For gitmoji see: https://gitmoji.dev/"
 | 
					 | 
				
			||||||
		])
 | 
					 | 
				
			||||||
	.action(async function({ format= "regular" }= {}){
 | 
					 | 
				
			||||||
		const question= questionChatGPT(format);
 | 
					 | 
				
			||||||
		const response= (await pipe(
 | 
					 | 
				
			||||||
			()=> s.cat("./.git/COMMIT_EDITMSG"),
 | 
					 | 
				
			||||||
			s=> s.slice(s.indexOf("diff --git")),
 | 
					 | 
				
			||||||
			diffToChunks(3900-545), //the worst scenario of ★ +new lines
 | 
					 | 
				
			||||||
			ch=> ch.map(pipe( question, requestCommitMessage )),
 | 
					 | 
				
			||||||
			ch=> Promise.all(ch)
 | 
					 | 
				
			||||||
		)())
 | 
					 | 
				
			||||||
			.map(pipe(
 | 
					 | 
				
			||||||
				j=> j.choices[0].text.trim(),
 | 
					 | 
				
			||||||
				convertToArray,
 | 
					 | 
				
			||||||
				j=> (console.log(j), j),
 | 
					 | 
				
			||||||
				format==="regular" ? i=> i : i=> gitmoji(i, format==="git3moji"),
 | 
					 | 
				
			||||||
				a=> a.join("\n")
 | 
					 | 
				
			||||||
			))
 | 
					 | 
				
			||||||
			.join("\n\n");
 | 
					 | 
				
			||||||
		echo(response);
 | 
					 | 
				
			||||||
		$.exit(0);
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	.parse();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function diffToChunks(max_tokens){ return function(input){
 | 
					 | 
				
			||||||
	if(input.length < max_tokens)
 | 
					 | 
				
			||||||
		return [ input ];
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	return input.split(/(?=diff --git)/g)
 | 
					 | 
				
			||||||
		.flatMap(function(input){
 | 
					 | 
				
			||||||
			if(input.length < max_tokens)
 | 
					 | 
				
			||||||
				return [ input ];
 | 
					 | 
				
			||||||
			
 | 
					 | 
				
			||||||
			const [ file, ...diffs ]= input.split(/\n(?=@@)/g);
 | 
					 | 
				
			||||||
			if(file.includes("new file"))
 | 
					 | 
				
			||||||
				return [ file ];
 | 
					 | 
				
			||||||
			return diffs
 | 
					 | 
				
			||||||
				.filter(chunk=> chunk.length < max_tokens)
 | 
					 | 
				
			||||||
				.reduce(function(chunks, chunk){
 | 
					 | 
				
			||||||
					const i= chunks.length-1;
 | 
					 | 
				
			||||||
					if(chunks[i].length + chunk.length < max_tokens-1)
 | 
					 | 
				
			||||||
						chunks[i]+= "\n"+chunk;
 | 
					 | 
				
			||||||
					else
 | 
					 | 
				
			||||||
						chunks.push(file+"\n"+chunk);
 | 
					 | 
				
			||||||
					return chunks;
 | 
					 | 
				
			||||||
				}, [ file ])
 | 
					 | 
				
			||||||
				.filter(chunk=> chunk.length < max_tokens);
 | 
					 | 
				
			||||||
		});
 | 
					 | 
				
			||||||
}; }
 | 
					 | 
				
			||||||
function convertToArray(text){
 | 
					 | 
				
			||||||
	// console.log(text);
 | 
					 | 
				
			||||||
	return text.split("\n")
 | 
					 | 
				
			||||||
		.map(line=> line.trim())
 | 
					 | 
				
			||||||
		.filter(line=> line.trim())
 | 
					 | 
				
			||||||
		.map(function(line){
 | 
					 | 
				
			||||||
			if(/^[0-9-].? /.test(line)) line= line.slice(line.indexOf(" ")+1);
 | 
					 | 
				
			||||||
			if(/^["']/.test(line[0])) line= line.slice(1);
 | 
					 | 
				
			||||||
			if(/["']$/.test(line[line.length-1])) line= line.slice(0, -1);
 | 
					 | 
				
			||||||
			return line;
 | 
					 | 
				
			||||||
		})
 | 
					 | 
				
			||||||
	;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function questionChatGPT(format){ return function(diff){
 | 
					 | 
				
			||||||
	const msg= [
 | 
					 | 
				
			||||||
		[
 | 
					 | 
				
			||||||
			"I would like to ask you to act like a git commit message writer.",
 | 
					 | 
				
			||||||
			"I will enter a git diff, and your job is to convert it into a useful commit message",
 | 
					 | 
				
			||||||
			"Make 3 options, one option per line.",
 | 
					 | 
				
			||||||
			"Do not preface the commit with anything, use a concise, precise, present-tense, complete sentence.",
 | 
					 | 
				
			||||||
			"The length should be fewer than 50 characters if possible.",
 | 
					 | 
				
			||||||
		].join(" ") //340chars★
 | 
					 | 
				
			||||||
	];
 | 
					 | 
				
			||||||
	if(format!=="regular")
 | 
					 | 
				
			||||||
		msg.push(
 | 
					 | 
				
			||||||
			[
 | 
					 | 
				
			||||||
				"It should follow the conventional commits.",
 | 
					 | 
				
			||||||
				"The format is <type in lowercase>: <description>.",
 | 
					 | 
				
			||||||
				"A type can be one of the following: build, chore, ci, docs, feat, fix, perf, refactor, revert, style, or test.",
 | 
					 | 
				
			||||||
			].join(" ") //203chars★
 | 
					 | 
				
			||||||
		);
 | 
					 | 
				
			||||||
	msg.push("", diff);
 | 
					 | 
				
			||||||
	return msg.join("\n");
 | 
					 | 
				
			||||||
}; }
 | 
					 | 
				
			||||||
function gitmoji(candidates, is_three= false){
 | 
					 | 
				
			||||||
	return candidates.map(message=> message.trim().replace(/^[^:]*:/, toGitmoji));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	function toGitmoji(name){
 | 
					 | 
				
			||||||
		const candidate= ( is_three ? git3moji_list : gitmoji_list )[name.slice(0, -1)];
 | 
					 | 
				
			||||||
		return !candidate ? name : `:${candidate}:`;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function requestCommitMessage(prompt){
 | 
					 | 
				
			||||||
	if(!token) token= s.cat(token_file).stdout.trim();
 | 
					 | 
				
			||||||
	const model= "gpt-3.5-turbo-instruct";
 | 
					 | 
				
			||||||
	return fetch(`https://api.openai.com/v1/engines/${model}/completions`, {
 | 
					 | 
				
			||||||
		method: "POST",
 | 
					 | 
				
			||||||
		headers: {
 | 
					 | 
				
			||||||
			"Content-Type": "application/json",
 | 
					 | 
				
			||||||
			"Authorization": "Bearer "+token
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		body: JSON.stringify({
 | 
					 | 
				
			||||||
			max_tokens: 1000,
 | 
					 | 
				
			||||||
			temperature: 0.1,
 | 
					 | 
				
			||||||
			prompt
 | 
					 | 
				
			||||||
		}),
 | 
					 | 
				
			||||||
		signal: AbortSignal.timeout(10000)
 | 
					 | 
				
			||||||
	}).then(r=> r.json());
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
// vim: set tabstop=4 shiftwidth=4 textwidth=250 noexpandtab :
 | 
					 | 
				
			||||||
// vim>60: set foldmethod=indent foldlevel=1 foldnestmax=2:
 | 
					 | 
				
			||||||
							
								
								
									
										26
									
								
								bin/§awk
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								bin/§awk
									
									
									
									
									
								
							@@ -1,26 +0,0 @@
 | 
				
			|||||||
#!/bin/bash
 | 
					 | 
				
			||||||
this="${0##*/}"
 | 
					 | 
				
			||||||
USAGE="\
 | 
					 | 
				
			||||||
usage:  $this [<awk_args>] <field_no>
 | 
					 | 
				
			||||||
    Ex: getent passwd | grep andy | $this -F: 5
 | 
					 | 
				
			||||||
    Ex: echo \"A B\" | $this 2
 | 
					 | 
				
			||||||
"
 | 
					 | 
				
			||||||
err(){ echo -e "$USAGE" >&2; exit 1; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[ $# -eq 0 ]] && err
 | 
					 | 
				
			||||||
# bail if the *last* argument isn't a number (source:
 | 
					 | 
				
			||||||
# http://stackoverflow.com/a/808740)
 | 
					 | 
				
			||||||
last=${@:(-1)}
 | 
					 | 
				
			||||||
if ! [ $last -eq $last ] &>/dev/null; then
 | 
					 | 
				
			||||||
    echo "_awk! Last argument (awk field) must be numeric." >&2
 | 
					 | 
				
			||||||
    err
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [ $# -gt 1 ]; then
 | 
					 | 
				
			||||||
    # Source:
 | 
					 | 
				
			||||||
    # http://www.cyberciti.biz/faq/linux-unix-bsd-apple-osx-bash-get-last-argument/
 | 
					 | 
				
			||||||
    rest=${@:1:$(( $# - 1 ))}
 | 
					 | 
				
			||||||
else
 | 
					 | 
				
			||||||
    rest='' # just to be sure
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
awk $rest "{ print  \$$last }"
 | 
					 | 
				
			||||||
							
								
								
									
										34
									
								
								bin/§battery
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								bin/§battery
									
									
									
									
									
								
							@@ -1,34 +0,0 @@
 | 
				
			|||||||
#!/bin/bash
 | 
					 | 
				
			||||||
version="2022-01-25"
 | 
					 | 
				
			||||||
this="${0##*/}"
 | 
					 | 
				
			||||||
USAGE="\
 | 
					 | 
				
			||||||
    $this@v$version
 | 
					 | 
				
			||||||
    Wrapper around 'upower' to show battery info(s).
 | 
					 | 
				
			||||||
    Usage:  $this --[help|all|oneline|notify]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    'oneline' [Default] prints 'status | time | percentage'
 | 
					 | 
				
			||||||
     'notify' sends 'oneline' to 'notify-send'
 | 
					 | 
				
			||||||
        'all' prints 'upower -i'
 | 
					 | 
				
			||||||
       'help' prints this text
 | 
					 | 
				
			||||||
"
 | 
					 | 
				
			||||||
arg=${1:---oneline}
 | 
					 | 
				
			||||||
if [[ "$arg" = "--help" ]]; then
 | 
					 | 
				
			||||||
    echo -e "$USAGE"
 | 
					 | 
				
			||||||
    exit 0
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
batt_name=`upower -e | grep 'BAT'`
 | 
					 | 
				
			||||||
batt_info=`upower -i $batt_name`
 | 
					 | 
				
			||||||
if [[ "$arg" = "--all" ]]; then
 | 
					 | 
				
			||||||
    echo -e "$batt_info"
 | 
					 | 
				
			||||||
    exit 0
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
batt_oneline=`echo "$batt_info" | grep -E "state|percentage|to\ full|to\ empty" | §awk -F: 2 | sed 's/^ *//g' | tr -s '\n' '|' | sed 's/|$/\n/' | sed 's/|/ | /g'`
 | 
					 | 
				
			||||||
if [[ "$arg" = "--oneline" ]]; then
 | 
					 | 
				
			||||||
    echo -e "$batt_oneline"
 | 
					 | 
				
			||||||
    exit 0
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
icon=`echo "$batt_info" | grep "icon-name" | §awk -F\' 2`
 | 
					 | 
				
			||||||
notify-send --icon=$icon "Battery" "$batt_oneline"
 | 
					 | 
				
			||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
#!/bin/bash
 | 
					 | 
				
			||||||
function _echo(){
 | 
					 | 
				
			||||||
    [ -t 0 ] && echo "$1" && exit
 | 
					 | 
				
			||||||
    notify-send -i kcalc "$1" && exit
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
_echo `python3 -c 'import sys; print(eval(" ".join(sys.argv[1:])))' "$*"`
 | 
					 | 
				
			||||||
@@ -1,60 +0,0 @@
 | 
				
			|||||||
#!/usr/bin/env nodejsscript
 | 
					 | 
				
			||||||
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, style, fetch, cyclicLoop */
 | 
					 | 
				
			||||||
import { join as pathJoin } from "path";
 | 
					 | 
				
			||||||
import { platform } from "process";
 | 
					 | 
				
			||||||
const config_path= $.xdg.data`package_global.json`;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
$.is_fatal= true;
 | 
					 | 
				
			||||||
$.api("[name]", true)
 | 
					 | 
				
			||||||
.version("2022-10-06")
 | 
					 | 
				
			||||||
.describe([
 | 
					 | 
				
			||||||
	"Release cordova app with saved data in: "+config_path+".",
 | 
					 | 
				
			||||||
	"This should be JSON file with `cordova_keys_store` key/object:",
 | 
					 | 
				
			||||||
	`{"cordova_keys_store": { "NAME": { "path": "", "password": "", "alias": "" } }}`,
 | 
					 | 
				
			||||||
	"You can lists all saved options (NAME), when you run without arguments." ])
 | 
					 | 
				
			||||||
.option("--noclear", "Skipping cleaning existing apk files.")
 | 
					 | 
				
			||||||
.action(function main(name, { noclear }){
 | 
					 | 
				
			||||||
	if(!name){
 | 
					 | 
				
			||||||
		echo("Available options:");
 | 
					 | 
				
			||||||
		pipe(getConfig, Object.keys, a=> "- "+a.join("\n- "), echo)();
 | 
					 | 
				
			||||||
		$.exit(0);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	const /* runtime arguments and cwd */
 | 
					 | 
				
			||||||
		{ path, password, alias }= getConfigFor(name),
 | 
					 | 
				
			||||||
		cwd= process.cwd(),
 | 
					 | 
				
			||||||
		platform_android= toDirPath( cwd, "platforms", "android" ),
 | 
					 | 
				
			||||||
		platform_build= !s.test("-e", toDirPath(platform_android, "app")) ? toDirPath(platform_android, "build") : toDirPath(platform_android, "app", "build"),
 | 
					 | 
				
			||||||
		apk_dir= toDirPath(platform_build, "outputs", "apk"),
 | 
					 | 
				
			||||||
		key_path= pathJoin(cwd, "keystore.jks"),
 | 
					 | 
				
			||||||
		process_clear= !noclear && !s.test("-e", toDirPath(platform_android, "app"));
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	$.configAssign({ verbose: true, fatal: true });
 | 
					 | 
				
			||||||
	if(process_clear) s.rm("-Rf", apk_dir+"*");
 | 
					 | 
				
			||||||
	s.cp(path, key_path);
 | 
					 | 
				
			||||||
	s.run("cordova" + ( platform==="win32" ? ".cmd" : "" ) + " ::args::",
 | 
					 | 
				
			||||||
		{ args: [ "build", "--release", "android", "--",'--keystore=keystore.jks', "--storePassword="+password, "--password="+password, "--alias="+alias ] });
 | 
					 | 
				
			||||||
	s.rm(key_path);// cordova si to uklada a uz potom bez nej nelze buildit vubec
 | 
					 | 
				
			||||||
	s.rm(platform_android+"release-signing.properties");
 | 
					 | 
				
			||||||
	$.exit(0);
 | 
					 | 
				
			||||||
})
 | 
					 | 
				
			||||||
.parse(process.argv);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function toDirPath(...path){ return pathJoin(...path)+"/"; }
 | 
					 | 
				
			||||||
function getConfigFor(name){
 | 
					 | 
				
			||||||
	const config= getConfig();
 | 
					 | 
				
			||||||
	if(Object.hasOwn(config, name))
 | 
					 | 
				
			||||||
		return config[name];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	$.error(`Name '${name}' not found, use one of: `+Object.keys(config));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function getConfig(){
 | 
					 | 
				
			||||||
	if(!s.test("-f", config_path))
 | 
					 | 
				
			||||||
		$.error("No config file found! Tested file path: "+config_path);
 | 
					 | 
				
			||||||
	try{
 | 
					 | 
				
			||||||
		const config= s.cat(config_path).xargs(JSON.parse).cordova_keys_store;
 | 
					 | 
				
			||||||
		if(!Object.keys(config).length) throw new Error();
 | 
					 | 
				
			||||||
		return config;
 | 
					 | 
				
			||||||
	} catch(e){
 | 
					 | 
				
			||||||
		$.error("Unsupported config file: "+config_path+"! Use `--help` for more information.");
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,94 +0,0 @@
 | 
				
			|||||||
#!/usr/bin/env nodejsscript
 | 
					 | 
				
			||||||
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, style, fetch, cyclicLoop, xdg, $ */
 | 
					 | 
				
			||||||
import { basename } from "path";
 | 
					 | 
				
			||||||
const app= {
 | 
					 | 
				
			||||||
	name: basename(process.argv[1]),
 | 
					 | 
				
			||||||
	version: "2022-09-28",
 | 
					 | 
				
			||||||
	cmd: $.xdg.home`.local/bin/himalaya`,
 | 
					 | 
				
			||||||
	configs: $.xdg.config`himalaya/`,
 | 
					 | 
				
			||||||
	modificator: "§"
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
const chars= { "&AOE-": "á", "&AWE-": "š", "&ARs-": "ě" };
 | 
					 | 
				
			||||||
let argv_arr= argvArr();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if("help"===argv_arr.toString().replaceAll("-", "")){ //#region
 | 
					 | 
				
			||||||
	echo([	`${app.name}@${app.version}`,
 | 
					 | 
				
			||||||
			`This is small wrapper around 'himalaya' fixing coding errors and provide better 'read'. (Use § for calling himalaya directly)`,
 | 
					 | 
				
			||||||
			"" ].join("\n"));
 | 
					 | 
				
			||||||
	s.run(app.cmd+" --help");
 | 
					 | 
				
			||||||
	$.exit(0); //#endregion
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
if("version"===argv_arr.toString().replaceAll("-", "")){//#region
 | 
					 | 
				
			||||||
	echo(`${app.name} ${app.version}`);
 | 
					 | 
				
			||||||
	s.run(app.cmd+" --version");
 | 
					 | 
				
			||||||
	$.exit(0);//#endregion
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
if("completion,bash"===argv_arr.toString()){//#region
 | 
					 | 
				
			||||||
	const completion= s.run(app.cmd+" ::argv_arr::", { argv_arr });
 | 
					 | 
				
			||||||
	echo(completion.toString().replace("himalaya)", `himalaya|${app.name})`));
 | 
					 | 
				
			||||||
	echo(`alias ${app.name}-inbox="§mail § | less -R -S"`);
 | 
					 | 
				
			||||||
	echo(`complete -F _himalaya -o bashdefault -o default ${app.name}`);
 | 
					 | 
				
			||||||
	$.exit(0);//#endregion
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
(async function main(){
 | 
					 | 
				
			||||||
	if(argv_arr.indexOf(app.modificator)!==-1) await runH(argv_arr.filter(l=> l!==app.modificator));
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	argv_arr= argv_arr.filter(str=> str!==app.modificator);
 | 
					 | 
				
			||||||
	if(argv_arr.indexOf("list")!==-1){
 | 
					 | 
				
			||||||
		argv_arr.push("-w", process.stdout.columns);
 | 
					 | 
				
			||||||
		await runH(argv_arr);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if(argv_arr.indexOf("read")!==-1){
 | 
					 | 
				
			||||||
		const email= $.xdg.temp`/himalaya-read.eml`;
 | 
					 | 
				
			||||||
		argv_arr.push("-h", "From", "-h", "Subject");
 | 
					 | 
				
			||||||
		await s.$().runA(app.cmd+" ::argv_arr::", { argv_arr }).pipe(s=> s.to(email));
 | 
					 | 
				
			||||||
		await s.runA`vim ${email}`.pipe(process.stdout);
 | 
					 | 
				
			||||||
		$.exit(0);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	if(argv_arr[0] && argv_arr[0]!=="--rofi") await runH(argv_arr);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	const template_path= app.configs+"template-inbox.json";
 | 
					 | 
				
			||||||
	if(!s.test("-f", template_path)) await runH([]);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	const out= await pipe(
 | 
					 | 
				
			||||||
		f=> s.cat(f).xargs(JSON.parse),
 | 
					 | 
				
			||||||
		argv_arr.indexOf('--rofi')===-1 ? templateRead : templateRofi,
 | 
					 | 
				
			||||||
		a=> Promise.all(a)
 | 
					 | 
				
			||||||
	)(template_path);
 | 
					 | 
				
			||||||
	for(const l of out){
 | 
					 | 
				
			||||||
		if(typeof l=="string"&&!l.indexOf("%c===\n")) echo(l, "unset:all", "color:magenta");
 | 
					 | 
				
			||||||
		else echo(l);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	$.exit(0);
 | 
					 | 
				
			||||||
})();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function templateRofi(lines){
 | 
					 | 
				
			||||||
	return lines.filter(line=> line.type!=="text")
 | 
					 | 
				
			||||||
	.map(line=>
 | 
					 | 
				
			||||||
		s.$().runA(app.cmd+" ::value:: -w 120", line)
 | 
					 | 
				
			||||||
		.then(data=> data.toString().split("\n")
 | 
					 | 
				
			||||||
			.filter(l=> l)
 | 
					 | 
				
			||||||
			.map(line=> line.replaceAll("✷ ", "* "))
 | 
					 | 
				
			||||||
			.map(line_result=> line_result+" │ "+line.label)
 | 
					 | 
				
			||||||
			.join("\n"))
 | 
					 | 
				
			||||||
	);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function templateRead(lines){
 | 
					 | 
				
			||||||
	argv_arr.push("-w", process.stdout.columns);
 | 
					 | 
				
			||||||
	return lines.map(line=> line.type==="text" ?
 | 
					 | 
				
			||||||
		Promise.resolve("%c===\n%c"+line.value) :
 | 
					 | 
				
			||||||
		s.$().runA(app.cmd+" ::value:: ::argv_arr::", { value: line.value, argv_arr })
 | 
					 | 
				
			||||||
	);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function argvArr(){
 | 
					 | 
				
			||||||
	const _chars= Object.entries(chars).reduce((acc, [ key, val ])=> Reflect.set(acc, val, key) && acc, {});
 | 
					 | 
				
			||||||
	return process.argv.slice(2).map(str=> str.replace(new RegExp(`(${Object.keys(_chars).join("|")})`, "g"), l=> _chars[l]));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
async function runH(args){
 | 
					 | 
				
			||||||
	const result= await s.runA(app.cmd+" ::args::", { args }).pipe(process.stdout);
 | 
					 | 
				
			||||||
	$.exit(result.exitCode);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
// vim: set tabstop=4 shiftwidth=4 textwidth=250 noexpandtab ft=javascript :
 | 
					 | 
				
			||||||
// vim>60: set foldmethod=marker foldmarker=#region,#endregion :
 | 
					 | 
				
			||||||
@@ -1,71 +0,0 @@
 | 
				
			|||||||
#!/bin/bash
 | 
					 | 
				
			||||||
this="${0##*/}"
 | 
					 | 
				
			||||||
this_version="2021-12-01"
 | 
					 | 
				
			||||||
err() { printf >&2 "Error: $*\n"; exit 1; }
 | 
					 | 
				
			||||||
log() { printf ":: $* ::\n"; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [ ! -t 0 ]; then
 | 
					 | 
				
			||||||
    exo-open --launch TerminalEmulator -- -e "$this $*"
 | 
					 | 
				
			||||||
    exit
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
action="${1:---help}"
 | 
					 | 
				
			||||||
if [[ "$action" = "--help" ]]; then
 | 
					 | 
				
			||||||
    while read; do printf '%s\n' "$REPLY"
 | 
					 | 
				
			||||||
    done <<-EOF
 | 
					 | 
				
			||||||
$this ($this_version) <andrle.jan@centrum.cz>
 | 
					 | 
				
			||||||
Utility for updating my packages managers such as \`npm\`, \`apt\`, \`github-releases\` …
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Usage: $this --[help|check|update] [basic|dangerous]
 | 
					 | 
				
			||||||
  [default] --help: show this text
 | 
					 | 
				
			||||||
           --check: check updates
 | 
					 | 
				
			||||||
          --update: update all
 | 
					 | 
				
			||||||
            --list: list of packages managers
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  modificators:
 | 
					 | 
				
			||||||
  [default]    basic: checks/updates regular packages managers
 | 
					 | 
				
			||||||
           dangerous: ↘+also \`pip\`
 | 
					 | 
				
			||||||
EOF
 | 
					 | 
				
			||||||
    exit 0
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [[ "$action" = "--list" ]]; then
 | 
					 | 
				
			||||||
    echo npm
 | 
					 | 
				
			||||||
    echo github-releases.js
 | 
					 | 
				
			||||||
    echo _vim_plugins – updates only
 | 
					 | 
				
			||||||
    echo snap – updates only
 | 
					 | 
				
			||||||
    echo flatpak – updates only
 | 
					 | 
				
			||||||
    echo pip [dangerous]
 | 
					 | 
				
			||||||
    exit 0
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
modificator="${2:-basic}"
 | 
					 | 
				
			||||||
if [[ "$action" = "--check" ]]; then
 | 
					 | 
				
			||||||
    log "npm outdated --global (for update use: \`npm update --global\`)"
 | 
					 | 
				
			||||||
    npm outdated --global
 | 
					 | 
				
			||||||
    [[ "${?}" = "0" ]] && echo "> all up-to.date"
 | 
					 | 
				
			||||||
    log "github-releases.js --check (for update use for example: \`github-releases.js --update all\`)"
 | 
					 | 
				
			||||||
    github-releases.js --check
 | 
					 | 
				
			||||||
    if [[ ! "$modificator" = "basic" ]]; then
 | 
					 | 
				
			||||||
        log "pip list --outdated"
 | 
					 | 
				
			||||||
        pip list --outdated
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    exit 0
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
if [[ "$action" = "--update" ]]; then
 | 
					 | 
				
			||||||
    log "npm update --global"
 | 
					 | 
				
			||||||
    npm update --global
 | 
					 | 
				
			||||||
    log "github-releases.js --update all"
 | 
					 | 
				
			||||||
    github-releases.js --update all
 | 
					 | 
				
			||||||
    log "_vim_plugins --update"
 | 
					 | 
				
			||||||
    _vim_plugins --update
 | 
					 | 
				
			||||||
    log "snap refresh --list"
 | 
					 | 
				
			||||||
    snap refresh --list
 | 
					 | 
				
			||||||
    log "flatpak update"
 | 
					 | 
				
			||||||
    flatpak update
 | 
					 | 
				
			||||||
    if [[ ! "$modificator" = "basic" ]]; then
 | 
					 | 
				
			||||||
        log "pip list --outdated --format=freeze | grep -v '^\\-e' | cut -d = -f 1  | xargs -n1 pip install -U --user"
 | 
					 | 
				
			||||||
        pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1  | xargs -n1 pip install -U --user
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    exit 0
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
err "Wrong arguments (use \`--help\`)"
 | 
					 | 
				
			||||||
@@ -1,22 +0,0 @@
 | 
				
			|||||||
#!/usr/bin/env nodejsscript
 | 
					 | 
				
			||||||
/* jshint esversion: 8,-W097, -W040, node: true, expr: true, undef: true *//* global echo, $, pipe, s, style, fetch, cyclicLoop */
 | 
					 | 
				
			||||||
$.is_fatal= true;
 | 
					 | 
				
			||||||
$.api("<lang>")
 | 
					 | 
				
			||||||
.version("2022-09-23")
 | 
					 | 
				
			||||||
.describe("This is just wrapper around 'trans' cli utility.")
 | 
					 | 
				
			||||||
.option("-b", "Turn off '-b' parametrer for 'trans' which is give by this script.")
 | 
					 | 
				
			||||||
.option("-c", "Redirect into clipboard ('| xclip -selection clipboard')")
 | 
					 | 
				
			||||||
.example("2en pes → 'trans cs:en -b pes'")
 | 
					 | 
				
			||||||
.example("en -b dog → 'trans en:cs dog'")
 | 
					 | 
				
			||||||
.action(function main(lang, { _: query, c: to_clipboard, b: to_long }){
 | 
					 | 
				
			||||||
	query= [ `"${query.join(" ").replaceAll('"', '\\"')}"` ];
 | 
					 | 
				
			||||||
	if(!to_long) query.unshift('-b');
 | 
					 | 
				
			||||||
	query.unshift(lang[0]==="2" ? lang.replace("2", "cs:") : ( lang.indexOf(":")!==-1 ? lang : lang+":cs" ));
 | 
					 | 
				
			||||||
	query.push('-no-ansi');
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	const result= s.$().run("trans "+query.join(" "));
 | 
					 | 
				
			||||||
	if(!to_clipboard) return echo(result.toString()); 
 | 
					 | 
				
			||||||
	result.runA("xclip -selection clipboard 2> /dev/null 1> /dev/null")
 | 
					 | 
				
			||||||
	.then($.exit.bind(null, 0)).catch($.exit.bind(null, 1));
 | 
					 | 
				
			||||||
})
 | 
					 | 
				
			||||||
.parse(process.argv);
 | 
					 | 
				
			||||||
@@ -1,58 +0,0 @@
 | 
				
			|||||||
#!/bin/bash
 | 
					 | 
				
			||||||
this="${0##*/}"
 | 
					 | 
				
			||||||
this_version="2021-01-22"
 | 
					 | 
				
			||||||
USAGE="\
 | 
					 | 
				
			||||||
	$this@v$this_version
 | 
					 | 
				
			||||||
	Wrapper around '/etc/os-release' to show Ubuntu (like) os info.
 | 
					 | 
				
			||||||
	Usage:	$this --[help|all|raw]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		'all' [default] prints all infos
 | 
					 | 
				
			||||||
		'pick' prints only given key (default key is 'DESCRIPTION')
 | 
					 | 
				
			||||||
		'raw' cats '/etc/os-release'
 | 
					 | 
				
			||||||
	   'help' prints this text
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Examples:
 | 
					 | 
				
			||||||
		$this --all
 | 
					 | 
				
			||||||
		$this --pick NAME
 | 
					 | 
				
			||||||
		$this --pick VERSION_NAME
 | 
					 | 
				
			||||||
		$this --all | grep NAME
 | 
					 | 
				
			||||||
"
 | 
					 | 
				
			||||||
arg=${1:---all}
 | 
					 | 
				
			||||||
if [[ "$arg" = "--help" ]]; then
 | 
					 | 
				
			||||||
	echo -e "$USAGE"
 | 
					 | 
				
			||||||
	exit 0
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
if [[ "$arg" = "--raw" ]]; then
 | 
					 | 
				
			||||||
	cat /etc/os-release
 | 
					 | 
				
			||||||
	exit 0
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
. /etc/os-release
 | 
					 | 
				
			||||||
out="ID=$ID"
 | 
					 | 
				
			||||||
out="${out}\nDESCRIPTION=$PRETTY_NAME"
 | 
					 | 
				
			||||||
case "$ID" in
 | 
					 | 
				
			||||||
	  neon) out="${out}\nNAME=$NAME (${VARIANT:-User Edition})"
 | 
					 | 
				
			||||||
			out="${out}\nVERSION=$VERSION ($VERSION_ID)"
 | 
					 | 
				
			||||||
			;;
 | 
					 | 
				
			||||||
		 *) out="${out}\nNAME=$NAME"
 | 
					 | 
				
			||||||
			out="${out}\nVERSION=$VERSION"
 | 
					 | 
				
			||||||
			;;
 | 
					 | 
				
			||||||
esac
 | 
					 | 
				
			||||||
out="${out}\nVERSION_NICK=$UBUNTU_CODENAME"
 | 
					 | 
				
			||||||
codename=`grep $(lsb_release -rs) /usr/share/python-apt/templates/Ubuntu.info | grep -m 1 "Description: Ubuntu " | cut -d "'" -f2`
 | 
					 | 
				
			||||||
out="${out}\nVERSION_NAME=$codename"
 | 
					 | 
				
			||||||
# http://www.releases.ubuntu.com/jammy/
 | 
					 | 
				
			||||||
out="${out}\nLIKE=$ID_LIKE"
 | 
					 | 
				
			||||||
out="${out}\n`grep URL /etc/os-release | sed 's/^\([A-Z_]*\)_URL/URL_\1/'`"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [[ "$arg" = "--all" ]]; then
 | 
					 | 
				
			||||||
	echo -e "$out"
 | 
					 | 
				
			||||||
	exit 0
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
if [[ "$arg" = "--pick" ]]; then
 | 
					 | 
				
			||||||
	echo -e `echo -e "$out" | grep "\b${2:-DESCRIPTION}\b" | cut -d = -f 2-`
 | 
					 | 
				
			||||||
	exit 0
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
echo "Wrong argument, see '--help'."
 | 
					 | 
				
			||||||
exit 1
 | 
					 | 
				
			||||||
@@ -1,3 +0,0 @@
 | 
				
			|||||||
#!/bin/bash
 | 
					 | 
				
			||||||
find ~/.vim/undodir/ -maxdepth 1 -mindepth 1 -type f -mtime +180 -delete
 | 
					 | 
				
			||||||
find ~/.vim/view/ -maxdepth 1 -mindepth 1 -type f -mtime +180 -delete
 | 
					 | 
				
			||||||
@@ -1,281 +0,0 @@
 | 
				
			|||||||
#!/usr/bin/env nodejsscript
 | 
					 | 
				
			||||||
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, fetch, cyclicLoop */
 | 
					 | 
				
			||||||
//TODO: save options!?
 | 
					 | 
				
			||||||
$.is_fatal= true;
 | 
					 | 
				
			||||||
const dirs= { vim_root: $.xdg.home`.vim` };
 | 
					 | 
				
			||||||
Object.assign(dirs, {
 | 
					 | 
				
			||||||
	pack: dirs.vim_root+"/pack/",
 | 
					 | 
				
			||||||
	bundle: dirs.vim_root+"/bundle/",
 | 
					 | 
				
			||||||
	one_files: dirs.vim_root+"/bundle/__one_files/plugin/" });
 | 
					 | 
				
			||||||
const file_one_file= dirs.bundle+"one_file.json";
 | 
					 | 
				
			||||||
const runResToArr= pipe( s.$().run, ({ stderr, stdout })=> stdout+stderr, o=> o.split("\n"));
 | 
					 | 
				
			||||||
const css= echo.css`
 | 
					 | 
				
			||||||
	.code{ color: yellow; }
 | 
					 | 
				
			||||||
	.code::before, .code::after{ content: "\`"; }
 | 
					 | 
				
			||||||
	.url{ color: lightblue; }
 | 
					 | 
				
			||||||
	.bold{ color: magenta; }
 | 
					 | 
				
			||||||
`;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
$.api()
 | 
					 | 
				
			||||||
.version("2023-04-18")
 | 
					 | 
				
			||||||
.describe([
 | 
					 | 
				
			||||||
	"Utility for managing vim plugins “native” way. It uses two types:",
 | 
					 | 
				
			||||||
	`- “old” way (${f("bundle", css.code)}): inspiration from ${f("https://shapeshed.com/vim-packages/", css.url)}`,
 | 
					 | 
				
			||||||
	`- vim8 native package managing (${f("pack", css.code)}): see for example ${f("https://shapeshed.com/vim-packages/", css.url)}`
 | 
					 | 
				
			||||||
])
 | 
					 | 
				
			||||||
.command("path <type>", [ "Prints paths for given package type",
 | 
					 | 
				
			||||||
	"Use (‘S’ is alias for this script name):",
 | 
					 | 
				
			||||||
	"- "+f("cd `S path bundle`", css.code),
 | 
					 | 
				
			||||||
	"- "+f("cd `S path one_files`", css.code),
 | 
					 | 
				
			||||||
	"- "+f("cd `S path pack`", css.code)
 | 
					 | 
				
			||||||
])
 | 
					 | 
				
			||||||
	.action(function(type){ echo(dirs[type]); $.exit(0); })
 | 
					 | 
				
			||||||
.command("clone <type> <url>", [ "Add/install new package.",
 | 
					 | 
				
			||||||
	`Use ${f("bundle", css.code )}/${f("pack", css.code)} to specify the package ${f("type", css.code)}.`,
 | 
					 | 
				
			||||||
	`The ${f("url", css.url)} should be a URL to the script itself or url of the git repository or github repository in the form of ${f("username/reponame", css.url)}.`
 | 
					 | 
				
			||||||
])
 | 
					 | 
				
			||||||
	.alias("C")
 | 
					 | 
				
			||||||
	.option("--target, -t [target]", `In case of ${f("pack", css.code)} type, specify the target sub-directory (typically/defaults ${f("start", css.code)}).`)
 | 
					 | 
				
			||||||
	.option("--branch, -b [branch]", `In case of ${f("git", css.bold)} repository, specify the branch if it is different from default one.`)
 | 
					 | 
				
			||||||
	.action(function(type, url, options){
 | 
					 | 
				
			||||||
		switch(type){
 | 
					 | 
				
			||||||
			case "bundle": return addBundle(url);
 | 
					 | 
				
			||||||
			case "pack": return addPack(url, options);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		echo("Nothing todo, check given arguments (compare to `--help`):", { type, url, options });
 | 
					 | 
				
			||||||
		$.exit(1);
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
.command("remove <type> <path>", [ "Remove/uninstall package.",
 | 
					 | 
				
			||||||
	`As ${f("type", css.bold)}/${f("path", css.bold)} use output printed by ${f("list", css.code)} command.`
 | 
					 | 
				
			||||||
])
 | 
					 | 
				
			||||||
	.alias("R").alias("rm")
 | 
					 | 
				
			||||||
	.action(function(type, path){
 | 
					 | 
				
			||||||
		switch(type){
 | 
					 | 
				
			||||||
			case "bundle": return removeBundle(path);
 | 
					 | 
				
			||||||
			case "pack": return removePack(path);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		echo("Nothing todo, check given arguments (compare to `--help`):", { type, path });
 | 
					 | 
				
			||||||
		$.exit(1);
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
.command("list", "List all plugins paths/url/… (based on option).")
 | 
					 | 
				
			||||||
	.alias("L").alias("ls")
 | 
					 | 
				
			||||||
	.option("--type, -t [type]", `Defaults to list of paths (${f("paths", css.code)}). Use ${f("repos", css.code)} to show plugins origin.`)
 | 
					 | 
				
			||||||
	.example("list")
 | 
					 | 
				
			||||||
	.example("list --type paths")
 | 
					 | 
				
			||||||
	.example("list --type repos")
 | 
					 | 
				
			||||||
	.action(actionList)
 | 
					 | 
				
			||||||
.command("export", "List all plugins in the form that can be imported by this Utility.")
 | 
					 | 
				
			||||||
	.action(actionList.bind(null, { type: "json" }))
 | 
					 | 
				
			||||||
.command("status", "Loops through all installed plugins and shows overall status.")
 | 
					 | 
				
			||||||
	.alias("S")
 | 
					 | 
				
			||||||
	.action(actionStatus)
 | 
					 | 
				
			||||||
.command("pull", "Loops through all installed plugins and updates them.")
 | 
					 | 
				
			||||||
	.alias("P").alias("update")
 | 
					 | 
				
			||||||
	.action(actionUpdate)
 | 
					 | 
				
			||||||
.parse();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function removePack(path){
 | 
					 | 
				
			||||||
	s.cd(dirs.pack);
 | 
					 | 
				
			||||||
	s.$("-V").rm("-rf", path);
 | 
					 | 
				
			||||||
	const root= dirs.pack+path.split("/")[0];
 | 
					 | 
				
			||||||
	const { code, stdout }= s.$().find(root+"/*/*");
 | 
					 | 
				
			||||||
	if(!code) echo(stdout);
 | 
					 | 
				
			||||||
	else if(s.test("-d", root))
 | 
					 | 
				
			||||||
		s.$("-V").rm("-rf", root);
 | 
					 | 
				
			||||||
	$.exit(0);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function removeBundle(path){
 | 
					 | 
				
			||||||
	const is_onefile= dirs.one_files.endsWith(path.split("/").slice(0, 2).join("/")+"/");
 | 
					 | 
				
			||||||
	const name= path.slice(path.lastIndexOf("/")+1);
 | 
					 | 
				
			||||||
	s.cd(dirs.bundle);
 | 
					 | 
				
			||||||
	if(is_onefile){
 | 
					 | 
				
			||||||
		s.rm("-f", path);
 | 
					 | 
				
			||||||
		pipe( s.cat, JSON.parse, f=> f.filter(u=> !u.endsWith(name)), JSON.stringify, s.echo )
 | 
					 | 
				
			||||||
			(file_one_file).to(file_one_file);
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
        s.run`git submodule deinit -f ${path}`;
 | 
					 | 
				
			||||||
        s.run`git rm ${path}`;
 | 
					 | 
				
			||||||
		s.rm("-rf", ".git/modules/"+path);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	const type= is_onefile ? "file" : "repo";
 | 
					 | 
				
			||||||
	s.run`git commit --all -m "Remove ${type}: ${name}"`;
 | 
					 | 
				
			||||||
	$.exit(0);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
async function addBundle(url){
 | 
					 | 
				
			||||||
	const is_onefile= url.endsWith(".vim");
 | 
					 | 
				
			||||||
	if(!is_onefile)
 | 
					 | 
				
			||||||
		url= gitUrl(url);
 | 
					 | 
				
			||||||
	const name= url.split(/[\/\.]/g).at(is_onefile ? -2 : -1);
 | 
					 | 
				
			||||||
	s.cd(dirs.bundle);
 | 
					 | 
				
			||||||
	if(is_onefile){
 | 
					 | 
				
			||||||
		const file= await fetch(url).then(r=> r.text());
 | 
					 | 
				
			||||||
		s.echo(file).to(dirs.one_files+name+".vim");
 | 
					 | 
				
			||||||
		const log= new Set(s.cat(file_one_file).xargs(JSON.parse));
 | 
					 | 
				
			||||||
		log.add(url);
 | 
					 | 
				
			||||||
		s.echo(JSON.stringify([ ...log ])).to(file_one_file);
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		s.run`git submodule init`;
 | 
					 | 
				
			||||||
		s.run`git submodule add ${url}`;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	s.run`git add .`;
 | 
					 | 
				
			||||||
	const type= is_onefile ? "file" : "repo";
 | 
					 | 
				
			||||||
	s.run`git commit -m "Added ${type}: ${name}"`;
 | 
					 | 
				
			||||||
	$.exit(0);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
/** @param {string} url @param {{ target: "start", branch?: string }} options */
 | 
					 | 
				
			||||||
function addPack(url, { target= "start", branch }){
 | 
					 | 
				
			||||||
	url= gitUrl(url);
 | 
					 | 
				
			||||||
	const author= url.split(/[:\/]/).at(-2);
 | 
					 | 
				
			||||||
	const path= dirs.pack+author+"/"+target;
 | 
					 | 
				
			||||||
	s.mkdir("-p", path);
 | 
					 | 
				
			||||||
	s.cd(path);
 | 
					 | 
				
			||||||
	branch= !branch ? "" : `-b ${branch}`;
 | 
					 | 
				
			||||||
	s.run`git clone ${branch} --single-branch ${url} --depth 1`;
 | 
					 | 
				
			||||||
	$.exit(0);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function gitUrl(url_candidate){
 | 
					 | 
				
			||||||
	if(url_candidate.endsWith(".git"))
 | 
					 | 
				
			||||||
		return url_candidate;
 | 
					 | 
				
			||||||
	return "git@github.com:"+url_candidate;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
async function actionUpdate(){
 | 
					 | 
				
			||||||
	const css= echo.css`
 | 
					 | 
				
			||||||
		.success{ color: lightgreen; }
 | 
					 | 
				
			||||||
		.success::before{ content: "✓ "; }
 | 
					 | 
				
			||||||
	`;
 | 
					 | 
				
			||||||
	updateRepo(dirs.bundle, getBundle());
 | 
					 | 
				
			||||||
	const todo= getOneFilesUrls();
 | 
					 | 
				
			||||||
	const progress= echoProgress(todo.length, "Downloaded one-file plugins");
 | 
					 | 
				
			||||||
	await Promise.all(todo.map(function(url, i){
 | 
					 | 
				
			||||||
		return fetch(url).then(r=> {
 | 
					 | 
				
			||||||
			progress.update(i, url);
 | 
					 | 
				
			||||||
			return r.text();
 | 
					 | 
				
			||||||
		}).then(f=> s.echo(f).to(dirs.one_files+fileName(url)));
 | 
					 | 
				
			||||||
	}));
 | 
					 | 
				
			||||||
	echo("One-file plugin(s) updated.");
 | 
					 | 
				
			||||||
	s.cd(dirs.bundle).$().run`git commit -m "Update"`;
 | 
					 | 
				
			||||||
	updateRepo(dirs.pack, getPack());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	$.exit(0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	function updateRepo(dir, paths){
 | 
					 | 
				
			||||||
		echo(dir);
 | 
					 | 
				
			||||||
		const progress= echoProgress(paths.length, "Pulling");
 | 
					 | 
				
			||||||
		const todo= paths.map(function(p, i){
 | 
					 | 
				
			||||||
			progress.update(i, p);
 | 
					 | 
				
			||||||
			return pull(p);
 | 
					 | 
				
			||||||
		}).filter(isUpToDate);
 | 
					 | 
				
			||||||
		if(!todo.length)
 | 
					 | 
				
			||||||
			return echo("%cAll up-to-date!", css.success);
 | 
					 | 
				
			||||||
		todo.forEach(([ p, result ])=> echo("%c"+p+"\n", css.success, result.join("\n")));
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	function pull(p){
 | 
					 | 
				
			||||||
		s.cd(p);
 | 
					 | 
				
			||||||
		return [ p, runResToArr("git pull") ];
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	function isUpToDate([ _, result ]){
 | 
					 | 
				
			||||||
		return result[0]===" Already up-to-date.";
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function actionList({ type= "paths" }){
 | 
					 | 
				
			||||||
	if("paths"===type){
 | 
					 | 
				
			||||||
		echo("%cbundle", css.bold, dirs.bundle);
 | 
					 | 
				
			||||||
		getOneFiles().forEach(echoPath);
 | 
					 | 
				
			||||||
		getBundle().forEach(echoPath);
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		echo("%cpack", css.bold, dirs.pack);
 | 
					 | 
				
			||||||
		getPack().forEach(echoPath);
 | 
					 | 
				
			||||||
		$.exit(0);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	const progress= echoProgress(3, "Collecting plugins urls");
 | 
					 | 
				
			||||||
	progress.update(0, dirs.bundle);
 | 
					 | 
				
			||||||
	const urls_bundle= getBundle().map(getRepo);
 | 
					 | 
				
			||||||
	progress.update(1, dirs.bundle);
 | 
					 | 
				
			||||||
	const urls_onefiles= getOneFilesUrls();
 | 
					 | 
				
			||||||
	progress.update(2, dirs.pack);
 | 
					 | 
				
			||||||
	const urls_pack= getPack().map(getRepo);
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	if("repos"===type){
 | 
					 | 
				
			||||||
		const echoUrl= pipe(
 | 
					 | 
				
			||||||
			u=> u.replace("git@github.com:", "https://github.com/"),
 | 
					 | 
				
			||||||
			u=> f(u, css.url),
 | 
					 | 
				
			||||||
			echo
 | 
					 | 
				
			||||||
		)
 | 
					 | 
				
			||||||
		echo("%cbundle", css.bold, dirs.bundle);
 | 
					 | 
				
			||||||
		urls_bundle.forEach(echoUrl);
 | 
					 | 
				
			||||||
		echo("%cbundle", css.bold, dirs.one_files);
 | 
					 | 
				
			||||||
		urls_onefiles.forEach(echoUrl);
 | 
					 | 
				
			||||||
		echo("%cpack", css.bold, dirs.pack);
 | 
					 | 
				
			||||||
		urls_pack.forEach(echoUrl);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if("json"===type){ //TODO: save options!?
 | 
					 | 
				
			||||||
		const o= {};
 | 
					 | 
				
			||||||
		o.bundle= urls_bundle;
 | 
					 | 
				
			||||||
		o.one_files= urls_onefiles;
 | 
					 | 
				
			||||||
		o.pack= urls_pack;
 | 
					 | 
				
			||||||
		echo(JSON.stringify(o));
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	$.exit(0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	function getRepo(p){ s.cd(p); return runResToArr("git remote -v")[0].split(/\s+/g)[1]; }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function actionStatus(){
 | 
					 | 
				
			||||||
	const css= echo.css`
 | 
					 | 
				
			||||||
		.success { color: lightgreen; }
 | 
					 | 
				
			||||||
		.success::before { content: "✓ "; }
 | 
					 | 
				
			||||||
	`;
 | 
					 | 
				
			||||||
	check(dirs.bundle, getBundle());
 | 
					 | 
				
			||||||
	echo("Onefiles plugins are not supported yet");
 | 
					 | 
				
			||||||
	check(dirs.pack, getPack());
 | 
					 | 
				
			||||||
	$.exit(0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	function check(root, repos){
 | 
					 | 
				
			||||||
		echo(root);
 | 
					 | 
				
			||||||
		const progress= echoProgress(repos.length);
 | 
					 | 
				
			||||||
		const results= repos.flatMap(function(p, i){
 | 
					 | 
				
			||||||
			progress.update(i, p);
 | 
					 | 
				
			||||||
			s.cd(p);
 | 
					 | 
				
			||||||
			const result= runResToArr("git fetch --dry-run --verbose")
 | 
					 | 
				
			||||||
				.filter(l=> !l ? false : l.startsWith("From") || (!l.startsWith(" = [up-to-date]") && !l.startsWith("POST") ));
 | 
					 | 
				
			||||||
			if(result.length===1) return [];
 | 
					 | 
				
			||||||
			return [ [ p, result.join("\n") ] ];
 | 
					 | 
				
			||||||
		});
 | 
					 | 
				
			||||||
		if(!results.length)
 | 
					 | 
				
			||||||
			return echo("%cup-to-date", css.success);
 | 
					 | 
				
			||||||
		results.forEach(([ p, l ])=> {
 | 
					 | 
				
			||||||
			echoPath(p);
 | 
					 | 
				
			||||||
			echo(l);
 | 
					 | 
				
			||||||
		});
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import { relative } from 'node:path';
 | 
					 | 
				
			||||||
function echoPath(path){ return echo(formatPath(path)); }
 | 
					 | 
				
			||||||
function formatPath(path){
 | 
					 | 
				
			||||||
	const type= path.startsWith(dirs.bundle) ? "bundle" : "pack";
 | 
					 | 
				
			||||||
	return echo.format("%c"+relative(dirs[type], path), "color:lightblue");
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
import { stdout } from 'node:process';
 | 
					 | 
				
			||||||
function echoProgress(length, message_start= "Working"){
 | 
					 | 
				
			||||||
	if(typeof stdout.isTTY === "undefined") return { update(){} };
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	const css= echo.css`
 | 
					 | 
				
			||||||
		.progress { color: lightblue; }
 | 
					 | 
				
			||||||
	`;
 | 
					 | 
				
			||||||
	echo.use("-R", `${message_start} (%c0/${length}%c)`, css.progress);
 | 
					 | 
				
			||||||
	return {
 | 
					 | 
				
			||||||
		update(i, status){
 | 
					 | 
				
			||||||
			const s= status ? `: ${status}` : "";
 | 
					 | 
				
			||||||
			return echo.use("-R", `${message_start} (%c${i+1}/${length}%c)${s}`, css.progress);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function getPack(){ return s.ls(dirs.pack).flatMap(f=> s.find(dirs.pack+f+"/start/*/")[0]).filter(Boolean); }
 | 
					 | 
				
			||||||
function getBundle(){ return s.cd(dirs.bundle).grep("path", ".gitmodules").split("\n").filter(Boolean).map(l=> dirs.bundle+l.split(" = ")[1]); }
 | 
					 | 
				
			||||||
function getOneFiles(){ return s.find(dirs.one_files+"*"); }
 | 
					 | 
				
			||||||
function getOneFilesUrls(){ return s.cat(file_one_file).xargs(JSON.parse); }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function fileName(url){ return url.split("/").pop(); }
 | 
					 | 
				
			||||||
/** Quick formating of one piece of text. */
 | 
					 | 
				
			||||||
function f(text, css){ return echo.format("%c"+text, css); }
 | 
					 | 
				
			||||||
@@ -1,44 +0,0 @@
 | 
				
			|||||||
#!/usr/bin/env node
 | 
					 | 
				
			||||||
/* jshint esversion: 6,-W097, -W040, browser: true, expr: true, undef: true */
 | 
					 | 
				
			||||||
import { readFileSync, writeFileSync, createWriteStream } from "fs";
 | 
					 | 
				
			||||||
import { get } from "https";
 | 
					 | 
				
			||||||
import { homedir } from "os";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const url_main= "https://www.bing.com";
 | 
					 | 
				
			||||||
const folder= homedir()+"/Obrázky/Bing Image Of The Day/";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
get_(url_main+"/HPImageArchive.aspx?format=js&idx=0&n=2&mkt=cs-CZ")
 | 
					 | 
				
			||||||
.then(res=> {
 | 
					 | 
				
			||||||
    let body= "";
 | 
					 | 
				
			||||||
    res.on("data", chunk=> body+= chunk);
 | 
					 | 
				
			||||||
    res.on("end", ()=> pipe(data, update)(body));
 | 
					 | 
				
			||||||
})
 | 
					 | 
				
			||||||
.catch(e=> console.error(String(e)));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function update(data){
 | 
					 | 
				
			||||||
    if(data===null) return false;
 | 
					 | 
				
			||||||
    Promise.allSettled(data.map(({ url, copyright }, id)=> getImage_(url, id ? "prev" : "now", copyright)))
 | 
					 | 
				
			||||||
    .then(res=> {
 | 
					 | 
				
			||||||
        let template= readFileSync(folder+"index_template.html").toString();
 | 
					 | 
				
			||||||
        writeFileSync(folder+"index.html", res.reduce((out, { status, value })=> status==="rejected" ? out : out.replace(`::${value.name}::`, value.description), template));
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
    .catch(e=> console.error(String(e)));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function getImage_(url, name, desc){
 | 
					 | 
				
			||||||
    const description= desc.replace("(©", "<br>(©");
 | 
					 | 
				
			||||||
    return get_(url_main+url)
 | 
					 | 
				
			||||||
    .then(res=> {
 | 
					 | 
				
			||||||
        const fs= createWriteStream(folder+name+'.jpg');
 | 
					 | 
				
			||||||
        res.pipe(fs);
 | 
					 | 
				
			||||||
        return new Promise(res=> fs.on("finish", ()=> {
 | 
					 | 
				
			||||||
            fs.close();
 | 
					 | 
				
			||||||
            res({ name, description });
 | 
					 | 
				
			||||||
        }));
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function data(body){
 | 
					 | 
				
			||||||
          try   { return JSON.parse(body).images; }
 | 
					 | 
				
			||||||
    catch (_)   { return null; }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function get_(url){ return new Promise(function(res,rej){ get(url, res).on("error", rej); }); }
 | 
					 | 
				
			||||||
function pipe(...f){ return Array.prototype.reduce.bind(f, (acc, f)=> f(acc)); }
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user