diff --git a/emacs.el b/emacs.el index a6bdf64..c81df45 100644 --- a/emacs.el +++ b/emacs.el @@ -12,6 +12,29 @@ (require 'cl nil t) +(progn ; hook run when directory changed + (defvar buffer-file-changed-function nil "Hook run when buffer file changed. +Each function is called with two args, the file before changing and after changing.") + (declare-function run-buffer-file-change-function "emacs.el") + (add-hook 'post-command-hook + 'run-buffer-file-changed-function) + (lexical-let (previous-file) + (defun run-buffer-file-changed-function () + "" + (unless (and previous-file + (equal previous-file + (expand-file-name (or buffer-file-name + default-directory)))) + (let ((pfile previous-file) + (cfile (expand-file-name (or buffer-file-name + default-directory)))) + (setq previous-file cfile) + (run-hook-with-args 'directory-changed-function pfile cfile))))) + ;; (add-hook 'directory-changed-function + ;; (lambda (pdir cdir) + ;; (message "dir changed %s to %s !" pdir cdir))) + ) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; start and quit @@ -31,10 +54,11 @@ (defun set-terminal-title (&rest args) "" (interactive "sString to set as title: ") - (let ((tty (or (frame-parameter nil - 'tty-type) - ""))) - (when (eq t (compare-strings "xterm" 0 5 tty 0 5)) + (let ((tty (frame-parameter nil + 'tty-type))) + (when (and tty + (eq t (compare-strings "xterm" 0 5 + tty 0 5))) (send-string-to-terminal (apply 'concat "\033]0;" `(,@args "\007")))))) @@ -49,12 +73,9 @@ (symbol-name system-type) "] " (abbreviate-file-name (or buffer-file-name default-directory)))) -(defvar previous-directory default-directory) -(add-hook 'post-command-hook - (lambda () - (unless (eq previous-directory default-directory) - (setq previous-directory default-directory) - (my-set-terminal-title)))) +(add-hook 'directory-changed-function + (lambda (p c) + (my-set-terminal-title))) (add-hook 'suspend-resume-hook 'my-set-terminal-title) @@ -196,19 +217,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; letters, font-lock mode and fonts -;; change color for border -;; (set-face-foreground (make-face 'vertical-border-face) "white") -;; (set-face-background 'vertical-border-face "black") -;; (defface vertical-border-face -;; `((((background dark)) -;; (:background "white")) -;; (((background light)) -;; (:background "black"))) -;; "vertical border") -;; (set-display-table-slot standard-display-table 'vertical-border -;; (make-glyph-code #x3a 'vertical-border-face)) -;; (set-face-foreground 'vertical-border "default") -;; (set-face-background 'vertical-border "white") +(set-face-background 'vertical-border (face-foreground 'mode-line)) (when (eq system-type 'Darwin) (mac-set-input-method-parameter 'japanese 'cursor-color "red") @@ -317,25 +326,27 @@ ;; (my-set-ascii-and-jp-font-with-size '("ProggyCleanTTSZ" 120 "takaogothic" 11)) ;; あ a -(defun my-set-mode-line-color-according-to-readonly-state () +;; inspired by http://www.emacswiki.org/emacs-en/ChangingCursorDynamically + +(defun my-set-modeline-color-according-to-write-mode () "" (let ((state (if buffer-read-only 'readonly (if overwrite-mode 'overwrite 'insert)))) - (unless (eq state my-set-mode-line-color-state) + (unless (eq state my-set-modeline-color-state) (set-face-foreground 'modeline (nth 1 (assq state - my-set-mode-line-color-color))) + my-set-modeline-color-color))) (set-face-background 'modeline (nth 2 (assq state - my-set-mode-line-color-color))) - (setq my-set-mode-line-color-state state)))) -(defvar my-set-mode-line-color-color nil "") -(setq my-set-mode-line-color-color + my-set-modeline-color-color))) + (setq my-set-modeline-color-state state)))) +(defvar my-set-modeline-color-color nil "") +(setq my-set-modeline-color-color (if window-system `((readonly "white" "blue") (overwrite "white" "red") @@ -343,12 +354,12 @@ `((readonly "blue" "white") (overwrite "red" "white") (insert ,(face-foreground 'modeline) ,(face-background 'modeline))))) -(defvar my-set-mode-line-color-state nil "") -(add-hook 'post-command-hook 'my-set-mode-line-color-according-to-readonly-state) -(add-hook 'after-init-hook 'my-set-mode-line-color-according-to-readonly-state) +(defvar my-set-modeline-color-state nil "") +(add-hook 'post-command-hook 'my-set-modeline-color-according-to-write-mode) +(add-hook 'after-init-hook 'my-set-modeline-color-according-to-write-mode) ;; (set-face-foreground 'mode-line-inactive (if window-system "gray" "white")) -;; (set-face-background 'mode-line-inactive (if window-system "white" "gray")) +(set-face-background 'mode-line-inactive (if window-system "white" "green")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; file handling