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

追加で使っているelispcygwin-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.
 )