Update Emacs / Bash monkey-patched functions

This commit is contained in:
William Carroll 2018-01-08 15:42:25 -05:00
parent 8cadd912a6
commit c466358048

View file

@ -1,8 +1,15 @@
#!/usr/bin/env zsh #!/usr/bin/env zsh
# This file contains tooling that make terminal usage from within Emacs more enjoyable. Some of
# these are conditionally defined functions that monkey patch CLI utils like vim and man and
# dispatch to native Emacs utils that should function as analogous alternatives.
# While most of these conditional definitions could fall inside of one larger, if "${INSIDE_EMACS}"
# block, to increase portability, smaller, redundant blocks are preferred.
# Have zsh export variables for Emacs to track the cwd # Have zsh export variables for Emacs to track the cwd
if [ -n "$INSIDE_EMACS" ]; then if [ -n "${INSIDE_EMACS}" ]; then
chpwd() { print -P "\033AnSiTc %d" } chpwd() { print -P "\033AnSiTc %d" }
print -P "\033AnSiTu %n" print -P "\033AnSiTu %n"
print -P "\033AnSiTc %d" print -P "\033AnSiTc %d"
@ -10,36 +17,30 @@ fi
# Custom emacs pager support # Custom emacs pager support
if [ -n "$INSIDE_EMACS" ]; then if [ -n "${INSIDE_EMACS}" ]; then
export PAGER="create-shell-pager.sh" export PAGER="create-shell-pager.sh"
else
export PAGER="less"
fi fi
# Edit commit messages, etc from ansi-term in emacs # For git primarily. Edit commit messages, etc from ansi-term in Emacs
if [ -n "$INSIDE_EMACS" ]; then if [ -n "${INSIDE_EMACS}" ]; then
export EDITOR="edit-file-in-emacs.sh" export EDITOR="edit-file-in-emacs.sh"
else
export EDITOR="command vim"
fi fi
# Calls to vim from within ansi-term trigger emacs find-file # Muscle-memory dies hard. Calls to vim from an Emacs terminal attempt to open vim from inside of
vim () { # Emacs. This is a really bad UX, and hard to exit from. Instead of retraining muscle-memory,
if [ -n "$INSIDE_EMACS" ]; then # dispatch to Emacs' file editing when vim is called from an Emacs terminal.
if [ -n "${INSIDE_EMACS}" ]; then
function vim () {
emacsclient -e "(find-file-other-window \"$1\")" emacsclient -e "(find-file-other-window \"$1\")"
else }
command vim "$1" fi
fi
}
# Calls to man from within ansi-term trigger emacs man # Prefer Emac's built-in man util when called from an Emacs terminal
man () { if [ -n "${INSIDE_EMACS}" ]; then
if [ -n "$INSIDE_EMACS" ]; then function man () {
emacsclient -e "(man \"$1\")" emacsclient -e "(man \"$1\")"
else }
command man "$1" fi
fi
}