Last active
August 29, 2015 14:04
-
-
Save tam17aki/30409a2646beef9b8cbd to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; response is a little heavy | |
(eval-when-compile (require 'multi-term) (require 'term)) | |
(require 'multi-term) | |
(setq multi-term-program shell-file-name) | |
(setq multi-term-program "/usr/bin/bash.exe") | |
;; (setenv "CDPATH" "/") | |
(setenv "CDPATH" (concat (replace-regexp-in-string | |
"\\\\" "/" (getenv "HOME")))) | |
;; start-process での起動時に、fakecygpty.exe | |
;; を経由させたいプログラム名を列挙する | |
(setq fakery-program-list | |
'("sh" "bash" "zsh" "ssh" "scp" "rsync" "sftp" "irb")) | |
;; start-process での起動時に、fakecygpty.exe を経由させたくない | |
;; プロセス名にマッチする正規表現を列挙する | |
(setq exclusion-process-regexp-list '("^grep$")) | |
;; fakery-program-list に登録されているプログラムを | |
;; fakecygpty.exe 経由で起動する | |
(defadvice start-process (around ad-start-process-to-fake last activate) | |
(if (and (member (file-name-sans-extension | |
(file-name-nondirectory (ad-get-arg 2))) | |
fakery-program-list) | |
(not (delq nil (mapcar | |
(lambda (x) (string-match x (ad-get-arg 0))) | |
exclusion-process-regexp-list)))) | |
(progn | |
(ad-set-args 3 (cons (ad-get-arg 2) (ad-get-args 3))) | |
(ad-set-arg 2 "fakecygpty") | |
ad-do-it) | |
ad-do-it)) | |
;; 色を設定する | |
;; http://d.hatena.ne.jp/aki77/20090506/1241609426 | |
;; http://d.hatena.ne.jp/syohex/20110707/1310052264 | |
;; '黒', '赤', '緑', '黄', '青', 'マゼンダ', 'シアン', '白' | |
(setq ansi-term-color-vector | |
[unspecified "black" "red1" "lime green" "yellow2" | |
"DeepSkyBlue3" "magenta2" "cyan2" "white"]) | |
;; (setq term-default-fg-color "White" | |
;; term-default-bg-color "Black" | |
;; ansi-term-color-vector | |
;; [unspecified "black" "#ff5555" "#55ff55" "#ffff55" "#5555ff" | |
;; "#ff55ff" "#55ffff" "white"]) | |
;; タブ等を出している場合に、ターミナルの高さを合わせる | |
(add-hook 'term-mode-hook | |
(lambda () | |
(setq term-height (- (window-height) 2)))) | |
;; terminal 利用時の locale-coding-system を utf-8 とする(文字化け対策) | |
;;( (setq locale-coding-system 'utf-8) の設定を避けたい場合に ) | |
(defadvice term-emulate-terminal (around ad-term-emulate-terminal activate) | |
(let ((locale-coding-system 'utf-8)) | |
ad-do-it)) | |
;; 漢字を含むディレクトリに cd できるようにする | |
(defadvice cd (around ad-cd activate) | |
(let ((dir (decode-coding-string dir 'utf-8))) | |
ad-do-it)) | |
;; C-c a で ansi-term を起動する | |
;; (global-set-key "\C-ca" | |
;; (lambda () | |
;; (interactive) | |
;; (ansi-term "bash"))) | |
;; emacs に認識させたいキーがある場合は、term-unbind-key-list に追加する | |
(add-to-list 'term-unbind-key-list "C-\\") ; IME の切り替えを有効とする | |
(add-to-list 'term-unbind-key-list "M-x") | |
(add-to-list 'term-unbind-key-list "C-q") | |
;; (add-to-list 'term-unbind-key-list "C-o") ; IME の切り替えに C-o を設定している場合 | |
;; terminal に直接通したいキーがある場合は、以下をアンコメントする | |
(delete "<ESC>" term-unbind-key-list) | |
;; (delete "C-h" term-unbind-key-list) | |
;; (delete "C-z" term-unbind-key-list) | |
;; (delete "C-x" term-unbind-key-list) | |
;; (delete "C-c" term-unbind-key-list) | |
;; (delete "C-y" term-unbind-key-list) | |
;; C-c t で multi-term を起動する | |
(global-set-key "\C-ct" 'multi-term) | |
;; t: skip dedicated window when using `other-window'. | |
(setq multi-term-dedicated-skip-other-window-p t) | |
;; focus dedicated window after open | |
(setq multi-term-dedicated-select-after-open-p t) | |
(setq multi-term-dedicated-close-back-to-open-buffer-p t) | |
(defun term-send-tab () (interactive) (term-send-raw-string "\C-i")) | |
;; interrupt | |
(defadvice term-interrupt-subjob | |
(around ad-term-interrupt-subjob activate) | |
(term-send-raw-string "\C-c")) | |
;; paste via helm interface | |
(defadvice insert-for-yank | |
(around insert-for-yank-on-term (str) activate) | |
(if (eq major-mode 'term-mode) | |
(term-send-raw-string (ad-get-arg 0)) | |
ad-do-it)) | |
;; (lazyload (multi-term multi-term-dedicated-open) "multi-term" nil) | |
(add-hook-fn 'term-mode-hook | |
;; mkdir -p ~/.terminfo | |
;; tic -o ~/.terminfo /app/emacs/emacs/etc/e/eterm-color.ti | |
;; ~/.terminfo/65 -> ~/.terminfo/e | |
;; infocmp eterm-color | |
(setenv "TERMINFO" "~/.terminfo") | |
;; keybind | |
(define-key term-raw-map (kbd "C-h") 'term-send-backspace) | |
(define-key term-raw-map (kbd "C-y") 'term-paste) | |
(define-key term-raw-map (kbd "M-d") 'term-send-forward-kill-word) | |
(define-key term-raw-map (kbd "M-<backspace>") 'term-send-backward-kill-word) | |
(define-key term-raw-map (kbd "M-w") 'term-send-backward-kill-word) | |
(define-key term-raw-map (kbd "M-DEL") 'term-send-backward-kill-word) | |
(define-key term-raw-map (kbd "TAB") 'term-send-tab) | |
(define-key term-raw-map (kbd "C-c p") 'multi-term-prev) | |
(define-key term-raw-map (kbd "C-c n") 'multi-term-next) | |
(define-key term-raw-map (kbd "C-SPC") nil) | |
(define-key term-raw-map (kbd "C-@") nil) ; for putty | |
(define-key term-raw-map (kbd "C-v") nil) | |
(setq system-uses-terminfo t) | |
(setq term-default-bg-color nil) | |
(setq term-default-fg-color nil) | |
(setq multi-term-scroll-show-maximum-output t) | |
(setq show-trailing-whitespace nil) | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment