commit 7db99efdac33984a4a993603ef974c48e99fa78e
parent c725a93782f160d48c36376dcacf9e0c89e7b214
Author: Alex Balgavy <a.balgavy@gmail.com>
Date: Sun, 22 Sep 2019 13:48:36 -0400
lf: moved from ranger
Former-commit-id: d380b03b47695473a3057f9591da8d92588946e0
Diffstat:
3 files changed, 111 insertions(+), 1 deletion(-)
diff --git a/ctags.d/lfrc.ctags b/ctags.d/lfrc.ctags
@@ -0,0 +1,4 @@
+--langdef=lfrc
+--langmap=lfrc:(lfrc)
+--regex-lfrc=/^[ \t]*cmd ([a-zA-Z0-9_]+) \$\{\{/\1/c,command/
+--regex-lfrc=/^[ \t]*map ([a-zA-Z0-9_]+) ([^$#]+)/\1: "\2"/m,map/
diff --git a/lf/lfrc b/lf/lfrc
@@ -0,0 +1,107 @@
+# vim: foldmethod=marker foldlevel=0
+# General settings {{{
+# interpreter for shell commands (needs to be POSIX compatible)
+set shell sh
+
+# set '-eu' options for shell commands
+# These options are used to have safer shell commands. Option '-e' is used to
+# exit on error and option '-u' is used to give error for unset variables.
+# Option '-f' disables pathname expansion which can be useful when $f, $fs, and
+# $fx variables contain names with '*' or '?' characters. However, this option
+# is used selectively within individual commands as it can be limiting at
+# times.
+set shellopts '-eu'
+
+# set internal field separator (IFS) to "\n" for shell commands
+# This is useful to automatically split file names in $fs and $fx properly
+# since default file separator used in these variables (i.e. 'filesep' option)
+# is newline. You need to consider the values of these options and create your
+# commands accordingly.
+set ifs "\n"
+
+# leave some space at the top and the bottom of the screen
+set scrolloff 10
+
+# }}}
+# Command definitions {{{
+# define a custom 'open' command
+# This command is called when current file is not a directory. You may want to
+# use either file extensions and/or mime types here. Below uses an editor for
+# text files and a file opener for the rest.
+cmd open ${{
+ case $(file --mime-type $f -b) in
+ text/*) $EDITOR $fx;;
+ *) for f in $fx; do $OPENER $f > /dev/null 2> /dev/null & done;;
+ esac
+}}
+
+# define a custom 'rename' command without prompt for overwrite
+cmd rename %[ -e $1 ] && printf "file exists" || mv $f $1
+
+# define a custom 'delete' command
+cmd delete ${{
+ set -f
+ printf "$fx\n"
+ printf "delete?[y/n]"
+ read ans
+ [ $ans = "y" ] && rm -rf $fx
+}}
+
+# extract the current file with the right command
+# (xkcd link: https://xkcd.com/1168/)
+cmd extract ${{
+ set -f
+ case $f in
+ *.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf $f;;
+ *.tar.gz|*.tgz) tar xzvf $f;;
+ *.tar.xz|*.txz) tar xJvf $f;;
+ *.zip) unzip $f;;
+ *.rar) unrar x $f;;
+ *.7z) 7z x $f;;
+ esac
+}}
+
+# compress current file or selected files with tar and gunzip
+cmd tar ${{
+ set -f
+ mkdir $1
+ cp -r $fx $1
+ tar czf $1.tar.gz $1
+ rm -rf $1
+}}
+
+# compress current file or selected files with zip
+cmd zip ${{
+ set -f
+ mkdir $1
+ cp -r $fx $1
+ zip -r $1.zip $1
+ rm -rf $1
+}}
+
+cmd edit_config ${{
+ $EDITOR ~/.config/lf/lfrc
+ source ~/.config/lf/lfrc
+}}
+# }}}
+# Mappings {{{
+# execute current file (must be executable)
+map x $$f
+map X !$f
+
+# dedicated keys for file opener actions
+map o &mimeopen $f
+map O $mimeopen --ask $f
+
+map R push :rename<space>
+map E $$EDITOR $f
+map D delete
+
+map gd cd ~/Documents
+map gD cd ~/Desktop
+map gl cd ~/Downloads
+map gw cd ~/Dropbox/vimwiki
+map gz cd ~/Documents/Programming/thezeroalpha.github.io/
+map g/ cd /
+
+map ec edit_config
diff --git a/shell/commonprofile b/shell/commonprofile
@@ -108,7 +108,6 @@ alias du="du -skh" # Pref
alias df="df -h" # Preferred 'df' implementation
alias htop='sudo htop' # Top should launch htop with sudo
alias g='git' # Make git easier to type
-alias r='source ranger' # Make Ranger easier to type and keep directory
alias wheredef='type -a' # Where is a function defined?
alias lsblk="lsblk -o NAME,LABEL,PARTLABEL,TYPE,FSTYPE,SIZE,MOUNTPOINT,STATE"
alias rmcolors="sed \"s,\x1B\[[0-9;]*[a-zA-Z],,g\"" # Remove ANSI color codes from text