勉強不足以上に実践不足が否めないと思う今日この頃。 テストが終わった(笑)のでちまちまとアウトプットをしていこうと思います。
まあ、たいしたものではないですが。
Hexl@xyzzyのpatch
NANRIさん配布のHexlに対するpatchです。今更な気がするのでひっそりと。 →http://xyzzy.s53.xrea.com/wiki/index.php?patch%2Fpatch%2Fhexl.l 先生、"patch/patch/hexl.l"ってなんですか…
;; Hexlにあると便利そうなおまけ (defun hexl-coloring-hook () "hexl-modeの表示に色を付ける." (make-local-variable 'regexp-keyword-list) (setq regexp-keyword-list (compile-regexp-keyword-list '(("^\\w\\{8\\}:" nil 2) (" .+$" nil :comment))))) (add-hook 'hexl-mode-hook 'hexl-coloring-hook) ;; バイナリファイルは自動的にhexl-mode (pushnew '("\\.exe$" . hexl-mode) *auto-mode-alist* :test 'equal)
xyzzylispだけでhexl-modeを再現は一度挑戦して挫折したなあ。
Hexlのように"ADDRESS: BYTE TEXT"の形式でバッファ表示させようとしたけど、関数のコンパイルをしても1Mのファイル読み込みに10秒かかったところでアウト。バイト単位の読み込みはまずかったのかもしれない。でも実践CLにもMP3のID3パーサが紹介されているくらいだからlispでバイナリファイルを扱うのは無茶ではないんだと思う。
もしかしてMP3ファイルのヘッダ部分だけ読み込んでいるのかもしれないが
2009-02-11T18:15:41+09:00追記
NANRIさんからのコメントで、Yamamoto Shinjiさんが移植されたhexl.lがあるこ とを教えてもらいました。ありがとうございます。
- バイナリエディタモードのhexlってもう無いんですか? (質問箱/117) ※ページの下部に添付ファイル(hexl.lzh)がある
- hexl.l - Extlib Wiki
ファイルのヘッダ部分を見ると、移植元のhexl.elのコードは1994年らしいです。
;; Copyright (C) 1989, 1994 Free Software Foundation, Inc.
一方、NANRIさん移植のhexl.lは2001年もの。
;; Copyright (C) 1989, 1994, 1998, 2001 Free Software Foundation, Inc.
さすがにこれだけ移植元の年数が違うと、hexl.elのコード自体もそれなりに変 更が加えられているみたいでした。
また、Yamamotoさんのhexl.lを試したのですがhexl-beginning-of-line (Control-a)の挙動がおかしいらしく、テキスト部のカーソル(reverse-region)が 追いつかないバグが残っているようです。
(setq hexl-exec-directory "C:/usr/local/emacs-22.3/bin/") (require "hexl")
そんなわけで、コメントをいただいて恐縮ですがしばらくは使い慣れたHexlを弄ろうかと思います。
Xyzzy Wikiの質問箱/117 のところにかつて山本さんが移植されたコードが添付されていますので、そちらを使った方が良いかと。
返信削除# なぜ、当時気付かず移植したのかは謎です。
ありがとうございます。山本さんのHexlが残っていることに気づきませんでした。
返信削除どうやらNANRIさん移植のHexlの方が元となったhexl.elのバージョンが新しいよ
うなので、とりあえずこちらを使おうかと思います。
lispのコードとしてもNANRIさんの方が見やすいですし。