2011年7月10日

gnupack 6.02 で cygwin と emacs のインストールおよび設定まとめ



-*- mode: org; coding: utf-8 -*-

* はじめに

  Cygwin と Emacs の環境がだいぶ固まってきたので、ここでひとつまとめておく。
  elisp のこととか良く分からないけど、コピペだけで設定可能だった。指摘して
  くれるとうれしい。やってみて、とにかく分からないことばかりだった。 org-mode
  で見やすくしておいたけど、 org-mode がイマイチ使えない。腐ってる。俺が。

* システムの概要

  以下のマシンに gnupack をつかって、 cygwin と NTemacs の環境を整える。

  - OS 名 :: Microsoft Windows XP Professional
  - バージョン :: 5.1.2600 Service Pack 3 ビルド 2600
  - OS 製造元 ::  Microsoft Corporation
  - システム名 :: <machine-name>
  - システム製造元 ::  Dell Inc.
  - システムモデル ::  OptiPlex 780
  - システムの種類 :: X86-ベース PC
  - プロセッサ :: x86 Family 6 Model 23 Stepping 10 GenuineIntel ~3158 Mhz
  - BIOS バージョン/ 日付 :: Dell Inc. A08, 2011/01/21
  - SMBIOS バージョン :: 2.5
  - Windows ディレクトリ :: C:\WINDOWS
  - システム ディレクトリ :: C:\WINDOWS\system32
  - ブート デバイス ::  \Device\HarddiskVolume1
  - ロケール :: 日本
  - ハードウェア アブストラクション レイヤ  バージョン = "5.1.2600.5512 (xpsp.080413-2111)"
  - ユーザー名 :: <domain>\<username>
  - タイム ゾーン :: 東京 (標準時)
  - 合計物理メモリ :: 4,096.00 MB
  - 利用可能な物理メモリ :: 2.51 GB
  - 合計仮想メモリ :: 2.00 GB
  - 利用可能な仮想メモリ :: 1.95 GB
  - ページ ファイルの空き容量 :: 5.30 GB
  - ページ ファイル :: C:\pagefile.sys

* インストール手順および設定
** 下準備
*** TEMP と TMP の環境変数を設定

    1. マイコンピュータを右クリック:[プロパティ]

    2. [詳細設定]>[環境変数] をクリック

    3. [<username>のユーザー環境変数] で、 [新規] をクリック

    4. [変数名] に [TEMP] 、 [変数値] に [c:\temp] を記載し、 [OK]

    5. 同様に、 [TMP] を設定

*** メイリオ・メイリオ改 の入手

    Windows XP にはメイリオがついていないので、それを入手する。ただし、
    普通に入手したものもいまいちなので、メイリオ改を入手する。詳細な手
    順は以下を参考に。

    ことば・その周辺
    http://okrchicagob.blog4.fc2.com/

    の

    2008.01.03 ブログ内記事で取りあげたソフト・ファイルのDL情報
    http://okrchicagob.blog4.fc2.com/blog-entry-169.html#169

    と

    MeiryoKe_Gothic ver.6.02 を生成する方法
    http://okrchicagob.blog4.fc2.com/blog-entry-206.html#MRKEGEN602

    *以下、生成した各種 ttc ファイルは c:\tmp\fonts に格納したと仮定する*

    なお、 gnupack のインストールサイトには Windows のアンチエイリアスが
    いまいちということで、 gdit++ のインストールが紹介されているので、こ
    ちらでもよい気がする。

    gdi++ の導入・設定
    http://gnupack.sourceforge.jp/docs/current/UsersGuide_tips.html#_gdi_install

** gnupack
*** インストール手順 ( 30.06.11 現在:リリース版の最新は 6.02 )

    1. gnupack gnupack_devel-6.02.exe を以下からダウンロードする

       http://sourceforge.jp/projects/gnupack/releases/?package_id=10360

    2. [gnupack_devel-6.02.exe] を実行

    3. [解凍先] を [C:\] にして、 [実行] をクリック

    4. 以下の exe を起動して、それぞれ起動確認

       C:\gnupack_devel-6.02\bash.exe
       C:\gnupack_devel-6.02\emacs.exe
       C:\gnupack_devel-6.02\gvim.exe

