aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--_zsh/80-emacs.zsh29
1 files changed, 15 insertions, 14 deletions
diff --git a/_zsh/80-emacs.zsh b/_zsh/80-emacs.zsh
index 27966b9..5114cc8 100644
--- a/_zsh/80-emacs.zsh
+++ b/_zsh/80-emacs.zsh
@@ -8,34 +8,35 @@
#
if exists emacsclient; then
+ function eserver() {
+ # NOTE:
+ # Force "LC_CTYPE=zh_CN.UTF-8", otherwise, the Chinese input methods
+ # (e.g., Fcitx) cannot be activated within Emacs (GUI) in non-Chinese
+ # locale (e.g., "LANG=en_US.UTF-8" while "LC_CTYPE" unset)
+ command env LC_CTYPE=zh_CN.UTF-8 emacs --daemon
+ }
+
function _emacsclient() {
# Get list of available X windows.
- X=`emacsclient --alternate-editor '' --eval '(x-display-list)' 2>/dev/null`
+ local 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 "$@"
+ local create_frame="--create-frame"
else
- # Prevent creating another X frame if there is at least one present.
- command emacsclient --alternate-editor "" "$@"
+ local create_frame=""
fi
- }
- # 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 '"'
+ command env LC_CTYPE=zh_CN.UTF-8 emacsclient --alternate-editor "" $create_frame "$@"
}
+ alias emacs='_emacsclient -t'
# 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'
-
- alias emacs='_emacsclient -t'
- alias e=emacs
- alias ef=eframe
-fi # end "exists emacsclient"
+fi # END: exists emacsclient
# vim: set ts=8 sw=4 tw=0 fenc=utf-8 ft=zsh: #