2011年6月15日

本家 cygwin と ntemacs の連携



gnupack の文字コードとか分けがわからなく、いろいろいじっていたら、
M-eshell をした後、exit すると、文字コードエラーで止まるようになってし
まった。
python も RCS も文字コード周りのせいで、ちゃんと動かない。unicode嫌い。
そうこうしているうちに、本家の cygwin をインストールした方が、なぜか、
Alt+[半角/全角]で日本語入力できるようになっていた。
これ幸いと、本家 cygwin の方をセットアップしてしまい、gnupack を卒業し
ようと画策。
とりあえず、やったことのまとめ。
gnupack の Emacs を持ってくる
http://sourceforge.jp/projects/gnupack/downloads/51254/emacs-23.3-20110402.exe/
cygwin との連携に必要なものをもってきて、適当なところに保存
http://www.emacswiki.org/cgi-bin/wiki/cygwin-mount.el
http://www.emacswiki.org/cgi-bin/wiki/setup-cygwin.el
環境変数 HOME を設定し、.wgetrc を作って、PROXY 設定
http_proxy=XXX.XXX.XXX:XX
auto-install.el を持ってくる
http://d.hatena.ne.jp/rubikitch/20091221/autoinstall
init.el を作って以下を記載。こっから、がんがんもってくるぞー。
;; ------------------------------------------------------------------------
;; @ 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)
;; ------------------------------------------------------------------------
;; ------------------------------------------------------------------------
;; @ 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)
;; ------------------------------------------------------------------------
;; @ default setting
   ;; ;; 起動メッセージの非表示
   (setq inhibit-startup-message t)
   ;; ;; スタートアップ時のエコー領域メッセージの非表示
   (setq inhibit-startup-echo-area-message -1)
;; ------------------------------------------------------------------------
;; @ key bind
   ;; BS や Delete キーでリージョン内の文字を削除
   (delete-selection-mode 1)
;; ------------------------------------------------------------------------
;; @ 定型文の挿入 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)))
;; ------------------------------------------------------------------------
;; @ iserarchで日本語を使う
;; http://highmt.wordpress.com/2010/10/25/isearchで日本語入力をやりやすくするパッチ/
(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)))

;; ロードパスの追加
(add-to-list 'load-path
      "~\\.emacs.d\\cygwin")
(setq cygwin-mount-cygwin-bin-directory "c:/cygwin/bin")
(require 'setup-cygwin)
;; (setenv "HOME" "/home/HOGEHOEG") ;環境変数で設定していないときは必要
;; ------------------------------------------------------------------------
;; @ 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)

0 件のコメント:

コメントを投稿