#!/bin/sh # Input locations. bmdirs="${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs" bmfiles="${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-files" # Output locations. Unactivated progs should go to /dev/null. shell_shortcuts="${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc" zsh_named_dirs="${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc" lf_shortcuts="${XDG_CONFIG_HOME:-$HOME/.config}/lf/shortcutrc" vim_shortcuts="${XDG_CONFIG_HOME:-$HOME/.config}/nvim/shortcuts.vim" qute_shortcuts="/dev/null" fish_shortcuts="/dev/null" vifm_shortcuts="/dev/null" write_dirs() { while IFS= read -r line; do shortcut=$(echo "$line" | cut -d' ' -f1) path_raw=$(echo "$line" | cut -d' ' -f2) path=$(eval "echo $path_raw") printf "%s=\"cd %s && ls -A\" \\\\\n" \ "$shortcut" "$path" >>"$shell_shortcuts" printf "hash -d %s=%s\n" \ "$shortcut" "$path" >>"$zsh_named_dirs" printf "abbr %s \"cd %s; and ls -A\"\n" \ "$shortcut" "$path" >>"$fish_shortcuts" printf "map g%s :cd %s\nmap t%s :cd %s\nmap M%s :cd %s:mo\nmap Y%s :cd %s:co \n" \ "$shortcut" "$path" "$shortcut" "$path" "$shortcut" "$path" "$shortcut" "$path" >>"$vifm_shortcuts" printf "config.bind(';%s', \"set downloads.location.directory %s ;; hint links download\") \n" \ "$shortcut" "$path" >>"$qute_shortcuts" printf "map C%s cd \"%s\"\n" \ "$shortcut" "$path" >>"$lf_shortcuts" printf "cmap ;%s %s\n" \ "$shortcut" "$path" >>"$vim_shortcuts" done } write_files() { while IFS= read -r line; do shortcut=$(echo "$line" | cut -d' ' -f1) path_raw=$(echo "$line" | cut -d' ' -f2) path=$(eval "echo $path_raw") printf "%s=\"\$EDITOR %s\" \\\\\n" \ "$shortcut" "$path" >>"$shell_shortcuts" printf "hash -d %s=%s \n" \ "$shortcut" "$path" >>"$zsh_named_dirs" printf "abbr %s \"\$EDITOR %s\" \n" \ "$shortcut" "$path" >>"$fish_shortcuts" printf "map %s :e %s \n" \ "$shortcut" "$path" >>"$vifm_shortcuts" printf "map E%s \$\$EDITOR \"%s\" \n" \ "$shortcut" "$path" >>"$lf_shortcuts" printf "cmap ;%s %s\n" \ "$shortcut" "$path" >>"$vim_shortcuts" done } # Remove, prepare files rm -f "$lf_shortcuts" "$qute_shortcuts" "$zsh_named_dirs" "$vim_shortcuts" 2>/dev/null printf "# vim: filetype=sh\\n" >"$fish_shortcuts" printf "# vim: filetype=sh\\nalias " >"$shell_shortcuts" printf "\" vim: filetype=vim\\n" >"$vifm_shortcuts" # Write shortcuts to files sed 's/#.*//;/^$/d;s/ \+/ /g' <"$bmdirs" | write_dirs sed 's/#.*//;/^$/d;s/ \+/ /g' <"$bmfiles" | write_files