2007年9月29日土曜日

キーバインディングを変えてみた

HHKの左◇ダイアモンドキーをMETAキーに。
左AltキーをSuperキーに。

METAキーはEmacs使っていると多用するので、なるべく押下しやすいスペースバーの隣に。
Altキーはあまり使わないし、右Altキーもあるしで、Superキーに変えてみました。
Berylのキーボードショートカットを見るとやたらとSuperキーが出てきたので。今までAlt+Tabでタスク切り替えしてたのですが、Super+Tabでタスク切り替えしたら、なんか、リング上に回転して切り替えがw

以下メモ。

まず、xevコマンドでで左◇キーと左Altキーのキーコードを取得。
それぞれ、131と64と分かったので、~/.Xmodmapに記述。
clear mod1
keycode 129 = Zenkaku_Hankaku Kanji
keycode 131 = Meta_L
keycode 64 = Super_L
add mod1 = Meta_L Alt_L
あとは、
xmodmap ~/.Xmodmap
として再読み込み。無事変更完了。

ああ、どんどん深みにハマっていく気が・・・orz
ところでWindowsのWinキーってlinuxだと何キーになるんでしょうかね? Superキー?

参照

2007年9月28日金曜日

Emacsで行の折り返し表示をON/OFFする

通常は一行が長すぎると右側で折り返され、画面に収まって表示されます.
ですが/etc/fstab ファイルとか、syslogファイルなど、一行1レコードのようなファイルを編集する場合、折り返し表示されるとかえって見にくくなります.

ということで~/.emacsに以下を追記します.

;;====================================
;;; 折り返し表示ON/OFF
;;====================================
(defun toggle-truncate-lines ()
"折り返し表示をトグル動作します."
(interactive)
(if truncate-lines
(setq truncate-lines nil)
(setq truncate-lines t))
(recenter))

(global-set-key "\C-c\C-l" 'toggle-truncate-lines) ; 折り返し表示ON/OFF
これで、C-c C-l とするだけで、折り返しするしないをトグル動作する事が出来ます。

2007年9月27日木曜日

Emacsで色いろいろなの

小ネタ。
たとえば、HTMLを編集していてちょと色を変えたいとき、色の16進表記が分からない、とか、Emacsの色が気に入らないのでカスタマイズしたいが、あの色の名前なんだっけ? とかの時に役立つ〜
M-x list-colors-display
で色見本が表示されます。
 Emacs23だと同時に16進表記も出ます。



 他に、color-selection.elというelispもあり、こちらは色名は出ませんが、emacs21でも16進で表示され、リターンキーで選択した色を張り付けることが出来ます。ただ、jaspace.elと相性が悪く、jaspace.elが有効になっていると色が表示されませんでした。

2007年9月26日水曜日

Emacsで見たままの状態をHTMLに変換する

以前に「"」とか、「<」とかのメタ文字をエスケープするだけのモノを作ったんですが、もっと便利な物があったんですね。知らなかったorz

ということで、emacsでfont-lockでコードなんかを色付けして表示している場合、その体裁ごとHTMLに変換してくれるelisp.

htmlize.el


 emacsの強調表示や色付けされた見たままの状態をCSS付きでHTMLに変換してくれます。
 変換は、選択された範囲や、Buffer全体、ファイルから行えます。
 ですがHTMLで変換されるので、部分引用したいときは不便を感じる。

face2html


 同じく見たままをHTMLに変換してくれる。<pre>で囲んだHTMLを吐き出してくれます。
 コードなんかをポトペタと張り付ける時にはこちらの方がいい感じです。


便利だね。Emacs♪

2007年9月25日火曜日

Emacs23でmewがうごかない

小ネタ。
emacsで動くメールソフトのmewが All members of mew-thread-indent-strings must have the same length なメッセージを出して動かない。
~/.emacs に以下を追記することで動いた。

(if (>= emacs-major-version 23)
(setq mew-thread-indent-strings ["+" "+" "|" " "]))
スレッド表示の時のインデントを表す記号文字の設定みたいだけど、なんだろうね。文字コードのせいなのかな。

2007年9月24日月曜日

バックアップ時のキャッシュディレクトリの挙動について

 バックアップする時に悩むのが Cache ディレクトリの取扱い。homeディレクトリを丸ごとバックアップしたいときなんて、例えば、firefoxのキャッシュフォルダや、各種画像のサムネイル、テンポラリフォルダなどなど。
 Dar で、~/.darrc に除外したいディレクトリを逐一指定しておくのもいいけれど、 Cache Directory Tagging Standard という仕組みを使えば簡単にキャッシュディレクトリを除外できる。

仕組みは簡単で、キャッシュディレクトリだと認識するディレクトリの中に、CACHEDIR.TAGというファイルを作り、ファイルの中身を、
Signature: 8a477f597d28d172789f06886806bc55
# This file is a cache directory tag created by (application name).
# For information about cache directory tags, see:
# http://www.brynosaurus.com/cachedir/
と書いておけばいい。最初の一行だけで事足りるだろうけど。ようするにキャッシュディレクトリにタグ付けをしておくということですね。

あとは例えばDarならバックアップのさいに、 -, オプションを付ければ CACHEDIR.TAG のあるディレクトリは除外してバックアップしてくれる。
ほかにもtar や cpio 、 rsync なども対応しているので、ガンガン利用していきましょう。

いやぁ、linuxってかゆいところに手が届く的な便利さがありますね♪

以下、作業メモ。
find ~/ -iname cache -print | wc
で23個ものcacheディレクトリがあったので、
#!/usr/bin/ruby
#
#

name= "set_cachetag.rb"
tt1 = "Signature: 8a477f597d28d172789f06886806bc55\n" +
"# This file is a cache directory tag created by "
tt2 = "# For information about cache directory tags, see:\n" +
"# http://www.brynosaurus.com/cachedir/ \n"
tagtext = tt1 + name + "\n" + tt2

while gets
if File.directory?($_.chop) then
cpath = $_.chop + "/CACHEDIR.TAG"
unless File.exist?(cpath) then
print $_
tag = File.new(cpath , "w")
tag << tagtext
tag.close
end
end
end
とrubyスクリプトを書いて、
find ~/ -iname cache | ruby set_cachetag.rb
としていっきに CACHEDIR.TAG ファイルを生成した。楽だ♪

2007年9月23日日曜日

Emacsでタイピング練習

plog さんのところで昔懐かしい TRR の話題があったので、試しに入れてみました。
リポジトリに入っているのは trr19 で、emacs22以降で動きません。trr19を修正したtrr21というのがあったので導入してみました。

以下導入メモ

wget http://ftp.opaopa.org/pub/elisp/trr21.tar.gz
tar zxvf trr21.tar.gz
cd trr21/
エディタでMakefileを編集し、sedとgrepのパスを修正。
# Name of your sed
#SED = /usr/bin/sed
SED = /bin/sed

# Name of your grep
#GREP = /usr/bin/grep
GREP = /bin/grep
make all したら poe がないと言われたので、力業で作業ディレクトリにコピー^^;
cp /usr/share/emacs/site-lisp/apel/poe.el .
cp /usr/share/emacs/site-lisp/apel/product.el .
cp /usr/share/emacs/site-lisp/apel/pym.el .
cp /usr/share/emacs/site-lisp/apel/apel-ver.el .
cp /usr/share/emacs/site-lisp/apel/static.el .
make all

無事make成功。そのままインストール。
sudo make install
~/.emacs に以下を追記。
(autoload 'trr "/usr/local/share/emacs/site-lisp/trr" nil t)
emacsを立ち上げて、M-x trr で無事emacs23で起動成功。


参照