Created
January 14, 2018 00:52
-
-
Save itouhiro/cad0b1c4f7ac833490bf86e694aba76a 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
;;; -*- mode: emacs-lisp; syntax: elisp -*- | |
;; Time-stamp: <Jan 10 2018> | |
;; ------------------------------------------------------------------------ | |
;; Keyset | |
(global-set-key "\C-h" 'backward-delete-char) ;C-h as BackSpace | |
(global-set-key "\M-?" 'help-for-help) ;M-? as help | |
(global-set-key "\C-q" 'dabbrev-expand) | |
;(global-set-key "\C-q" 'quoted-insert) ;C-q original | |
(global-set-key "\C-x\C-b" 'buffer-menu) | |
(global-set-key "\C-z" 'suspend-frame) ; C-z original | |
(global-set-key "\C-x\C-t" 'delete-trailing-whitespace) | |
(global-set-key "\M-\C-t" 'delete-trailing-whitespace) | |
;(global-set-key (kbd "RET") 'newline-and-indent) | |
;(global-set-key "\M-\C-s" 'search-forward-regexp) | |
(global-set-key (kbd "M-RET") 'newline-and-indent) | |
;; move by words | |
(global-set-key [C-right] 'forward-word) | |
(global-set-key [C-left] 'backward-word) | |
(global-set-key "\M-s" 'backward-word) | |
(global-set-key "\M-e" 'previous-line) | |
(global-set-key "\M-d" 'next-line) | |
(global-set-key "\M-a" 'move-beginning-of-line) | |
(global-set-key "\M-g" 'end-of-line) | |
(global-set-key "\M-r" 'scroll-down) | |
(global-set-key "\M-v" 'scroll-up) | |
;; PuTTY | |
(global-set-key [select] 'end-of-line) | |
;; Backup | |
;; tmp file saving directory | |
(setq auto-save-list-file-prefix "~/.emacs.d/tmp/.saves-") | |
;; backup.file~ location | |
(setq make-backup-files t) | |
(setq backup-directory-alist | |
(cons (cons "\\.*$" (expand-file-name "~/.emacs.d/tmp")) | |
backup-directory-alist)) | |
;; 自動セーブファイル(#ファイル名#)の設定 | |
(setq auto-save-file-name-transforms | |
`((".*/Dropbox/.*" ,(expand-file-name "~/.emacs.d/tmp/") t))) | |
;; CharCode | |
(set-default-coding-systems 'utf-8-unix) | |
(set-buffer-file-coding-system 'utf-8-unix) | |
(set-keyboard-coding-system 'utf-8-unix) | |
(set-terminal-coding-system 'utf-8-unix) | |
;; decode-translation-table の設定 | |
(coding-system-put 'euc-jp :decode-translation-table | |
(get 'japanese-ucs-jis-to-cp932-map 'translation-table)) | |
(coding-system-put 'iso-2022-jp :decode-translation-table | |
(get 'japanese-ucs-jis-to-cp932-map 'translation-table)) | |
;以下を有効化→U+301CがU+FF5Eに自動変換される | |
;(coding-system-put 'utf-8 :decode-translation-table | |
; (get 'japanese-ucs-jis-to-cp932-map 'translation-table)) | |
;; encode-translation-table の設定 | |
(coding-system-put 'euc-jp :encode-translation-table | |
(get 'japanese-ucs-cp932-to-jis-map 'translation-table)) | |
(coding-system-put 'iso-2022-jp :encode-translation-table | |
(get 'japanese-ucs-cp932-to-jis-map 'translation-table)) | |
(coding-system-put 'cp932 :encode-translation-table | |
(get 'japanese-ucs-jis-to-cp932-map 'translation-table)) | |
;以下を有効化→U+301CがU+FF5Eに自動変換される | |
;(coding-system-put 'utf-8 :encode-translation-table | |
; (get 'japanese-ucs-jis-to-cp932-map 'translation-table)) | |
;; charset と coding-system の優先度設定 | |
(set-charset-priority 'ascii 'japanese-jisx0208 'latin-jisx0201 | |
'katakana-jisx0201 'iso-8859-1 'cp1252 'unicode) | |
(set-coding-system-priority 'utf-8 'euc-jp 'iso-2022-jp 'cp932) | |
;; PuTTY 用の terminal-coding-system の設定 | |
;(apply 'define-coding-system 'utf-8-for-putty | |
; "UTF-8 (translate jis to cp932)" | |
; :encode-translation-table | |
; (get 'japanese-ucs-jis-to-cp932-map 'translation-table) | |
; (coding-system-plist 'utf-8)) | |
;(set-terminal-coding-system 'utf-8-for-putty) | |
;; East Asian Ambiguous | |
(defun set-east-asian-ambiguous-width (width) | |
(while (char-table-parent char-width-table) | |
(setq char-width-table (char-table-parent char-width-table))) | |
(let ((table (make-char-table nil))) | |
(dolist (range | |
'(#x00A1 #x00A4 (#x00A7 . #x00A8) #x00AA (#x00AD . #x00AE) | |
(#x00B0 . #x00B4) (#x00B6 . #x00BA) (#x00BC . #x00BF) | |
#x00C6 #x00D0 (#x00D7 . #x00D8) (#x00DE . #x00E1) #x00E6 | |
(#x00E8 . #x00EA) (#x00EC . #x00ED) #x00F0 | |
(#x00F2 . #x00F3) (#x00F7 . #x00FA) #x00FC #x00FE | |
#x0101 #x0111 #x0113 #x011B (#x0126 . #x0127) #x012B | |
(#x0131 . #x0133) #x0138 (#x013F . #x0142) #x0144 | |
(#x0148 . #x014B) #x014D (#x0152 . #x0153) | |
(#x0166 . #x0167) #x016B #x01CE #x01D0 #x01D2 #x01D4 | |
#x01D6 #x01D8 #x01DA #x01DC #x0251 #x0261 #x02C4 #x02C7 | |
(#x02C9 . #x02CB) #x02CD #x02D0 (#x02D8 . #x02DB) #x02DD | |
#x02DF (#x0300 . #x036F) (#x0391 . #x03A9) | |
(#x03B1 . #x03C1) (#x03C3 . #x03C9) #x0401 | |
(#x0410 . #x044F) #x0451 #x2010 (#x2013 . #x2016) | |
(#x2018 . #x2019) (#x201C . #x201D) (#x2020 . #x2022) | |
(#x2024 . #x2027) #x2030 (#x2032 . #x2033) #x2035 #x203B | |
#x203E #x2074 #x207F (#x2081 . #x2084) #x20AC #x2103 | |
#x2105 #x2109 #x2113 #x2116 (#x2121 . #x2122) #x2126 | |
#x212B (#x2153 . #x2154) (#x215B . #x215E) | |
(#x2160 . #x216B) (#x2170 . #x2179) (#x2190 . #x2199) | |
(#x21B8 . #x21B9) #x21D2 #x21D4 #x21E7 #x2200 | |
(#x2202 . #x2203) (#x2207 . #x2208) #x220B #x220F #x2211 | |
#x2215 #x221A (#x221D . #x2220) #x2223 #x2225 | |
(#x2227 . #x222C) #x222E (#x2234 . #x2237) | |
(#x223C . #x223D) #x2248 #x224C #x2252 (#x2260 . #x2261) | |
(#x2264 . #x2267) (#x226A . #x226B) (#x226E . #x226F) | |
(#x2282 . #x2283) (#x2286 . #x2287) #x2295 #x2299 #x22A5 | |
#x22BF #x2312 (#x2460 . #x24E9) (#x24EB . #x254B) | |
(#x2550 . #x2573) (#x2580 . #x258F) (#x2592 . #x2595) | |
(#x25A0 . #x25A1) (#x25A3 . #x25A9) (#x25B2 . #x25B3) | |
(#x25B6 . #x25B7) (#x25BC . #x25BD) (#x25C0 . #x25C1) | |
(#x25C6 . #x25C8) #x25CB (#x25CE . #x25D1) | |
(#x25E2 . #x25E5) #x25EF (#x2605 . #x2606) #x2609 | |
(#x260E . #x260F) (#x2614 . #x2615) #x261C #x261E #x2640 | |
#x2642 (#x2660 . #x2661) (#x2663 . #x2665) | |
(#x2667 . #x266A) (#x266C . #x266D) #x266F #x273D | |
(#x2776 . #x277F) (#xE000 . #xF8FF) (#xFE00 . #xFE0F) | |
#xFFFD | |
)) | |
(set-char-table-range table range width)) | |
(optimize-char-table table) | |
(set-char-table-parent table char-width-table) | |
(setq char-width-table table))) | |
(set-east-asian-ambiguous-width 2) | |
;; 全角チルダ/波ダッシュをWindowsスタイルにする | |
;(let ((table (make-translation-table-from-alist '((#x301c . #xff5e))) )) | |
; (mapc | |
; (lambda (coding-system) | |
; (coding-system-put coding-system :decode-translation-table table) | |
; (coding-system-put coding-system :encode-translation-table table) | |
; ) | |
; '(utf-8 cp932 utf-16le))) | |
;; cp932エンコード時の表示を「P」とする | |
(coding-system-put 'cp932 :mnemonic ?P) | |
(coding-system-put 'cp932-dos :mnemonic ?P) | |
(coding-system-put 'cp932-unix :mnemonic ?P) | |
(coding-system-put 'cp932-mac :mnemonic ?P) | |
;; Behavior | |
;; ウインドウ分割時に画面外へ出る文章を折り返す | |
(setq-default truncate-partial-width-windows nil) | |
;; 編集行のハイライト | |
;(global-hl-line-mode) | |
;; 変更箇所を目立たせる | |
;(global-highlight-changes 'active) | |
;(add-hook 'write-file-hooks 'highlight-changes-rotate-faces) | |
;; 前回編集していた場所を記憶し,ファイルを開いた時にそこへカーソルを移動 | |
(load "saveplace") | |
(setq-default save-place t) | |
(setq save-place-file "~/.emacs.d/.emacs-places") | |
;; file名の補完で大文字小文字を区別しない | |
(setq completion-ignore-case t) | |
;; バッファ自動再読み込み | |
(global-auto-revert-mode 1) | |
;; elisp変数表示のとき途中で省略しない | |
(setq eval-expression-print-level nil) | |
(setq eval-expression-print-length nil) | |
(setq diff-switches "-u") | |
;; auto-insert LAST-MODIFIED-DATE | |
(if (not (memq 'time-stamp write-file-hooks)) | |
(setq write-file-hooks | |
(cons 'time-stamp write-file-hooks))) | |
(setq time-stamp-line-limit 40) | |
(setq system-time-locale "C") | |
(setq time-stamp-format "%3b %02d %:y") ; Jan 22 2012 | |
;(setq time-stamp-format "%:y-%02m-%02d %02H:%02M JST") ;2010-11-19 09:27 JST | |
;(setq time-stamp-format "%:y-%02m-%02dT%02H:%02M:%02S+09:00") ;2010-11-19T09:27:32+09:00 | |
;; insert-current-time-string | |
(defun insert-current-day-string () | |
"Inserts current time string at point." | |
(interactive) | |
(move-beginning-of-line nil) ;行頭に移動 | |
(goto-char (point-min)) ;buffer先頭に移動 | |
(setq insert-current-time-wday (vector '日 '月 '火 '水 '木 '金 '土)) | |
(insert (format "%s(%s)\n%s " | |
(format-time-string "%Y-%02m-%d") | |
(aref insert-current-time-wday (string-to-int (format-time-string "%w"))) | |
(format-time-string "%H:%M")))) | |
(defun insert-current-time-string () | |
"Inserts current time string at point." | |
(interactive) | |
(insert (format "%s " (format-time-string "%H:%M")))) | |
(global-set-key "\C-xT" 'insert-current-day-string) | |
(global-set-key "\C-xt" 'insert-current-time-string) | |
;; kill-ring でテキスト属性(色情報など)を保存しない | |
;; http://www-tsujii.is.s.u-tokyo.ac.jp/~yoshinag/tips/elisp_tips.html#yankoff | |
(defadvice kill-new (around my-kill-ring-disable-text-property activate) | |
(let ((new (ad-get-arg 0))) | |
(set-text-properties 0 (length new) nil new) | |
ad-do-it)) | |
;; タブ , 全角スペース を色つき表示 (色名は M-x list-color-displayで調べる) | |
;; http://homepage1.nifty.com/blankspace/emacs/color.html | |
(defface my-face-b-1 '((t (:background "gray32"))) nil) | |
(defface my-face-b-2 '((t (:background "gray26"))) nil) | |
(defface my-face-u-1 '((t (:foreground "DarkSlateBlue" :underline t))) nil) | |
;(defface my-face-u-1 '((t (:foreground "SteelBlue" :underline t))) nil) | |
(defvar my-face-b-1 'my-face-b-1) | |
(defvar my-face-b-2 'my-face-b-2) | |
(defvar my-face-u-1 'my-face-u-1) | |
(defadvice font-lock-mode (before my-font-lock-mode ()) | |
(font-lock-add-keywords | |
major-mode | |
'(("\t" 0 my-face-b-2 append) | |
(" " 0 my-face-b-1 append) | |
("[ \t]+$" 0 my-face-u-1 append) | |
;;("[\r]*\n" 0 my-face-r-1 append) | |
))) | |
(ad-enable-advice 'font-lock-mode 'before 'my-font-lock-mode) | |
(ad-activate 'font-lock-mode) | |
;; 編集中のファイルを開き直す | |
;; http://www.bookshelf.jp/soft/meadow_24.html#SEC254 | |
;; - revert-buffer は yes/no の確認がうるさい | |
;; - find-alternate-file は開き直したら元のバッファの状態に戻れない | |
(defun reopen-file () | |
(interactive) | |
(let ((file-name (buffer-file-name)) | |
(old-supersession-threat | |
(symbol-function 'ask-user-about-supersession-threat)) | |
(point (point))) | |
(when file-name | |
(fset 'ask-user-about-supersession-threat (lambda (fn))) | |
(unwind-protect | |
(progn | |
(erase-buffer) | |
(insert-file file-name) | |
(set-visited-file-modtime) | |
(goto-char point)) | |
(fset 'ask-user-about-supersession-threat | |
old-supersession-threat))))) | |
(global-set-key "\C-xR" 'reopen-file) | |
;; コンテキスト依存バッファ移動 | |
;; 画面分割されていない→分割して新しいバッファに移動 | |
;; 分割されている→別バッファに移動 | |
;; http://d.hatena.ne.jp/rubikitch/20100210/emacs | |
(defun other-window-or-split () | |
(interactive) | |
(cond ((one-window-p) | |
;; 横161文字以上なら横に分割、未満なら縦分割 | |
(if (< 160 (frame-width)) | |
(split-window-horizontally) | |
(split-window) | |
) | |
(other-window 1) | |
(setq-default truncate-partial-width-windows nil) ;なぜかときどきtになるのでここに入れる | |
(buffer-menu) | |
) | |
(t | |
(other-window 1)))) | |
(global-set-key (kbd "C-t") 'other-window-or-split) | |
;; 一文字検索移動 | |
;; http://dev.ariel-networks.com/wp/documents/aritcles/emacs/part16 | |
(defvar last-search-char nil) | |
(defvar last-search-direction 'forward) | |
;; 一文字検索(順方向) | |
(defun search-forward-with-char (char) | |
(interactive "cMove to Char: ") | |
(if (eq (char-after (point)) char) (forward-char)) | |
(and (search-forward (char-to-string char) nil t) | |
(backward-char)) | |
(setq last-search-char char | |
last-search-direction 'forward)) | |
;; 一文字検索(逆方向) | |
(defun search-backward-with-char (char) | |
(interactive "cMove backward to Char: ") | |
(search-backward (char-to-string char) nil t) | |
(setq last-search-char char | |
last-search-direction 'backward)) | |
;(global-set-key "\C-]" 'search-forward-with-char) | |
;(global-set-key "\C-\M-]" 'search-backward-with-char) | |
;(global-set-key "\C-\\" 'search-backward-with-char) | |
(global-set-key "\C-j" 'search-forward-with-char) | |
(global-set-key "\C-o" 'search-backward-with-char) | |
;; *scratch* bufferでもC-jを一文字検索にする | |
(define-key lisp-interaction-mode-map "\C-j" 'search-forward-with-char) | |
(define-key lisp-interaction-mode-map "\C-x\C-j" 'eval-print-last-sexp) | |
;; 最後に実行した一文字検索を再実行 | |
(defun search-repeat-with-char () | |
(interactive) | |
(cond | |
((eq nil last-search-char) (message "You haven't searched yet.")) | |
((eq last-search-direction 'forward) | |
(or (search-forward-with-char last-search-char) (backward-char))) | |
((eq last-search-direction 'backward) (search-backward-with-char last-search-char)))) | |
;(global-set-key "\C-]" 'search-forward-with-char) | |
;(global-set-key "\C-o" 'search-repeat-with-char) | |
(global-set-key "\C-\\" 'search-repeat-with-char) | |
;; 最後のマーク(C-SPC C-SPC)に移動 | |
(defun move-to-mark () | |
(interactive) | |
(let ((pos (point))) | |
(goto-char (mark)) | |
(push-mark pos))) | |
(global-set-key "\C-\M-j" 'move-to-mark) | |
;; Erase memubar(text), toolbar(icon), scrollbar | |
(menu-bar-mode -1) | |
(line-number-mode t) | |
(column-number-mode t) | |
;入力バッファ以外はカーソル非表示 | |
(setq cursor-in-non-selected-windows nil) | |
; beep | |
(setq visible-bell nil) | |
; カーソルを点滅させない | |
(blink-cursor-mode nil) | |
; スプラッシュ(起動画面)非表示 | |
(setq inhibit-startup-message t) | |
; リージョンに色をつける | |
(setq transient-mark-mode t) | |
; font-lock use-all | |
(global-font-lock-mode t) | |
;level of fontification: least level | |
(setq font-lock-maximum-decoration | |
'((c-mode . 1) (c++-mode . 1))) | |
;; FrameTitle | |
(setq frame-title-format "%b") | |
;; バッファ画面外文字の切り詰め表示 | |
(setq truncate-lines nil) | |
;; ウィンドウ縦分割時のバッファ画面外文字の切り詰め表示 | |
(setq truncate-partial-width-windows t) | |
;; 同一バッファ名にディレクトリ付与 | |
(require 'uniquify) | |
(setq uniquify-buffer-name-style 'forward) | |
(setq uniquify-buffer-name-style 'post-forward-angle-brackets) | |
(setq uniquify-ignore-buffers-re "*[^*]+*") | |
;; スクロール時のカーソル位置の維持 | |
(setq scroll-preserve-screen-position t) | |
;; スクロール行数(一行ごとのスクロール) | |
(setq vertical-centering-font-regexp ".*") | |
(setq scroll-conservatively 35) | |
(setq scroll-margin 0) | |
(setq scroll-step 1) | |
;; 画面スクロール時の重複行数 | |
(setq next-screen-context-lines 1) | |
;; 対応する括弧をハイライトさせる | |
(show-paren-mode t) | |
;; 最近使ったファイル | |
(require 'recentf) | |
(recentf-mode 1) | |
(global-set-key "\C-x\ \C-r" 'recentf-open-files) | |
;(setq recentf-save-file (expand-file-name ".recentf" user-emacs-directory)) | |
(setq recentf-max-saved-items 200) | |
(setq recentf-exclude '(".recentf" "bookmarks")) | |
;; 変更のあったファイルの自動再読み込み | |
(global-auto-revert-mode 1) | |
;; dired | |
;; http://qiita.com/l3msh0@github/items/8665122e01f6f5ef502f | |
;; diredを2つのウィンドウで開いている時に、デフォルトの移動orコピー先をもう一方のdiredで開いているディレクトリにする | |
(setq dired-dwim-target t) | |
;; ディレクトリを再帰的にコピーする | |
(setq dired-recursive-copies 'always) | |
;; diredバッファでC-sした時にファイル名だけにマッチするように | |
(setq dired-isearch-filenames t) | |
;; dired バッファを編集(一括ファイル名リネーム) | |
(require 'wdired) | |
(define-key dired-mode-map "r" 'wdired-change-to-wdired-mode) | |
(define-key wdired-mode-map "\C-j" 'search-forward-with-char) | |
(define-key wdired-mode-map "\C-o" 'search-backward-with-char) | |
(define-key wdired-mode-map "\C-\\" 'search-repeat-with-char) | |
(cd "~") ; start on home directory | |
(buffer-menu) ; 初期画面をいきなりbuffer-menuにする | |
;; disable version control | |
(setq vc-handled-backends nil) | |
(remove-hook 'find-file-hook 'vc-find-file-hook) | |
(remove-hook 'kill-buffer-hook 'vc-kill-buffer-hook) | |
;; coding style | |
;[TAB]キー押下時にTabではなくスペース入力 | |
(setq-default indent-tabs-mode nil) | |
;; cc-mode | |
(defun my-c-mode-common-hook () | |
(c-set-style "java") | |
) | |
(add-hook 'c-mode-common-hook 'my-c-mode-common-hook) | |
(add-to-list 'auto-mode-alist '("\\.c\\'" . c++-mode)) | |
(add-to-list 'auto-mode-alist '("\\.cpp\\'" . c++-mode)) | |
(add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode)) | |
(add-to-list 'auto-mode-alist '("\\.pl\\'" . perl-mode)) | |
(add-to-list 'auto-mode-alist '("\\.rb\\'" . ruby-mode)) | |
;; javascript-mode | |
(setq js-indent-level 2) | |
(add-to-list 'auto-mode-alist '("\\.json\\'" . js-mode)) | |
(add-to-list 'auto-mode-alist '("\\.jsfl\\'" . js-mode)) | |
(add-to-list 'auto-mode-alist '("\\.jsx\\'" . js-mode)) | |
;; php-mode | |
(add-to-list 'auto-mode-alist '("\\.ctp\\'" . html-mode)) | |
(add-hook 'php-mode-hook | |
'(lambda() | |
(setq tab-width 4) | |
(setq c-basic-offset 4) | |
(setq c-hanging-comment-ender-p nil) | |
(setq indent-tabs-mode nil) | |
(setq php-manual-path "/usr/share/php/php-chunked-xhtml") | |
(setq php-manual-url "http://www.phppro.jp/phpmanual/") | |
)) | |
(add-hook 'php-mode-hook (lambda () | |
(defun ywb-php-lineup-arglist-intro (langelem) | |
(save-excursion | |
(goto-char (cdr langelem)) | |
(vector (+ (current-column) c-basic-offset)))) | |
(defun ywb-php-lineup-arglist-close (langelem) | |
(save-excursion | |
(goto-char (cdr langelem)) | |
(vector (current-column)))) | |
(c-set-offset 'arglist-intro 'ywb-php-lineup-arglist-intro) | |
(c-set-offset 'arglist-close 'ywb-php-lineup-arglist-close))) | |
;; EXTERNAL LIB | |
;; RegExp like Perl | |
;(add-to-list 'load-path "~/.emacs.d") | |
;(require 'foreign-regexp) | |
;; Choose your taste of foreign regexp from 'perl, 'ruby or 'javascript. | |
;; Tell re-builder to use foreign regexp. | |
;(custom-set-variables | |
;'(foreign-regexp/regexp-type 'perl) | |
;'(reb-re-syntax 'foreign-regexp)) | |
;(cond | |
; ((= emacs-major-version 24) | |
; (load "~/.emacs.d/emacs24.el")) | |
; ((= emacs-major-version 23) | |
; (load "~/.emacs.d/emacs23.el")) | |
;) | |
;; Linux or Windows | |
(cond | |
((equal system-type 'windows-nt) | |
(load "~/.emacs.d/mswindows.el")) | |
) | |
;; end of file | |
; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment