3edbacfc6a8b8e1112bd0fcc20e1fe6ef16beb5b
[dotfiles.git] / emacs.d / config / init-elscreen.el
1 ;; this config file is based on  seudut/elscreen.git, which added two interface and one property 
2 ;; default directory
3
4 (elscreen-set-default-directory (elscreen-get-current-screen) "~/")
5
6
7 ;; tab face
8
9 (custom-set-faces
10  '(elscreen-tab-current-screen-face ((t (:background "Yellow" :foreground "black"))))
11  '(elscreen-tab-other-screen-face ((t (:background "gray22" :foreground "black")))))
12
13 ;;(add-hook 'elscreen-create-hook
14 ;;          (lambda ()
15 ;;            (elscreen-set-default-directory  
16 ;;              (elscreen-get-current-screen) "~/")))
17
18
19 (add-hook 'elscreen-goto-hook
20           (lambda ()
21             (elscreen-cd-default-directory
22               (elscreen-get-default-directory (elscreen-get-current-screen)))))
23
24 (defun sd-cd-dd (dir)
25   "Set default directory screen."
26   (interactive "sSet dir:")
27   (elscreen-set-default-directory (elscreen-get-current-screen) dir)
28   (cd dir)
29 )
30
31     
32 (defun sd-show-dir ()
33   "show elscreen default directory."
34   (interactive)
35   (message
36   (elscreen-get-default-directory (elscreen-get-current-screen))))
37
38 (defun sd-update-elscreen-dir ()
39   "update elscreen dir as current default directory"
40   (interactive)
41   (elscreen-set-default-directory (elscreen-get-current-screen) default-directory))
42
43
44
45
46 ;;(add-hook 'buffer-list-update-hook
47 ;;          (lambda ()
48 ;;            (let ((el-dir (elscreen-get-default-directory (elscreen-get-current-screen))))
49 ;;              (if (> (length el-dir) 0)
50 ;;                 (cd el-dir)))))
51
52 (defvar elscreen-exclude-modes '(eshell-mode magit magit-status-mode magit-commit-mode magit-diff-mode) "the major modes don't update directory")
53
54 ;; when major-mode is magit-*, don't change default-directory, otherwise, there is error when usingit command in magin-* mode
55 (add-hook 'elscreen-screen-update-hook
56           (lambda ()
57             (let ((el-dir (elscreen-get-default-directory (elscreen-get-current-screen))))
58               (unless (member  major-mode elscreen-exclude-modes)
59                 (if (> (length el-dir) 0)
60                   (cd el-dir))))))
61
62
63
64
65
66 ;; elscreen should be placed begin of https://github.com/knu/elscreen/issues/6
67 ;(elscreen-start)
68 ;(require 'init-elscreen)
69 ;(require 'elscreen)
70 ;(custom-set-faces
71 ; '(elscreen-tab-current-screen-face ((t (:background "Yellow" :foreground "black"))))
72 ; '(elscreen-tab-other-screen-face ((t (:background "gray22" :foreground "black")))))
73
74
75
76
77
78 (provide 'init-elscreen)