Browse Source

- Fix pass of parameters
- Add new function `ecd'.

Tristan Carel 14 years ago
parent
commit
49c0a1381a
2 changed files with 19 additions and 3 deletions
  1. 17 1
      plugins/emacs/emacs.plugin.zsh
  2. 2 2
      plugins/emacs/emacsclient.sh

+ 17 - 1
plugins/emacs/emacs.plugin.zsh

@@ -1,6 +1,6 @@
 # Emacs 23 daemon capability is a killing feature.
 # One emacs process handles all your frames whether
-# you use a frame opened in a terminal via a ssh connection or X frames 
+# you use a frame opened in a terminal via a ssh connection or X frames
 # opened on the same host.
 
 # Benefits are multiple
@@ -23,8 +23,24 @@ if "$ZSH/tools/require_tool.sh" emacs 23 2>/dev/null ; then
     # to code all night long
     alias emasc=emacs
     alias emcas=emacs
+
+    # jump to the directory of the current buffer
+    function ecd {
+        local cmd="(let ((buf-name (buffer-file-name (window-buffer))))
+               (if buf-name
+                 (file-name-directory buf-name)))"
+
+        local dir=`$EDITOR --eval "$cmd" | tr -d \"`
+        if [ -n "$dir" ] ;then
+            cd "$dir"
+        else
+            echo "can not deduce current buffer filename." >/dev/stderr
+            return 1
+        fi
+    }
 fi
 
+
 ## Local Variables:
 ## mode: sh
 ## End:

+ 2 - 2
plugins/emacs/emacsclient.sh

@@ -4,8 +4,8 @@
 
 x=`emacsclient --alternate-editor '' --eval '(x-display-list)' 2>/dev/null`
 if [ -z "$x" ] ;then
-    emacsclient --alternate-editor "" --create-frame $@
+    emacsclient --alternate-editor "" --create-frame "$@"
 else
     # prevent creating another X frame if there is at least one present.
-    emacsclient --alternate-editor "" $@
+    emacsclient --alternate-editor "" "$@"
 fi