Mercurial > hg > RemoteEditor > emacs
changeset 32:62e709cbaaae
todo ¤ÎÄɲäÈʸ»ú¥³¡¼¥ÉÊѹ¹
author | gongo |
---|---|
date | Fri, 21 Dec 2007 17:38:22 +0900 |
parents | ccd1ad69a852 |
children | ed70d3c76f7b |
files | ChangeLog |
diffstat | 1 files changed, 152 insertions(+), 112 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Fri Dec 21 13:30:50 2007 +0900 +++ b/ChangeLog Fri Dec 21 17:38:22 2007 +0900 @@ -1,50 +1,90 @@ +2007-12-21 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> + + * fix: 文字コード + 研究室の方針で + + ## 漢字コードは utfで!! ## + + ってことで、このプロジェクトも utf に変更しました。 + 参考として + + % nkf --overwrite -w *.el + これで *.el のファイルは UTF8 (-w) に変換できました。 + + * TODO: + - ファイル毎に buffer を用意し、コマンドが来たら + 対応する buffer に書き込む。 + buffer は buffer name をハッシュ値として、テーブルで持てばいいかな。 + 確か lisp ではハッシュテーブルを作れた気がする。 + と思って調べてみたら、Emacs 21 以上からか hash 実装は。 + でも 「Emacs 20 以前でもシンボル表を用いればできる」そうだ。 + (参考->http://www.mew.org/~kazu/doc/elisp/hash.html) + + - 通信テストは、Session Manager 待ちではあるが、 + 今のうちに、ある程度のテストルーチンを作ってた方が + あとあと楽になりそうな気がしないでもなくも(ry + + - 受け取ったコマンドは、どのタイミングで適用しようか。 + 来た瞬間でいいのかなやっぱり。 + それとも、貯めて、自分が更新したら?そりゃちがうわな。 + + - 逆に自分が送る時はどうするんだろう。 + 1. コマンド発行 + 2. 適用前のコマンドリストとマージ + 3. マージ後のコマンドを送りつつ、適用 + こんな感じかなあ。 + でも、「適用前のコマンドリスト」ってのがわからん。 + それなりの時間貯めとかないと重なるってことないんじゃない? + そのためのマージなのか。それともやっぱり貯めたりほげほげするのか + + 2007-11-11 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> * redit-client-sm.el: redit-unpack-int - 256 ʾǤʤäΤ4ХȤ餤 + 256 以上を取得できなかったのを修正。4バイトぐらい。 * redit-client-sm.el: redit-*-command - REPcommand Ǥ insert ʤΤ - Ǥ write ʤΤǡ𤹤롣insert ѹ - ơwrite-* ؿ insert-* ؿ˥͡ࡣ - ȡredit-*-command ȤȤˡʸƤΤ + REPcommand では 「insert」 なのに + ここでは 「write」 なので、時々混乱する。insert に変更。 + それに総じて、write-* 関数を insert-* 関数にリネーム。 + あと、redit-*-command を使うときに、文字列で定義されてるので (string-to-number redit-read-command) - ȤʤȤʤä礤 - ̤ʸǤɬפϤʤפäƤȤ - ƿͤѹäڤä® + とかやらないといけない。今日の話し合いで + 「別に文字列である必要はないぜ」ってことで + 全て数値に変更。こっちの方が楽だし、きっと速い。 2007-11-10 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> * redit-client-sm.el: set-process-coding-system - ѥåȤ binary ɤȻŦ - гΤˤǤpack/unpackΰ̣ʤ - äƤȤ 'utf-8 'binary ѹޤ + 送受信するパケットは binary の方が良いと指摘。 + そう言われれば確かにそうでした。pack/unpackの意味なす + ってことで 'utf-8 から 'binary に変更しました。 - * redit-client-sm.el: process-send-string Ϣ - process-send-string ǡޤǤϡ륳ޥɤ + * redit-client-sm.el: process-send-string 関連 + process-send-string で、以前までは、送るコマンドを (format "%10d%10d" sid eid) - äƴʸƽϤƤޤ - ϡ̿Ѥ Perl ץȤ뤿ΤΤǤ - ϴˡlispľ SessionManager ˥ޥɤΤǡǤϤᡣ - ȤäƤɡ(redit-pack sid eid...) äƤΤѹޤ - ˤ뤫äƻͤǡ obsolete ʵҤĤƤϤޤ + って感じの文字列を生成して出力してましたが、 + これは、通信用の Perl スクリプトに送るためのものでした。 + 今は既に、lispから直接 SessionManager にコマンドを送るので、これではだめ。 + 前々から使ってたけど、(redit-pack sid eid...) ってのに変更しました。 + 引数を何にするかって参考で、一応 obsolete な記述も残してはいますが。 * redit-client-sm.el: redit-select-command (obsolete) - editor¦Ǥ select פʤäƤȤǡ - ǡeditor¦ɬפʤΤ join, put, quit, ¾Խޥɡ + editor側では select 要らないってことで。 + これで、editor側で必要なのは join, put, quit, その他編集コマンド。 * add: translate.el - translate Υƥȥ롼Ȥ + translate のテストルーチン。使い方は M-x load-file RET [translate.el] M-x translate-test - äƤȡ*Message* Хåեˡ - translateη̤Ϥޤäȡ + ってやると、*Message* バッファに、 + translateの結果が出力されます。きっと。 * redit-client-sm.el:unpack-int < (setq num (* byte 4)) @@ -52,34 +92,34 @@ ---------- > (setq num (* byte 4)) > (string-to-char (substring pkt (- num 1) num)))) - ̤ǡSMACKˤ - eid sid Ǥʤ + 通りで、SMからのACKにある + eid や sid を取得できない訳だ。 * error: redit-put-command cmd(redit-put-command, 0, 0, 0, 0, str-length, str) - ߤȡGUI SessionManager Ǽʸ롣 + みたいに送ると、GUI SessionManager で受け取る文字列が化ける。 emacs || GUI SessionManager ------++------------------- - gongo -> ͯ + gongo -> 杯湧 - ɤäʤΤ + どっちが原因なのか・・・ * TODO - ʸХȤȤˤʤ + 送信文字数がバイトとかになるんで (length str) - 餤ǤȻפäɡSMʸƤ - ⤷ñʸɤꡩǤä "hoge" ʤ - ޡˤƿ褦 (AM2:16) + ぐらいでいけると思ったけど、SMで文字化け。ずれてるんだろうか、 + もしくは単に文字コードの問題?でも送ったの "hoge" なんだわ。 + ま、それは明日にして寝よう (現在AM2:16) 2007-11-09 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> - * redit-client-sm.el: TCP/IP̿μȼpack/unpack - סιǤ + * redit-client-sm.el: TCP/IP通信の実装、それに伴うpack/unpack + 久々の更新ですわ。 - open-network-stream ɲäƤߤ + open-network-stream を追加してみた。 redit-join-command() < (setq redit-client-process @@ -91,31 +131,31 @@ > "localhost" > 8766)) - nil buffer ʤɡ褯狼Τ nil ¿ʬȤʤäȡ - localhost/8766 ϡѹ SM ϥǡǻĤ餷Τǡ - ۥ̾/ݡֹ ᤦǡ - ѤǡϥץƱ褦˻Ȥޤ + nil は buffer なんだけど、よくわからんので nil 。多分使わない。きっと。 + localhost/8766 は、何か仕様変更で SM はデーモンで持つらしいので、 + ホスト名/ポート番号 決めうちで。 + ここ変えるだけで、後はプロセスを同じように使えます。 - PerlץȤȤʤʤäΤǡѹȤƤ - lisp REPޥ"äݤʸ" -> Perl ʸä - pack->SessionManager - ߡlisp ľ REPޥɤ -> SessionManager + Perlスクリプトを使わなくなったので、変更点としては + 以前:lisp からREPコマンド"っぽい文字列" -> Perl で文字列受け取って + ここでpack->SessionManager へ + 現在:lisp から直接 REPコマンドを -> SessionManagerへ - äƤȤ lisp pack/unpack - (defun pack-int) (defun pack-int-loop) (defun unpack-int) Ǥ - ⤦Ȥ٤ʤ - SessionManager ȿǤƤΤ ϤƤߤ + ってことで lisp 内で pack/unpack を実装。 + (defun pack-int) (defun pack-int-loop) (defun unpack-int) です。 + もう少しちゃんとやるべきなんだろうか。 + ちゃんと SessionManager で反映されてるので 成功はしてるみたい。偶然? 2006-12-26 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> - * Ȥ - äѤpack/unpackνϥۤʡ - ǤǽФ餷礦ʤäƸƤ - ΤȤ0255ޤǤǤʤΤǡʲΤ褦ѹ + * 独り言 + うん、やっぱりpack/unpackの処理はアホだな。 + 暫定版で出したんだからしょうがない、って言い訳をしておこう。 + 今のところ0〜255までしかできないので、以下のように変更 - ;; num : pack + ;; num : packする整数 ;; count : byte length (defun pack-int-loop (num count) (if (> count 0) @@ -126,26 +166,26 @@ (defun pack-int (num) (pack-int-loop num 4)) - ex. num 30000byte length 4(32bit)λ ('X'=) + ex. num が 30000、byte length が4(32bit)の時 ('X'=不定) ;; loop start - count 4 -> (% num 256) => 48 1Х - (/ num 256) => 117 2Х + count 4 -> (% num 256) => 48 を1バイト目 + (/ num 256) => 117 を2バイト目 XXXXXXXX XXXXXXXX XXXXXXXX 00110000 (0 0 0 48) - count 3 -> (% num 256) => 117 2Х - (/ num 256) => 0 3Х + count 3 -> (% num 256) => 117 を2バイト目 + (/ num 256) => 0 を3バイト目 XXXXXXXX XXXXXXXX 01110101 00110000 (0 0 117 48) - count 2 -> (% num 256) => 0 3Х - (/ num 256) => 0 4Х + count 2 -> (% num 256) => 0 を3バイト目 + (/ num 256) => 0 を4バイト目 XXXXXXXX 00000000 01110101 00110000 (0 0 0 48) - count 1 -> (% num 256) => 0 4Х - (/ num 256) => 0 5Х + count 1 -> (% num 256) => 0 を4バイト目 + (/ num 256) => 0 を5バイト目 00000000 00000000 01110101 00110000 (0 0 117 48) ;; loop end - ǤkǤPerl¦ unpack ǥǡǤޤ - ʴǤΤʡpack - ȤunpackޤñpackƱȤФΤ - int ǤΤʡưȤǤ͡ + これでおkでした。Perl側の unpack でデータ取得できました + こんな感じでいいのかな。packソース見たい。 + あ〜あとはunpackか。まあ簡単かなpackと同じことすればいいのか。 + int だけでいいのかな。浮動小数とかいやですね。 2006-12-24 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> @@ -154,92 +194,92 @@ < (progn (redit-client-write-line beginl nil) ;; t) ----- > (progn (redit-client-write-line currline nil) ;; t) - while ǥ롼פƤΤ - äbeginläƤΤϤʡȻפä + while でループしてるのに + ずっとbeginlってのはおかしいかな〜と思った - * Ȥ - pack/unpackɤǤޤʳʤΤȤ߹Ǥޤ + * 独り言 + pack/unpackもどきができた。まだ使用段階なので組み込んでません。 - pack (defun pack (num) ;; num=42 - (concat (char-to-string 0) ;; 4Х - (char-to-string 0) ;; 3Х - (char-to-string 0) ;; 2Х - (char-to-string num))) ;; 1Х + (concat (char-to-string 0) ;; 4バイト目 + (char-to-string 0) ;; 3バイト目 + (char-to-string 0) ;; 2バイト目 + (char-to-string num))) ;; 1バイト目 => 00000000 00000000 00000000 00101010 - lispǥХ꤫褯狼ʤä - ǤʤȤrep_manager.pl unpack ǤƤޤ - ǥȤͤɬפ뤫ʡ + lispでバイト列を扱うやりかたがよくわからなかったけど + これでなんとかrep_manager.plが unpack できてました。 + エンディアンとか考える必要あるかな。 - unpack - äǡ顢(commandeid etc...)Ф + 受け取ったデータから、各値(command、eid 、etc...)を取り出す。 - 1458912131617202124 + 1〜4、5〜8、9〜12、13〜16、17〜20、21〜24 cmd sid eid seq line t_siz - 1Х()ͤäƤΤ - (substring pkt 3 4) => "*" ;; (char-to-string 42) => "*" ʤΤ - (string-to-char "*") => 42 ͼ + 下位1バイト目(?)に値が入ってるので + (substring pkt 3 4) => "*" ;; (char-to-string 42) => "*" なので + (string-to-char "*") => 42 ・・・ 値取得成功!! - ޤޤľꤢꤽɡ - ޤд lisp REP Ǥޤ + まだまだ見直す所ありそうだけど、 + うまくいけば完全に lisp だけで REP できますね 2006-12-15 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> - * Ȥ - open-network-stream rep_manager.pl ³Ǥ - ɡlisp ¦ǡޤƤʤ + * 独り言 + open-network-stream で rep_manager.pl に接続できた。 + だけど、lisp 側で送信データがうまく作れてない。 (format "%4d%4d%4d%4d%4d%4d" 41 0 0 1 0 0) - ȡʤޤʤ - pack/unpackʤʡ + だと、なんかうまくいかない。 + pack/unpackないかな・・・ 2006-12-14 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> - * Ȥ - ʤ lisp network TCP ³ˡäݤ + * 独り言 + なんか lisp から network に TCP 接続する方法があるっぽい (open-network-stream NAME BUFFER HOST SERVICE) - ޤ¾ڤƤޤʤȤäݤǤ(ex. navi-2ch) - ޤСredit_client.pl Ϥʤʤ뤫⡣ - ʸɴطϤɤ褦decode-coding-* 餤 - ɤˤʤʤʡʤʤ⡣̵̤ʥإåղä롦 + まだ実証してませんが、なんか使えるっぽいです。(ex. navi-2ch) + うまくいけば、redit_client.pl はいらなくなるかも。 + 文字コード関係はどうしよう。decode-coding-* ぐらいで + どうにかならないかな。ならないかも。無駄なヘッダ付加される・・・ * redit-client-sm.el - redit-client-close () - linenum ƤʤäΤǡ 0 ˤޤ - ̤0פǤ͡close ¿ʬ + linenum が定義されてなかったので、 0 にしました。 + 別に0で大丈夫ですよね?close だし。多分。。。 * redit-client-sm.el - redit-client-exec-write-line (string) - ʤ Warning ǤƤΤ + なんか Warning でてたので < (end-of-buffer) ----- > (call-interactively 'end-of-buffer) - end-of-buffer interactive ؿʳ - ƤӽФܤ餷Ǥ - Ĵ٤Ƥ餳 Warning ФʤΤ夭ޤ - Τʤǡ + end-of-buffer は interactive 関数以外で + 呼び出したら駄目らしいです。 + いろいろ調べてたらこれで Warning 出ないので落ち着きました。 + いいのかなこれで。。。 2006-12-12 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> * redit-client-sm.el - obsolete function ѹ + obsolete function を変更 since Emacs 22.1 < (process-kill-without-query redit-client-process) ----- > (set-process-query-on-exit-flag redit-client-process nil) - 2 non-nil ȡemacsλ - `Active processes exist; kill them and exit anyway?' - äʹƤޤprocess redit_client.pl ΤȤǤ - ¿ʬʤΤ nil ޤ + 第2引数が non-nil だと、emacs終了時に + 「`Active processes exist; kill them and exit anyway?' 」 + って聞いてきます。process は redit_client.pl のことです。 + 多分いらないので nil を入れました。 since Emacs 21.1 - < (make-local-hook 'before-change-functions) ;; after + < (make-local-hook 'before-change-functions) ;; afterも ----- > ;; (make-local-hook 'before-change-functions) - not necessary 餷Ǥ21.1ɬܤߤǤ + not necessary らしいです。21.1以前だと必須みたいですが。 - * Ȥ - defstruct ȤȤ - (eval-when-compile (require 'cl)) ä - byte-compile-file ƤȻȤ롣 + * 独り言 + defstruct を使うときは + (eval-when-compile (require 'cl)) を加えた後に + byte-compile-file してからやると使える。