joe/rc/shell.sh

148 lines
2.8 KiB
Bash
Raw Normal View History

2024-10-16 10:58:52 +08:00
# Aliases for sh/dash/ash/bash/ksh/zsh in JOE shell window
joehelp () {
echo "clear - erase buffer"
echo "joe - edit file"
echo "math 1+2 - calculator"
echo "pop - dismiss shell"
echo "parse [cmd] - grep parse command"
echo "parserr [cmd] - compile parse command"
echo "release - drop parsed messages"
echo "markb - mark beginning of region"
echo "markk - mark end of region"
echo "mark cmd - mark output of command"
}
# Clear edit buffer
joe_clear () {
echo -n '{'shell_clear'}'
}
# Release errors
joe_release () {
echo -n '{'shell_release'}'
}
# Set marked region beginning
joe_markb () {
echo -n '{'shell_markb'}'
}
# Set marked region end
joe_markk () {
echo -n '{'shell_markk'}'
}
# Mark command result
joe_mark () {
joe_markb
$*
joe_markk
}
# Parse command result (or whole buffer if no arg)
joe_parse () {
if [ "$1" = "" ]; then
echo -n '{'shell_gparse'}'
else
joe_markb
$*
joe_markk
echo '{'shell_gparse'}'
fi
}
# Parse command result (or whole buffer if no arg)
joe_parserr () {
if [ "$1" = "" ]; then
echo '{'shell_parse'}'
else
joe_markb
$*
joe_markk
echo '{'shell_parse'}'
fi
}
# Use JOE's calculator
joe_math () {
echo -n '{'shell_math,'"'$1'"',shell_rtn!,shell_typemath'}'
cat >/dev/null
}
# Edit a file
joe_edit () {
echo -n '{'shell_edit,'"'$1'"',shell_rtn'}'
}
# Pop shell window
joe_pop () {
echo -n '{'shell_pop'}'
}
unalias cd 2>/dev/null
# Change directory
joe_cd () {
# cd $1 - does not work for directories with spaces in their names
# cd "$1" - breaks cd with no args (it's supposed to go to home directory)
# So we have do this...
if [ "$1" = "" ]; then
cd
else
cd "$1"
fi
# Tell JOE our new directory
echo -n '{'shell_cd,shell_dellin!,'"'`pwd`/'"',shell_rtn'}'
}
alias clear=joe_clear
alias math=joe_math
alias edit=joe_edit
alias joe=joe_edit
alias pop=joe_pop
alias cd=joe_cd
alias parse=joe_parse
alias parserr=joe_parserr
alias release=joe_release
alias markb=joe_markb
alias markk=joe_markk
alias mark=joe_mark
# Code to automatically mark and parse output from each command
# - This is bash specific code
#joe_markb_pre () {
# joe_markb
# MARK_FLAG=1
#}
#joe_markk_post () {
# if [ "$MARK_FLAG" = "1" ]; then
# joe_markk
# MARK_FLAG=0
# joe_parse
# fi
#}
#preexec () { :; }
#preexec_invoke_exec () {
# [ -n "$COMP_LINE" ] && return # do nothing if completing
# [ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] && return # don't cause a preexec for $PROMPT_COMMAND
# local this_command=`HISTTIMEFORMAT= history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//"`;
# joe_markb_pre
# preexec "$this_command"
#}
#trap 'preexec_invoke_exec' DEBUG
#PROMPT_COMMAND=joe_markk_post
joe_clear
echo
echo Type joehelp for editor shell commands
echo