*** config.ini の 設定
**** メイリオ改フォントのコピー

     1. emacs を起動

     2. M-x eshell で eshell を 起動

     3. フォントをコピー

        cd c:/gnupack_devel-6.02/app/font/
        mkidr meiryo_Kai602
        cp c:/tmp/fonts/*.ttc c:/gnupack_devel-6.02/app/font/meiryo_Kai602

**** フォント、プロキシの設定

     1. C-x C-f で、 c:\gnupack_devel-6.02\config.ini を開く

     2. 以下のように修正

     === c:/gnupack_devel-6.02/config.ini       2011-06-30 11:55:32.560593400 +0900
     --- c:/gnupack_devel-6.02/config.ini.orig  2011-06-30 11:53:09.965362600 +0900
     ===============
     === 2,9 ====

       [SetEnv]
          ;_font_         = MS ゴシック
     !    ;_font_         = Migu 1M
     !     _font_         = MeiryoKe_Console
           _local_        = %INST_DIR%\app\cygwin\local

           CYGWIN_DIR     = %INST_DIR%\app\cygwin\cygwin
     --- 2,8 ----

       [SetEnv]
          ;_font_         = MS ゴシック
     !     _font_         = Migu 1M
           _local_        = %INST_DIR%\app\cygwin\local

           CYGWIN_DIR     = %INST_DIR%\app\cygwin\cygwin
     ===============
     === 17,23 ====
           MAKE_MODE      = unix
           TZ             = JST-9
           LANG           = ja_JP.cp932
     -     http_proxy      = http://<username>:<psssword>@<proxyaddress>:<port>/

           PATH           = %EMACS_DIR%\bin;%INST_DIR%\app\vim;%INST_DIR%\app\script
           PATH           = %PATH%;%INST_DIR%\app\mingw\tdm\bin;%_local_%\bin;%CYGWIN_DIR%\bin
     --- 16,21 ----
     ===============
     === 67,73 ====

       [Font]
           font_file1     = %INST_DIR%\app\font\Migu-1M\Migu-1M-regular.ttf
     -     font_file2     = %INST_DIR%\app\app\font\meiryo_Kai602\meiryo_Kai602.ttc

       [Mnt]
           mount_point0   = none          ;/         ;cygdrive;binary,nouser,noacl,posix=0;
     --- 65,70 ----

*** bssh での Foont smoothing の設定

    1. bash.exe を起動して タイトルバーを右クリック

    2. [Options] を選択

    3. [Text] を選択肢、 [Font smoothing] を [Partial] から [Full] に変更

    4. [OK] をクリック

*** wget の proxy 設定

    http_proxy の設定で、<username>と<password>を設定していると、 wget が
    正常に動作しない模様。 wget の設定もやっておく。

    1. emacs を起動

    2. C-x C-f で ~/.wgetrc を作成し、以下を記載

       http_proxy=<proxyadress>:<port>

** cygwin
*** w3m

   bash を起動して

   apt-cyg w3m

   とするだけ。起動確認は

   w3m -M www.google.com

   で、終了は

   q

   で可能

*** ruby

   bash を起動して、 apt-cyg install ruby subversion-ruby とするだけで、
   関連のものも自動でインストールされる(サブバージョンはバージョン管
   理のもの)。

   念のため

   ruby -v

*** python

    1. パッケージ群のインストール

       過去にパッケージ不足とかでできなかったことがあるため、

       apt-cyg find python

       で出てきたものをすべてインストールする。内容は良く分からない。

       apt-cyg install libboost_python1.43 postgresql-plpython python python-brlapi python-cairo python-crypto python-doc python-feedparser python-gamin python-gdata python-gobject2.0 python-gobject2.0-devel python-gsf python-gtk2.0 python-gtk2.0-demo python-gtk2.0-devel python-lcms python-libproxy python-libxml2 python-libxslt python-ming python-numpy python-paramiko python-pygtk python-pyrex python-test python-tkinter python-xdg subversion-python

    2. easy_install, setuptools, pyflakes のインストール

       setuptools とかいうのが良く出てくるのと、 pyflkes (チェッカ)を使
       いたいので、 bash で以下のようにインストール

       wget http://peak.telecommunity.com/dist/ez_setup.py
       python ez_setup.py
       wget http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg#md5=bfa92100bd772d5a213eedd356d64086
       sh setuptools-0.6c11-py2.6.egg
       easy_install pyflakes

     3. 確認

        python と pyflakes の確認を行う。

        ~/tmp/sample.py

        を

        print "hoge"

        とつくって、 bash で

        python sample.py

        として、 hoge の 表示を確認し、さらに、 sample.py を

        print "hello

        として、 bash で

        sample.py:1: EOL while scanning string literal
        print "hoge
                   ^

        といってくれれば成功

     3. pyflakes のバッチファイルを作成

        ウィンドウズで使うため(というか、 emacs で使うため)に、以下のバッ
        チファイルを作成しておく。

        1) emacs を起動

        2) C-x C-f で pyflakes.bat を以下に作成

          c:/gnupack_devel-6.02/app/cygwin/cygwin/bin

        3) 以下のように記載し、 C-x RET f shift-jis-dos として、 C-x C-s

          @echo off
          c:\gnupack_devel-6.02\app\cygwin\cygwin\bin\python /usr/bin/pyflakes %*

      4. pyflakes.bat の確認

        cmd を起動して

        c:\gnupack_devel-6.02\app\cygwin\cygwin\bin\pyflakes sample.py

        をして、指摘してくれれば OK

*** migemo ( ruby )

    bash を起動して以下を実行

    wget http://0xcc.net/ruby-bsearch/ruby-bsearch-1.5.tar.gz
    tar zxvf ruby-bsearch-1.5.tar.gz
    cd ruby-bsearch-1.5
    cp bsearch.rb /usr/lib/ruby/site_ruby
    cd ..
    wget http://0xcc.net/ruby-romkan/ruby-romkan-0.4.tar.gz
    tar zxvf ruby-romkan-0.4.tar.gz
    cd ruby-romkan-0.4
    cp romkan.rb /usr/lib/ruby/site_ruby
    cd ..
    wget http://0xcc.net/migemo/migemo-0.40.tar.gz
    tar zxvf migemo-0.40.tar.gz
    cd migemo-0.40
    ./configure --with-emacs=C:/gnupack_devel-6.02/app/emacs/emacs/bin/emacs.exe --with-lispdir=C:/gnupack_devel-6.02/app/emacs/site-lisp
    make
    make install
    migemo /usr/local/share/migemo/migemo-dict | nkf -u -E -s
    mig

    いろんな文字がバラバラと表示されたら、 Ctrl+C で強制終了

*** RCS

    一番単純なバージョン管理。 bash で apt-cyg install rcs だけ。

*** emacs-w3m
**** ファイルの入手について

     CVS は HTTP Port でないため、 Proxy CVS 用に Proxy の設定をしなけれ
     ばならないが、よく分からない。

     HTTP Proxy だけ与えられているので、トンネルする方法もあるようだが、
     そんなことはできるだけやりたくない。

     しかたないので、 proxy が不要な環境で、 emacs-w3m のファイルをとって
     くる。 bash での手順は以下のとおり。

     apt-cyg install cvs autoconf
     wget http://emacs-w3m.namazu.org/emacs-w3m-1.4.4.tar.gz
     cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot login
     CVS password: [RET]
     cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot co emacs-w3m
     tar zxf emacs-w3m-1.4.4.tar.gz
     cp -r emacs-w3m-1.4.4 emacs-w3m-cvs
     \cp -f emacs-w3m/* emacs-w3m-cvs

     上記できた emacs-w3m-cvs フォルダの中身をとっておけば OK 。

**** インストール手順

     bash を起動し以下を実行。 autoconf は必要みたい。

     apt-cyg installcvs autoconf
     cd emacs-w3m-cvs
     ./configure --with-emacs=/app/emacs/emacs/bin/emacs --with-lispdir=/app/emacs/site-lisp/w3m --with-icondir=/app/emacs/emacs/etc/w3m
     make
     make install

*** aspell

    bash で以下。

    apt-cyg install aspell aspell-en

*** git

    bash で

    apt-cyg install git
** NTemacs
*** Personal initialization

    デフォルトの機能を利用した個人的な初期設定は以下

    ;; ------------------------------------------------------------------------
    ;; @ 個人的な初期設定

    ; 区切り文字に全角スペースや、・を含める
    (setq paragraph-start '"^\\([  ・○<\t\n\f]\\|(?[0-9a-zA-Z]+)\\)")

    ;; startup directory
    (setq default-directory "~/")

    ;; ファイルのカーソル内の位置を記憶
    (setq-default save-place t)

    ;; ガベッジコレクション閾値 を 40MB に
    (setq gc-cons-threshold 41943040)

    ;; ログの記録行数を増やす
    (setq message-log-max 10000)

    ;; undo をいっぱい
    (setq undo-limit 100000)
    (setq undo-strong-limit 130000)

    ;; キーストロークの表示速度を上げる
    (setq echo-keystrokes 0.1)

    ;; でかいファイルも普通に開く(デフォルトは 10MB )
    (setq large-file-warning-threshold (* 50 1024 1024)) ;50MB

    ;; いちいち yes とか無理だから y にする
    (defalias 'yes-or-no-p 'y-or-n-p)

    ;; BS や Delete キーでリージョン内の文字を削除
    (delete-selection-mode 1)

    ;; @ 前回編集していた場所を記憶し,ファイルを開いた時にそこへカーソルを移動
    (require 'saveplace)
    (setq-default save-place t)

    ;; kill-ring はテキスト属性(色情報など)を保存しなくていい
    ;; http://www-tsujii.is.s.u-tokyo.ac.jp/~yoshinag/tips/elisp_tips.html#yankoff
    (defadvice kill-new (around my-kill-ring-disable-text-property activate)
      (let ((new (ad-get-arg 0)))
        (set-text-properties 0 (length new) nil new)
        ad-do-it))

    ;; 初期画面をいきなり buffer-menu にする
    (buffer-menu)

    ; キー入力中にマウスポインタを右上隅へ移動
    ; banish
    ;   キー操作によって右上隅に移動 (デフォルト)
    ; exile
    ;   カーソルが近付いたときだけ右上隅に移動、その後復帰
    ; jump
    ;   カーソルが近付くとランダムに移動
    (mouse-avoidance-mode 'banish)

    ;; hiwin-mode がなんか変
    ;; http://sourceforge.jp/forum/forum.php?thread_id=28902&forum_id=22824
    (defadvice kill-buffer
    (around kill-buffer-around activate)
    ad-do-it
    (if hiwin-ol (hiwin-draw-ol)))

    ;; @ 括弧の対応表示
    ;; http://ksugita.blog62.fc2.com/category1-2.html
    (setq blink-matching-paren t)
    (show-paren-mode t)
    (setq paren-sexp-mode t)
    (set-face-background 'show-paren-match "royalBlue1")

    ;; タブ, 全角スペースを色つき表示する (色名は M-x list-color-display で調べる)
    ;;  http://homepage1.nifty.com/blankspace/emacs/color.html
    (defface my-face-b-1 '((t (:background "LightGray"))) nil)
    (defface my-face-b-2 '((t (:background "LightBlue"))) nil)
    (defface my-face-u-1 '((t (:foreground "LightSkyBlue" :underline t))) nil)
    (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)
         )))
    (ad-enable-advice 'font-lock-mode 'before 'my-font-lock-mode)
    (ad-activate 'font-lock-mode)

    ;;; フレームサイズをトグルで切り替え
    ;; http://www.bookshelf.jp/soft/meadow_30.html#SEC416
    ;; 現在のフレームサイズを調べる方法
    ;; *scratch*バッファを開き, (frame-width), (frame-height) と書き, C-j する

    (setq my-frame-max-flag nil)

    (defun my-toggle-frame-size ()
      (interactive)
      (if my-frame-max-flag
          (progn
            (setq my-frame-max-flag nil)
            (if (functionp 'w32-restore-frame)
                (w32-restore-frame)
              (set-frame-configuration my-last-frame-conf)
              (message "not MAX.") (sit-for 2)
              ))
        (setq my-frame-max-flag t)
        (if (functionp 'w32-maximize-frame)
            (w32-maximize-frame)
          (setq my-last-frame-conf (current-frame-configuration))
          (set-frame-position (selected-frame) 0 0)
          ;; フレーム最大化時に (frame-height) で得た値
          (set-frame-height (selected-frame) 70)
          ;; フレーム最大化時に (frame-width) で得た値
          (set-frame-width (selected-frame) 195)
          (message "to MAX.") (sit-for 2)
        )))

    (add-hook 'ediff-before-setup-hook 'my-toggle-frame-size) ; ediff 立ち上げ時に、画面を最大化
    (add-hook 'ediff-quit-hook 'my-toggle-frame-size) ; ediff 終了時に、画面を元に戻す
    (global-set-key [f11] 'my-toggle-frame-size)      ; f11 に割り当て

    ;; @ 定型文の挿入 my-template-select
    ;; http://www.bookshelf.jp/soft/meadow_37.html#SEC554

    (defvar my-template-text-file "~/.template")
    (defvar my-template-buffer nil)
    (defvar my-template-point nil)

    (defun my-template-insert ()
      (interactive)
      (let (content)
        (when (setq
               content
               (get-text-property (point) :content))
          (save-excursion
            (set-buffer my-template-buffer)
            (save-excursion
              (goto-char my-template-point)
              (insert content))))))

    (defun my-template-select ()
      (interactive)
      (let ((buffer
             (get-buffer-create "*select template*"))
            templates begin template-map text)
        (setq my-template-buffer (current-buffer)
              my-template-point  (point))
        (unless (file-readable-p my-template-text-file)
          (error "Couldn't read template file: %s"))
        (with-temp-buffer
          (insert-file-contents my-template-text-file)
          (goto-char (point-min))
          (while (re-search-forward "^\\*\\(.*\\)$" nil t)
            (when begin
              (setq templates
                    (cons
                     (cons
                      (car templates)
                      (buffer-substring
                       begin (1- (match-beginning 0))))
                     (cdr templates))))
            (setq templates (cons (match-string 1) templates))
            (setq begin (1+ (match-end 0))))
          (when begin
            (setq templates
                  (cons
                   (cons
                    (car templates)
                    (buffer-substring begin (point-max)))
                   (cdr templates)))))
        (pop-to-buffer buffer)
        (setq buffer-read-only nil
              major-mode       'template-select-mode
              mode-name        "Select Template"
              template-map     (make-keymap))
        (suppress-keymap template-map)
        (define-key template-map " "    'my-template-insert)
        (define-key template-map "\C-m" 'my-template-insert)
        (define-key template-map "n"    'next-line)
        (define-key template-map "p"    'previous-line)
        (define-key template-map "q"    'kill-buffer-and-window)
        (use-local-map template-map)
        (buffer-disable-undo)
        (delete-region (point-min) (point-max))
        (dolist (tt templates)
          (setq text (concat (car tt) "\n"))
          (put-text-property
           0 (length text) :content (cdr tt) text)
          (insert text)
          (goto-char (point-min)))
        (delete-region (1- (point-max)) (point-max))
        (setq buffer-read-only t)
        (set-buffer-modified-p nil)))

*** auto-install.el

    簡単に el をインストールできるってもの。文字化けとかでインストールできない
    ものも多いんだけど、とりあえず入れる。*以下、これが入っている事を仮定する*。

**** download

     emacs を起動して、以下を実行

     M-x eshell
     mkdir -p ~/.emacs.d/auto-install
     cd ~/.emacs.d/auto-install
     wget http://www.emacswiki.org/emacs/download/auto-install.el

**** init.el (.emacs,emacs.el)

     ;; ------------------------------------------------------------------------
     ;; @ auto-install.el

     ;; ロードパスの追加
     (add-to-list 'load-path
                  "~\\.emacs.d\\auto-install")
     (require 'auto-install)
     (setq auto-install-directory "~\\.emacs.d\\auto-install")
     ;; 起動時に EmacsWiki のページ名を補完候補に加えない
     (auto-install-update-emacswiki-package-name t)
     ;; install-elisp.el 互換モードにする
     (auto-install-compatibility-setup)
     ;; ediff 関連のバッファを 1 つのフレームにまとめる
     (setq ediff-window-setup-function 'ediff-setup-windows-plain)
     (put 'downcase-region 'disabled nil)

*** migemo.el, isearch
**** download

     migemo は cygwin のほうでインストール時に終了しているはず

**** init.el (.emacs,emacs.el)

     ;; ------------------------------------------------------------------------
     ;; @ iserarch で日本語を使う
     ;; http://highmt.wordpress.com/2010/10/25/isearch%e3%81%a7%e6%97%a5%e6%9c%ac%e8%aa%9e%e5%85%a5%e5%8a%9b%e3%82%92%e3%82%84%e3%82%8a%e3%82%84%e3%81%99%e3%81%8f%e3%81%99%e3%82%8b%e3%83%91%e3%83%83%e3%83%81/

     (defun w32-isearch-update ()
       (interactive)
       (isearch-update))
     (define-key isearch-mode-map [compend] 'w32-isearch-update)
     (define-key isearch-mode-map [kanji] 'isearch-toggle-input-method)

     (add-hook 'isearch-mode-hook
               (lambda () (setq w32-ime-composition-window (minibuffer-window))))
     (add-hook 'isearch-mode-end-hook
               (lambda () (setq w32-ime-composition-window nil)))

     ;; ------------------------------------------------------------------------
     ;; @ 検索時にミゲモを使う
     (require 'migemo)

*** recentf.el

    最近使ったファイルリストを表示するやつ

**** download

     M-x install-elisp-from-emacs wiki
     recentf-ext.el

**** init.el (.emacs,emacs.el)

     ;; ------------------------------------------------------------------------
     ;; @ 最近使ったファイルを開く recentf-ext.el

     ;; 最近のファイルを 3000 個保存する
     (setq recentf-max-saved-items 3000)
     ;; 読み込み
     (require 'recentf-ext)

*** open-junk-file.el

    使い捨てのファイルをサクサクつくる

**** download

     M-x install-elisp-from-emacswiki
     open-junk-file.el

**** init.el (.emacs,emacs.el)

     ;; ------------------------------------------------------------------------
     ;; @ 使い捨てのファイルを開く open-junk-file.el

     ;; 読み込み
     (require 'open-junk-file)

     ;; ファイル名およびファイル場所の指定
     (setq open-junk-file-format "~/junk/%Y-%m-%d-%H%M%S.")

*** anything.el

    便利なんだって。使い方、まだ、よくわかんない。

**** download

     M-x auto-install-batch
     anything
     C-c C-c を連打

     anything-migemo.el で、*文字コードエラー*が出るがそのまま [RET] して、
     C-c C-c を連打

     M-x eshell
     rm -rf anything-migemo.*
     wget http://www.emacswiki.org/emacs/download/anything-migemo.el
     exit

     emacs を再起動して

     M-x byte-compile-file
     ~/.emacs.d/auto-install/anything-migemo.el

**** init.el (.emacs,emacs.el)

     ;; ------------------------------------------------------------------------
     ;; @ anything
     (require 'anything-startup)

*** aspell (ispell)
**** download

     cygwin の方で終わってる

**** init.el (.emacs, emacs.el)

     ;; ------------------------------------------------------------------------
     ;; @ ispell が無いから、 aspell を使う

     (setq-default ispell-program-name "aspell")
     (eval-after-load "ispell"
      '(add-to-list 'ispell-skip-region-alist '("[^\000-\377]+")))

**** .aspell.conf

     ~/.aspell.conf を作って

     lang en_US

     とする

*** emacs-w3m
**** download

     cygwin の方で終わってる

**** init.el (.emacs, emacs.el)

     ;; ------------------------------------------------------------------------
     ;; @ w3m-emacs
     (require 'w3m-load)
     (setq w3m-use-cookies t)
     (setq w3m-home-page "www.google.co.jp")

*** bat-mode.el
**** download

     ftp だからか時間がかかるので注意

     M-x install-elisp
     http://ftp.gnu.org/old-gnu/emacs/windows/contrib/bat-mode.el
     C-c

**** init.el (.emacs, emacs.el)

     ;; ------------------------------------------------------------------------
     ;; @ windows batch-mode
     (setq auto-mode-alist
            (append
             (list (cons "file://.[bB][aA][tT]$/" 'bat-mode))
             ;; For DOS init files
             (list (cons "CONFIG\\."   'bat-mode))
             (list (cons "AUTOEXEC\\." 'bat-mode))
             auto-mode-alist))
     (autoload 'bat-mode "bat-mode"
           "DOS and Windows BAT files" t)

*** tail.el
**** download

     M-x install-elisp-from-emacswiki
     tail.el
     C-c

**** init.el (.emacs, emacs.el)

     ;; ------------------------------------------------------------------------
     ;; @ emacs で tail を動かす

     (require 'tail)
     (setq tail-volatile nil)                ;前の記載を消さない
     (setq tail-hide-delay 100000)           ;隠すまで 100000sec
     (setq tail-max-size 15)                 ;Window のサイズ

**** jtail.bat

     以下のような jatail.bat を作っておき、 PATH の通ったところに置いてお
     いたほうが良い。 eshell も bash も出力が ja_JP.cp932 になっているか
     ら。

     tail -f %1 | nkf -u -s

*** auto-complete.el
**** download

     auto-install だとうまくいかないので、注意。

     M-x eshell
     cd ~/tmp
     wget http://cx4a.org/pub/auto-complete/auto-complete-1.3.1.zip
     unzip auto-complete-1.3.1.zip
     mkdir -p ~/.emacs.d/auto-complete
     mv auto-complete-1.3.1 ~/.emacs.d/

**** init.el (.emacs, emacs.el)

     7.8 のようなダサい書き方やめたいけど、分からない。

     ;; ------------------------------------------------------------------------
     ;; @ 入力補完支援 auto-complete.el

     ;; ロードパスの追加
     (add-to-list 'load-path
                  "~\\.emacs.d\\auto-complete-1.3.1")
     (require 'auto-complete)

     ;; 3.2. インストールスクリプト
     ;; http://cx4a.org/software/auto-complete/manual.ja.html
     (add-to-list 'ac-dictionary-directories "~//.emacs.d//auto-complete-1.3.1//dict")
     (require 'auto-complete-config)
     (ac-config-default)

     ;; 7.4. TAB で補完を完了する( RET は使わない)
     ;; http://cx4a.org/software/auto-complete/manual.ja.html
     (define-key ac-completing-map "\t" 'ac-complete)
     (define-key ac-completing-map "\r" nil)

     ;; 7.8. 特定のモードで自動で auto-complete-mode を有効にする
     ;; http://cx4a.org/software/auto-complete/manual.ja.html
     (add-to-list 'ac-modes 'org-mode) ;; org-mode になったら、 auto-complete をスタートさせる
     (add-to-list 'ac-modes 'text-mode)
     (add-to-list 'ac-modes 'ruby-mode)
     (add-to-list 'ac-modes 'pyhon-mode)
     (add-to-list 'ac-modes 'ansys-mode)

*** sense-region.el

    cua-mode に移行したほうがいいかも。

**** download

     M-x install-elisp
     http://taiyaki.org/elisp/sense-region/src/sense-region.el
     C-c

     Warning が出るけど、意味が不明。無視。

     Warning: reference to free variable `org-directory'
     Leaving directory `~/'
     ^L
     Compiling file c:/gnupack_devel-6.02/home/.emacs.d/auto-install/sense-region.el at Mon Jul 04 15:55:32 2011
     Entering directory `c:/gnupack_devel-6.02/home/.emacs.d/auto-install/'

     In mell-region-get-selection-marker-list:
     sense-region.el:421:16:Warning: `set-buffer' called with 0 args, but requires
         1

     In mell-region-get-rectangle-marker-list:
     sense-region.el:430:16:Warning: `set-buffer' called with 0 args, but requires
         1

**** init.el (.emacs, emacs.el)

     ;; ------------------------------------------------------------------------
     ;; @ sense-region
     ;; http://taiyaki.org/elisp/sense-region/

     (autoload 'sense-region-on "sense-region"
       "System to toggle region and rectangle." t nil)
     (sense-region-on)

*** ansys-mode.el
**** download

     M-x eshell
     mkdir ~/tmp/ansys-mode
     cd ~/tmp/ansys-mode
     wget http://ansys-mode.googlecode.com/files/ansys-mode-13.0.1.tgz
     tar zxvf ansys-mode-13.0.1.tgz
     mv ~/tmp/ansys-mode/ ~/.emacs.d/

**** anshelp130.bat

     C-x C-f
     ~/.emacs.d/ansys-mode/anshelp130.bat

     start hh "c:\Program Files\ANSYS Inc\v130\commonfiles\help\ja\ansys130.chm"

     C-x C-s

**** dict/ansys-mode (dynprompt)

     ぜったい、もっと簡単な方法ある気がするから、誰か教えてほしい。

     C-x C-f
     C:/Program Files/ANSYS Inc/v130/ansys/docu/dynaprompt130.ans
     C-x C-w
     ~/.emacs.d/auto-complete-1.3.1/dict/ansys-mode
     M-x org-mode
     C-x h
     C-c |
     TAB
     M-S-<left> を連打
     [HOME]
     M-x replace-string
     |
     [RET]
     C-x h
     M-x delete-trailing-whitespace
     C-x C-s

**** init.el (.emacs, emacs.el)

     add-to-list の書き方ダサい。。。。

     ;; ------------------------------------------------------------------------
     ;; @ ansys-mode の設定

     ;; ロードパスの追加
     (add-to-list 'load-path
              "~\\.emacs.d\\ansys-mode")

     ;; 拡張子によって ansys-mode に
     (add-to-list 'auto-mode-alist '("\\.mac\\'" . ansys-mode))
     (add-to-list 'auto-mode-alist '("\\.dat\\'" . ansys-mode))
     (add-to-list 'auto-mode-alist '("\\.inp\\'" . ansys-mode))
     (autoload 'ansys-mode "ansys-mode" nil t)

     ;; ansys-mode の時は、アウトラインマイナーモードに
     (add-hook 'ansys-mode-hook
               '(lambda ()
                  (outline-minor-mode 1)
                  ))

     ;; chm ヘルプを起動する
     (custom-set-variables
      '(ansys-help-program "~\\.emacs.d\\ansys-mode\\anshelp130.bat"))

*** zlc.el

    zlc ってなんだろ。 TAB で便利。

**** dowonload

     auto-install だとうまくいかないので、注意

     M-x eshell
     cd ~/.emacs.d/
     mkdir zlc
     M-x w3m-goto-url-new-session
     http://github.com/mooz/emacs-zlc/raw/master/zlc.el
     C-x C-h
     M-w
     C-x C-f
     ~/.emacs.d/zlc/zlc.el
     C-y
     C-x C-s

**** init.el

     ;; ------------------------------------------------------------------------
     ;; @ zlc.el
     (add-to-list 'load-path "~\\.emacs.d\\zlc")
     (require 'zlc)
     ;; (setq zlc-select-completion-immediately t)
     (let ((map minibuffer-local-map))
       ;;; like menu select
       (define-key map (kbd "<down>")  'zlc-select-next-vertical)
       (define-key map (kbd "<up>")    'zlc-select-previous-vertical)
       (define-key map (kbd "<right>") 'zlc-select-next)
       (define-key map (kbd "<left>")  'zlc-select-previous)
       ;;; reset selection
       (define-key map (kbd "C-c") 'zlc-reset)
       )

*** python-mode.el

    本当は新しい python.el を使いたいけど、 C-c がうまくいかないし、 pymacs ? の
    入れ方も分からないしってことで、古いほうの python-mode.el を入れる

**** download

     M-x eshell
     cd tmp
     wget http://launchpad.net/python-mode/trunk/5.2.0/+download/python-mode-5.2.0.tgz
     tar zxvf python-mode-5.2.0.tgz
     mv python-mode/ ~/.emacs.d/

**** init.el

     ;; ------------------------------------------------------------------------
     ;; @ python-mode
     ;; ロードパスの追加
     (add-to-list 'load-path "~\\.emacs.d\\python-mode")
     (require 'python-mode)
     (setq auto-mode-alist (cons '("file://.py$/" . python-mode) auto-mode-alist))
     (setq interpreter-mode-alist (cons '("python" . python-mode)
                                        interpreter-mode-alist))
     (autoload 'python-mode "python-mode" "Python editing mode." t)

*** flymake, pyflakes
**** download

     cygwin の方で終わってるが、 flymake.elc があると、 emacs.exe が異常終了する。
     なんでだろ。よくわからないが、以下を削除。

     C:\gnupack_devel-6.02\app\emacs\emacs\lisp\progmodes\flymake.elc

**** init.el (.emacs, emacs.el)

     ;; ------------------------------------------------------------------------
     ;; @ flymake で間違っているところをハイライトし、エラーとかをミニバッファへ
    
     (require 'flymake)
    
     ;; flymake の色を変更
     (set-face-background 'flymake-errline "red4")
     (set-face-background 'flymake-warnline "dark slate blue")
    
     ;; 文字コードのおまじない。これがあると日本語化通る。意味は不明。
     (add-hook 'set-language-environment-hook
               (lambda ()
                 (when (equal "ja_JP.UTF-8" (getenv "LANG"))
                 (setq default-process-coding-system '(utf-8 . utf-8))
                 (setq default-file-name-coding-system 'utf-8))
                 (when (equal "Japanese" current-language-environment)
                  (setq default-buffer-file-coding-system 'iso-2022-jp))))
    
     ;; ruby での設定
     (defun flymake-ruby-init ()
       (let* ((temp-file   (flymake-init-create-temp-buffer-copy
                            'flymake-create-temp-inplace))
              (local-file  (file-relative-name
                            temp-file
                            (file-name-directory buffer-file-name))))
         (list "ruby" (list "-c" local-file))))
     (push '(".+\\.rb$" flymake-ruby-init) flymake-allowed-file-name-masks)
     (push '("Rakefile$" flymake-ruby-init) flymake-allowed-file-name-masks)
     (push '("^\\(.*\\):\\([0-9]+\\): \\(.*\\)$" 1 2 nil 3)
     flymake-err-line-patterns)
    
     (add-hook
      'ruby-mode-hook
      '(lambda ()
         ;; Don't want flymake mode for ruby regions in rhtml files
         (if (not (null buffer-file-name)) (flymake-mode))))
    
     ;; python での設定
     ;;===== PyFlakes
     ;; code checking via pyflakes+flymake
     (when (load "flymake" t)
      (defun flymake-pyflakes-init ()
      (let* ((temp-file (flymake-init-create-temp-buffer-copy
      'flymake-create-temp-inplace))
      (local-file (file-relative-name
      temp-file
      (file-name-directory buffer-file-name))))
      (list "pyflakes" (list local-file))))
    
      (add-to-list 'flymake-allowed-file-name-masks
      '("\\.py\\'" flymake-pyflakes-init)))
    
     (add-hook 'find-file-hook 'flymake-find-file-hook)
    
     ;; miniBuffer にエラーを出力
     (defun flymake-show-and-sit ()
       "Displays the error/warning for the current line in the minibuffer"
       (interactive)
       (progn
         (let* ((line-no (flymake-current-line-no) )
                (line-err-info-list (nth 0 (flymake-find-err-info flymake-err-info
     line-no)))
                (count (length line-err-info-list)))
           (while (> count 0)
             (when line-err-info-list
               (let* ((file (flymake-ler-file (nth (1- count)
     line-err-info-list)))
                      (full-file
                       (flymake-ler-full-file (nth (1- count)
     line-err-info-list)))
                      (text (flymake-ler-text (nth (1- count)
     line-err-info-list)))
                      (line (flymake-ler-line (nth (1- count)
     line-err-info-list))))
                 (message "[%s] %s" line text)))
             (setq count (1- count)))))
       (sit-for 60.0))
    
     ;; キー割り当て
     (global-set-key "\M-gn" '(lambda ()
                                (interactive)
                                (let (line (line-number-at-pos))
                                  (flymake-goto-next-error)
                                  (when (equal line (line-number-at-pos))
                                    (next-error)))))
     (global-set-key "\M-gp" '(lambda ()
                                (interactive)
                                (let (line (line-number-at-pos))
                                  (flymake-goto-prev-error)
                                  (when (equal line (line-number-at-pos))
                                    (previous-error)))))
     (global-set-key "\C-cd" 'flymake-show-and-sit)

*** text-translator.el
**** download

     auto-install-bathch だと、 var.el が無いだの、 var.el は文字化けするだので、
     正常にインストールできないので注意

     M-x eshell
     mkdir -p ~/.emacs.d/text-translator
     cd ~/.emacs.d/text-translator
     wget http://www.emacswiki.org/emacs/download/text-translator.el
     wget http://www.emacswiki.org/emacs/download/text-translator-vars.el
     wget http://www.emacswiki.org/emacs/download/text-translator-load.el
    
**** init.el (.emacs, emacs.el)

     ;; ------------------------------------------------------------------------
     ;; Emacs でテキスト翻訳をする elisp
     ;; http://quantumfluctuation.blogspot.com/2011/05/text-translatorel_22.html
    
     ;; ロードパスの追加
     (add-to-list 'load-path "~\\.emacs.d\\text-translator")
     (require 'text-translator)
     (setq text-translator-auto-selection-func
           'text-translator-translate-by-auto-selection-enja)
     ;; 自動選択に使用する関数を設定
     (setq text-translator-auto-selection-func
           'text-translator-translate-by-auto-selection-enja)
     ;; グローバルキーを設定
     (global-set-key "\C-xt" 'text-translator-translate-by-auto-selection)
    
     ;; ;; if you are setting environment variables HTTP_PROXY,
     ;; ;; you have not to set this.
     (setq text-translator-proxy-server "<proxy-address>")
     (setq text-translator-proxy-port   <portnum>)

*** text-adjust.el
**** dowonload

     auto-install でやると文字化け Warning が出るので注意

     M-x esell
     mkdir -p ~/.emacs.d/text-adjust
     cd ~/.emacs.d/text-adjust
     wget http://taiyaki.org/elisp/mell/src/mell.el
     wget http://taiyaki.org/elisp/text-adjust/src/text-adjust.el

**** init.el (.emacs,emacs.el)

     ;; ------------------------------------------------------------------------
     ;; @ 日本語の文章を整形する texst-adjust.el
    
     (add-to-list 'load-path "~\\.emacs.d\\text-adjust") ; ロードパスの追加
    
     ;; 読み込み
     (require 'text-adjust)
    
     ;; %は例外として半角にしない
     (setq text-adjust-hankaku-except "%")
    
     ;; org-mode, text-mode のとき自動的には保存する際に実行
     (defun text-adjust-space-before-save-if-needed ()
       (when (memq major-mode
                   '(org-mode text-mode ))
         (text-adjust-space-buffer)))
     (defalias 'spacer 'text-adjust-space-buffer)
     (add-hook 'before-save-hook 'text-adjust-space-before-save-if-needed)
    
*** yspell.el
**** download
    
     git じゃとれなかった・・・接続できないらしい。 proxy かなぁ。うーん。

     M-x eshell
     mkdir ~/.emacs.d/yspell
     w3m-goto-url-new-session
     https://raw.github.com/yama-natuki/yspel/master/yspel.el
     C-h M-w
     C-x C-f ~/.emacs.d/yspell/yspell.el
     C-y

**** init.el (.emacs, emacs.el)

     ;; ------------------------------------------------------------------------
     ;; @ 日本語のチェックをする
    
     (add-to-list 'load-path "~/.emacs.d/yspel")
     (require 'yspel)

*** google.el
**** download

     auto-install だとできないので注意

     mkdir -p ~/.emacs.d/google
     cd ~/.emacs.d/google/
     wget http://www.bookshelf.jp/elc/google.el

**** init.el (.emacs, emacs.el)

     ;; ------------------------------------------------------------------------
     ;; @ google で検索
     (add-to-list 'load-path "~/.emacs.d/google")
     (load "google")
    
* init.el (.emacs 、 emacs.el )の全体の晒し

; -*- Mode: Emacs-Lisp ; Coding: utf-8 -*-

;; ------------------------------------------------------------------------
;; @ coding system

   ;; 日本語入力のための設定
   (set-keyboard-coding-system 'cp932)
   (prefer-coding-system 'utf-8-dos)
   (set-file-name-coding-system 'cp932)
   (setq default-process-coding-system '(cp932 . cp932))

;; ------------------------------------------------------------------------
;; @ ime

   ;; 標準 IME の設定
   (setq default-input-method "W32-IME")

   ;; IME 状態のモードライン表示
   (setq-default w32-ime-mode-line-state-indicator "[Aa]")
   (setq w32-ime-mode-line-state-indicator-list '("[Aa]" "[あ]" "[Aa]"))

   ;; IME の初期化
   (w32-ime-initialize)

   ;; IME OFF 時の初期カーソルカラー
   (set-cursor-color "red")

   ;; IME ON/OFF 時のカーソルカラー
   (add-hook 'input-method-activate-hook
             (lambda () (set-cursor-color "green")))
   (add-hook 'input-method-inactivate-hook
             (lambda () (set-cursor-color "red")))

   ;; バッファ切り替え時に IME 状態を引き継ぐ
   (setq w32-ime-buffer-switch-p nil)

;; ------------------------------------------------------------------------
;; @ encode

   ;; 機種依存文字
   (require 'cp5022x)
   (define-coding-system-alias 'euc-jp 'cp51932)

   ;; decode-translation-table の設定
   (coding-system-put 'euc-jp :decode-translation-table
              (get 'japanese-ucs-jis-to-cp932-map 'translation-table))
   (coding-system-put 'iso-2022-jp :decode-translation-table
              (get 'japanese-ucs-jis-to-cp932-map 'translation-table))
   (coding-system-put 'utf-8 :decode-translation-table
              (get 'japanese-ucs-jis-to-cp932-map 'translation-table))

   ;; encode-translation-table の設定
   (coding-system-put 'euc-jp :encode-translation-table
              (get 'japanese-ucs-cp932-to-jis-map 'translation-table))
   (coding-system-put 'iso-2022-jp :encode-translation-table
              (get 'japanese-ucs-cp932-to-jis-map 'translation-table))
   (coding-system-put 'cp932 :encode-translation-table
              (get 'japanese-ucs-jis-to-cp932-map 'translation-table))
   (coding-system-put 'utf-8 :encode-translation-table
              (get 'japanese-ucs-jis-to-cp932-map 'translation-table))

   ;; charset と coding-system の優先度設定
   (set-charset-priority 'ascii 'japanese-jisx0208 'latin-jisx0201
             'katakana-jisx0201 'iso-8859-1 'cp1252 'unicode)
   (set-coding-system-priority 'utf-8 'euc-jp 'iso-2022-jp 'cp932)

   ;; PuTTY 用の terminal-coding-system の設定
   (apply 'define-coding-system 'utf-8-for-putty
      "UTF-8 (translate jis to cp932)"
      :encode-translation-table
      (get 'japanese-ucs-jis-to-cp932-map 'translation-table)
      (coding-system-plist 'utf-8))
   (set-terminal-coding-system 'utf-8-for-putty)

   ;; East Asian Ambiguous
   (defun set-east-asian-ambiguous-width (width)
     (while (char-table-parent char-width-table)
       (setq char-width-table (char-table-parent char-width-table)))
     (let ((table (make-char-table nil)))
       (dolist (range
            '(#x00A1 #x00A4 (#x00A7 . #x00A8) #x00AA (#x00AD . #x00AE)
             (#x00B0 . #x00B4) (#x00B6 . #x00BA) (#x00BC . #x00BF)
             #x00C6 #x00D0 (#x00D7 . #x00D8) (#x00DE . #x00E1) #x00E6
             (#x00E8 . #x00EA) (#x00EC . #x00ED) #x00F0
             (#x00F2 . #x00F3) (#x00F7 . #x00FA) #x00FC #x00FE
             #x0101 #x0111 #x0113 #x011B (#x0126 . #x0127) #x012B
             (#x0131 . #x0133) #x0138 (#x013F . #x0142) #x0144
             (#x0148 . #x014B) #x014D (#x0152 . #x0153)
             (#x0166 . #x0167) #x016B #x01CE #x01D0 #x01D2 #x01D4
             #x01D6 #x01D8 #x01DA #x01DC #x0251 #x0261 #x02C4 #x02C7
             (#x02C9 . #x02CB) #x02CD #x02D0 (#x02D8 . #x02DB) #x02DD
             #x02DF (#x0300 . #x036F) (#x0391 . #x03A9)
             (#x03B1 . #x03C1) (#x03C3 . #x03C9) #x0401
             (#x0410 . #x044F) #x0451 #x2010 (#x2013 . #x2016)
             (#x2018 . #x2019) (#x201C . #x201D) (#x2020 . #x2022)
             (#x2024 . #x2027) #x2030 (#x2032 . #x2033) #x2035 #x203B
             #x203E #x2074 #x207F (#x2081 . #x2084) #x20AC #x2103
             #x2105 #x2109 #x2113 #x2116 (#x2121 . #x2122) #x2126
             #x212B (#x2153 . #x2154) (#x215B . #x215E)
             (#x2160 . #x216B) (#x2170 . #x2179) (#x2190 . #x2199)
             (#x21B8 . #x21B9) #x21D2 #x21D4 #x21E7 #x2200
             (#x2202 . #x2203) (#x2207 . #x2208) #x220B #x220F #x2211
             #x2215 #x221A (#x221D . #x2220) #x2223 #x2225
             (#x2227 . #x222C) #x222E (#x2234 . #x2237)
             (#x223C . #x223D) #x2248 #x224C #x2252 (#x2260 . #x2261)
             (#x2264 . #x2267) (#x226A . #x226B) (#x226E . #x226F)
             (#x2282 . #x2283) (#x2286 . #x2287) #x2295 #x2299 #x22A5
             #x22BF #x2312 (#x2460 . #x24E9) (#x24EB . #x254B)
             (#x2550 . #x2573) (#x2580 . #x258F) (#x2592 . #x2595)
             (#x25A0 . #x25A1) (#x25A3 . #x25A9) (#x25B2 . #x25B3)
             (#x25B6 . #x25B7) (#x25BC . #x25BD) (#x25C0 . #x25C1)
             (#x25C6 . #x25C8) #x25CB (#x25CE . #x25D1)
             (#x25E2 . #x25E5) #x25EF (#x2605 . #x2606) #x2609
             (#x260E . #x260F) (#x2614 . #x2615) #x261C #x261E #x2640
             #x2642 (#x2660 . #x2661) (#x2663 . #x2665)
             (#x2667 . #x266A) (#x266C . #x266D) #x266F #x273D
             (#x2776 . #x277F) (#xE000 . #xF8FF) (#xFE00 . #xFE0F)
             #xFFFD
             ))
     (set-char-table-range table range width))
       (optimize-char-table table)
       (set-char-table-parent table char-width-table)
       (setq char-width-table table)))
   (set-east-asian-ambiguous-width 2)

   ;; emacs-w3m
   (eval-after-load "w3m"
     '(when (coding-system-p 'cp51932)
        (add-to-list 'w3m-compatible-encoding-alist '(euc-jp . cp51932))))

   ;; Gnus
   (eval-after-load "mm-util"
     '(when (coding-system-p 'cp50220)
        (add-to-list 'mm-charset-override-alist '(iso-2022-jp . cp50220))))

   ;; SEMI (cf. http://d.hatena.ne.jp/kiwanami/20091103/1257243524)
   (eval-after-load "mcs-20"
     '(when (coding-system-p 'cp50220)
        (add-to-list 'mime-charset-coding-system-alist
             '(iso-2022-jp . cp50220))))

   ;; 全角チルダ/ 波ダッシュを Windows スタイルにする
   (let ((table (make-translation-table-from-alist '((#x301c . #xff5e))) ))
     (mapc
      (lambda (coding-system)
        (coding-system-put coding-system :decode-translation-table table)
        (coding-system-put coding-system :encode-translation-table table)
        )
      '(utf-8 cp932 utf-16le)))

;; ------------------------------------------------------------------------
;; @ font

   ;; 標準フォントの設定
   ;; (set-default-font "M+2VM+IPAG circle-12")

   ;; IME 変換時フォントの設定(テストバージョンのみ)
   ;; (setq w32-ime-font-face "MigMix 1M")
   ;; (setq w32-ime-font-height 22)

   ;; 固定等幅フォントの設定
   ;; (set-face-attribute 'fixed-pitch    nil :family "M+2VM+IPAG circle")

   ;; 可変幅フォントの設定
   ;; (set-face-attribute 'variable-pitch nil :family "M+2VM+IPAG circle")

;; ------------------------------------------------------------------------
;; @ frame

   ;; フレームタイトルの設定
   (setq frame-title-format "%b")

;; ------------------------------------------------------------------------
;; @ buffer

   ;; バッファ画面外文字の切り詰め表示
   (setq truncate-lines nil)

   ;; ウィンドウ縦分割時のバッファ画面外文字の切り詰め表示
   (setq truncate-partial-width-windows t)

   ;; 同一バッファ名にディレクトリ付与
   (require 'uniquify)
   (setq uniquify-buffer-name-style 'forward)
   (setq uniquify-buffer-name-style 'post-forward-angle-brackets)
   (setq uniquify-ignore-buffers-re "*[^*]+*")

;; ------------------------------------------------------------------------
;; @ fringe

   ;; バッファ中の行番号表示
   (global-linum-mode t)

   ;; 行番号のフォーマット
   (set-face-attribute 'linum nil :foreground "red" :height 0.8)
   (setq linum-format "%4d")

;; ------------------------------------------------------------------------
;; @ modeline

   ;; 行番号の表示
   (line-number-mode t)

   ;; 列番号の表示
   (column-number-mode t)

   ;; 時刻の表示
   (require 'time)
   (setq display-time-24hr-format t)
   (setq display-time-string-forms '(24-hours ":" minutes))
   (display-time-mode t)

   ;; cp932 エンコード時の表示を「 P 」とする
   (coding-system-put 'cp932 :mnemonic ?P)
   (coding-system-put 'cp932-dos :mnemonic ?P)
   (coding-system-put 'cp932-unix :mnemonic ?P)
   (coding-system-put 'cp932-mac :mnemonic ?P)

;; ------------------------------------------------------------------------
;; @ cursor

   ;; カーソル点滅表示
   (blink-cursor-mode 0)

   ;; スクロール時のカーソル位置の維持
   (setq scroll-preserve-screen-position t)

   ;; スクロール行数(一行ごとのスクロール)
   (setq vertical-centering-font-regexp ".*")
   (setq scroll-conservatively 35)
   (setq scroll-margin 0)
   (setq scroll-step 1)

   ;; 画面スクロール時の重複行数
   (setq next-screen-context-lines 1)

;; ------------------------------------------------------------------------
;; @ default setting

   ;; 起動メッセージの非表示
   (setq inhibit-startup-message t)

   ;; スタートアップ時のエコー領域メッセージの非表示
   (setq inhibit-startup-echo-area-message -1)

;; ------------------------------------------------------------------------
;; @ image-library
   (setq image-library-alist
         '((xpm "libxpm.dll")
           (png "libpng14.dll")
           (jpeg "libjpeg.dll")
           (tiff "libtiff3.dll")
           (gif "libungif4.dll")
           (svg "librsvg-2-2.dll")
           (gdk-pixbuf "libgdk_pixbuf-2.0-0.dll")
           (glib "libglib-2.0-0.dll")
           (gobject "libgobject-2.0-0.dll"))
         )

;; ------------------------------------------------------------------------
;; @ backup

   ;; 変更ファイルのバックアップ
   (setq make-backup-files nil)

   ;; 変更ファイルの番号つきバックアップ
   (setq version-control nil)

   ;; 編集中ファイルのバックアップ
   (setq auto-save-list-file-name nil)
   (setq auto-save-list-file-prefix nil)

   ;; 編集中ファイルのバックアップ先
   (setq auto-save-file-name-transforms
         `((".*" ,temporary-file-directory t)))

   ;; 編集中ファイルのバックアップ間隔(秒)
   (setq auto-save-timeout 30)

   ;; 編集中ファイルのバックアップ間隔(打鍵)
   (setq auto-save-interval 500)

   ;; バックアップ世代数
   (setq kept-old-versions 1)
   (setq kept-new-versions 2)

   ;; 上書き時の警告表示
   ;- (setq trim-versions-without-asking nil)

   ;; 古いバックアップファイルの削除
   (setq delete-old-versions t)

;; ------------------------------------------------------------------------
;; @ key bind

   ;; 標準キーバインド変更
   ;; (global-set-key "\C-z"          'scroll-down)

;; ------------------------------------------------------------------------
;; @ scroll

   ;; バッファの先頭までスクロールアップ
   (defadvice scroll-up (around scroll-up-around)
     (interactive)
     (let* ( (start_num (+ 1 (count-lines (point-min) (point))) ) )
       (goto-char (point-max))
       (let* ( (end_num (+ 1 (count-lines (point-min) (point))) ) )
         (goto-line start_num )
         (let* ( (limit_num (- (- end_num start_num) (window-height)) ))
           (if (< (- (- end_num start_num) (window-height)) 0)
               (goto-char (point-max))
             ad-do-it)) )) )
   (ad-activate 'scroll-up)

   ;; バッファの最後までスクロールダウン
   (defadvice scroll-down (around scroll-down-around)
     (interactive)
     (let* ( (start_num (+ 1 (count-lines (point-min) (point)))) )
       (if (< start_num (window-height))
           (goto-char (point-min))
         ad-do-it) ))
   (ad-activate 'scroll-down)

;; ------------------------------------------------------------------------
;; @ hiwin-mode
   ;; (require 'hiwin)

   ;; ;; 非アクティブ window の背景色( hiwin-mode の実行前に設定が必要)
   ;; (setq hiwin-deactive-color "gray30")

   ;; ;; hiwin-mode を有効にする
   ;; (hiwin-mode)

   ;; ;; kill-buffer で再描画されるようにする
   ;; (defadvice kill-buffer
   ;;   (around kill-buffer-around activate)
   ;;   ad-do-it
   ;;   (if hiwin-ol (hiwin-draw-ol)))

;; ------------------------------------------------------------------------
;; @ tabbar
   (require 'cl)
   (require 'tabbar)

   ;; scratch buffer 以外をまとめてタブに表示する
   (setq tabbar-buffer-groups-function
         (lambda (b) (list "All Buffers")))
   (setq tabbar-buffer-list-function
         (lambda ()
           (remove-if
            (lambda (buffer)
              (unless (string-match (buffer-name buffer) "\\(*scratch*\\|*Apropos*\\|*shell*\\|*eshell*\\|*Customize\\)")
                (find (aref (buffer-name buffer) 0) " *"))
              )
            (buffer-list))))

   ;; tabbar を有効にする
   (tabbar-mode)

   ;; ボタンをシンプルにする
   (setq tabbar-home-button-enabled "")
   (setq tabbar-scroll-right-button-enabled "")
   (setq tabbar-scroll-left-button-enabled "")
   (setq tabbar-scroll-right-button-disabled "")
   (setq tabbar-scroll-left-button-disabled "")

   ;; Ctrl-Tab, Ctrl-Shift-Tab でタブを切り替える
   (dolist (func '(tabbar-mode tabbar-forward-tab tabbar-forward-group tabbar-backward-tab tabbar-backward-group))
     (autoload func "tabbar" "Tabs at the top of buffers and easy control-tab navigation"))
   (defmacro defun-prefix-alt (name on-no-prefix on-prefix &optional do-always)
     `(defun ,name (arg)
        (interactive "P")
        ,do-always
        (if (equal nil arg)
            ,on-no-prefix
          ,on-prefix)))
   (defun-prefix-alt shk-tabbar-next (tabbar-forward-tab) (tabbar-forward-group) (tabbar-mode 1))
   (defun-prefix-alt shk-tabbar-prev (tabbar-backward-tab) (tabbar-backward-group) (tabbar-mode 1))
   (global-set-key [(control tab)] 'shk-tabbar-next)
   (global-set-key [(control shift tab)] 'shk-tabbar-prev)

;; ------------------------------------------------------------------------
;; @ setup-cygwin
   (setq cygwin-mount-cygwin-bin-directory
         (concat (getenv "CYGWIN_DIR") "\\bin"))
   (require 'setup-cygwin)

;; ------------------------------------------------------------------------
;; @ shell
   (require 'shell)
   (setq explicit-shell-file-name "bash.exe")
   (setq shell-command-switch "-c")
   (setq shell-file-name "bash.exe")

   ;; (M-! and M-| and compile.el)
   (setq shell-file-name "bash.exe")
   (modify-coding-system-alist 'process ".*sh\\.exe" 'cp932)

   ;; shell モードの時の^M 抑制
   (add-hook 'comint-output-filter-functions 'shell-strip-ctrl-m nil t)

   ;; shell-mode での補完 (for drive letter)
   (setq shell-file-name-chars "~/A-Za-z0-9_^$!#%&{}@'`.,;()-")

   ;; エスケープシーケンス処理の設定
   (autoload 'ansi-color-for-comint-mode-on "ansi-color"
             "Set `ansi-color-for-comint-mode' to t." t)

   (setq shell-mode-hook
         (function
          (lambda ()

            ;; シェルモードの入出力文字コード
            (set-buffer-process-coding-system 'sjis-dos 'sjis-unix)
            (set-buffer-file-coding-system    'sjis-unix)
            )))

;; ------------------------------------------------------------------------
;; @ menu-tree
   ;; (setq menu-tree-coding-system 'utf-8)
   ;; (require 'menu-tree)

;; ------------------------------------------------------------------------
;; @ 個人的な初期設定

; 区切り文字に全角スペースや、・を含める
(setq paragraph-start '"^\\([  ・○<\t\n\f]\\|(?[0-9a-zA-Z]+)\\)")

;; startup directory
(setq default-directory "~/")

;; ファイルのカーソル内の位置を記憶
(setq-default save-place t)

;; ガベッジコレクション閾値 を 40MB に
(setq gc-cons-threshold 41943040)

;; ログの記録行数を増やす
(setq message-log-max 10000)

;; undo をいっぱい
(setq undo-limit 100000)
(setq undo-strong-limit 130000)

;; キーストロークの表示速度を上げる
(setq echo-keystrokes 0.1)

;; でかいファイルも普通に開く(デフォルトは 10MB )
(setq large-file-warning-threshold (* 50 1024 1024)) ;50MB

;; いちいち yes とか無理だから y にする
(defalias 'yes-or-no-p 'y-or-n-p)

;; BS や Delete キーでリージョン内の文字を削除
(delete-selection-mode 1)

;; @ 前回編集していた場所を記憶し,ファイルを開いた時にそこへカーソルを移動
(require 'saveplace)
(setq-default save-place t)

;; kill-ring はテキスト属性(色情報など)を保存しなくていい
;; http://www-tsujii.is.s.u-tokyo.ac.jp/~yoshinag/tips/elisp_tips.html#yankoff
(defadvice kill-new (around my-kill-ring-disable-text-property activate)
  (let ((new (ad-get-arg 0)))
    (set-text-properties 0 (length new) nil new)
    ad-do-it))

;; 初期画面をいきなり buffer-menu にする
(buffer-menu)

; キー入力中にマウスポインタを右上隅へ移動
; banish
;   キー操作によって右上隅に移動 (デフォルト)
; exile
;   カーソルが近付いたときだけ右上隅に移動、その後復帰
; jump
;   カーソルが近付くとランダムに移動
(mouse-avoidance-mode 'banish)

;; @ 括弧の対応表示
;; http://ksugita.blog62.fc2.com/category1-2.html
(setq blink-matching-paren t)
(show-paren-mode t)
(setq paren-sexp-mode t)
(set-face-background 'show-paren-match "royalBlue1")

;; タブ, 全角スペースを色つき表示する (色名は M-x list-color-display で調べる)
;;  http://homepage1.nifty.com/blankspace/emacs/color.html
(defface my-face-b-1 '((t (:background "LightGray"))) nil)
(defface my-face-b-2 '((t (:background "LightBlue"))) nil)
(defface my-face-u-1 '((t (:foreground "LightSkyBlue" :underline t))) nil)
(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)
     )))
(ad-enable-advice 'font-lock-mode 'before 'my-font-lock-mode)
(ad-activate 'font-lock-mode)

;;; フレームサイズをトグルで切り替え
;; http://www.bookshelf.jp/soft/meadow_30.html#SEC416
;; 現在のフレームサイズを調べる方法
;; *scratch*バッファを開き, (frame-width), (frame-height) と書き, C-j する

(setq my-frame-max-flag nil)

(defun my-toggle-frame-size ()
  (interactive)
  (if my-frame-max-flag
      (progn
        (setq my-frame-max-flag nil)
        (if (functionp 'w32-restore-frame)
            (w32-restore-frame)
          (set-frame-configuration my-last-frame-conf)
          (message "not MAX.") (sit-for 2)
          ))
    (setq my-frame-max-flag t)
    (if (functionp 'w32-maximize-frame)
        (w32-maximize-frame)
      (setq my-last-frame-conf (current-frame-configuration))
      (set-frame-position (selected-frame) 0 0)
      ;; フレーム最大化時に (frame-height) で得た値
      (set-frame-height (selected-frame) 70)
      ;; フレーム最大化時に (frame-width) で得た値
      (set-frame-width (selected-frame) 195)
      (message "to MAX.") (sit-for 2)
    )))

(add-hook 'ediff-before-setup-hook 'my-toggle-frame-size) ; ediff 立ち上げ時に、画面を最大化
(add-hook 'ediff-quit-hook 'my-toggle-frame-size) ; ediff 終了時に、画面を元に戻す
(global-set-key [f11] 'my-toggle-frame-size)      ; f11 に割り当て

;; @ 定型文の挿入 my-template-select
;; http://www.bookshelf.jp/soft/meadow_37.html#SEC554

(defvar my-template-text-file "~/.template")
(defvar my-template-buffer nil)
(defvar my-template-point nil)

(defun my-template-insert ()
  (interactive)
  (let (content)
    (when (setq
           content
           (get-text-property (point) :content))
      (save-excursion
        (set-buffer my-template-buffer)
        (save-excursion
          (goto-char my-template-point)
          (insert content))))))

(defun my-template-select ()
  (interactive)
  (let ((buffer
         (get-buffer-create "*select template*"))
        templates begin template-map text)
    (setq my-template-buffer (current-buffer)
          my-template-point  (point))
    (unless (file-readable-p my-template-text-file)
      (error "Couldn't read template file: %s"))
    (with-temp-buffer
      (insert-file-contents my-template-text-file)
      (goto-char (point-min))
      (while (re-search-forward "^\\*\\(.*\\)$" nil t)
        (when begin
          (setq templates
                (cons
                 (cons
                  (car templates)
                  (buffer-substring
                   begin (1- (match-beginning 0))))
                 (cdr templates))))
        (setq templates (cons (match-string 1) templates))
        (setq begin (1+ (match-end 0))))
      (when begin
        (setq templates
              (cons
               (cons
                (car templates)
                (buffer-substring begin (point-max)))
               (cdr templates)))))
    (pop-to-buffer buffer)
    (setq buffer-read-only nil
          major-mode       'template-select-mode
          mode-name        "Select Template"
          template-map     (make-keymap))
    (suppress-keymap template-map)
    (define-key template-map " "    'my-template-insert)
    (define-key template-map "\C-m" 'my-template-insert)
    (define-key template-map "n"    'next-line)
    (define-key template-map "p"    'previous-line)
    (define-key template-map "q"    'kill-buffer-and-window)
    (use-local-map template-map)
    (buffer-disable-undo)
    (delete-region (point-min) (point-max))
    (dolist (tt templates)
      (setq text (concat (car tt) "\n"))
      (put-text-property
       0 (length text) :content (cdr tt) text)
      (insert text)
      (goto-char (point-min)))
    (delete-region (1- (point-max)) (point-max))
    (setq buffer-read-only t)
    (set-buffer-modified-p nil)))

;; ------------------------------------------------------------------------
;; @ auto-install.el

;; ロードパスの追加
(add-to-list 'load-path
             "~\\.emacs.d\\auto-install")
(require 'auto-install)
(setq auto-install-directory "~\\.emacs.d\\auto-install")
;; 起動時に EmacsWiki のページ名を補完候補に加えない
(auto-install-update-emacswiki-package-name t)
;; install-elisp.el 互換モードにする
(auto-install-compatibility-setup)
;; ediff 関連のバッファを 1 つのフレームにまとめる
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
(put 'downcase-region 'disabled nil)

;; ------------------------------------------------------------------------
;; @ iserarch で日本語を使う
;; http://highmt.wordpress.com/2010/10/25/isearch%e3%81%a7%e6%97%a5%e6%9c%ac%e8%aa%9e%e5%85%a5%e5%8a%9b%e3%82%92%e3%82%84%e3%82%8a%e3%82%84%e3%81%99%e3%81%8f%e3%81%99%e3%82%8b%e3%83%91%e3%83%83%e3%83%81/

(defun w32-isearch-update ()
  (interactive)
  (isearch-update))
(define-key isearch-mode-map [compend] 'w32-isearch-update)
(define-key isearch-mode-map [kanji] 'isearch-toggle-input-method)

(add-hook 'isearch-mode-hook
          (lambda () (setq w32-ime-composition-window (minibuffer-window))))
(add-hook 'isearch-mode-end-hook
          (lambda () (setq w32-ime-composition-window nil)))

;; ------------------------------------------------------------------------
;; @ 検索時にミゲモを使う
(require 'migemo)

;; ------------------------------------------------------------------------
;; @ 最近使ったファイルを開く recentf-ext.el

;; 最近のファイルを 3000 個保存する
(setq recentf-max-saved-items 3000)
;; 読み込み
(require 'recentf-ext)

;; ------------------------------------------------------------------------
;; @ 使い捨てのファイルを開く open-junk-file.el

;; 読み込み
(require 'open-junk-file)

;; ファイル名およびファイル場所の指定
(setq open-junk-file-format "~/junk/%Y-%m-%d-%H%M%S.")

;; ------------------------------------------------------------------------
;; @ anything
(require 'anything-startup)

;; ------------------------------------------------------------------------
;; @ ispell が無いから、 aspell を使う
;; http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?Aspell

(setq-default ispell-program-name "aspell")
(eval-after-load "ispell"
 '(add-to-list 'ispell-skip-region-alist '("[^\000-\377]+")))

;; ------------------------------------------------------------------------
;; @ w3m-emacs
(require 'w3m-load)
(setq w3m-use-cookies t)
(setq w3m-home-page "www.google.co.jp")

;; ------------------------------------------------------------------------
;; @ windows batch-mode

(setq auto-mode-alist
       (append
        (list (cons "\\.[bB][aA][tT]$" 'bat-mode))
        ;; For DOS init files
        (list (cons "CONFIG\\."   'bat-mode))
        (list (cons "AUTOEXEC\\." 'bat-mode))
        auto-mode-alist))

(autoload 'bat-mode "bat-mode"
      "DOS and Windows BAT files" t)


;; ------------------------------------------------------------------------
;; @ emacs で tail を動かす

(require 'tail)
(setq tail-volatile nil)                ;前の記載を消さない
(setq tail-hide-delay 100000)           ;隠すまで 100000sec
(setq tail-max-size 15)                 ;Window のサイズ

;; ------------------------------------------------------------------------
;; @ 入力補完支援 auto-complete.el

;; ロードパスの追加
(add-to-list 'load-path
             "~/.emacs.d/auto-complete-1.3.1")
(require 'auto-complete)

;; 3.2. インストールスクリプト
;; http://cx4a.org/software/auto-complete/manual.ja.html
(add-to-list 'ac-dictionary-directories "~\\.emacs.d\\auto-complete-1.3.1\\dict")
(require 'auto-complete-config)
(ac-config-default)

;; 7.4. TAB で補完を完了する( RET は使わない)
;; http://cx4a.org/software/auto-complete/manual.ja.html
(define-key ac-completing-map "\t" 'ac-complete)
(define-key ac-completing-map "\r" nil)

;; 7.8. 特定のモードで自動で auto-complete-mode を有効にする
;; http://cx4a.org/software/auto-complete/manual.ja.html
(add-to-list 'ac-modes 'org-mode) ;; org-mode になったら、 auto-complete をスタートさせる
(add-to-list 'ac-modes 'text-mode)
(add-to-list 'ac-modes 'ruby-mode)
(add-to-list 'ac-modes 'pyhon-mode)
(add-to-list 'ac-modes 'ansys-mode)

;; ローカルキーマップより優先
(setq ac-use-overriding-local-map t)

;; ------------------------------------------------------------------------
;; @ sense-region
;; http://taiyaki.org/elisp/sense-region/

(autoload 'sense-region-on "sense-region"
  "System to toggle region and rectangle." t nil)
(sense-region-on)


;; ------------------------------------------------------------------------
;; @ ansys-mode の設定

;; ロードパスの追加
(add-to-list 'load-path
         "~\\.emacs.d\\ansys-mode")

;; 拡張子によって ansys-mode に
(add-to-list 'auto-mode-alist '("\\.mac\\'" . ansys-mode))
(add-to-list 'auto-mode-alist '("\\.dat\\'" . ansys-mode))
(add-to-list 'auto-mode-alist '("\\.inp\\'" . ansys-mode))
(autoload 'ansys-mode "ansys-mode" nil t)

;; ansys-mode の時は、アウトラインマイナーモードに
(add-hook 'ansys-mode-hook
          '(lambda ()
             (outline-minor-mode 1)
             ))

;; chm ヘルプを起動する
(custom-set-variables
 '(ansys-help-program "C:/gnupack_devel-6.02/home/.emacs.d/ansys-mode/anshelp130.bat"))

;; ;; chm ヘルプを起動する
;; (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.
;;  '(ansys-help-program "C:\\\\gnupack_devel-6.02\\home\\launcher\\anshelp130.bat")
;;  '(blink-cursor-mode nil)
;;  '(column-number-mode t)
;;  '(display-time-mode t)
;;  '(show-paren-mode t))


;; ------------------------------------------------------------------------
;; @ zlc.el
(add-to-list 'load-path "~\\.emacs.d\\zlc")
(require 'zlc)
;; (setq zlc-select-completion-immediately t)
(let ((map minibuffer-local-map))
  ;;; like menu select
  (define-key map (kbd "<down>")  'zlc-select-next-vertical)
  (define-key map (kbd "<up>")    'zlc-select-previous-vertical)
  (define-key map (kbd "<right>") 'zlc-select-next)
  (define-key map (kbd "<left>")  'zlc-select-previous)
  ;;; reset selection
  (define-key map (kbd "C-c") 'zlc-reset)
  )

;; ------------------------------------------------------------------------
;; @ python-mode

;; ロードパスの追加
(add-to-list 'load-path "~\\.emacs.d\\python-mode")
(require 'python-mode)

(setq auto-mode-alist (cons '("\\.py$" . python-mode) auto-mode-alist))
(setq interpreter-mode-alist (cons '("python" . python-mode)
                                   interpreter-mode-alist))
(autoload 'python-mode "python-mode" "Python editing mode." t)


;; ------------------------------------------------------------------------
;; @ flymake で間違っているところをハイライトし、エラーとかをミニバッファへ

(require 'flymake)

;; flymake の色を変更
(set-face-background 'flymake-errline "red4")
(set-face-background 'flymake-warnline "dark slate blue")

;; 文字コードのおまじない。これがあると日本語化通る。意味は不明。
(add-hook 'set-language-environment-hook
          (lambda ()
            (when (equal "ja_JP.UTF-8" (getenv "LANG"))
            (setq default-process-coding-system '(utf-8 . utf-8))
            (setq default-file-name-coding-system 'utf-8))
            (when (equal "Japanese" current-language-environment)
             (setq default-buffer-file-coding-system 'iso-2022-jp))))

;; ruby での設定
(defun flymake-ruby-init ()
  (let* ((temp-file   (flymake-init-create-temp-buffer-copy
                       'flymake-create-temp-inplace))
         (local-file  (file-relative-name
                       temp-file
                       (file-name-directory buffer-file-name))))
    (list "ruby" (list "-c" local-file))))
(push '(".+\\.rb$" flymake-ruby-init) flymake-allowed-file-name-masks)
(push '("Rakefile$" flymake-ruby-init) flymake-allowed-file-name-masks)
(push '("^\\(.*\\):\\([0-9]+\\): \\(.*\\)$" 1 2 nil 3)
flymake-err-line-patterns)

(add-hook
 'ruby-mode-hook
 '(lambda ()
    ;; Don't want flymake mode for ruby regions in rhtml files
    (if (not (null buffer-file-name)) (flymake-mode))))

;; python での設定
;;===== PyFlakes
;; code checking via pyflakes+flymake
(when (load "flymake" t)
 (defun flymake-pyflakes-init ()
 (let* ((temp-file (flymake-init-create-temp-buffer-copy
 'flymake-create-temp-inplace))
 (local-file (file-relative-name
 temp-file
 (file-name-directory buffer-file-name))))
 (list "pyflakes" (list local-file))))

 (add-to-list 'flymake-allowed-file-name-masks
 '("\\.py\\'" flymake-pyflakes-init)))

(add-hook 'find-file-hook 'flymake-find-file-hook)

;; miniBuffer にエラーを出力
(defun flymake-show-and-sit ()
  "Displays the error/warning for the current line in the minibuffer"
  (interactive)
  (progn
    (let* ((line-no (flymake-current-line-no) )
           (line-err-info-list (nth 0 (flymake-find-err-info flymake-err-info
line-no)))
           (count (length line-err-info-list)))
      (while (> count 0)
        (when line-err-info-list
          (let* ((file (flymake-ler-file (nth (1- count)
line-err-info-list)))
                 (full-file
                  (flymake-ler-full-file (nth (1- count)
line-err-info-list)))
                 (text (flymake-ler-text (nth (1- count)
line-err-info-list)))
                 (line (flymake-ler-line (nth (1- count)
line-err-info-list))))
            (message "[%s] %s" line text)))
        (setq count (1- count)))))
  (sit-for 60.0))

;; キー割り当て
(global-set-key "\M-gn" '(lambda ()
                           (interactive)
                           (let (line (line-number-at-pos))
                             (flymake-goto-next-error)
                             (when (equal line (line-number-at-pos))
                               (next-error)))))
(global-set-key "\M-gp" '(lambda ()
                           (interactive)
                           (let (line (line-number-at-pos))
                             (flymake-goto-prev-error)
                             (when (equal line (line-number-at-pos))
                               (previous-error)))))
(global-set-key "\C-cd" 'flymake-show-and-sit)

;; ------------------------------------------------------------------------
;; Emacs でテキスト翻訳をする elisp
;; http://quantumfluctuation.blogspot.com/2011/05/text-translatorel_22.html

(add-to-list 'load-path "~\\.emacs.d\\text-translator") ; ロードパスの追加
(require 'text-translator)
(setq text-translator-auto-selection-func
      'text-translator-translate-by-auto-selection-enja)
;; 自動選択に使用する関数を設定
(setq text-translator-auto-selection-func
      'text-translator-translate-by-auto-selection-enja)
;; グローバルキーを設定
(global-set-key "\C-xt" 'text-translator-translate-by-auto-selection)

;; ;; if you are setting environment variables HTTP_PROXY,
;; ;; you have not to set this.
(setq text-translator-proxy-server "proxyaddress")
(setq text-translator-proxy-port   portnum)

;; ------------------------------------------------------------------------
;; @ 日本語の文章を整形する texst-adjust.el

(add-to-list 'load-path "~\\.emacs.d\\text-adjust") ; ロードパスの追加

;; 読み込み
(require 'text-adjust)

;; %は例外として半角にしない
(setq text-adjust-hankaku-except "%")

;; org-mode, text-mode のとき自動的には保存する際に実行
(defun text-adjust-space-before-save-if-needed ()
  (when (memq major-mode
              '(org-mode text-mode ))
    (text-adjust-space-buffer)))
(defalias 'spacer 'text-adjust-space-buffer)
(add-hook 'before-save-hook 'text-adjust-space-before-save-if-needed)

;; ------------------------------------------------------------------------
;; @ 日本語のチェックをする

(add-to-list 'load-path "~/.emacs.d/yspel")
(require 'yspel)

;; ------------------------------------------------------------------------
;; @ google で検索
(add-to-list 'load-path "~/.emacs.d/google")
(load "google")

* 現状の問題点

- まず、文字コードが良く分からない。 python 周りとか特に。本家の cygwin と違うし。 utf-8 に全部したい。
- flymake の C 設定もよく分からない。 makefile が必要とか無理だし。 c のファイルを開くと flymake に怒られる
- git が使えない。 proxy 設定してるのになぁ。
- cvs も使えない。 http_proxy のトンネル方法もイマイチ不明
- org-mode が変。たくさんかくと org-mode でカーソル移動が遅くなる、カクカク動く。
- hiwin-mode が変。フォーラムに上がってる設定をしても、非アクティブ、アクティブの判断が悪く、ずっとグレー。グレー
  をやめても、*scratch* や w3m で青くなったり黒くなったりでチラついて気持ち悪い。
- anything.el は履歴保存してくれないのかな。デフォルトの設定じゃ駄目なのかしらん。
- w3m で shift 選択できない。どうように、 org-mode でもできない。
- org-mode が auto-complete とかぶる。 auto-complete のキーバインドを強制上書きしても org-mode に聞かない。うざい。
- ansys-mode のカスタマイズ方法が不明。 unix/linux のみ対応を windows 対応にしたいけど、 elisp とか分からない。

0 件のコメント:

コメントを投稿