2008年8月26日火曜日

今日の.emacs(カスタマイズ重視風)



(ffap-bindings) ;find file at point
(global-set-key "\M-/" 'hippie-expand) ;補完を強力に

(require 'dired-x) ;dired を拡張
(autoload 'wdired-change-to-wdired-mode "wdired") ;dired で簡単リネーム
(define-key dired-mode-map "r" 'wdired-change-to-wdired-mode)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 検索強化
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; F3 でカーソル下の単語を検索(vim のまね、F4 で逆向き検索)
(defvar my-search-key-forward [f3])
(defvar my-search-key-backward [f4])
(defvar my-isearch-repeated nil)

(defun my-isearch-symbol (&optional repeat backward)
(interactive "p")
(and (eq repeat 1)
(let ((wd (thing-at-point 'symbol)))
(when wd
(let ((rq_wd (regexp-quote wd)))
(isearch-update-ring
(concat (if (string= (substring rq_wd 0 1) "_")
"\\W" "\\<")
rq_wd
(if (string= (substring rq_wd -1) "_")
"\\W" "\\>"))
t)))))
(cond (backward
(setq my-isearch-repeated 'backward)
(isearch-backward t))
(t
(setq my-isearch-repeated 'forward)
(isearch-forward t)))
(setq my-isearch-repeated nil))

(defun my-force-repeat ()
(cond ((eq my-isearch-repeated 'forward)
(isearch-repeat-forward))
((eq my-isearch-repeated 'backward)
(isearch-repeat-backward))))

(add-hook 'isearch-mode-hook 'my-force-repeat)

(global-set-key my-search-key-forward 'my-isearch-symbol)
(global-set-key my-search-key-backward (lambda (&optional repeat)
(interactive "p") (my-isearch-symbol repeat t)))
(define-key isearch-mode-map my-search-key-forward
(lambda ()
(interactive)
(and (not isearch-forward) (isearch-repeat-forward))
(isearch-repeat-forward)))
(define-key isearch-mode-map my-search-key-backward
(lambda ()
(interactive)
(and isearch-forward (isearch-repeat-backward))
(isearch-repeat-backward)))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; フォント設定
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun my-set-assoc-data (list key value)
;; リストに既に同じキーがあれば上書き、無ければ新規追加
(let ((item (assoc key (symbol-value list))))
(if item
(setcdr item value)
(add-to-list list (cons key value)))))

(defun my-set-font (ascii-font jis-font size mul)
;; フォント設定
;; ascii フォント、和文フォント、サイズ、倍率の順に指定する。
(create-fontset-from-ascii-font
(concat "-*-" ascii-font "-normal-r-normal-normal-"
(int-to-string size) "-*-*-*-*-*-iso8859-1")
nil
(concat ascii-font (int-to-string size)))

(let* ((encoded (encode-coding-string jis-font 'emacs-mule))
(family (concat encoded "*"))
(fontset (concat "fontset-" ascii-font (int-to-string size))))

(set-fontset-font fontset 'japanese-jisx0208
(cons family "jisx0208-sjis"))
(set-fontset-font fontset 'katakana-jisx0201
(cons family "jisx0201-katakana"))

(my-set-assoc-data 'face-font-rescale-alist (concat ".*" encoded ".*") mul)
(my-set-assoc-data 'default-frame-alist 'font fontset)
(set-frame-font fontset)))

;; 倍率は全角と半角の比率を調整する。サイズによって最適値は異なる。
(my-set-font "Consolas" "メイリオ" 15 1.1)
;(my-set-font "Consolas" "メイリオ" 14 1.2)
;(my-set-font "Courier New" "MS ゴシック" 14 1.2)
;(my-set-font "MS ゴシック" "MS ゴシック" 14 1.0)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(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.
'(c-default-style (quote ((c-mode . "linux") (java-mode . "java") (awk-mode . "awk") (other . "gnu"))))
'(column-number-mode t)
'(cua-mode t nil (cua-base))
'(cua-paste-pop-rotate-temporarily t)
'(current-language-environment "Japanese")
'(dired-recursive-copies (quote always))
'(dired-recursive-deletes (quote always))
'(grep-find-template "find . <X> -type f <F> -print0 | xargs -0 -s32000 grep -nH -e <R> ")
'(iswitchb-mode t)
'(mouse-wheel-scroll-amount (quote (1 ((shift) . 1) ((control)))))
'(partial-completion-mode t)
'(read-file-name-completion-ignore-case t)
'(recentf-mode t)
'(save-place t nil (saveplace))
'(show-paren-mode t)
'(tool-bar-mode nil)
'(view-read-only t)
'(viper-auto-indent t)
'(viper-buffer-search-char 103)
'(viper-case-fold-search t)
'(viper-ex-style-editing nil)
'(viper-keep-point-on-undo t)
'(viper-syntax-preference (quote extended))
'(viper-vi-style-in-minibuffer nil)
'(visible-bell t)
'(wdired-allow-to-change-permissions t))
(custom-set-faces
;; custom-set-faces 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.
)

(put 'dired-find-alternate-file 'disabled nil)
(put 'narrow-to-region 'disabled nil)

2008年8月24日日曜日

NTEmacs22 フォント設定(Consolas + メイリオ)

フォント関連が難しいので簡易設定関数を自作した。
以下を .emacs にでも追記する。


(defun my-set-assoc-data (list key value)
;; リストに既に同じキーがあれば上書き、無ければ新規追加
(let ((item (assoc key (symbol-value list))))
(if item
(setcdr item value)
(add-to-list list (cons key value)))))

(defun my-set-font (ascii-font jis-font size mul)
;; フォント設定
;; ascii フォント、和文フォント、サイズ、倍率の順に指定する。
(create-fontset-from-ascii-font
(concat "-*-" ascii-font "-normal-r-normal-normal-"
(int-to-string size) "-*-*-*-*-*-iso8859-1")
nil
(concat ascii-font (int-to-string size)))

(let* ((encoded (encode-coding-string jis-font 'emacs-mule))
(family (concat encoded "*"))
(fontset (concat "fontset-" ascii-font (int-to-string size))))

(set-fontset-font fontset 'japanese-jisx0208
(cons family "jisx0208-sjis"))
(set-fontset-font fontset 'katakana-jisx0201
(cons family "jisx0201-katakana"))

(my-set-assoc-data 'face-font-rescale-alist (concat ".*" encoded ".*") mul)
(my-set-assoc-data 'default-frame-alist 'font fontset)
(set-frame-font fontset)))

;; 倍率は全角と半角の比率を調整する。サイズによって最適値は異なる。
(my-set-font "Consolas" "メイリオ" 15 1.1)
;(my-set-font "Consolas" "メイリオ" 14 1.2)
;(my-set-font "Courier New" "MS ゴシック" 14 1.2)
;(my-set-font "MS ゴシック" "MS ゴシック" 14 1.0)