茨城県つくばみらい市から来ました

プログラマーになるために生きています

.emacs

;; ---------------------------------------------------------
;; load-path
;; ---------------------------------------------------------
(setq load-path
      (append
       (list
	(expand-file-name "~/.elisp")
	)
       load-path))

;; ---------------------------------------------------------
;; 自慢の.emacsを貼り付けるスレ
;; ---------------------------------------------------------
;;
;; スタートアップメッセージを表示しない
;(setq inhibit-startup-message t)

;; emacs 終了時に確認する。
(if (eq emacs-major-version 21)
    (setq confirm-kill-emacs 'yes-or-no-p)
  (defun my-save-buffers-kill-emacs ()
    (interactive)
    (if (yes-or-no-p "quit emacs? ")
	(save-buffers-kill-emacs)))
  (global-set-key "\C-x\C-c" 'my-save-buffers-kill-emacs)) 

;;C-x bでbuffersを選ぶ時便利
(iswitchb-default-keybindings)

;; バッファを切り替えるのに C-x e で electric-buffer-list を使う。
(global-set-key "\C-x\C-b" 'electric-buffer-list)


;; iswitchbで勝手にリサイズ
(iswitchb-default-keybindings)
(resize-minibuffer-mode) 

;; iswitchb で絞り込みをやる
(add-hook 'iswitchb-define-mode-map-hook
	  (lambda ()
	    (define-key iswitchb-mode-map "\C-o" 'iswitchb-shrink-buflist)))

(defun iswitchb-shrink-buflist ()
  (interactive)
  (setq iswitchb-buflist iswitchb-matches)
  (erase-buffer))

;; 警告音のかわりに画面フラッシュ
(setq visible-bell t)

;; ステータスラインに時間を表示する
(display-time)

;; 時間表示
(setq display-time-24hr-format t)
(setq display-time-day-and-date t)
(setq display-time-string-forms
      '(month "/" day "(" dayname ") " 24-hours ":" minutes))
(display-time)

;; 行番号・桁番号をモードラインに表示する
(line-number-mode t) ; 行番号
(column-number-mode t) ; 桁番号

;; 画面から出たとき一行だけスクロールさせる
(setq scroll-conservatively 1)

;; バッファの最後の行で next-line しても新しい行を作らない
(setq next-line-add-newlines nil)

;; バッファの最初の行で previous-line しても、
;; "beginning-of-buffer" と注意されないようにする。
(defun previous-line (arg)
  (interactive "p")
  (if (interactive-p)
      (condition-case nil
	  (line-move (- arg))
	((beginning-of-buffer end-of-buffer)))
    (line-move (- arg)))
  nil)

;; hoge.txt~ みたいなバックアップファイルを作らないようにする
; (setq backup-inhibited t)

;; c-mode その他で色が付くようにする
(global-font-lock-mode)

;; 検索とかリージョンを色付きに。
(setq transient-mark-mode t)
(setq search-highlight t)
(setq query-replace-highlight t)

;; C-tで別のウィンドウに切り替える
(global-set-key "\C-t" 'other-window)

;; カスタムelisp
; (setq custom-file "~/.custom.el")

;; ---------------------------------------------------------
;; For Ruby
;; ---------------------------------------------------------
;; wget http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/misc/README
;; wget http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/misc/inf-ruby.el
;; wget http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/misc/ruby-electric.el
;; wget http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/misc/ruby-mode.el
;; wget http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/misc/rubydb2x.el
;; wget http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/misc/rubydb3
;;
;;  or yum -i install ruby-mode
;;
(autoload 'ruby-mode "ruby-mode"
  "Mode for editing ruby source files" t) 1
(setq auto-mode-alist
      (append '(("\\.rb$" . ruby-mode)) auto-mode-alist))
(setq interpreter-mode-alist (append '(("ruby" . ruby-mode))
				     interpreter-mode-alist))                           
(autoload 'run-ruby "inf-ruby"
  "Run an inferior Ruby process")
(autoload 'inf-ruby-keys "inf-ruby"
  "Set local key defs for inf-ruby in ruby-mode")                                       
(add-hook 'ruby-mode-hook
	  '(lambda ()
	     (inf-ruby-keys)))
(global-font-lock-mode t)
;(setq default-frame-alist
;      (append
;       '((foreground-color . "gray")  ;
;	 (background-color . "black") ;
;	 (cursor-color     . "blue")  ;
;	 )
;       default-frame-alist))

;; ---------------------------------------------------------
;; For Browse-Kill-Ring
;; ---------------------------------------------------------
;M-y とすると, kill-ring の一覧が表示されます.
;n,p で前後へ移動し,y で貼り付け,q で終了,e で選択中の kill-ring を編集できます.
;間違って貼り付けた場合には U で取り消すことができます.
;普通の isearch での検索はもちろんできますし,s や r でも検索ができます.
(require 'browse-kill-ring)
(global-set-key "\M-y" 'browse-kill-ring) 
;; kill-ring を一行で表示
(setq browse-kill-ring-display-style 'one-line)
;; browse-kill-ring 終了時にバッファを kill する
(setq browse-kill-ring-quit-action 'kill-and-delete-window)
;; 必要に応じて browse-kill-ring のウィンドウの大きさを変更する
(setq browse-kill-ring-resize-window t)
;; kill-ring の内容を表示する際の区切りを指定する
(setq browse-kill-ring-separator "-------")
;; 現在選択中の kill-ring のハイライトする
(setq browse-kill-ring-highlight-current-entry t)
;; 区切り文字のフェイスを指定する
(setq browse-kill-ring-separator-face 'region)
;; 一覧で表示する文字数を指定する. nil ならすべて表示される.
(setq browse-kill-ring-maximum-display-length 100)

;; ---------------------------------------------------------
;; For epo "Editing Process Organizer"
;; ---------------------------------------------------------
; http://www.yatex.org/epo/
; http://park.ruru.ne.jp/ando/work/who/epojava/doc/install.html
(setq load-path (cons "~/.emacs.d/epo" load-path))
;; このフォルダ名はインストール先により変動します。
(autoload 'epo "epo" "Editing Process Organizer" t)
;; Ruby を使うとき
(add-hook 'ruby-mode-hook 'epo)
;; emacs-lisp を使うとき
(add-hook 'emacs-lisp-mode-hook 'epo)
;; perl を使うとき
(add-hook 'perl-mode-hook 'epo)
;; tex-mode を使うとき(YaTex を使うときはこれではダメ。下記参照)
(add-hook 'tex-mode-hook 'epo)
;; YaTeX を使うとき
(add-hook 'yatex-mode-hook 'epo)
;; SGML を使うとき(PSGML 使用のときはこれではダメ。下記参照)
;(add-hook 'sgml-mode-hook 'epo)
;; Java を使うとき(epojava 使用のときはこれではダメ。下記参照)
;(add-hook 'java-mode-hook 'epo)
;; IDL を使うとき(epojava 使用のときはこれではダメ。下記参照)
;(add-hook 'idl-mode-hook 'epo)
;; C++ を使うとき(epojava 使用のときはこれではダメ。下記参照)
;(add-hook 'c++-mode-hook 'epo)
;; C を使うとき(epojava 使用のときはこれではダメ。下記参照)
;(add-hook 'c-mode-hook 'epo)
;; YaHTML でHTML を補完するために使うとき
;; (XHTML などの XML や、JSP のためにepoを使用したいときはこれではダメ。下記参照)
;(add-hook 'yahtml-mode-hook 'epo)

;; ---------------------------------------------------------
;; For epojava
;; ---------------------------------------------------------
;; load-path
(setq load-path (cons "~/.emacs.d/epojava" load-path))
;; epojava mode
(require 'epoan)
;; java
(setq auto-mode-alist
      (cons (cons "\\.\\(java\\|class\\)$" 'epojava-mode) auto-mode-alist))
(autoload 'epojava-mode "epojava" "Epo-java mode" t)
;; CORBA/IDL
(setq auto-mode-alist (cons (cons "\\.idl$" 'epoidl-mode) auto-mode-alist))
(autoload 'epoidl-mode  "epocc"   "Epo-idl mode" t)
;; CORBA/C mapping
(setq auto-mode-alist
      (cons (cons "\\.\\(ih\\|hh\\|ic\\)$" 'epocc-mode) auto-mode-alist))
;; C/C++
(setq auto-mode-alist
      (cons (cons "\\.\\(C\\|cc\\|CC\\|cpp\\|cxx\\|h\\|H\\)$"
		  'epocc-mode) auto-mode-alist))
(setq auto-mode-alist (cons (cons "\\.c$" 'epoc-mode) auto-mode-alist))
(autoload 'epoc-mode    "epocc"   "Epo-c mode" t)
(autoload 'epocc-mode   "epocc"   "Epo-cc mode" t)

;; ---------------------------------------------------------
;; C-mode
;; ---------------------------------------------------------
(put 'upcase-region 'disabled nil)

;; ---------------------------------------------------------
;; AUCTeX
;; ---------------------------------------------------------
(require 'tex-site)
(setq TeX-default-mode 'japanese-latex-mode)
(setq japanese-TeX-command-default "pTeX")
(setq japanese-LaTeX-command-default "pLaTeX")
(setq japanese-LaTeX-default-style "jsarticle")
(setq TeX-file-extensions '("tex" "sty" "cls" "ltx" "texi" "texinfo" "dtx"))
(setq kinsoku-limit 10)
(setq LaTeX-indent-level 4)
(setq TeX-output-view-style '(("^dvi$" "." "/usr/bin/pxdvi %d")))

todo:

  • フォントを変えられるようにすること。