From 0357d0421ed361bf71aea7e18bc383809cba0495 Mon Sep 17 00:00:00 2001 From: Aaron LI Date: Sun, 21 Feb 2016 14:18:57 +0800 Subject: zsh: add zsh/emacs.zsh --- _zsh/emacs.zsh | 37 +++++++++++++++++++++++++++++++++++++ _zshrc | 5 +++-- 2 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 _zsh/emacs.zsh diff --git a/_zsh/emacs.zsh b/_zsh/emacs.zsh new file mode 100644 index 0000000..501ddb2 --- /dev/null +++ b/_zsh/emacs.zsh @@ -0,0 +1,37 @@ +# +# zsh/emacs.zsh +# +# Credits: +# https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/emacs +# +# 2016-02-21 +# + +function _emacsclient() { + # Get list of available X windows. + X=`emacsclient --alternate-editor '' --eval '(x-display-list)' 2>/dev/null` + + if [ -z "$X" ] || [ "$X" = "nil" ]; then + # Create one if there is no X window yet. + command emacsclient --alternate-editor "" --create-frame "$@" + else + # Prevent creating another X frame if there is at least one present. + command emacsclient --alternate-editor "" "$@" + fi +} + +alias emacs='_emacsclient -t' +alias e=emacs +# Same as 'M-x eval' but outside of Emacs +alias eeval='_emacsclient --eval' +# Create a new X frame +alias eframe='_emacsclient --create-frame --no-wait' + +# Write to stdout the path to the file opened in the current buffer +function efile() { + local cmd="(buffer-file-name (window-buffer))" + _emacsclient --eval "$cmd" | tr -d '"' +} + + +# vim: set ts=8 sw=4 tw=0 fenc=utf-8 ft=zsh: # diff --git a/_zshrc b/_zshrc index 696591d..0266dcc 100644 --- a/_zshrc +++ b/_zshrc @@ -19,7 +19,7 @@ ## ## Aaron LI ## Created: 2014-05-31 -## Updated: 2016-01-30 +## Updated: 2016-02-21 ## @@ -31,10 +31,11 @@ source ~/.zsh/prompt.zsh source ~/.zsh/completion.zsh source ~/.zsh/aliases.zsh source ~/.zsh/bindkeys.zsh -source ~/.zsh/vi-mode.zsh source ~/.zsh/functions.zsh source ~/.zsh/history.zsh source ~/.zsh/hooks.zsh +source ~/.zsh/vi-mode.zsh +source ~/.zsh/emacs.zsh ## Local configurations [ -r ~/.zshrc.local ] && source ~/.zshrc.local -- cgit v1.2.2