スキップしてメイン コンテンツに移動

emacsの設定: canna.el

 
~/lib/conf/emacs/canna.el



(progn
(if (and (or (and (boundp 'CANNA) CANNA)
(<= emacs-major-version 20))
(not (equal emacs-ime "canna-tamago")))
(progn
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; emacs-dl-canna/emcws の場合

(load-library "canna")

;; color-mate を使わないで、漢字変換に色を付けたい時に
;(setq canna-use-color t)

;; フェンスモードでなくアンダーラインを使う
;;(setq canna-with-fences nil)
;;(setq canna-underline t)

;; Canna サーバの指定
(if (null (getenv "CANNA_SERVER"))
(setq canna-server "unix")
(setq canna-server (getenv "CANNA_SERVER")))
(canna)

;; Canna を Ctrl-\ で起動します。コメントアウトすれば、
;; Ctrl-\ で skk が立ち上がります。
(global-set-key "\C-\\" 'canna-toggle-japanese-mode)
(global-set-key "\C-o" 'canna-toggle-japanese-mode)
;; Shift-Space または 半角/全角 でも起動
(global-set-key [?\S-\ ] 'canna-toggle-japanese-mode)
(global-set-key [zenkaku-hankaku] 'canna-toggle-japanese-mode)

(global-set-key "\C-_" 'canna-undo) ;アンドゥの設定。
(setq canna-save-undo-text-predicate ;アンドゥバッファへ入れる条件
'(lambda (s) (> (length (car s)) 2)) )
(setq canna-undo-hook ;アンドゥ+α。
'(lambda () (message "再変換します....")
(canna-do-function canna-func-henkan)) )

;;かんなの変換中に BS & DEL を使う
(define-key canna-mode-map [backspace] [?\C-h])
(define-key canna-mode-map [delete] [?\C-h])

;;かんなの変換中に C-h を使う (with term/keyswap)
(define-key canna-mode-map [?\177] [?\C-h])
))

(if (or (and (not (and (boundp 'CANNA) CANNA))
(>= emacs-major-version 21))
(equal emacs-ime "canna-tamago"))
(progn
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; emacs-dl-canna/emcws でないとき (tamago4)

;; Canna サーバの指定
(if (null (getenv "CANNASERVER"))
(setq canna-server "localhost")
(setq canna-server (getenv "CANNASERVER")))

(require 'egg)

;; InputMethod の設定
(setq default-input-method "japanese-egg-canna")

;; tamago v4 共通設定

(setq
;; 何回変換すると(自動的に)辞書に反映するか
wnn-auto-save-dictionaries 1
;; nil にすると、alphanumeric が半角入力になるらしい。
its-enable-fullwidth-alphabet nil
;; Backspace で消すときに、かなを入力したローマ字に展開して
;; ローマ字単位で消す?
its-delete-by-keystroke t
;; 外すと操作方法が変わるみたいです。よく分かりません。
egg-mode-preference t
;; "nn" で「ん」を入力
enable-double-n-syntax t
;; "." で「.」、"," で「,」を入力。
use-kuten-for-period nil
use-touten-for-comma nil
;; 候補の最後まで行ったら先頭に戻る
egg-conversion-wrap-select t
;; 候補一覧を表示するまでの変換回数、0で非表示
egg-conversion-auto-candidate-menu 2)

;; F7 で toroku-region
(global-set-key [f7] 'egg-toroku-region)

;; egg-canna.el
(add-hook 'canna-load-hook '(lambda () (load "egg-canna")))

;; Canna 用設定 (Canna 風キー設定)
(load "its")
(define-key global-map "\C-o" 'toggle-input-method)
(global-set-key [?\S-\ ] 'toggle-input-method)
(global-set-key [zenkaku-hankaku] 'toggle-input-method)
(define-key isearch-mode-map "\C-o" 'isearch-toggle-input-method)
(define-key isearch-mode-map [?\S-\ ] 'isearch-toggle-input-method)
(define-key isearch-mode-map [zenkaku-hankaku] 'isearch-toggle-input-method)
(define-key its-mode-map "\C-h" 'its-delete-backward-SYL)
(define-key its-mode-map "\C-p" 'its-hiragana)
(define-key its-mode-map "\C-y" 'its-hiragana)
(define-key its-mode-map "\C-n" 'its-katakana)
(define-key its-mode-map [up] 'its-hiragana)
(define-key its-mode-map [down] 'its-katakana)
(define-key egg-conversion-map "\C-g" 'egg-abort-conversion)
(cond ((eq window-system 'x)
(define-key its-mode-map [henkan] 'its-kick-convert-region)
(define-key its-mode-map [hiragana-katakana] 'its-katakana)
(define-key its-mode-map [muhenkan] 'its-hiragana)
(define-key its-mode-map [f6] 'its-hiragana)
(define-key its-mode-map [f7] 'its-katakana)
(define-key its-mode-map [f8] 'its-half-width)
(define-key its-mode-map [backspace] 'its-delete-backward-SYL)
;(define-key menudiag-mode-map [backspace] 'menudiag-exit-one-level)
(define-key its-mode-map [delete] 'its-delete-SYL))
((null window-system)
(define-key its-mode-map "\e[17~" 'its-hiragana)
(define-key its-mode-map "\e[18~" 'its-katakana)
(define-key its-mode-map "\e[19~" 'its-half-width)
(define-key its-mode-map [8] 'its-delete-backward-SYL)
;(define-key menudiag-mode-map [8] 'menudiag-exit-one-level)
(define-key its-mode-map "\e[3~" 'its-delete-SYL)))
)
)
)


>> emacsの設定

このブログの人気の投稿

TeXマクロプログラミング

2012.03.30 更新 スライド化しました.   新しいマクロ定義 以下に例を示す. \dev\hoge{ほげ}    これにより,\hogeが「ほげ」に変換される.引数を使うには,以下のように記述する. \dev\hour#1{今は#1時です}   別の方法 上に示した処理は,以下のようにも記述できる. \newcommand{\hoge}{ほげ} \newcommand{\hour}[1]{今は#1時です}   defとnewcommand違い defとnewcommandが異なる箇所として,以下が上げられる. 定義命令を定義している処理系 マクロを多重定義した場合の動作 引数のとり方  まず,定義されている処理系が異なる.defはtexで定義されており,newcommandは,latexで定義されている.  次に,多重定義した際の動作が異なる.defでは,新しい定義で上書きする.一方,newcommandではエラーを出力する.  最後に,defでは,引数のとり方としてパターンマッチングを利用できる.例えば,以下のマクロ定義があるとする. \def\Hatchr(#1,#2)(#3,#4)#5 これにより,以下に示すインターフェイスを実現する. \Hatchr(3,4)(7,8){hoge}   マクロの複製 以下の処理では,\hogeの内容を\fugaに複製する. \let\fuga\hoge   マクロの初期化 以下のコードで,\hogeを初期化する. \let\fuga\relax  ここで,\relaxは初期化のために利用する空の定義である.   マクロに文字を追加し再定義 defによる定義は,マクロの多重展開をおこなわない.例えば,以下のコードを考える. \def\hoge{ほげ} \def\hoge{\hogeふぇふぇ}  この後,\hogeを利用すると「\hogeふぇふぇ」と展開される.つまり,一度だけしかマクロは展開されない.  マクロを展開してから定義する際には,以下の記述を用いる. \edef\hoge{\hogeふぇふぇ}  これに

beamerでしおりを付ける

しおり   しおりとは,acroreadなどでpdfを表示する際に,ウィンドウの左側に表示される目次のようなものである.このしおりを使うことで,文章の構成を大まかに把握したり,特定の項目に移動することが簡単にできる.   beamerには,標準でしおりを付ける機能が備わっている.以降では,しおりを付ける方法について述べる. しおりをつける   beamerでしおりを付けるには,次のコマンドをtexの文章中に記述する. section{} subsection{} subsubsection{}   カッコの中に記述する文字列が,しおりの項目名に使用される.また,section,subsection,subsubsectionを使い分けることで,階層化をすることも可能. 文字化け対策   しおりは,標準の仕様ではUnicodeのみがサポートされている.EUCを使う場合は,そのままではしおりの日本語が文字化けする.このため,Unicodeを用いない際には,何らかの対策が必要である.   以下では,EUCを利用する人のための対処策を述べる.ここで,dviからpdfを生成する際の方法によって,対処の仕方が異なることに注意する.具体的には,(1)dvipdfmxを用いる場合と,(2)dvipsおよびps2pdfを用いる場合で,対処の仕方が異なる.以降,それぞれについて述べる. dvipdfmxを用いる場合   次のコードをプリアンブルに記述しておくことで解決できる.これにより,しおりの部分の文字列が,自動でUnicodeに変換される. \ifnum 42146=\euc"A4A2 \AtBeginDvi{\special{pdf:tounicode EUC-UCS2}}\else \AtBeginDvi{\special{pdf:tounicode 90ms-RKSJ-UCS2}}\fi   ただし,実行にはEUC-UCS2というファイルが必要.texをインストールする際に,標準でシステムに入る場合はこのままコンパイルできるが,無ければコンパイルできない.私がこれまで経験したなかでは,Vine 5.0, Mac OSXには含まれているが,Debian lennyには入っていなかった.   システムにEUC-UCS2が無い場合,以下のようなサイトから取ってくる.取って

ssh-agentの管理を自動化する

ssh-start.sh ssh-agentの管理を自動化するスクリプトssh-start.shを紹介する. 詳細 ssh-agentを使うことで,sshでリモートログインする際に,パスワードの入力を省略できる. ssh-agentを利用するためには,ソケットのパスとプロセスIDを環境変数に登録する必要がある.環境変数に登録すべき情報は,ssh-agentの起動時に,以下のように標準出力に出力される. $ ssh-agent SSH_AUTH_SOCK=/tmp/ssh-XTqIvn4918/agent.4918; export SSH_AUTH_SOCK; SSH_AGENT_PID=4919; export SSH_AGENT_PID; echo Agent pid 4919; 上記のように,ssh-agentの出力はシェルコマンドとなっており,実行すれば環境変数がセットされる.このため,多くの解説記事では,次のようにevalを用いる方法が述べられている. $ eval `ssh-agent` Agent pid 4919 しかし,この方法は,同じssh-agentのプロセスを複数のシェルから利用することはできない.上記コマンドを他のシェル上でも実行すれば,動作はするが,次の点で優れた手法とは言えない. ssh-agentのプロセスを複数起動する (本来は1個で充分). 起動毎に秘密鍵の登録,およびパスフレーズの入力が必要となる. 上記の問題は解決するには,1個のssh-agentを複数のシェルから再利用すればよい.例えば2個のターミナルから1個のssh-agentプロセスを利用するには,次のようにする. # terminal 1 $ ssh-agent > ~/tmp.sh $ source ~/tmp.sh Agent pid 4919 # terminal 2 $ source ~/tmp.sh Agent pid 4919 こうすることで,2個のターミナルから同一プロセスのssh-agentを利用できる. 以上の処理を自動化したものが,ここで紹介するスクリプトである. 使い方 環境変数を扱かうため,通常のスクリプトのようには利用できない.このため,sourceコマンドや.(ドット)コマンドで実行する. $ source /path/to/dir/s