emacs: elscreen default-directory, exclude eshell-mode to update default directory
[dotfiles.git] / emacs.d / config / init-elscreen.el
index 439752a..18d5607 100644 (file)
@@ -1,6 +1,7 @@
 ;; this config file is based on  seudut/elscreen.git, which added two interface and one property 
 ;; default directory
 
+(elscreen-set-default-directory (elscreen-get-current-screen) "~/")
 
 ;; change default keybinding
 (global-set-key (kbd "<M-tab>") 'elscreen-next) ;; "C-M-I"
@@ -43,7 +44,8 @@
 (defun sd-update-elscreen-dir ()
   "update elscreen dir as current default directory"
   (interactive)
-  (elscreen-set-default-directory (elscreen-get-current-scren) default-directory))
+  (elscreen-set-default-directory (elscreen-get-current-screen) default-directory))
+
 
 
 
 ;;              (if (> (length el-dir) 0)
 ;;                 (cd el-dir)))))
 
+(defvar elscreen-exclude-modes '(eshell-mode magit magit-status-mode magit-commit-mode magit-diff-mode) "the major modes don't update directory")
+
+;; when major-mode is magit-*, don't change default-directory, otherwise, there is error when usingit command in magin-* mode
+(add-hook 'elscreen-screen-update-hook
+          (lambda ()
+            (let ((el-dir (elscreen-get-default-directory (elscreen-get-current-screen))))
+             (unless (member  major-mode elscreen-exclude-modes)
+                (if (> (length el-dir) 0)
+                  (cd el-dir))))))
+
 
 (provide 'init-elscreen)