;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;= Emacs21, Emacs20.7, XEmacs 設定ファイル ;; ;; * 2008/04/04 Yasuhiro MORIKAWA pcvs ライブラリの読み込みに対応 ;; * 2008/04/02 Yasuhiro MORIKAWA bsfilter on mew4 の設定を追記 ;; * 2008/02/08 Yasuhiro MORIKAWA text-translator (0.6.0) を導入 ;; * 2008/02/07 Yasuhiro MORIKAWA text-translator を導入しかけて止めた (Emacs22 が必要らしい) ;; * 2007/12/23 Yasuhiro MORIKAWA f90-index のデフォルト値の変更 ;; * 2007/12/17 Yasuhiro MORIKAWA f90-index の改良 ;; * 2007/08/01 Yasuhiro MORIKAWA AMS-LaTeX の使用 ;; * 2007/04/30 Yasuhiro MORIKAWA jisx0213 パッケージの有無を確認 ;; * 2007/04/20 Yasuhiro MORIKAWA scroll-up, scroll-down のキー設定 ;; * 2006/07/31 Yasuhiro MORIKAWA xhtml も html-mode で開く ;; * 2006/04/17 Yasuhiro MORIKAWA swbuff の改造版を読み込む ;; * 2006/04/17 Yasuhiro MORIKAWA iswitchb-default-keybindings を利用 ;; * 2006/03/21 Yasuhiro MORIKAWA yahtml-mode の補足的関数定義追加 ;; * 2006/03/14 Yasuhiro MORIKAWA ansi-color のロード方法の修正 ;; * 2006/03/04 Yasuhiro MORIKAWA alpaca のライブラリロードの修正 ;; * 2006/03/04 Yasuhiro MORIKAWA Occur に関する自作関数の修正 ;; * 2006/03/04 Yasuhiro MORIKAWA Occur を用いた rd のラベルリスト表示修正 ;; * 2006/03/04 Yasuhiro MORIKAWA alpaca (GnuPC による暗号化ファイル編集) 追加 ;; * 2006/01/30 Yasuhiro MORIKAWA f90-mode における fill-paragrah 強化 (失敗) ;; * 2006/01/11 Yasuhiro MORIKAWA rd-mode.el へのパス設定変更 ;; * 2006/01/11 Yasuhiro MORIKAWA add-hook to rd-mode-hook ;; * 2006/01/09 Yasuhiro MORIKAWA diff-switches (diff のオプション) の設定 ;; * 2005/12/09 Yasuhiro MORIKAWA text-adjust のリンクを修正 ;; * 2005/11/26 Yasuhiro MORIKAWA f90-mode-hook を setq ではなく add-hook 関数で設定 ;; * 2005/11/02 Yasuhiro MORIKAWA f90-mode のインデントを dcmodel コードルール用に変更 ;; * 2005/10/11 Yasuhiro MORIKAWA コメントの誤植を修正 ;; * 2005/09/26 Yasuhiro MORIKAWA occur 周りの修正 ;; * 2005/09/26 Yasuhiro MORIKAWA ruby-index, f90-index の修正 ;; * 2005/09/26 Yasuhiro MORIKAWA ruby-index 作成 ;; * 2005/09/26 Yasuhiro MORIKAWA f90-index のショートカットキー設定を修正 ;; * 2005/09/25 Yasuhiro MORIKAWA f90-index を作成 ;; * 2005/09/16 Yasuhiro MORIKAWA tramp-ssh 関数のバグを修正 ;; * 2005/09/11 Yasuhiro MORIKAWA tramp-ssh 関数のバグを修正 ;; * 2005/09/10 Yasuhiro MORIKAWA tramp-ssh 関数を修正 (絶対パスを可能に) ;; * 2005/09/09 Yasuhiro MORIKAWA tramp で ssh + sudo する関数追加 ;; * 2005/08/16 Yasuhiro MORIKAWA shell-mode で ls --color を有効にした ;; * 2005/08/16 Yasuhiro MORIKAWA shell-command に関する部分のバグ修正 ;; * 2005/07/26 Yasuhiro MORIKAWA ps-print 関係の emacs21 のバグへの対応 ;; * 2005/07/05 Yasuhiro MORIKAWA Dired モードを ls version 5.2.1 に対応 ;; * 2005/07/05 Yasuhiro MORIKAWA 文字列カウントに関する関数を追加 ;; * 2005/06/18 Yasuhiro MORIKAWA ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== 環境選択用の設定 ;; * 参考URL : http://www.bookshelf.jp/soft/meadow_16.html#SEC157 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defvar run-unix (or (equal system-type 'gnu/linux) (equal system-type 'usg-unix-v))) (defvar run-w32 (and (null run-unix) (or (equal system-type 'windows-nt) (equal system-type 'ms-dos)))) (defvar run-emacs20 (and (equal emacs-major-version 20) (null (featurep 'xemacs)))) (defvar run-emacs21 (and (equal emacs-major-version 21) (null (featurep 'xemacs)))) (defvar run-meadow (featurep 'meadow)) (defvar run-meadow1 (and run-meadow run-emacs20)) (defvar run-meadow2 (and run-meadow run-emacs21)) (defvar run-xemacs (featurep 'xemacs)) (defvar run-xemacs-no-mule (and run-xemacs (not (featurep 'mule)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== RD 書式を利用したインデックス取り出しコマンド ;; (defun dot-emacs-index () "Show RD Formed Label list through temporary buffer." (interactive) (split-window) (occur "^;;\\(=+\\s-\\|\\+\\|\\s-*:\\|\\s-*---\\)") ; 次のウィンドウへ移動 (other-window 1)) (define-key emacs-lisp-mode-map "\C-c\C-s" 'dot-emacs-index) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== emacs-lisp モードの設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq emacs-lisp-mode-hook '(lambda () (show-paren-mode t) ; 対応する括弧のいろつけ )) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== Xでのカラー表示を行う ;; ;; 徹底的に色を付けたい場合 (setq font-lock-maximum-decoration t) (require 'font-lock) (if (not (featurep 'xemacs)) (global-font-lock-mode t) ) (setq font-lock-support-mode '((c-mode . fast-lock-mode) ;; c-mode ならば fast-lock-mode (c++-mode . lazy-lock-mode) ;; c++-mode ならば lazy-lock-mode (t . jit-lock-mode))) ;; デフォルトは jit-lock-mode (global-font-lock-mode t) (setq font-lock-support-mode 'fast-lock-mode) (setq lazy-lock-defer-on-scrolling t) (setq lazy-lock-defer-time 0.5) (setq lazy-lock-stealth-time 3) (setq lazy-lock-stealth-lines 200) ;;(setq lazy-lock-stealth-verbose t) (setq lazy-lock-defer-contextually nil) ;; don't create cache files in the same directory (".") (setq fast-lock-cache-directories '("~/.emacs-flc")) ;;;;;;;;;;;;;; ;;== font-lock の強調表示設定 ;; * 参考 ;; * Emacs Lisp Tips -- ソースコードをカラー表示する ;; http://home.att.ne.jp/alpha/z123/elisp-j.html#fontlock ;; * fontlock ;; www.tk.airnet.ne.jp/nagae/jp/comp/mule/face/fontlock.html ;; ;(set-face-foreground 'font-lock-comment-face "medium purple") ; コメント ;(set-face-foreground 'font-lock-string-face "LightSalmon") ; 文字列 ;(set-face-foreground 'font-lock-keyword-face "LightSteelBlue") ; 各言語の予約語 ;(set-face-foreground 'font-lock-function-name-face "azure") ; 関数名 ;(set-face-foreground 'font-lock-variable-name-face "grey25"); 変数名 ;(set-face-foreground 'font-lock-type-face "PaleGreen") ; 各言語の型の部分 ;(set-face-foreground 'font-lock-constant-face "grey40") ; 定数, ラベル名 ;(set-face-foreground 'font-lock-builtin-face "purple") ; ビルトイン ;(set-face-foreground 'font-lock-warning-face "blue") ; 目立たせるべきもの ;; モードラインの設定 (XEmacs などの際のシンプルな表示に) ;; イタリックオフ ;(set-face-italic-p 'modeline nil) ;; ボールドオフ ;(set-face-bold-p 'modeline nil) ;; 下線オフ ;(set-face-underline-p 'modeline nil) ;;反転表示オフ ;(set-face-inverse-video-p 'modeline nil) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== UTF-8 の文字を読めるようにするための設定 ;; * http://quox.org/install/emacs-lisp/Mule-UCS-0.84.html ;; * http://www.bookshelf.jp/soft/meadow_21.html#SEC192 ;; * http://www7.plala.or.jp/nyy/emacs/#mule-ucs ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; for Mule-UCS (Debian ならば mule-ucs パッケージをインストールする) (when (locate-library "un-define") ; un-define ライブラリが無い時は無視 (require 'un-define) ; Unicode ) (when (locate-library "jisx0213") ; jisx0213 ライブラリが無い時は無視 (require 'jisx0213) ; JIS X 0213 ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== 日本語表示の設定 (xemacsも使用する場合) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (if (not (boundp 'MULE)) (if (featurep 'xemacs) ; xemacs20 / xemacs21 の場合 (progn (set-language-environment "Japanese") (set-default-buffer-file-coding-system 'euc-jp-unix) (set-keyboard-coding-system 'euc-jp-unix) (if (not window-system) (set-terminal-coding-system 'euc-jp-unix)) ) ; emacs20 の場合 (progn (set-language-environment "Japanese") (set-default-coding-systems 'euc-japan-unix) (set-keyboard-coding-system 'euc-japan-unix) (set-buffer-file-coding-system 'euc-japan-unix) (if (not window-system) (set-terminal-coding-system 'euc-japan-unix)) ) ) ) ; 日本語 info が文字化けしないように (auto-compression-mode t) ; xemacs の shell-mode で 日本語 EUC が使えるようにする (add-hook 'shell-mode-hook (function (lambda () (set-buffer-process-coding-system 'euc-japan 'euc-japan)))) ; 日本語 grep (if (file-exists-p "/usr/bin/jgrep") (setq grep-command "jgrep -n -e ") ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== 日本語の設定 (emacsのみ使用の場合) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;(set-language-environment "Japanese") ;;(set-default-coding-systems 'euc-japan) ;;(set-terminal-coding-system 'euc-japan) ;;(set-buffer-file-coding-system 'euc-japan) ;; kinput や IME などの日本語変換ソフトで emacs に日本語を入力する ;; 場合に必要な設定 (この .emacs では既に上で記述されている) ;; (※ キーボード入力を euc に変換する) ;; ;;(set-keyboard-coding-system 'euc-japan) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== 漢字変換 (canna) の設定 (xemacsも使用する場合) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (if (featurep 'xemacs) ; xemacs20, xemacs21 (progn (load-library "canna") (setq canna-use-color t) (canna) (global-set-key "\C-o" 'canna-toggle-japanese-mode) (select-input-method "japanese-canna") (toggle-input-method nil) ; ; yc を使うときは、次の行を有効にしてください。 ; (load "yc") ) (if (boundp 'MULE) ; mule2 (progn (load-library "canna") (setq canna-use-color t) (canna) (global-set-key "\C-o" 'canna-toggle-japanese-mode) (global-set-key "\C-\\" 'canna-toggle-japanese-mode) ) (if (fboundp 'dynamic-call) ; emacs20-dl (progn (load-library "canna") (setq canna-use-color t) (canna) (global-set-key "\C-o" 'canna-toggle-japanese-mode) (set-input-method "japanese-canna") ) ; emacs20 ;(load "yc") ) ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== 漢字変換 (canna) の設定 (emacsのみを使用する場合) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;(set-input-method 'japanese-canna) ;;(global-set-key "\C-o" 'canna-toggle-japanese-mode) ;;(progn (load-library "canna") (canna) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== フォントの設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; .Xresources で 設定を行っている場合はコメントアウトしておく ;;(set-default-font "-*-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-standard") ;;(set-default-font "-*-ms gothic-medium-r-normal--16-*-*-*-*-*-fontset-16") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== 雑多なキー割り当ての設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Deleteキーでカーソル位置の文字が消えるようにする (global-set-key [delete] 'delete-char) ;; Ctrl-h で直前の文字が消えるようにする (global-set-key "\C-h" 'backward-delete-char) ;; 半角/全角 キーで 英語と日本語切替えを行えるようにする ;; ※ただし、kinput2を使用する場合はコメントアウトすること※ ;; (global-set-key [zenkaku-hankaku] 'canna-toggle-japanese-mode) ;; 改行キーでオートインデントさせる ;; Ctrl-m はインデントする改行キーと同じ挙動 (global-set-key "\C-m" 'newline-and-indent) ;(global-set-key "\C-m" 'reindent-then-newline-and-indent) ;; Ctrl-j はインデントしない昔の改行キーと同じ挙動 (global-set-key "\C-j" 'newline) ;; マクロの実行キーを Ctrl+^ に割り当ててしまう. (global-set-key "\C-^" 'call-last-kbd-macro) ;; canna-touroku-region を Ctrl+t に割り当てる. ;; (本来は, カーソルの位置の文字を一つ前の文字と入れ換える ;; transpose-char に割り当てられてます) (global-set-key "\C-t" 'canna-touroku-region) ;; goto-line を Ctrl-x g に割り当てる (global-set-key "\C-xg" 'goto-line) ;; compile ショートカットキー (global-set-key "\C-xm" 'compile) ;; Shift ↑ で 1 ページ上へ (単独 PageUp キーがなくて不便な場合など) ;; ※ S を C にすると Contrl, M に変えると Meta キーになる (global-set-key [S-up] 'scroll-down) ;; Shift ↓ で 1 ページ下へ (単独 PageDown キーがなくて不便な場合など) (global-set-key [S-down] 'scroll-up) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== 細かな設定いろいろ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;; ;;=== 本当にこまこましてるもの ;; 行数を表示 (setq line-number-mode t ) ;; 桁数を表示 (column-number-mode t) ;; バックアップファイルを作成しない (setq make-backup-files nil) ;; 現在の時刻を表示 ;; (display-time) ;; 文末で「↓」キーを押しても新しい空行を作らない (setq next-line-add-newlines nil) ;; 画面の最下行で「↓」キーを押したときのスクロールの行数を「2」にする ;; ( 1 にしようとすると何故か時々飛ぶんだよね… (-_-;) ) (setq scroll-step 2) ;; マークした領域を強調表示する. (setq transient-mark-mode t) ;; Xemacs でツールバーのOptionから設定を行った際に書き加えられる (custom-set-variables '(gnuserv-program (concat exec-directory "/gnuserv"))) (custom-set-faces '(default ((t (:size "14pt" :family "Ms Gothic"))) t)) ;; メニューバーを表示しない (menu-bar-mode -1) ;; ツールバーを表示しない (emacs21 以降) (when run-emacs21 (tool-bar-mode 0)) ; カーソルの点滅を止める (emacs21 以降) (when run-emacs21 (blink-cursor-mode 0)) ; active でない window の空 cursor を出さない (when run-emacs21 (setq cursor-in-non-selected-windows nil)) ;; スクロールバーを右側に ;(set-scroll-bar-mode 'right) ;; スクロールバーを表示しない ;(scroll-bar-mode -1) ;; タイトルバーにバッファ名を表示する. (setq frame-title-format "%b") ;; 起動時のメッセージを表示しないようにする ; (setq inhibit-startup-message t) ;; 同一ファイル名を開いた時に, [ファイル名]<[ディレクトリ名]> と ;; 表示する. (require 'uniquify) (setq uniquify-buffer-name-style 'post-forward-angle-brackets) ; 常に上記のように表示したい場合は ;(setq uniquify-min-dir-content 1) ;; diff のオプション (setq diff-switches "-u") ; デフォルトは "-c" ;; バッファの切換えをもっと楽に ;; URL: http://www.bookshelf.jp/soft/meadow_28.html#SEC362 (iswitchb-default-keybindings) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== Windows のようにバッファを切り替える ;; ;; * http://www.bookshelf.jp/soft/meadow_28.html#SEC370 ;; (setq load-path (cons (expand-file-name "~/.site-lisp/swbuff") load-path)) (when (locate-library "swbuff-tab") ; C-f6 ではなく C-tab に改変したものを読み込み (require 'swbuff-tab)) ;;;;;;;;;;;;;;; ;;=== ブラウザ起動設定 ;; URLをマウス中ボタンでクリックすることでブラウザを起動. (require 'browse-url) ; Shift + 右クリックで起動 (global-set-key [S-mouse-3] 'browse-url-at-mouse) ; 左クリック + 右クリックで起動 ; (global-set-key [mouse-2] 'browse-url-at-mouse) ; ブラウザを galeon に指定. (デフォルトは netscape) (setq browse-url-netscape-program "galeon") ;(setq browse-url-netscape-program "C:\Program Files\Opera7\Opera.exe") ;(setq browse-url-generic-program "C:\Program Files\Opera7\Opera.exe") ;(setq browse-url-browser-function 'browse-url-generic) ;;;;;;;;;;;;;;; ;;=== タブ文字の設定 ;; * タブ1個が空白 8 文字に相当するように (デフォルトは 8 文字) ;(setq tab-width 8) ;; Ctrl-x Ctrl-l で領域内の文字を小文字に (put 'downcase-region 'disabled nil) ;; Ctrl-x Ctrl-u で領域内の文字を大文字に (put 'upcase-region 'disabled nil) ;;;;;;;;;;;;;;; ;;=== 日本語ファイルを ispell で検索 ;; ;; 英単語チェッカ ispell で日本語の混ざっている場合もチェック可能に ;; (下記の設定がないと, 日本語があるとエラー終了してしまう) ;; ispell-buffer : バッファ全体をチェック ;; ispell-region : 選択領域のみチェック (eval-after-load "ispell" '(setq ispell-skip-region-alist (cons '("[^\000-\377]") ispell-skip-region-alist))) ;;==== 敢えて英語ファイルのみしか検索できないようにする (defun ispell-english-only() "Set ispell english only (for check that file include english only)." (interactive) (if (equal '("[^\000-\377]") (car ispell-skip-region-alist)) (setq ispell-skip-region-alist (cdr ispell-skip-region-alist)))) ;;==== 日本語ファイルも検索できるよう明示的に設定する (defun ispell-japanese() "Set ispell for japanese sentences." (interactive) (if (not (equal '("[^\000-\377]") (car ispell-skip-region-alist))) (setq ispell-skip-region-alist (cons '("[^\000-\377]") ispell-skip-region-alist)))) ;;;;;;;;;;;;;;; ;;=== シェルモードでのパスワード入力を表示しない ; ※ pscp では, パスワードがちゃんと送られなくて使えない... (T_T) (add-hook 'comint-output-filter-functions 'comint-watch-for-password-prompt) ;;==== シェルモードでの入力待を変更している時 (setq shell-command-regexp "[^;&|>]+") ;;==== シェルモードで ls --color をまともに表示させる. (when (locate-library "ansi-color") (progn (autoload 'ansi-color-for-comint-mode-on "ansi-color" "Set `ansi-color-for-comint-mode' to t." t) (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== 文字数, 単語の数を数える ;; ;; * Meadow/Emacs memo: テキスト編集のためのモード/機能 ;; http://www.bookshelf.jp/soft/meadow_33.html#SEC465 ;; ;; * text-adjust.el ;; http://www.taiyaki.org/elisp/text-adjust/src/text-adjust.el ;; ;; : M-x count-words-en-region ;; 英単語数を返す. ;; ;; : M-x count-size-region ;; タブと改行を除いたリージョン内のバイトサイズを返す. ;; ASCII 文字は 1 バイト, 日本語の文字は 2 バイトと換算している. ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; * 文字種の正規表現 ;; ;; M-x describe-categories 参照 ;; ;; \\cK カタカナ ;; \\cC 漢字 ;; \\cH ひらがな ;; \\cS 全角記号 ;; \\cj 日本語 (上記全部) ;; \\ck 半角カナ ;; \\ca ASCII (defun count-words-en-region() "Count number of English words by how-many function." (interactive) (how-many "\\w+")) (defun count-size-region() "Count size of region (ASCII & Japanese Only). Linefeed code and Tab code is not counted. how-many-quiet functions is refered. [JAPANESE] 選択中のリージョンのバイトサイズを返す. ASCII と 日本語の文字以外未対応. 改行とタブはカウントしない. そのため バッファ全体を選択してバイトサイズを換算してもファイルのサイズとは ずれるので注意. 下記の how-many-quiet 関数に依存している." (interactive) (setq char-size (+ (how-many-quiet "\\ca") ; ASCII is 1 byte (* 2 (how-many-quiet "\\cj")))) ; Japanese is 2 byte (message "%d byte (linefeeds and tabs are not counted )" char-size)) (defun how-many-quiet (regexp &optional rstart rend) "Reformed how-many functions. The role of this function is almost same as original how-many. A difference is that this fuctions return count, and do not echo count to mini buffer. [JAPANESE] how-many 関数を改造したもの. 中身はほとんどコピーで, 違うところは最後にメッセージをミニバッファに出力するのでは なく, 数字として返すこと." (interactive (keep-lines-read-args "How many matches for (regexp): ")) (save-excursion (if rstart (goto-char (min rstart rend)) (if (and transient-mark-mode mark-active) (setq rstart (region-beginning) rend (copy-marker (region-end))) (setq rstart (point) rend (point-max-marker))) (goto-char rstart)) (let ((count 0) opoint (case-fold-search (and case-fold-search (isearch-no-upper-case-p regexp t)))) (while (and (< (point) rend) (progn (setq opoint (point)) (re-search-forward regexp rend t))) (if (= opoint (point)) (forward-char 1) (setq count (1+ count)))) (setq count-return count)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== 全角空白/タブを表示する. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;(defface my-face-r-1 '((t (:background "gray15"))) nil) (defface my-face-b-1 '((t (:background "gray"))) nil) (defface my-face-b-2 '((t (:background "gray26"))) nil) (defface my-face-u-1 '((t (:foreground "SteelBlue" :underline t))) nil) ;;(defvar my-face-r-1 'my-face-r-1) (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) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== プリンタコマンド設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; M-x ps-print-buffer-with-faces 関連 ;; 現在の設定は (ps-setup) を評価。 ;; ;; 使用方法 ; ; ・ 印刷 M-x ps-print-buffer ; ・ カラー印刷 M-x ps-print-buffer-with-faces (-nw モードでは無理) ; ・ PS化 M-x ps-spool-buffer ; ・ カラーPS化 M-x ps-spool-buffer-with-faces (-nw モードでは無理) ; - PSファイルはバッファ「*PostScript*」へ ; - バッファを保存する時は普通に C-x C-s ; - そのまま印刷したければ M-x lpr-buffer ; ; ・ プリンタ切替え M-x select-ps-printer ; ・ フォントサイズ切替え M-x select-ps-font-size ; ・ 縦横切替え M-x select-ps-landscape-mode ; ・ 行数表示切替え M-x select-ps-line-number ; ・ 段組み切替え M-x select-ps-number-of-columns ; ・ ヘッダ簡略化切替え M-x select-ps-print-header ; ;;=== 基本設定 (require 'ps-print) (setq ps-print-color-p t ; カラーを使用 ps-multibyte-buffer 'non-latin-printer) ; 日本語使用 ;; Emacs-21のバグ(?)対策 ;; emacs21 の場合は以下の設定を加えないとプリント自体ができなく ;; なる. なお, いかの設定を加えるとヘッダの文字は文字化けする. ;; ;; https://cae.cc.kumamoto-u.ac.jp/nakano-open/pukiwiki.php#content_1_16 ;; http://tsukuba.m17n.org/mule-ja-archive/2002-3/msg00008.html (when run-emacs21 (progn (require 'ps-mule) (defalias 'ps-mule-header-string-charsets 'ignore))) ; デフォルトではヘッダを簡略化しない (setq ps-print-header t) ; ヘッダを簡略化するかを問い合わせる関数 (defun select-ps-print-header() "Select Print Header." (interactive) (setq ps-print-header (y-or-n-p "Print Header?: "))) ; デフォルトのフォントサイズ (setq ps-font-size 8) ; フォントサイズいろいろ (setq ps-font-size-list '(("6" . 6) ("7" . 7) ("8" . 8) ("9" . 9) ("10" . 10) ("11" . 11) ("12" . 12) ("13" . 13) ("14" . 14) ("15" . 15) ("16" . 16))) ; ps-font-size-list のリストの定義 (defvar ps-font-size-list nil "The list of Font Size of PostScript.") ; ps-font-size を選択する関数の定義 (defun select-ps-font-size() "Select Font Size of PostScript." (interactive) (setq ps-font-size (string-to-number (completing-read "Select Font Size: " ps-font-size-list nil " " (number-to-string ps-font-size))))) ;;=== カスタム設定 ;; プリンタ出力のコマンドを明示的に定義 ; (setq ps-lpr-command "lpr") ; (setq ps-printer-name-option "-P") ; デフォルトでは行数表示しない (setq ps-line-number nil) ; 行数表示を問い合わせる関数 (defun select-ps-line-number() "Select Print Line Number." (interactive) (setq ps-line-number (y-or-n-p "Print Line Number?: "))) ;; 用紙サイズと用紙方向を設定 (setq ps-paper-type 'a4) ; サイズを A4 で明示的に設定 ; デフォルトは横向き (以下の段組みのデフォルトが 2 のため) (setq ps-landscape-mode t) ; 横向き ; 縦向き横向きを問い合わせる関数 (defun select-ps-landscape-mode() "Select Landscape Mode." (interactive) (setq ps-landscape-mode (y-or-n-p "Landscape?: "))) ; デフォルトの段組み (setq ps-number-of-columns 2) ; 2段組みに ; 段組みいろいろ (setq ps-number-of-columns-list '(("1" . 1) ("2" . 2) ("3" . 3) ("4" . 4) )) ; ps-number-of-columns-list のリストの定義 (defvar ps-number-of-columns-list nil "The list of Font Size of PostScript.") ; ps-number-of-columns を選択する関数の定義 (defun select-ps-number-of-columns() "Select Font Size of PostScript." (interactive) (setq ps-number-of-columns (string-to-number (completing-read "Select Number of Column: " ps-number-of-columns-list nil " " (number-to-string ps-number-of-columns)))) (cond ; 段組みが 1 の場合は縦向き, 2 の場合は横向き ((= ps-number-of-columns 1) (setq ps-landscape-mode nil)) ((= ps-number-of-columns 2) (setq ps-landscape-mode t)) ((= ps-number-of-columns 3) (setq ps-landscape-mode t)) ((= ps-number-of-columns 4) (setq ps-landscape-mode nil)))) ;; 時間の表記をより詳細に ; 詳細表記の定義 (defun time-stamp-yyyy/mm/dd-hh:mm:ss () "Return the current date as a string in \"YYYY/MM/DD-HH:MM:SS\" form." (format-time-string "%Y/%m/%d(%3a) %H:%M:%S")) (add-hook 'ps-print-hook '(lambda () (load "time-stamp") (setq ps-right-header (list "/pagenumberstring load" 'time-stamp-yyyy/mm/dd-hh:mm:ss)))) ;; 曜日を日本語で (日本語が化けるのでコメントアウト) ;(defun time-stamp-japanese-a () ; "Return a day of the week" ; (let ((aw (string-to-number (format-time-string "%w" (current-time))))) ; (cond ; ((= aw 0) "日曜日") ((= aw 1) "月曜日") ((= aw 2) "火曜日") ; ((= aw 3) "水曜日") ((= aw 4) "木曜日") ((= aw 5) "金曜日") ; ((= aw 6) "土曜日")))) ; ;(setq time-stamp-format ; '(time-stamp-yyyy/mm/dd time-stamp-hh:mm:ss ; time-stamp-japanese-a)) ; 参考 URL ; - Meadow/Emacs memo: 36. テンプレートと更新時刻の入力 ; 36.1 更新時刻を自動で入力 --- time-stamp ; 36.1.1 Meadow に付属の time-stamp ; http://www.bookshelf.jp/soft/meadow_36.html#SEC479 ; - Memo -- Open Memo ; Fedora Core2 XEmacsでps-printの日本語がトーフになる?! ; https://cae.cc.kumamoto-u.ac.jp/nakano-open/pukiwiki.php#content_1_12 ;; 出力するプリンタを変更するための設定 ;; ※ 下の ps-printer-name-list と select-ps-printer の定義が必要 ;; M-x select-ps-printer でプリンタ選択. ;; 下記のリストは上下矢印キーで呼び出せる. ;; ; デフォルトのプリンタ名 (setq ps-printer-name "gfdpr") ; プリンタリスト ; (lpr -P<プリンタ名> の <プリンタ名> に当てはまる部分) (setq ps-printer-name-list '(("gfdpr" . "") ("nozomipr" . "") ("eppr" . ""))) ; ps-printer のリストの定義 (defvar ps-printer-name-list nil "The list of network PostScript Printers.") ; ps-printer を選択する関数の定義 (defun select-ps-printer() "Select PostScript Printer for output." (interactive) (setq ps-printer-name (completing-read "Select Printer: " ps-printer-name-list nil " " ps-printer-name))) ; 参考 URL ; - uenox-ps-print.el : Windows NT 標準の LPR を使って ps-print する ; http://uenox.ld.infoseek.co.jp/elisp/uenox-ps-print.el ;; 文字色を置き換えるための定義 ; (defun ps-set-color (color) "バックグラウンドを黒で使っていると、文字色は明るくなる。 しかし、印刷した時はフォント色が明る過ぎて見にくい。 あまりよくないけど、関数書き換えて色を暗くする。 数値「1.5」を小さくすれば色が明るく、大きくすれば色が暗くなる。 動作確認: ps-print.el ver.4.1.4" (setq ps-current-color (or color ps-default-fg)) (ps-output (format ps-color-format (/ (nth 0 ps-current-color) 1.5) (/ (nth 1 ps-current-color) 1.5) (/ (nth 2 ps-current-color) 1.5)) " FG\n")) ; ; 参考 URL ; - はてなダイアリー /dev/null ; http://d.hatena.ne.jp/dev-null/ ; - CGREEK マニュアル -- [ps-print のカスタマイズ] ; http://arch.bluegate.org/lg/manual.ja.html#custom-ps-print ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== Mew の設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Mew に関する設定は全て ~/.mew.el に移行 2002/11/24 ;; 以下は bsfilter を mew4 で使用するための設定 (これは .emacs に書くものらしい) (setq mew-spam: "X-Spam-Flag:") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== 個人作成のマクロ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; カーソル位置のフェースを調べる関数 (defun describe-face-at-point () "Return face used at point." (interactive) (message "%s" (get-char-property (point) 'face))) ;; 行頭に "%" (TeX でのコメント) をつけて次の行へ行くマクロ ;(defun tex-persent-insert () ; (interactive) ; (beginning-of-line) ; (insert "%") ; (next-line) ;) ;; 行頭の文字を消して次の行へゆくマクロ ;(defun tex-persent-remove () ; (interactive) ; (beginning-of-line) ; (delete-char) ; (next-line) ;) (defun insert-quotation () (interactive) (beginning-of-line) (insert "> ") (next-line) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== Makefile モードの設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq auto-mode-alist (cons '("\\.mk\\'" . makefile-mode) auto-mode-alist)) (setq auto-mode-alist (cons '("\\(M\\|m\\|GNUm\\)akefile\\(\\.in\\)?\\'" . makefile-mode) auto-mode-alist)) (setq auto-mode-alist (cons '("\\(M\\|m\\|GNUm\\)kinclude\\(\\.in\\)?\\'" . makefile-mode) auto-mode-alist)) (setq auto-mode-alist (cons '("\\(C\\|c\\)onfig\\(\\.mk\\|.mk.in\\)?\\'" . makefile-mode) auto-mode-alist)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== css を c-mode で開く ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq auto-mode-alist (cons '("\\.css\\'" . c-mode) auto-mode-alist)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== f90 モードの設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (add-hook 'f90-mode-hook '(lambda () (setq f90-do-indent 2 f90-if-indent 2 f90-type-indent 2 f90-program-indent 2 f90-continuation-indent 2 ; f90-do-indent 3 ; f90-if-indent 3 ; f90-type-indent 3 ; f90-program-indent 2 ; f90-continuation-indent 5 f90-comment-region "!!$" f90-directive-comment-re "!hpf\\$" f90-indented-comment-re "!" f90-break-delimiters "[-+\\*/,><=% \t]" f90-break-before-delimiters t f90-beginning-ampersand t f90-smart-end 'blink f90-auto-keyword-case nil f90-leave-line-no nil f90-startup-message t indent-tabs-mode nil f90-font-lock-keywords f90-font-lock-keywords-4 ) ;;The rest is not default. (global-set-key "\C-xm" 'compile) ; compile ショートカットキー (abbrev-mode 1) ; turn on abbreviation mode (show-paren-mode t) ; 対応する括弧のいろつけ (turn-on-font-lock) ; for highlighting (f90-add-imenu-menu) ; extra menu with functions etc. (if f90-auto-keyword-case ; change case of all keywords on startup (f90-change-keywords f90-auto-keyword-case)) )) (setq auto-mode-alist (cons '("\\.f90$" . f90-mode) auto-mode-alist)) (setq auto-mode-alist (cons '("\\.F90$" . f90-mode) auto-mode-alist)) (setq auto-mode-alist (cons '("\\.nml$" . f90-mode) auto-mode-alist)) (setq fortran-mode-hook '(lambda () (show-paren-mode t) ; 対応する括弧のいろつけ )) ;;=== サブルーチンインデックス取り出しコマンド (defun f90-index () "Show Fortran90 Formed Label list through temporary buffer." (interactive) (let ((word "procedure") (f90-index-list '(("all" . "") ("procedure" . "") ("subroutine" . "") ("function" . "") ("type" . "") ("interface" . "")))) (setq word (completing-read "f90-index word: " f90-index-list nil " " word)) (cond ((string= word "all") (progn (split-window) (occur "^\\s-*\\(recursive\\s-+\\|RECURSIVE\\s-+\\|pure\\s-+\\|PURE\\s-+\\|elemental\\s-+\\|ELEMENTAL\\s-+\\|\\)\\(character.*?\\s-\\|CHARACTER.*?\\s-\\|type.*?\\s-\\|TYPE.*?\\s-\\|integer.*?\\s-\\|INTEGER.*?\\s-\\|real.*?\\s-\\|REAL.*?\\s-\\|double.*?\\s-\\|DOUBLE.*?\\s-\\|logical.*?\\s-\\|LOGICAL.*?\\s-\\|complex.*?\\s-\\|COMPLEX.*?\\s-\\|\\)\\(subroutine\\s-+\\|SUBROUTINE\\s-+\\|function\\s-+\\|FUNCTION\\s-+\\|type\\s-+\\|TYPE\\s-+\\|interface\\s-+[A-Za-z]+\\|INTERFACE\\s-+[A-Za-z]+\\)"))) ((string= word "procedure") (progn (split-window) (occur "^\\s-*\\(recursive\\s-+\\|RECURSIVE\\s-+\\|pure\\s-+\\|PURE\\s-+\\|elemental\\s-+\\|ELEMENTAL\\s-+\\|\\)\\(character.*?\\s-\\|CHARACTER.*?\\s-\\|type.*?\\s-\\|TYPE.*?\\s-\\|integer.*?\\s-\\|INTEGER.*?\\s-\\|real.*?\\s-\\|REAL.*?\\s-\\|double.*?\\s-\\|DOUBLE.*?\\s-\\|logical.*?\\s-\\|LOGICAL.*?\\s-\\|complex.*?\\s-\\|COMPLEX.*?\\s-\\|\\)\\(subroutine\\s-+\\|SUBROUTINE\\s-+\\|function\\s-+\\|FUNCTION\\s-+\\)"))) ((string= word "subroutine") (progn (split-window) (occur "^\\s-*\\(recursive\\s-+\\|RECURSIVE\\s-+\\|pure\\s-+\\|PURE\\s-+\\|elemental\\s-+\\|ELEMENTAL\\s-+\\|\\)\\(character.*?\\s-\\|CHARACTER.*?\\s-\\|type.*?\\s-\\|TYPE.*?\\s-\\|integer.*?\\s-\\|INTEGER.*?\\s-\\|real.*?\\s-\\|REAL.*?\\s-\\|double.*?\\s-\\|DOUBLE.*?\\s-\\|logical.*?\\s-\\|LOGICAL.*?\\s-\\|complex.*?\\s-\\|COMPLEX.*?\\s-\\|\\)\\(subroutine\\s-+\\|SUBROUTINE\\s-+\\)"))) ((string= word "function") (progn (split-window) (occur "^\\s-*\\(recursive\\s-+\\|RECURSIVE\\s-+\\|pure\\s-+\\|PURE\\s-+\\|elemental\\s-+\\|ELEMENTAL\\s-+\\|\\)\\(character.*?\\s-\\|CHARACTER.*?\\s-\\|type.*?\\s-\\|TYPE.*?\\s-\\|integer.*?\\s-\\|INTEGER.*?\\s-\\|real.*?\\s-\\|REAL.*?\\s-\\|double.*?\\s-\\|DOUBLE.*?\\s-\\|logical.*?\\s-\\|LOGICAL.*?\\s-\\|complex.*?\\s-\\|COMPLEX.*?\\s-\\|\\)\\(function\\s-+\\|FUNCTION\\s-+\\)"))) ((string= word "type") (progn (split-window) (occur "^\\s-*\\(type \\|TYPE \\)"))) ((string= word "interface") (progn (split-window) (occur "^\\s-*\\(interface\\s-+[A-Za-z]+\\|INTERFACE\\s-+[A-Za-z]+\\)"))) (progn (split-window) (occur "^\\s-*\\(recursive\\s-+\\|RECURSIVE\\s-+\\|pure\\s-+\\|PURE\\s-+\\|elemental\\s-+\\|ELEMENTAL\\s-+\\|\\)\\(character.*?\\s-\\|CHARACTER.*?\\s-\\|type.*?\\s-\\|TYPE.*?\\s-\\|integer.*?\\s-\\|INTEGER.*?\\s-\\|real.*?\\s-\\|REAL.*?\\s-\\|double.*?\\s-\\|DOUBLE.*?\\s-\\|logical.*?\\s-\\|LOGICAL.*?\\s-\\|complex.*?\\s-\\|COMPLEX.*?\\s-\\|\\)\\(subroutine\\s-+\\|SUBROUTINE\\s-+\\|function\\s-+\\|FUNCTION\\s-+\\|type\\s-+\\|TYPE\\s-+\\)"))) ; 次のウィンドウへ移動 (other-window 1))) (add-hook 'f90-mode-hook '(lambda () (define-key f90-mode-map "\C-c\C-s" 'f90-index))) ;; fill-paragrah (M-q) で自動で段落詰め込みしたかったけど失敗 ;; 原因不明... (mew-draft-mode だとなんでうまくいくのかなぁ…???) (add-hook 'f90-mode-hook '(lambda () (setq adaptive-fill-first-line-regexp "[ \t]*\\([-a-z0-9A-Z]\\|\\cj\\)*>+[ \t;#!]*\\|[ \t;#!]*" adaptive-fill-regexp "[ \t]*\\([-a-z0-9A-Z]\\|\\cj\\)*>+[ \t;#!]*\\|[ \t;#!]*" ) )) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== Perl モードの設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; cperl-mode を呼び出す. (autoload 'perl-mode "cperl-mode" "alternate mode for editing Perl programs" t) ;; 拡張子が .pl .perl .cgi のファイルを開くときに cperl-mode にする (setq auto-mode-alist (cons '("\\.pl$" . cperl-mode) auto-mode-alist)) (setq auto-mode-alist (cons '("\\.perl$" . cperl-mode) auto-mode-alist)) (setq auto-mode-alist (cons '("\\.cgi$" . cperl-mode) auto-mode-alist)) (setq cperl-indent-level 4) ; インデントの文字幅 (setq cperl-continued-statement-offset 4) (setq cperl-comment-column 40) (setq cperl-font-lock t) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== Ruby モードの設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; load-path 設定 ;(setq load-path ; (cons ; (expand-file-name "~/.site-lisp") load-path)) ;; ruby-index のキー設定 (when (locate-library "ruby-mode") (progn (load-library "ruby-mode") (define-key ruby-mode-map "\C-c\C-w" 'ruby-index))) ;; ruby-mode を呼び出す. (autoload 'ruby-mode "ruby-mode" "alternate mode for editing ruby programs") (setq auto-mode-alist (append '(("\\.rb$" . ruby-mode)) auto-mode-alist)) (setq interpreter-mode-alist (append '(("^#!.*ruby" . ruby-mode)) interpreter-mode-alist)) ;;=== メソッドインデックス取り出しコマンド (defun ruby-index () "Show Ruby Formed Label list through temporary buffer." (interactive) (let ((word "all") (ruby-index-list '(("all" . "") ("method" . "") ("class" . "")))) (define-key ruby-mode-map "\C-c\C-s" 'ruby-index) (setq word (completing-read "ruby-index word: " ruby-index-list nil " " word)) (cond ((string= word "all") (progn (split-window) (occur "^\\s-*\\(def\\s-+\\|class\\s-+\\|module\\s-+\\)"))) ((string= word "method") (progn (split-window) (occur "^\\s-*def\\s-+"))) ((string= word "class") (progn (split-window) (occur "^\\s-*\\(class\\s-+\\|module\\s-+\\)"))) (progn (split-window) (occur "^\\s-*\\(def\\s-+\\|class\\s-+\\|module\\s-+\\)"))) ; 次のウィンドウへ移動 (other-window 1))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== RD (Ruby Documents) モードの設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; load-path 設定 ; ; * システムの rd-mode.el が既に存在するのであればローカルに依存 ; ;(cond ; ((not (locate-library "rd-mode")) ; (setq load-path ; (cons ; (expand-file-name "~/.site-lisp/rd") load-path)))) ; ; * ローカルの rd-mode.el を優先的に利用する (setq load-path (cons (expand-file-name "~/.site-lisp/rd") load-path)) ;; rd-mode を呼び出す. (cond ((locate-library "rd-mode") (progn (autoload 'rd-mode "rd-mode" "alternate mode for editing ruby documents" t) ; とりあえずいつでもロードしておく (load-library "rd-mode")))) (setq auto-mode-alist (append '(("\\.rd$" . rd-mode)) auto-mode-alist)) (setq interpreter-mode-alist (append '(("^#!.*rd" . rd-mode)) interpreter-mode-alist)) ;; RD のラベルの一覧表示 & 移動用コマンド ; キー設定 (when (locate-library "rd-mode") (define-key rd-mode-map "\C-c\C-s" 'rd-show-label-list-active)) ;(global-set-key "\C-c\C-s" 'rd-show-label-list-active) (defun rd-show-label-list-active() "Active rd-show-label-list" (interactive) (rd-show-label-list) ; 次のウィンドウへ移動 (other-window 1)) ;; rd-mode が起動した際に, =end \n\n =begin が "..." に変換されてしまわ ;; ないようにする設定 (add-hook 'rd-mode-hook 'rd-show-other-block-all) ;; rd-show-label-list の修正. ;; ;; ":" の上に空行が一行表示されないよう, ;; 行頭の ":" しか一覧に表示しない. (defun rd-show-label-list () "Show RD Label list through temporary buffer." (interactive) (occur "^\\(=+\\s-\\|\\+\\|:\\|\\s-*---\\)")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== Occur の設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ;; 上記で表示される occur において Enter を押すと、"*Occur*" が ;; 閉じるようにする。"\C-c\C-c" ならば "*Occur*" バッファは消えない。 ;; ;; [履歴] ;; 2006/03/04 "\C-m" (= Enter) ならば, "*Occur*" というバッファ自体 ;; を削除するよう変更. ; ; * 参照 ; * /usr/share/emacs/21.3/lisp/replace.el ; * http://www.bookshelf.jp/soft/meadow_50.html ; (setq occur-mode-hook '(lambda () (define-key occur-mode-map "\C-m" 'occur-mode-goto-occurrence-delwindow) (defun occur-mode-goto-occurrence-delwindow () "Go to the occurrence the current line describes." (interactive) (let ((pos (occur-mode-find-occurrence)) (occur-window (selected-window))) (pop-to-buffer occur-buffer) (goto-char (marker-position pos)) (delete-window occur-window) (kill-buffer "*Occur*"))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== RD (Ruby Documents) モードの箇条書き支援モード rd-mode-plus.el ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; load-path 設定 ; (もしもシステムに rd-mode-plus.el が既に存在するのであれば ; ローカルには依存しない) (cond ((not (locate-library "rd-mode-plus")) (setq load-path (cons (expand-file-name "~/.site-lisp/rd") load-path)))) ;; rd-mode-plus を呼び出す. (cond ((locate-library "rd-mode-plus") (progn (load "rd-mode-plus")))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== sdic (辞書モード) の設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 翻訳の王様を導入したのでショートカットキーをそちらに移す 2004/09/08 ; ;; 文字を書き込んでから検索 ; (global-set-key "\C-cW" 'sdic-describe-word) ; ;; カーソル位置の文字をすぐに検索 ; ;; (ただし, yatex モードでは \C-cwは使えないので注意) ; (global-set-key "\C-cw" 'sdic-describe-word-at-point) ; ;; sdic ウィンドウを閉じる ; (global-set-key "\C-cq" 'sdic-close-window) ; (setq sdic-window-height 10 sdic-disable-select-window t) ; (defvar sdic-face-color "cyan" "*Color of entry. 見出し語を表示するために使う色") ;;;;;;;;; ;;; autolookup の設定 ; load-path 設定 (setq load-path (cons (expand-file-name "~/.site-lisp") load-path)) (setq auto-lookup-backend 'sdic) ; カーソル位置の単語の訳を自動的に表示するマイナーモード (autoload 'auto-lookup-mode "autolookup" "カーソル位置の単語の訳を自動的に表示するマイナーモード" t) ; カーソル位置の単語の訳を自動的に表示するマイナーモードを ; 全てのバッファで起動する (autoload 'global-auto-lookup-mode "autolookup" "カーソル位置の単語の訳を自動的に表示するマイナーモードを全てのバッファで起動する" t) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== 日本語環境で dired-mode を利用するための設定 ;; ;; dired-mode はファイルのリストをシステムの "ls" コマンドで ;; 取得している. ls はバージョン 4.1 から 5.2.1 に移行する際, ;; 環境変数が ja... の場合の表記が大きく変更された. 以下の ls-5.2jp は ;; 5.2.1 の場合の設定である. ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq dired-move-to-filename-regexp (let* ((l "\\([A-Za-z]\\|[^\0-\177]\\)") (month (concat l l "+[.]?,? *")) (k "[^\0-\177]") (s " ") (yyyy "[0-9][0-9][0-9][0-9]") (mm "[ 0-1][0-9]") (dd "[ 0-3][0-9][.]?") (HH:MM "[ 0-2][0-9]:[0-5][0-9]") (western (concat "\\(" month s dd "\\|" dd s month "\\)" s "\\(" HH:MM "\\|" s "?" yyyy "\\|" yyyy s "\\)")) (japanese (concat mm k s dd k s "\\(" s HH:MM "\\|" yyyy k "\\)")) (debianjp (concat mm k s dd s "\\(" HH:MM "\\|" s yyyy "\\)")) (ls-5.2jp (concat yyyy "-" mm "-" dd s HH:MM ))) (concat ".*[0-9]" s "\\(" western "\\|" japanese "\\|" debianjp "\\|" ls-5.2jp "\\)" s))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== for kill-summary (2003/10/05) ;; * http://mibai.tec.u-ryukyu.ac.jp/~oshiro/Programs/ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; load-path 設定 (setq load-path (cons (expand-file-name "~/.site-lisp") load-path)) (autoload 'kill-summary "kill-summary" nil t) ; Meta キー (Alt or ESC) + y で kill-summary 起動 (global-set-key "\M-y" 'kill-summary) ; ウィンドウの高さデフォルトは 10 (setq kill-summary-window-height 10) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; [使い方] ( kill-summary.el より) ;;; ・kill-ring 選択用バッファを別ウィンドウに表示 ;;; ・p,n (j,k) で前と次の候補を選択し元編集バッファヘヤンク ;;; C-p (previous-line),C-n (next-line) なら候補を移動するだけ. ;;; SPC で現在行を選択.C-v (scroll-up) でスクロール ;;; ・ヤンク領域は yank-pop 風に次々に切り替わる ;;; ・yank-pop との整合性を確保.M-y に割り当てればひとまず ;;; 同じように使える(まだリング動作はできない…). ;;; ・表示中は他の操作はできない.RET (newline) で選択決定. ;;; 中止 (q, C-g (keyboard-quit), C-xo (other-window)) 時は ;;; ヤンク領域を消去 ;;; ・d で現在行のキルリングを即座に消去 ;;; ・'.' で現在行をヤンクポインタに設定 ;;; ・t で各キルの行数表示を切り替え ;;; ・^,_ でサマリー高さを変更 ;;; ・初期ウィンドウ高さは ~/.emacs 中で次のように ;;; 行なう(デフォルト値 10). ;;; (setq kill-summary-window-height 10) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== for session (2003/10/05) ;; * http://emacs-session.sourceforge.net/ ;; ;; [解説] いままで (今回 Emacs を起動した以前) にコピーした内容が ;; ~/.session に保存される. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; load-path 設定 (setq load-path (cons (expand-file-name "~/.site-lisp/session-2.2a") load-path)) (when (locate-library "session") (require 'session) (add-hook 'after-init-hook 'session-initialize) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== for dabbrev-ja (2004/01/08) ;; http://www.bookshelf.jp/soft/meadow_32.html#SEC424 ;; ;; [解説] 動的略称展開が可能になる. ;; ・ ショートカットキー: M-/ ;; ・ 正式コマンド : M-x dabbrev-expand ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; load-path 設定 (setq load-path (cons (expand-file-name "~/.site-lisp") load-path)) ;; dabbrev-ja をロード (cond ((locate-library "dabbrev-ja") (load "dabbrev-ja") ;; dabbrev で補完中の該当箇所が光る (require 'dabbrev-highlight))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== for a japanese holidays (2004/04/06) ;; * http://www.netlaputa.ne.jp/~kose/Emacs/lisp/japanese-holidays.el.bz2 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; load-path 設定 (cond ((locate-library "japanese-holidays") (load "japanese-holidays"))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== for a instamp (2004/08/25) ;; * http://www.bookshelf.jp/soft/meadow_36.html#SEC482 ;; * http://www.gentei.org/~yuuji/software/euc/instamp.el ;; ;; [解説] 「4-2-1 (Sun)」,「2/1 (Sun)」,「2004/2/1」 などの様々な ;; 書式で日付けを入力できます.しかも,簡単に切り替え可能. ;; ;; [使い方] Ctrl-c s (変更可), または M-x instamp で日付けを入力. ;; その直後に Ctrl-n や Ctrl-p とすると書式変更. ;; 一度ある書式で入力すると, 次回には Ctrl-c s とするだけで, ;; その書式が呼び出される. また, Ctrl-c s 後に z とすると, ;; 「 2004/2/1 (日) 」が「 2004/02/01 (日) 」のようになる. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; load-path 設定 (setq load-path (cons (expand-file-name "~/.site-lisp/instamp") load-path)) (autoload 'instamp "instamp" "Insert TimeStamp on the point" t) ; キー設定 (下記の設定だと Ctrl-c s で M-x instamp と同効果) (define-key global-map "\C-cs" 'instamp) ; デフォルトでは 2004/106 ではなく 2004/10/06 と表示させる. (setq instamp-remove-preceding-zero nil) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== 現在編集中のファイルの diff ;; * http://www.bookshelf.jp/soft/meadow_44.html#SEC608 ;; ;; [解説] 現在編集中の状態と保存されたファイルとの diff を取る ;; ;; [使い方] ファイルを編集中に M-x diff-with-original, あるいは ;; M-x ediff-with-original とする. なお自動保存をおこなって ;; いる場合には効果が無い. その場合は 標準コマンドの ;; M-x diff-backup を利用すると良い ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun diff-with-original (ediff) "Examin diff of current buffer with original file. If with prefix, do interactive merge using `ediff-with-original'. " (interactive "P") (if ediff (ediff-with-original) ;; simple diff view with diff-mode (require 'ediff) (let ((diff-buf (get-buffer-create (format "*diff %s*" (buffer-file-name)))) (ediff-diff-options "-u") ;; is it your favourite? (tmpfile (ediff-make-temp-file (current-buffer)))) (save-excursion (set-buffer diff-buf) (setq buffer-read-only nil) (buffer-disable-undo) (erase-buffer)) (ediff-make-diff2-buffer diff-buf (buffer-file-name) tmpfile) (delete-file tmpfile) (set-buffer diff-buf) (if (< (buffer-size) 1) (message "No differences with original file.") (condition-case nil (progn (require 'diff-mode) (diff-mode)) (error)) (goto-char 1) (pop-to-buffer diff-buf))))) (defun ediff-with-original () (interactive) ;; interactive merge using ediff (let ((file buffer-file-name) (buf (current-buffer)) (orig-buf (get-buffer-create (concat "*orig " buffer-file-name "*")))) (set-buffer orig-buf) (setq buffer-read-only nil) (buffer-disable-undo) (erase-buffer) (insert-file file) (setq buffer-read-only t) (set-buffer-modified-p nil) (ediff-buffers orig-buf buf))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== for pcl-cvs ;; * http://www.bookshelf.jp/soft/meadow_44.html#SEC611 ;; * http://www.ep.sci.hokudai.ac.jp/~morikawa/memo/cvs_emacs.txt ;; ;; [解説] Emacs から cvs コマンドを用いる. ;; ;; [使い方] M-x cvs-update で cvs update のコマンドと同効果 ;; その他, キー操作は多岐にわたるのでここでは省略. ;; 上記の参考資料を参照せよ. ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;=== 基本設定 (when (or (locate-library "pcl-cvs") ; pcl-cvs ライブラリがある時 (locate-library "pcvs")) ; pcvs ライブラリがある時 (autoload 'diff-mode "diff-mode" "Diff major mode" t) (add-to-list 'auto-mode-alist '("\\.\\(diffs?\\|patch\\|rej\\)\\'" . diff-mode)) ;; diff の日本語変換 (modify-coding-system-alist 'process "ediff" '(undecided . iso-2022-jp)) ;; diff のフラグ設定 (デフォルトは "-u") ; (setq cvs-diff-flags '("-u")) ;; cvsroot を明示的に指定することも可能 (不要だけど) ; (setq cvs-cvsroot ":local:/cygdrive/c/home/CVSROOT") ;;=== cvs のログメッセージのコードの設定 ; ; デフォルトのログメッセージの文字コード設定 (setq cvs-coding-system "iso-2022-jp") (modify-coding-system-alist 'process "cvs" '(undecided . iso-2022-jp)) ; 文字コードのリスト ; 文字コードのリスト (setq cvs-coding-system-list '(("euc-jp-unix" . "") ("sjis" . "") ("iso-2022-jp" . ""))) ; リストの定義 (defvar cvs-coding-system-list nil "The list of cvs log message conding system.") ; 文字コードを選択する関数の定義 (defun cvs-select-coding-system() "Select CVS log message coding system." (interactive) (progn (setq cvs-coding-system (completing-read "Select CVS coding system: " cvs-coding-system-list nil " " cvs-coding-system)) (cond ((string= cvs-coding-system "euc-jp-unix") (modify-coding-system-alist 'process "cvs" '(undecided . euc-jp-unix))) ((string= cvs-coding-system "sjis") (modify-coding-system-alist 'process "cvs" '(undecided . sjis))) ((string= cvs-coding-system "iso-2022-jp") (modify-coding-system-alist 'process "cvs" '(undecided . iso-2022-jp)))))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== for text-adjust ;; * http://www.taiyaki.org/elisp/text-adjust/ ;; * http://www.taiyaki.org/elisp/text-adjust/src/text-adjust.el ;; * http://www.bookshelf.jp/soft/meadow_21.html#SEC206 ;; * http://taiyaki.org/elisp/mell/ ;; ;; [解説] 半角カナを「〓」に置き換える, 全角英数を半角英数に変換する, ;; 句読点を統一する, 英数字の前後にスペースを入れるということを ;; 自動で行ってくれます. ;; ;; [使い方] ;; * M-x text-adjust-codecheck : 半角カナ, 規格外文字を「〓」に置き換える. ;; * M-x text-adjust-hankaku : 全角英数を半角にする. ;; * M-x text-adjust-kutouten : 句読点を「, 」「. 」に置き換える. ;; * M-x text-adjust-space : 全角文字と半角文字の間に空白を入れる. ;; * M-x text-adjust : これらをすべて実行する. ;; * M-x text-adjust-fill-region : 句読点優先で, fill-region をする. ;; ;; * -region でリージョン内を変換することも可能です. ;; ;; * C-u M-x text-adjust : 変更する句読点の変更 ;; * 選択項目 ;; * 「,」 句読点を「, 」と「. 」に置き換え ;; * 「、」 句読点を「、」と「。」に置き換え ;; * 「,」 句読点を「,」と「.」に置き換え ;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; load-path 設定 (setq load-path (cons (expand-file-name "~/.site-lisp/text-adjust") load-path)) ; ライブラリ読み込み (cond ((locate-library "text-adjust") (load-library "text-adjust"))) ; text-adjust-fill-region 実行時に左マージンを考慮させたい (setq adaptive-fill-regexp "[ \t]*") (setq adaptive-fill-mode t) ;一度指定した変換する句読点を変更したい ; C-u を最初に付ける (つまり C-u M-x text-adjust) ; ことによって 変更可能です. ;; 変換する句読点を「,.」から「、。」へ変更したい ;(setq text-adjust-rule-kutouten text-adjust-rule-kutouten-zkuten) ;; 変換する句読点を「,.」から「,.」へ変更したい ;(setq text-adjust-rule-kutouten text-adjust-rule-kutouten-hkuten) ;; 変換する句読点を文章ごとに指定したい (setq text-adjust-rule-kutouten nil) ;; 読点を変換しない ;(setq text-adjust-touten-from nil) ;; 区点を変換しない ;(setq text-adjust-kuten-from nil) ;; 「?!」や全角空白を半角へ変換しないようにしたい ;(setq text-adjust-hankaku-except " ?!@ー〜、,。.") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== 「インターネット 翻訳の王様 バイリンガル」を使うための設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 使用方法 ; ; ・ 選択領域を翻訳 C-c C-r M-x king-translate-region ; ・ バッファ全体を翻訳 C-c C-b M-x king-translate-buffer ; ・ 指定したファイルを C-c C-f M-x king-translate-file ; 開いて翻訳 ; ・ 単語の辞書引き C-c C-w M-x king-lookup-word (when (locate-library "king") (require 'king) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== for ssh-agent.el ;; * http://glozer.net/code.html#ssh-agent ;; * http://ko.meadowy.net/~shirai/diary/20040304.html#p01 ;; ;; [解説] emacs 内で ssh-agent、ssh-add を可能にし、ノンパス RSA 認証を ;; 可能にする。pcl-cvs や SMTP over SSH などを利用する際に有効 ;; ;; [使い方] ;; * M-x ssh-agent : パスフレーズを聞かれるので入力。 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; load-path 設定 (setq load-path (cons (expand-file-name "~/.site-lisp/ssh-agent") load-path)) ; ライブラリ読み込み (cond ((locate-library "ssh-agent") (load-library "ssh-agent"))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== for tramp ;; * http://www.xemacs.org/Documentation/packages/html/tramp_ja.html ;; * http://www.bookshelf.jp/texi/tramp/tramp_ja.html ;; ;; [解説] tramp を用いて, ssh アクセスと sudo を同時に行う ;; ;; [使い方] ;; * M-x tramp-ssh : ホスト名 (必須), ユーザ名, ディレクトリ名を入力. ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun tramp-ssh() "tramp with ssh and sudo" ;; tramp で ssh と sudo を併用する方法 (interactive) (require 'tramp) (let ((hostname nil) (username nil)(dir nil) (path nil)) (setq hostname (read-no-blanks-input "hostname: ")) (if (string= hostname "") (error "Error: Specify hostname")) (setq username (read-no-blanks-input (substitute-in-file-name "remote user [$USER]: "))) (setq dir (read-no-blanks-input (concat "directory or file [~" username "] :" ))) (if (string= dir "") (setq path (concat "~" username "/")) (if (or (string= "/" (substring dir 0 1)) (string= "~" (substring dir 0 1))) (setq path dir) (setq path (concat "~" username "/" dir)))) (find-file (substitute-in-file-name (concat "/multi:ssh:$USER@" hostname ":sudo:" username "@localhost:" path))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== for mksigen-write ;; * http://www.ep.sci.hokudai.ac.jp/~morikawa/elisp/mksigen-write/SIGEN_PUB.htm ;; * http://www.ep.sci.hokudai.ac.jp/~morikawa/perl/mksigen-write/SIGEN_PUB.htm ;; * http://www.gfd-dennou.org/arch/cc-env/mksigen/desc.htm ;; ;; [解説] SIGEN ファイル作成支援スクリプトです ;; ;; [使い方] ;; M-x mksigen-write で mksigen-write.pl で用いる一連の引数が ;; 問い合わされるので答えていく。それらが終わると SIGEN ファイル ;; に入力するためのバッファとウィンドウが開かれるので適宜入力する。 ;; ;; 取り消しおよび終了後のウィンドウを閉じたりするには再度 ;; M-x mksigen-write とすると良い。 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; load-path 設定 (setq load-path (cons (expand-file-name "~/.site-lisp/mksigen-write") load-path)) ;; load (autoload 'mksigen-write "mksigen-write" nil t) (when (locate-library "mksigen-write") ;; Ctrl-s Ctrl-s で M-x mksigen-write 起動/停止 (setq Mksigen-set-key "\C-cm") (global-set-key Mksigen-set-key 'mksigen-write) ;; mksigen-write.pl のプログラム設定 ;(setq Mksigen-write-program "mksigen-write.pl") ;; 一行入力したい方は ;(setq Mksigen-multiline-option "") ;; アップデートするか問い合わせる時は (setq Mksigen-forceupdate-option "") ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== for color-theme ;; * http://www.bookshelf.jp/soft/meadow_26.html#SEC300 ;; * http://www-2.cs.cmu.edu/~maverick/GNUEmacsColorThemeTest/index-el.html ;; * http://tsuttayo.sytes.net/php/emacs/ ;; * http://diary.mrmt.net/2005/01/23 ;; ;; [解説] カラー設定のテーマを適用するための elisp ;; ;; [使い方] ;; M-x color-theme-select 選べるテーマ一覧が出てくるので、 ;; カーソルをテーマまで持っていき Return を押すとテーマが ;; 適用される。好きなものがあれば (color-theme-****) のように ;; 書き込んでおくことで毎回テーマが適用される。 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq load-path (cons (expand-file-name "~/.site-lisp/color-theme") load-path)) (when (locate-library "color-theme") (require 'color-theme) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== for migemo (漢字変換せずに日本語インクリメンタルサーチ) ;; * http://www.bookshelf.jp/soft/meadow_49.html#SEC691 ;; * http://www4.kcn.ne.jp/~boochang/emacs/migemo.html ;; ;; [解説] 英数字の検索のように、日本語もインクリメンタルサーチする ;; ;; [使い方] ;; 下記の設定を行えば、自然と日本語でも英数字のように ;; インクリメンタルサーチが可能になる。 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;=== 準備 (Debian の場合には) ;; ;;"migemo" パッケージをインストールするだけでよい ;;=== 基本設定 (setq migemo-directory "/usr/share/migemo") (when (locate-library "migemo") ; ライブラリが存在しない場合には利用しない (load-library "migemo") ;;=== 拡張設定 ; emacs 起動時に初期化を行う (migemo-init) ; キャッシュによる検索の高速化 (setq migemo-use-pattern-alist t) (setq migemo-use-frequent-pattern-alist t) (setq migemo-pattern-alist-length 1024) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== for shell-command ;; * http://namazu.org/~tsuchiya/elisp/#shell-command-with-completion ;; ;; [解説] M-! の際のコマンド入力の際の補完が効くようにする ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq load-path (cons (expand-file-name "~/.site-lisp/shell-command") load-path)) (when (locate-library "shell-command") (require 'shell-command) (shell-command-completion-mode) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== for alpaca ;; * http://www.mew.org/~kazu/proj/cipher/index.html.ja ;; ;; [解説] GnuPG によって暗号化されたファイルを簡単に編集するため Lisp ;; ;; この Lisp が正しく動くためには gpg コマンドが必要である. ;; ;; 拡張子が .gpg のファイルを開く際に自動的にこの Lisp が呼ばれ, ;; gpg コマンドで復号化された内容がバッファに開かれる. 保存の際 ;; には自動的に gpg コマンドにより暗号化される. 複合化の際には ;; パスワードを聞かれるが, 暗号化の際にはメモリ上に残っているパ ;; スワードを用いるためパスワードを聞かれない. ;; ;; [補足] gpg コマンドを用いてファイルを暗号化するためには以下のように ;; コマンドする. 結果的に, 平文ファイルに ".gpg" という拡張子 ;; が付加されたファイルが作成される. ;; ;; % gpg -c sample.txt ;; ;; 復号化の際には以下のようにする. (当然パスワードが必要である) ;; ;; % gpg sample.txt.gpg ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq load-path (cons (expand-file-name "~/.site-lisp/alpaca") load-path)) (when (locate-library "alpaca") (autoload 'alpaca-after-find-file "alpaca" nil t) (add-hook 'find-file-hooks 'alpaca-after-find-file)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== for text-translator ;; * ダウンロード (Emacs 21 で動作するのは 0.6.0) ;; * http://d.hatena.ne.jp/khiker/20070503/emacs_text_translator ;; * 言語の自動選択 ;; * http://d.hatena.ne.jp/khiker/20071118/emacs_text_translator ;; * Excite 翻訳を可能にするための修正 ;; * http://d.hatena.ne.jp/khiker/20080129/text_translator ;; ;; [解説] バッファ内のテキストを直接 Google 翻訳や Excite 翻訳にかける ;; ;; [使い方] ;; * M-x text-translator-translate-by-auto-selection : 翻訳 (日英自動) ;; * C-u M-x text-translator-translate-by-auto-selection : 翻訳サイト設定後に翻訳 (日英自動) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq load-path (cons (expand-file-name "~/.site-lisp/text-translator") load-path)) (when (locate-library "text-translator") (require 'text-translator) ;; 自動選択に使用する関数を設定 (setq text-translator-auto-selection-func 'text-translator-translate-by-auto-selection-enja) ;; グローバルキーを設定 (global-set-key "\C-xt" 'text-translator-translate-by-auto-selection) ;(global-set-key "\C-xt" 'text-translator) (global-set-key "\C-x\M-t" 'text-translator-translate-last-string) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;== yatex, yahtml の設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; load-path (setq load-path (cons (expand-file-name "~/.site-lisp/yatex") load-path)) (cond ((locate-library "yatex") (autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t) (autoload 'yahtml-mode "yahtml" "Yet Another HTML mode" t) ;; 拡張子が .tex のファイルを開くときに yatex-mode にする (setq auto-mode-alist (cons '("\\.tex$" . yatex-mode) auto-mode-alist)) ;; 拡張子が .html, .htm .xhtmlのファイルを開くときに yahtml-mode にする ;; ※ yahtml-mode は勝手に文字コードを変換したがるので html-mode で開く ;(setq auto-mode-alist (cons '("\\.x?html?$" . yahtml-mode) auto-mode-alist)) (setq auto-mode-alist (cons '("\\.x?html?$" . html-mode) auto-mode-alist)) ;; Yatex でデフォルトで野鳥数式モードを起動させない. ;; (起動したい場合は, Ctrl-c, w, t) ;; (setq YaTeX-auto-math-mode nil) ;; AMS-LaTeX を使用 (align 環境で数式モードが有効になる, 等) (setq YaTeX-use-AMS-LaTeX t) ;; 開き括弧の入力で常に閉じ括弧を入力しない. (なぜか効かない…) ;; ※ Ctrl-c, w, m でも同様の効果になる. ;(setq YaTeX-close-paren-always nil) ;; 1画面の時にタイプセットバッファを初めて作成する時の高さ. ;; 数値で行数、数字文字列でEmacsウィンドウに対する百分率 (10) ;; ※ バッファを小さくした時の便利コマンド ;; ・ エラーの行に飛ぶ: Ctrl-c, ' (アポストロフィ, Shift-7) (setq YaTeX-default-pop-window-height 1) ;; HTML のタグを大文字にする ;(setq yahtml-prefer-upcases t) ;; yahtml でのインデントを2文字にする. (デフォルトは1) (setq yahtml-environment-indent 2) ;; 何でかしら無いが yahtml.el に書いてあるのに有効にならないため ;; ここに記述する. (defvar yahtml-indentation-boundary "^\\s *" "*Boundary regexp for indentation calculation.") ;; 漢字コードの指定(1=sjis, 2=jis, 3=euc) (setq YaTeX-kanji-code 3) (setq yahtml-kanji-code 3) ;; 外部コマンドの指定(パスが通ってない場合は絶対パスで記述) (setq tex-command "platex") (setq dvi2-command "xdvi-ja -geometry 960x720+0+0") (setq bibtex-command "jbibtex") ; lpr コマンドの際に呼び出されるコマンド ; (psnupは複数ページ を1枚の用紙に印刷するコマンドで ; 引数は1枚の用紙に印刷するページ数) (setq dviprint-command-format "dvips -f %f %t %s | psnup -1 | lpr") (setq dviprint-from-format "-p %b") (setq dviprint-to-format "-l %e") ; 以下は dvi2ps を用いた場合のコマンド ;(setq dviprint-command-format "dvi2ps %f %t %s | psnup -1 | lpr") ;(setq dviprint-from-format "-f %b") ;(setq dviprint-to-format "-t %e") ;; yatex-mode 初期化時の設定 (add-hook 'yatex-mode-hook (function (lambda () (global-set-key "\C-xm" 'compile) ; compile ショートカットキー (show-paren-mode t) ; 対応する括弧のいろつけ ;; outline-minor-mode の設定(使用しない場合は不要) (outline-minor-mode t) ; outline-minor-mode を起動 (make-local-variable 'outline-regexp) (setq outline-regexp ; 見出しの正規表現 (concat "[ \t]*\\\\" "\\(appendix\\|documentclass\\|part\\|Dchapterhead\\|" "section\\|subsection\\|subsubsection\\|" "paragraph\\|subparagraph\\)" "\\*?[ \t]*[[{]")))) ) ;; Yatex モードでのカラー設定 ;; (font-latex.el を使用. font-latex.el に関しては ;; http://people.debian.org/~psg/elisp/font-latex.el を参照.) ;; ;; 色を変化させたい場合は以下か .Xresources に記述すること ;; (詳細は font-latex.el 本体を参照のこと) ;; font-latex.el の置場を load-path に指定 ;; 以下では ~/.site-lisp/font-latex/ に置くことを想定 (setq load-path (cons (expand-file-name "~/.site-lisp/font-latex") load-path)) (when (locate-library "font-latex") ; font-latex 無い場合はパス (setq YaTeX-use-hilit19 nil) (setq YaTeX-use-font-lock nil) (if window-system (progn (require 'font-latex) (add-hook 'yatex-mode-hook 'font-latex-setup) (add-hook 'yatex-mode-hook 'turn-on-font-lock 'append) (setq YaTeX-font-lock-formula-face 'font-latex-math-face YaTeX-font-lock-label-face 'font-latex-label-face) ;;;;; ;; カラーの詳細設定 ; ;; LaTeX major keywords (改ページ, 改行などのコマンド) (set-face-foreground 'font-latex-warning-face "pink") ;(set-face-bold-p 'font-latex-warning-face nil) ; ボールドオフ ;; LaTeX minor keywords (一般コマンド (例: \frac{a}{b}, \alpha)) (set-face-foreground 'font-latex-sedate-face "Green") ;; LaTeX italics ({\itshape ***}, textit{***} の{ }内) (set-face-foreground 'font-latex-italic-face "LightSalmon") (set-face-italic-p 'font-latex-italic-face nil) ; イタリックオフ (set-face-bold-p 'font-latex-italic-face t) ; ボールドオン ;; LaTeX bolds ({\bfseries ***}, textbf{***} の{ }内) (set-face-foreground 'font-latex-bold-face "YellowGreen") ;(set-face-bold-p 'font-latex-bold-face nil) ; ボールドオフ ;; LaTeX math environments () (set-face-foreground 'font-latex-math-face "Yellow") )) ) ) ) ;;== hilit19 を使用してカラー設定を行う ;; (文書作成中に反映させたいときは Ctrl-Shift-l) ;;(if (not window-system) ;; ターミナルで開く場合は無効化する. ;; (setq hilit-background-mode 'dark) ;; 背景が黒の場合のカラー設定 ;; (load-library "hilit19") ;; ;; ;; 詳細なカラー設定 (全てを把握してるわけではないけど…) ;; ;; 色のレパートリーは /usr/X11R6/lib/X11/rgb.txt を参照すること ;; (setq hilit-face-translation-table ;; '((comment . red) ;; コメント ;; (include . green-bold) ;; require 文など ;; (define . PaleGreen-bold) ;; 定義文など ;; (defun . LightBlue-bold) ;; サブルーチンの開始など ;; (decl . SkyBlue) ;; begin などの宣言文 ;; (type ) ;; (keyword . yellow) ;; 条件子など ;; (label . red-underline) ;; (string . cyan) ;; 文字列 ;; (struct . gray-bold) ;; (glob-struct . magenta) ;; (named-param . DarkGoldenrod) ;; (crossref . DarkGoldenrod) ;; (formula . PaleGreen) ;; 数列など ;; (active-error . default/pink-bold) ;; (error . red-bold) ;; (warning . blue-italic) ;; (rule . blue-bold-underline) ;; (msg-subject . blue-bold) ;; (msg-from . purple-bold) ;; (msg-header . firebrick-bold) ;; (msg-separator . gray/tan-bold) ;; (msg-quote . PaleGreen) ;; 引用されたメッセージ ;; (summary-seen . grey40) ;; (summary-killed . grey50) ;; (summary-Xed . OliveDrab2) ;; (summary-deleted . firebrick) ;; (summary-unread . RoyalBlue) ;; (summary-new . blue-bold) ;; (summary-current . default/skyblue-bold) ;; (gnus-group-unsubscribed . grey50) ;; (gnus-group-empty) ;; (gnus-group-full . ForestGreen) ;; (gnus-group-overflowing . firebrick) ;; (dired-directory . blue-bold) ;; (dired-link . firebrick-italic) ;; (dired-ignored . ForestGreen) ;; (dired-deleted . red-bold-italic) ;; (dired-marked . purple) ;; (jargon-entry . blue-bold) ;; (jargon-xref . purple-bold) ;; (jargon-keyword . firebrick-underline) ;; ) ;; ) ;;) ;; if のくくり ;; 背景が白の場合のデフォルトのセッティング ;; (setq hilit-face-translation-table ;; '((comment . firebrick-italic) ;; コメント ;; (include . purple) ;; require 文など ;; (define . ForestGreen-bold) ;; (defun . blue-bold) ;; サブルーチンの開始など ;; (decl . RoyalBlue) ;; begin などの宣言文 ;; (type) ;; (keyword . RoyalBlue) ;; 条件子など ;; (label . red-underline) ;; (string . grey40) ;; 文字列 ;; (label . red-underline) ;; (string . grey40) ;; (struct . black-bold) ;; (glob-struct . magenta) ;; (named-param . DarkGoldenrod) ;; (crossref . DarkGoldenrod) ;; (formula . Goldenrod) ;; 数列など ;; (active-error . default/pink-bold) ;; (error . red-bold) ;; (warning . blue-italic) ;; (rule . blue-bold-underline) ;; (msg-subject . blue-bold) ;; (msg-from . purple-bold) ;; (msg-header . firebrick-bold) ;; (msg-separator . black/tan-bold) ;; (msg-quote . ForestGreen) ;; (summary-seen . grey40) ;; (summary-killed . grey50) ;; (summary-Xed . OliveDrab2) ;; (summary-deleted . firebrick) ;; (summary-unread . RoyalBlue) ;; (summary-new . blue-bold) ;; (summary-current . default/skyblue-bold) ;; (gnus-group-unsubscribed . grey50) ;; (gnus-group-empty) ;; (gnus-group-full . ForestGreen) ;; (gnus-group-overflowing . firebrick) ;; (dired-directory . blue-bold) ;; (dired-link . firebrick-italic) ;; (dired-ignored . ForestGreen) ;; (dired-deleted . red-bold-italic) ;; (dired-marked . purple) ;; (jargon-entry . blue-bold) ;; (jargon-xref . purple-bold) ;; (jargon-keyword . firebrick-underline) ;; ) ;; )