;;; -*- Mode: Emacs-Lisp ; Coding: utf-8 -*- ;; MATSUNO Tokuhiro. ;; Note. ;; どうやら、require しているものたちは別途用意する必要があるっぽい。 ;; ############################################################## ;; 基本的な設定。 ;; ############################################################## ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; マクロサーチパスの追加 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq load-path (append '("~/elisp" "/usr/local/share/emacs/site-lisp/" "/usr/share/emacs/site-lisp/howm/" "/usr/share/emacs/site-lisp/w3m/" ) load-path)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ~/bin に PATH を通す & exec-path に追加 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (progn (setenv "PATH" (concat "~/bin:" (getenv "PATH"))) (add-to-list 'exec-path "~/bin")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; utf-8 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (progn (set-language-environment "Japanese") (set-terminal-coding-system 'utf-8) (set-keyboard-coding-system 'utf-8) (set-buffer-file-coding-system 'utf-8) (setq default-buffer-file-coding-system 'utf-8) (set-default-coding-systems 'utf-8)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; misc. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (tool-bar-mode nil) ;;; 最下行で「↓」を押したときスムーズなスクロールにする (progn (setq scroll-step 1) (setq scroll-conservatively 4)) ;;; PageUp,PageDown の時にカーソル位置を保持 (setq scroll-preserve-screen-position t) ;;; マウスの真ん中ボタンでペーストする時にカーソル位置を変更しない (setq mouse-yank-at-point t) ;;; カーソルが行頭にあるときに,C-k 1回で その行全体を削除 (setq kill-whole-line t) ;;; yes,no を答えるかわりに,y,n にする (fset 'yes-or-no-p 'y-or-n-p) ;; backup file を作らない。(.save.. ってやつとか ~ なんとかとか) (progn (setq auto-save-list-file-name nil) (setq auto-save-list-file-prefix nil) (setq make-backup-files nil)) ;;; 起動直後の *scratch* buffer に入る文字列をなくす (setq initial-scratch-message nil) ;;; startup message を消す (setq inhibit-startup-message t) ;; 見た目の設定 (progn (load "font-lock") ;; 色付ける (global-font-lock-mode t) (show-paren-mode) ;; 対応する括弧をハイライト (menu-bar-mode -1) ;; メニューバーを消す (setq transient-mark-mode t) ;; 選択領域を色付け (line-number-mode t) ;; カーソルの位置が何行目かを表示する (column-number-mode t) ;; カーソルの位置が何桁目かを表示する (setq use-dialog-boxes nil) ;; ダイアログボックスを使わない (setq mode-line-frame-identification " ") ;; フレーム情報を隠す (setq visible-bell t) ;; visible-bell ) ;; .gz なファイルを読めるように (auto-compression-mode t) ;;; shell-mode で ^M を出さなくする. (add-hook 'comint-output-filter-functions 'shell-strip-ctrl-m nil t) ;;; ステータスラインに時間を表示する (progn (setq display-time-24hr-format t) (setq display-time-format "%Y-%m-%d(%a) %H:%M") (setq display-time-day-and-date t) (setq display-time-interval 30) (display-time)) ;; .h なファイルは C++-mode で. (setq auto-mode-alist (cons (cons "\\.h$" 'c++-mode) auto-mode-alist)) ;; gauche の設定 ;; (progn ;; (setq quack-default-program "gosh") ;; (setq scheme-program-name "gosh") ;; (autoload 'run-scheme "cmuscheme" "Run an inferior Scheme process. " t) ;; (require 'inferior-gauche) ;; (setq auto-mode-alist ;; (cons '("\\.scm$" . inferior-gauche-mode) auto-mode-alist)) ;; (setq default-major-mode 'inferior-gauche-mode) ;; (inferior-gauche-mode)) ;; eldoc ;; http://www.bookshelf.jp/soft/meadow_41.html#SEC598 (autoload 'turn-on-eldoc-mode "eldoc" nil t) (add-hook 'emacs-lisp-mode-hook 'turn-on-eldoc-mode) (add-hook 'lisp-interaction-mode-hook 'turn-on-eldoc-mode) (add-hook 'ielm-mode-hook 'turn-on-eldoc-mode) ;; tab width (setq tab-width 4) ;;; key config (progn (global-set-key "\M-?" 'help-for-help) (global-set-key "\M-g" 'goto-line) (global-set-key "\C-h" 'backward-delete-char) (global-set-key [delete] 'delete-char)) ;; Emacs 21以降だと Makefile の編集時にTABを打ったときに "Suspicious ;; line XXX. Save anyway?" というプロンプトが出るのでこれを抑制する (add-hook 'makefile-mode-hook (function (lambda () (fset 'makefile-warn-suspicious-lines 'ignore)))) ;;; 140 桁にあわせる (progn (setq-default fill-column 140) (setq text-mode-hook 'turn-on-auto-fill) (setq default-major-mode 'text-mode) (auto-fill-mode)) ;;; emacsclient サーバを起動 (server-start) ;; ↓これなんの設定かよくわからん。 (put 'upcase-region 'disabled nil) (put 'downcase-region 'disabled nil) ;; タイムロケールを英語に (setq system-time-locale "C") ;; 一般的な設定 (load "zatta-settings") ;; .svn は補完対象から外す (add-to-list 'completion-ignored-extensions ".svn/") ;; 補完は ignore-case で。 (setq completion-ignore-case t) ;;; X or Mac な時の設定 (if (or (eq window-system 'x) (eq window-system 'mac)) (progn ;; 現在行をハイライト (global-hl-line-mode) ;; 画像ファイルを表示 (auto-image-file-mode) ) ) ;; ############################################################## ;; マニアックな third party の elisp。debian のパッケージになってない ;; ようなもの。 ;; ############################################################## ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; html-tt(by clouder) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (autoload 'html-helper-mode "html-helper-mode" "Yay HTML" t) (setq auto-mode-alist (cons '("\\.html$" . html-helper-mode) auto-mode-alist)) (require 'html-tt) (add-hook 'html-helper-mode-hook 'html-tt-load-hook) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; auto-save-buffers ;; http://namazu.org/~satoru/misc/auto-save/ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (progn (require 'auto-save-buffers) (run-with-idle-timer 0.5 t 'auto-save-buffers)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 強調表示付き動的略称展開 ;; http://www.namazu.org/~tsuchiya/elisp/#dabbrev-highlight ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (require 'dabbrev-highlight) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; occur や grep で別ウィンドウに該当行を表示 ;; http://www.bookshelf.jp/soft/meadow_47.html#SEC675 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (progn (require 'fm) (add-hook 'occur-mode-hook 'fm-start) (add-hook 'compilation-mode-hook 'fm-start)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; elscreen ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (require 'elscreen) (require 'elscreen-tab) ;; ############################################################## ;; 以下各種 third party の elisp 関連。 ;; ############################################################## ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; navi2ch ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (autoload 'navi2ch "navi2ch" "Navigator for 2ch for Emacs" t) (setq navi2ch-mona-enable t) (setq navi2ch-mona-enable-board-list '("mona" "aastory" "kao")) ;; (setq navi2ch-net-http-proxy "127.0.0.1:3128") ;; (setq navi2ch-net-http-proxy nil) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ddskk ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; SKK-JISYO.L をメモリ上に読み込んで利用する場合 ;;(setq skk-large-jisyo "/usr/local/share/skk/SKK-JISYO.L") ;;(setq load-path ;; (append '("/usr/share/emacs/site-lisp/skk") ;; load-path)) ; (setq skk-aux-large-jisyo "/usr/share/skk/SKK-JISYO.L") (setq skk-server-portnum 1178) (setq skk-server-host "localhost") ;;(setq skk-server-prog "/usr/libexec/skkserv") ;; 句読点を ,. にする ;;(setq skk-kutouten-type 'en) (global-set-key "\C-x\C-j" 'skk-mode) (global-set-key "\C-xj" 'skk-auto-fill-mode) (global-set-key "\C-xt" 'skk-tutorial) (autoload 'skk-mode "skk" nil t) (autoload 'skk-auto-fill-mode "skk" nil t) (autoload 'skk-isearch-mode-setup "skk-isearch" nil t) (autoload 'skk-isearch-mode-cleanup "skk-isearch" nil t) ;; Enter キーを押したときには確定する (setq skk-egg-like-newline t) ;; 句読点に ., を使う ;;(setq skk-kutouten-type 'en) ;; 送り仮名が厳密に正しい候補を優先して表示する (setq skk-henkan-strict-okuri-precedence t) ;; 辞書登録のとき、余計な送り仮名を送らないようにする (setq skk-check-okurigana-on-touroku 'auto) ;; look コマンドを使った検索をする(これ便利) (setq skk-use-look t) ;; migemo を使うから skk-isearch にはおとなしくしていて欲しい (setq skk-isearch-start-mode 'latin) ;; 複数の Emacsen を起動して個人辞書を共有する (setq skk-share-private-jisyo t) ;;; 西暦で表示 (setq skk-date-ad t) ;;; 半角数字 (setq skk-number-style nil) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; migemo.el の設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Emacs 側でのキャッシュを有効にする (setq migemo-use-pattern-alist t) (setq migemo-use-frequent-pattern-alist t) (setq migemo-user-dictionary (expand-file-name "~/.migemo-dict")) (load "migemo") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; cperl-mode settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Use cperl mode instead of the default perl mode (defalias 'perl-mode 'cperl-mode) (setq auto-mode-alist (cons (cons "\\.t$" 'cperl-mode) auto-mode-alist)) ;; based on miyagawa's settings (add-hook 'cperl-mode-hook (lambda () (define-key cperl-mode-map "\M-." 'cperl-find-module) (define-key cperl-mode-map "\C-ct" 'perltidy-region) (define-key cperl-mode-map "\C-m" 'newline-and-indent) (setq cperl-auto-newline t) ;; Use 4 space indents via cperl mode (setq cperl-close-paren-offset -4) (setq cperl-indent-level 4) (setq cperl-label-offset -4) (setq cperl-continued-statement-offset 4) (setq cperl-indent-parens-as-block t) (setq indent-tabs-mode nil) (abbrev-mode 1) ;; (setq cperl-invalid-face nil) (setq cperl-highlight-variables-indiscriminately t))) ;; source reindent by perltidy (defun perltidy-region () "Run perltidy on the current region." (interactive) (save-excursion (shell-command-on-region (point) (mark) "perltidy -q" nil t))) ;; find perl module's source code ;; ref. http://d.hatena.ne.jp/tokuhirom/20060204/1139061383 (defun cperl-find-module (module) (interactive (list (let* ((default-entry (cperl-word-at-point)) (input (read-string (format "perldoc entry%s: " (if (string= default-entry "") "" (format " (default %s)" default-entry)))))) (if (string= input "") (if (string= default-entry "") (error "No perldoc args given") default-entry) input)))) (if (string= module "") (message "No module name found at this point.") (let (perldoc-output exit-status) (with-temp-buffer (setq exit-status (call-process "perldoc" nil t nil "-lm" module)) (goto-char (point-min)) (setq perldoc-output (buffer-substring (point-at-bol) (point-at-eol)))) (if (not (zerop exit-status)) (message "No module found for \"%s\"." module) (find-file-other-window perldoc-output))))) (defun cperl-find-module-at-point () (interactive) (cperl-find-module (cperl-word-at-point))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; vc-svk ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (progn (load "vc-svk") (add-to-list 'vc-handled-backends 'SVK) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 括弧を薄くする ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 小括弧 () の色を定義 (defvar paren-face 'paren-face) (make-face 'paren-face) (set-face-foreground 'paren-face "#88aaff") ;; 中括弧 {} の色を定義 (defvar brace-face 'brace-face) (make-face 'brace-face) (set-face-foreground 'brace-face "#ffaa88") ;; 大括弧 [] の色を定義 (defvar bracket-face 'bracket-face) (make-face 'bracket-face) (set-face-foreground 'bracket-face "#aaaa00") ;; lisp-mode の色設定に追加 (setq lisp-font-lock-keywords-2 (append '(("(\\|)" . paren-face)) lisp-font-lock-keywords-2)) ;; scheme-mode の色設定に追加 (add-hook 'scheme-mode-hook '(lambda () (setq scheme-font-lock-keywords-2 (append '(("(\\|)" . paren-face)) scheme-font-lock-keywords-2)))) ;; c-mode の色設定に追加 (setq c-font-lock-keywords-3 (append '(("(\\|)" . paren-face)) '(("{\\|}" . brace-face)) '(("\\[\\|\\]" . bracket-face)) c-font-lock-keywords-3)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 前のウィンドウへ、次のウィンドウへ、の移動が楽になる ;; from GNU Emacs 拡張ガイド ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun other-window-backward (&optional n) "Select Nth previous window." (interactive "P") (other-window (- (prefix-numeric-value n)))) (global-set-key "\C-x\C-p" 'other-window-backward) (global-set-key "\C-x\C-n" 'other-window) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; C プログラムの書式は k&r style ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (progn (defun my-c-mode-common-hook () (c-set-style "k&r")) (add-hook 'c-mode-common-hook 'my-c-mode-common-hook)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; いろいろ ;; Deleteキーでカーソル位置の文字が消えるようにする (defun memo () (interactive) (add-change-log-entry nil (expand-file-name "~/ChangeLog"))) (define-key ctl-x-map "M" 'memo) (add-to-list 'auto-mode-alist '("\\.rd$" . rd-mode)) ; メモは rd-mode に ;; 日本語まじってる場合でも ispell が効くように (eval-after-load "ispell" '(setq ispell-skip-region-alist (cons '("[^\000-\377]+") ispell-skip-region-alist))) (eval-after-load "ispell" '(setq ispell-skip-region-alist (cons '("[^A-Za-z0-9 -]+") ispell-skip-region-alist))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; iswitchb ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (iswitchb-mode 1) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; diff-mode ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (autoload 'diff-mode "diff-mode" "Diff major mode" t) (add-to-list 'auto-mode-alist '("\\.\\(diffs?\\|patch\\|rej\\)\\'" . diff-mode)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; uniquify(同名ファイルのバッファ名の識別文字列を変更する) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (load "uniquify") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; psvn ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (autoload 'svn-status "psvn" nil t) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; abbrev-mode ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (abbrev-mode 1) (define-abbrev-table 'global-abbrev-table '( ("lcom" "# =========================================================================" nil 1) ("com" "# -------------------------------------------------------------------------" nil 1) )) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; sql-mode ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (add-hook 'sql-mode-hook (lambda () ;; mysql つかうあるよ (setq sql-product 'mysql) ;; ユーザ設定とか (setq sql-user "root") ;; インデントの設定とか (load-library "sql-indent") (setq sql-indent-offset 4) (setq sql-indent-maybe-tab nil) ;; ちょっとダサいけど…… LIMIT を追加しただけ…… (setq sql-indent-first-column-regexp (concat "^\\s-*" (regexp-opt '( "select" "update" "insert" "delete" "union" "intersect" "from" "where" "into" "group" "having" "order" "set" "and" "or" "exists" "limit" "--") t) "\\(\\b\\|\\s-\\)")))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; javascript-mode ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (autoload 'javascript-mode "javascript" "JavaScript mode" t) (setq auto-mode-alist (append '(("\\.js$" . javascript-mode)) auto-mode-alist))