Skip to content

Instantly share code, notes, and snippets.

@tam17aki
Last active August 29, 2015 14:04
Show Gist options
  • Save tam17aki/30409a2646beef9b8cbd to your computer and use it in GitHub Desktop.
Save tam17aki/30409a2646beef9b8cbd to your computer and use it in GitHub Desktop.
;; 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