dot.emacs の設定
新しいの
;;-------------------------------------------------- ;; Load Path ;;-------------------------------------------------- ;; Added by Package.el. This must come before configurations of ;; installed packages. Don't delete this line. If you don't want it, ;; just comment it out by adding a semicolon to the start of the line. ;; You may delete these explanatory comments. (package-initialize) (setq load-path (append (list (expand-file-name "~/mylisp")) load-path)) ;;-------------------------------------------------- ;; theme ;;-------------------------------------------------- (load-theme 'zenburn t) ;;(load-theme 'hc-zenburn t) ;;-------------------------------------------------- ;; Package ;;-------------------------------------------------- (require 'package) ;; melpa を追加 (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) (package-initialize) ;;-------------------------------------------------- ;; Language Settings ;;-------------------------------------------------- ;; set language as Japanese (set-language-environment 'Japanese) ;; coding UTF8 (set-language-environment 'utf-8) (prefer-coding-system 'utf-8) ;;-------------------------------------------------- ;; Key bindings ;;-------------------------------------------------- ;; C-z (global-set-key "\C-z" 'undo) ;; C-x C-z (global-set-key "\C-x\C-z" 'suspend-emacs) ;; C-h ;;(global-set-key "\C-h" 'delete-backward-char) ;; help ;;(global-set-key "\C-c\C-h" 'help-command) ;; comment out ;;(global-set-key "\C-c;" 'comment-dwim) ;; move window ;;(global-set-key "\C-t" 'other-window) (global-set-key [f9] 'other-window) ;; move buffer (global-set-key [f11] 'previous-buffer) (global-set-key [f12] 'next-buffer) ;; next-error (default) ;;(global-set-key "\M-gn" 'next-error) ;; prev-error (default) ;;(global-set-key "\M-gp" 'prev-error) ;; open header or #include file. (global-set-key "\C-c\C-h" 'ff-find-other-file) ;;-------------------------------------------------- ;; Mouse ;;-------------------------------------------------- (xterm-mouse-mode t) ;;-------------------------------------------------- ;; Preference ;;-------------------------------------------------- ;; デフォルトの起動時のメッセージを表示しない (setq inhibit-startup-message t) ;; メニューバーの非表示 (menu-bar-mode -1) ;; ツールバーの非表示 (tool-bar-mode -1) ;; 分割数を制限 (setq split-height-threshold nil) (setq split-width-thireshold nil) ;; Disk上のファイルが変更されたらそれを読み込む。 ;;(setq global-auto-revert-mode 1) ;; font-lock mode いるかね? 遅くならない? ;;(global-font-lock-mode t) ;; ファイルの末尾は改行になるのを強制 ;;(setq require-final-newline t) ;; next-line でバッファの最後に改行を入れない(今はデフォルトで nil なので設定不要) ;;(setq next-line-add-newlines nil) ;; Emacsの終了が遅くなるので Backup は作らない (setq backup-inhibited t) (setq delete-auto-save-files t) (setq make-backup-files nil) (setq auto-save-default nil) ;; でも編集位置は記憶しておく。終了が遅くなるけど (save-place-mode 1) ;; 列の番号を表示 (column-number-mode t) ;; 行番号を表示 (global-linum-mode t) (setq linum-format "%5d ") ;;(set-face-attribute 'linum nil :foreground "gray55" :background "gray20") ;; 関数名を表示 (which-function-mode t) ;;(setq-default scroll-step 0) ;; 右端で折り返さない ;;(setq-default truncate-lines t) ;; C-x 3 などの縦分割ウィンドウで右端で折り返さない ;;(setq-default truncate-partial-width-windows t) ;; コンパイル時のウィンドウの高さ (setq-default compilation-window-height 10) ;; Tabにスペース4つを利用 (setq-default tab-width 4) (setq-default indent-tabs-mode nil) ;; 1行ごとにスクロールする (1 だとたまにジャンプするので巨大数を指定する) (setq scroll-conservatively 10000) ;; スクロール時にカーソル位置を保持 (setq scroll-preserve-screen-position t) ;; スクロールの上下マージン (setq-default scroll-margin 1) ;; カーソル行を一瞬光らせる (beacon-mode 1) ;; カーソル行をハイライト ;; customize-face で常に hl-face がデフォルトになったりするので使わない ;; (GLOBAL-hl-line-mode nil) ;; BS や Delete キーでリージョン内の文字を削除 (delete-selection-mode 1) ;; selection hilighting (デフォルトで t なので設定不要) ;;(setq-default transient-mark-mode t) ;; 対応する括弧を光らせる (show-paren-mode t) ;; 括弧を自動で補完する (electric-pair-mode 1) ;; 行頭の C-k で改行も kill する (setq kill-whole-line t) ;; 最近開いたファイルが File メニュー内にあらわさる ;; ivy 使うのでいらない ;;(recentf-mode) ;;-------------------------------------------------- ;; C-Mode Common Hook ;;-------------------------------------------------- (defun my-c-mode-common-hook () ;; ggtags on (ggtags-mode t) ;; 行コメント開始位置 (setq comment-column 48) ;; コメント形式 ;; (setq comment-start "/* ") ;; (setq comment-end " */") ;; (setq comment-style (quote aligned)) ;; case sensitive search ;;(setq case-fold-search nil) ;; Backcpaceでタブを空白に変換しない ;; (setq c-backspace-function 'backward-delete-char) ;; hungry-delete ;;(setq c-hungry-delete-key t) ;; インデント情報の表示 ;; (setq c-echo-syntactic-information-p t) ;; ワード単位の移動 camelCase に対応 ;; (subword-mode) ;; styleの選択。いらないのでは? これが重くなく原因かな。 ;;(c-set-style "stroustrup") ;; インデント規則 (c-set-style の後に設定する必要がある) (c-set-offset 'innamespace 0) (c-set-offset 'defun-block-intro +4) (c-set-offset 'statement-block-intro +4) ) (add-hook 'c-mode-common-hook 'my-c-mode-common-hook) ;;-------------------------------------------------- ;; ivy/counsel ;;-------------------------------------------------- (ivy-mode 1) (setq enable-recursive-minibuffers t) (setq ivy-use-virtual-buffers t) (setq ivy-count-format "(%d/%d)") ;; 候補の表示行数最大値 (setq ivy-height (truncate (* (window-height) 0.5))) ;;(setq ivy-height 32) ;; 常に固定の行数を表示するかどうか ;;(setq ivy-fixed-height-minibuffer nil) ;; Keybindings ;;(global-set-key (kbd "M-x") 'counsel-M-x) ;;(global-set-key (kbd "C-x C-f") 'counsel-find-file) (global-set-key (kbd "C-c c s") 'swiper) (global-set-key (kbd "C-C C-r") 'ivy-resume) ;;-------------------------------------------------- ;; counsel-gtags ;;-------------------------------------------------- (add-hook 'c-mode-hook 'counsel-gtags-mode) (add-hook 'c++-mode-hook 'counsel-gtags-mode) (with-eval-after-load 'counsel-gtags (define-key counsel-gtags-mode-map (kbd "C-c g b") 'counsel-gtags-go-backward) (define-key counsel-gtags-mode-map (kbd "C-c g f") 'counsel-gtags-go-forward) (define-key counsel-gtags-mode-map (kbd "C-]") 'counsel-gtags-dwim) (define-key counsel-gtags-mode-map (kbd "C-t") 'counsel-gtags-go-backward) ) ;;-------------------------------------------------- ;; ;;-------------------------------------------------- (which-key-mode t) ;;-------------------------------------------------- ;; Customize Settings ;;-------------------------------------------------- ;; カスタマイズを保存するファイル (setq custom-file "~/.emacs.d/customize_settings.el") ;; カスタマイズ用ファイルをロード (load custom-file t)
古いの
dot.emacs。
追加で使っているelispは cygwin-mount.el, doxymacs.el と gtags.el くらい。
(global-set-key [delete] 'delete-char)
(global-set-key [kp-delete] 'delete-char)
;; open #include <...> file
(global-set-key "\C-c\C-h" 'ff-find-other-file)
;;(global-set-key [home] 'beginning-of-line)
;;(global-set-key [end] 'end-of-line)
;;(global-set-key [C-home] 'beginning-of-buffer)
;;(global-set-key [C-end] 'end-of-buffer)
;;(global-set-key [C-tab] 'bs-cycle-previous)
;;(global-set-key [C-S-iso-lefttab] 'bs-cycle-next)
;; C-z では、suspend-emacs関数が呼ばれるが、C-x C-zでも同じ
;; なので、C-zはUndoにする
(global-set-key "\C-z" 'advertised-undo) ;; C-x u (Undo)
;;(global-set-key [find] 'overwrite-mode) ;; PC Insert key
;;(global-set-key [insertchar] 'beginning-of-line) ;; PC Home key
;;(global-set-key [prior] 'end-of-line) ;; PC End key
;;(global-set-key [deletechar] 'scroll-down) ;; PC PageUp key
(global-set-key [find] 'beginning-of-line) ;; PC Home key
(global-set-key [select] 'end-of-line) ;; PC End key
(global-set-key [insertchar] 'overwrite-mode) ;; PC Insert key
;;(global-set-key [f3] 'delete-other-windows)
;; ビルド&エラー検索用 ビルド&エラー検索キーマップキーマップ
(global-set-key [f4] 'next-error)
(global-set-key [f14] 'previous-error) ;; f14 == Shift F4
(global-set-key [f5] 'compilation-mode)
;; カレントワードのmanを起動
(global-set-key [f6] (lambda () (interactive) (manual-entry (current-word))))
;;(setq manual-program "jmanx")
(global-set-key [f7] 'compile)
(global-set-key [f8] 'grep)
;; same as C-x o
(global-set-key [f9] 'other-window)
;; move buffer
(global-set-key [f11] 'bs-cycle-previous)
(global-set-key [f12] 'bs-cycle-next)
(global-set-key [mouse-4] 'scroll-down)
(global-set-key [mouse-5] 'scroll-up)
;; (cd "~/")
;; font-lock mode
(global-font-lock-mode t)
;; visual feedback on selections
(setq-default transient-mark-mode t)
;; last newline
(setq require-final-newline t)
;; not add lines
(setq next-line-add-newlines nil)
;;(setq backup-inhibited t)
;;(setq delete-auto-save-files t)
;;(setq make-backup-files nil)
;;(setq auto-save-default nil)
;; 列数を表示する
(column-number-mode t)
;; 左端に行数を表示する
(global-linum-mode t)
;; カーソルの点滅をやめる
(blink-cursor-mode 0)
;; カーソル行をハイライトする
;;(global-hl-line-mode t)
(setq kill-whole-line t)
(display-time)
(which-function-mode 1)
(recentf-mode)
;; 対応する括弧を光らせる
(show-paren-mode t)
;;(setq show-paren-style 'mixed) ;; 対応する括弧が画面外のときだけ内容を色変え
;;(setq show-paren-style 'expression) ;; 常に色変え
(set-face-background 'show-paren-match-face "blue") ;; "gray10")
(set-face-foreground 'show-paren-match-face "skyblue") ;;"SkyBlue")
;; スペース、タブなどを可視化
;; コンソールだと化ける→;; (global-whitespace-mode 1)
;; スクロールは1行ごとに
(setq scroll-conservatively 10000)
;; シフト+矢印で範囲選択
;;(setq pc-select-selection-keys-only t)
;;(pc-selection-mode 1)
(setq default-tab-width 4)
;;(add-hook 'shell-mode-hook '(lamda () (setq tab-width 8))) ;; shellモードはタブ8でないと化けるらしい
(setq auto-mode-alist (cons '("\\.h\\'" . c++-mode) auto-mode-alist))
::(setq vc-default-back-end 'CVS)
;; (setq compile-command "date; gcc -g -Wall -o ")
(setq-default scroll-step 0)
;; 右端で折り返さない
;;(setq-default truncate-lines t)
;; C-x 3 などの縦分割ウィンドウで右端で折り返さない
;;(setq-default truncate-partial-width-windows t)
(setq-default compilation-window-height 10)
;;(setq frame-title-format (format "emacs@%s : %%f" (system-name)))
(setq-default frame-title-format "%b")
;; スクロール時にカーソル位置を保持
(setq scroll-preserve-screen-position t)
;; BS や Delete キーでリージョン内の文字を削除
(delete-selection-mode 1)
;; find file at point #include <stdio.h>とか開いてくれる
;; 従来のFindFindはC-u C-x C-Fとなる。
(ffap-bindings)
(setq ffap-c-path
'("/usr/include"
"/usr/include/c++/3.2"
"/usr/local/include"
"../include"))
(defun my-c-mode-common-hook ()
;; my customizations for all of c-mode and related modes
;; コンパイルのときに毎回訊きに来ない
;;(setq compilation-read-command nil)
;; compileのときに使うコマンド
;;(set (make-local-variable 'compile-command) "make -k -C ../Build")
;;
(setq comment-column 48)
;; 先頭でのTabのみインデント処理する。Tab <==> M-i の入れ替えをするので不要
;; (setq c-tab-always-indent nil)
;; { の入力などで自動インデント処理
;; (setq c-auto-newline t)
;; 基本インデント量
(setq c-basic-offset 4)
;; Tabは4
(setq tab-width 4)
;; タブストップの位置
(setq tab-stop-list '(4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120 124 128 132 136 140 144 148 152 156))
;; case sensitive
;;(setq case-fold-search nil)
(setq case-fold-search t)
;; 後退の時タブをスペースに変換しない
(setq c-backspace-function 'backward-delete-char)
;; インデント情報の表示
(setq c-echo-syntactic-information-p t)
;; EnterとC-jの交換
(local-set-key "\C-m" 'newline-and-indent) ;; ReturnをC-jにする
(local-set-key "\C-j" 'newline) ;; C-j をReturnにする
;; TabとM-iの交換
; (local-set-key "\C-i" 'tab-to-tab-stop) ;; Tabキーを普通のTabに
; (local-set-key "\M-i" 'c-indent-command) ;; M-iキーをインデントにする
;; if/for/whileなどの次の行はインデントはそのまま。
(c-set-offset 'substatement-open 0)
;;(c-set-offset 'comment-intro 0)
;; 右端で折り返さない
(setq truncate-lines t) ;; 右端で折り返さない cmd:toggle-truncate-lines
(setq truncate-partial-width-windows t) ;; C-x 3など縦分割ウィンドウで右端で折り返さない
;; ワード単位の移動で camelCase に対応
; (subword-mode)
)
(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
;;~/bak/にバックアップ作成
(setq backup-by-copying t)
(fset 'make-backup-file-name
'(lambda (file)
(concat (expand-file-name "~/bak/")
(file-name-nondirectory file))
))
(if (file-exists-p "~/bak/")
(setq auto-save-list-file-prefix "~/bak/"))
(setq make-backup-files t)
(setq backup-directory-alist
(cons (cons "\\.*$" (expand-file-name "~/bak"))
backup-directory-alist))
;; かんたんなVersionControl
(setq version-control t)
;; 新しいものをいくつ残すか
(setq kept-new-versions 2)
;; 古いものをいくつ残すか
(setq kept-old-versions 2)
;; 尋ねずに削除
(setq delete-old-versions t)
;; 編集位置を記憶
(load "saveplace")
(setq-default save-place t)
;;ロードパスを追加
(setq load-path
(append
(list (expand-file-name "~/mylisp")) load-path))
;; 罫線lispの設定
(if window-system
(autoload 'keisen-mode "keisen-mouse" "MULE 版罫線モード + マウス" t)
(autoload 'keisen-mode "keisen-mule" "MULE 版罫線モード" t))
(require 'doxymacs)
(add-hook 'c-mode-common-hook 'doxymacs-mode)
(require 'gtags)
;; If you hope gtags-mode is on in c-mode then please add c-mode-hook to your
;; $HOME/.emacs like this.
;;
(setq c-mode-hook
'(lambda ()
(gtags-mode 1)
))
;; There are two hooks, gtags-mode-hook and gtags-select-mode-hook.
;; The usage of the hook is shown as follows.
;;
;; [Setting to reproduce old 'Gtags mode']
;;
;; (setq gtags-mode-hook
;; '(lambda ()
;; (setq gtags-pop-delete t)
;; (setq gtags-path-style 'absolute)
;; ))
;;
;; [Setting to make 'Gtags select mode' easy to see]
;;
(setq gtags-select-mode-hook
'(lambda ()
(setq hl-line-face 'underline)
(hl-line-mode 1)
))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; GNU GLOBAL(gtags)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;(autoload 'gtags-mode "gtags" "" t)
(setq gtags-mode-hook
'(lambda ()
(local-set-key "\M-t" 'gtags-find-tag)
(local-set-key "\M-r" 'gtags-find-rtag)
(local-set-key "\M-s" 'gtags-find-symbol)
;(local-set-key "\C-t" 'gtags-pop-stack)
))
(setq inhibit-startup-message t) ; 開始メッセージを削除
(menu-bar-mode -1) ; メニューを消す
(tool-bar-mode -1) ; ツールバーを消す
;; region の色
(set-face-background 'region "SkyBlue")
(set-face-foreground 'region "black")
(if (boundp 'window-system)
(setq initial-frame-alist
(append (list
'(foreground-color . "azure3") ;; 文字が白
'(background-color . "black") ;; 背景は黒
'(border-color . "black")
'(mouse-color . "white")
'(cursor-color . "white")
'(cursor-type . box)
'(menu-bar-lines . 1)
;'(vertical-scroll-bars . nil) ;;スクロールバーはいらない
;;'(font . "MS Gothic 12")
'(font . "MS Gothic 9")
'(width . 120) ;; ウィンドウ幅
'(height . 50) ;; ウィンドウの高さ
'(top . 0) ;;表示位置
;;'(left . 50) ;;表示位置
'(left . 0) ;;表示位置
)
initial-frame-alist)))
(setq default-frame-alist initial-frame-alist)
;;(require 'cygwin-mount) ; cygwin-mount
;;(cygwin-mount-activate) ; cygwin-mount
;; rubydb - ruby debugger
;;(autoload 'rubydb "rubydb3x" "ruby debug" t)
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(comment-style (quote extra-line))
'(ediff-make-buffers-readonly-at-startup t)
'(ediff-split-window-function (quote split-window-horizontally))
'(line-move-visual t))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)