annotate redit-client-sm.el @ 15:80db8560887c

add rep-string-encoding and translate it.
author shinobu
date Sat, 10 Nov 2007 14:58:51 +0900
parents 554806d53b5e
children cf36410f06c2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
1 ;; $Id$
13
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
2 (defcustom redit-client-program "/Users/gongo/src/cr/REP_project/emacs/redit_client.pl"
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
3 "The program to use as the remote-edit client."
a897604a9280 Initial revision
yasumura
parents:
diff changeset
4 :group 'redit
a897604a9280 Initial revision
yasumura
parents:
diff changeset
5 :type 'string)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
6
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
7 ;; 送受信されるコマンドは
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
8 ;; 2 + 2 + 9 + data
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
9 ;; command_number + buffer_number + line_number + data
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
10
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
11 (eval-when-compile (require 'cl))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
12
a897604a9280 Initial revision
yasumura
parents:
diff changeset
13 (defvar redit-client-process nil
a897604a9280 Initial revision
yasumura
parents:
diff changeset
14 "Remote-edit client process.")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
15
a897604a9280 Initial revision
yasumura
parents:
diff changeset
16 (defvar redit-client-buffer nil
a897604a9280 Initial revision
yasumura
parents:
diff changeset
17 "Remote-edit client's buffer.")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
18
a897604a9280 Initial revision
yasumura
parents:
diff changeset
19 (defvar redit-client-buffer-name nil
a897604a9280 Initial revision
yasumura
parents:
diff changeset
20 "Remote-edit client's buffer-name.")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
21
a897604a9280 Initial revision
yasumura
parents:
diff changeset
22 (defvar redit-client-buffer-number nil
a897604a9280 Initial revision
yasumura
parents:
diff changeset
23 "Remote-edit client's buffer-number.")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
24
a897604a9280 Initial revision
yasumura
parents:
diff changeset
25 (defvar redit-client-editor-id "0"
a897604a9280 Initial revision
yasumura
parents:
diff changeset
26 "Remote-edit client's editor-id.")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
27
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
28 (defvar redit-client-session-id 0
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
29 "Remote-edit client's session-id.")
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
30
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
31 ;; editor local sequence number
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
32 (defvar redit-client-seqno 0
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
33 "Remote-edit client's editor-id.")
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
34
a897604a9280 Initial revision
yasumura
parents:
diff changeset
35 (defvar redit-client-line-max-in-server nil
a897604a9280 Initial revision
yasumura
parents:
diff changeset
36 "Value of point-max in server's buffer.")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
37
a897604a9280 Initial revision
yasumura
parents:
diff changeset
38 (defvar redit-client-previous-edited-line 1
a897604a9280 Initial revision
yasumura
parents:
diff changeset
39 "Current cursor line of remote-edit client.")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
40
a897604a9280 Initial revision
yasumura
parents:
diff changeset
41 (defvar redit-client-after-edited-line 1
a897604a9280 Initial revision
yasumura
parents:
diff changeset
42 "Current cursor line of remote-edit client.")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
43
a897604a9280 Initial revision
yasumura
parents:
diff changeset
44 (defvar redit-client-previous-line 1
a897604a9280 Initial revision
yasumura
parents:
diff changeset
45 "Behind cursor line of remote-edit client.")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
46
a897604a9280 Initial revision
yasumura
parents:
diff changeset
47 (defvar redit-max-string-length 1004
a897604a9280 Initial revision
yasumura
parents:
diff changeset
48 "Read-Write max length of string.")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
49
15
80db8560887c add rep-string-encoding and translate it.
shinobu
parents: 13
diff changeset
50 ; REP が使用する文字コード
80db8560887c add rep-string-encoding and translate it.
shinobu
parents: 13
diff changeset
51 (defvar rep-string-encoding 'utf-8)
80db8560887c add rep-string-encoding and translate it.
shinobu
parents: 13
diff changeset
52
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
53 (defvar redit-open-command "1")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
54 (defvar redit-open-ack "2")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
55 (defvar redit-read-command "3")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
56 (defvar redit-read-ack "4")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
57 (defvar redit-read-finish-ack "5")
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
58 (defvar redit-write-command "6") ;; insert
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
59 (defvar redit-write-still-ack "7")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
60 (defvar redit-write-finish-ack "8")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
61 (defvar redit-delete-line-command "9")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
62 (defvar redit-delete-line-ack "10")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
63 (defvar redit-close-command "11")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
64 (defvar redit-close-ack "12")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
65 (defvar redit-replace-command "13")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
66
a897604a9280 Initial revision
yasumura
parents:
diff changeset
67 ;; REP Session
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
68 (defvar redit-join-command "41")
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
69 (defvar redit-join-ack-command "42")
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
70 (defvar redit-get-command "43")
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
71 (defvar redit-get-ack-command "44")
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
72 (defvar redit-put-command "45")
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
73 (defvar redit-put-ack-command "46")
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
74 (defvar redit-select-command "47")
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
75 (defvar redit-select-ack-command "48")
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
76 (defvar redit-register-command "49")
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
77 (defvar redit-register-ack-command "50")
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
78 (defvar redit-deregister-command "51")
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
79 (defvar redit-deregister-ack-command "52")
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
80 (defvar redit-quit-command "53")
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
81 (defvar redit-quit-ack-command "54")
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
82
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
83 ;; Queue struct
13
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
84 ;; (defstruct Queue (front nil) (rear nil))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
85 ;; (setq redit-client-command-queue (make-Queue))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
86 ;; (setq redit-client-receive-queue (make-Queue))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
87 ;; (setq redit-client-send-queue (make-Queue))
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
88
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
89 ;; line translated queue
13
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
90 ;; (setq after-CQ (make-Queue))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
91 ;; (setq after-RQ (make-Queue))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
92
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
93
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
94 ;; Fix Me
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
95 ;; 適当に作ってしまったので。
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
96 ;; 一応コマンドは認識してます。
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
97 ;; エンディアンとか考える必要あるん?
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
98 (defun pack-int-loop (num count)
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
99 (if (> count 0)
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
100 (concat
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
101 (pack-int-loop (/ num 256) (- count 1))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
102 (char-to-string (% num 256)))))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
103
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
104 (defun pack-int (num)
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
105 (pack-int-loop num 4))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
106
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
107
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
108 (defun unpack-int (pkt start end)
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
109 (string-to-char (substring pkt start end)))
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
110
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
111 (defun redit-client-start (host)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
112 "Allow this Emacs process to be a remote-edit client for client processes."
a897604a9280 Initial revision
yasumura
parents:
diff changeset
113 (interactive "P")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
114 (if redit-client-process
a897604a9280 Initial revision
yasumura
parents:
diff changeset
115 (progn
a897604a9280 Initial revision
yasumura
parents:
diff changeset
116 (set-process-sentinel redit-client-process nil)
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
117 (condition-case () ;; エラーが起こるとプロセスを消す
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
118 (delete-process redit-client-process) (error nil))))
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
119 (if (setq host (read-string "Hostname: ")) ;; minibufferでホスト名を入力させる
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
120 (let ((process-connection-type nil))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
121 ;; クライアントプロセス(redit-client)内のプログラムをスタートさせる。
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
122 ;; 引き数として host が与えられる
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
123 (setq redit-client-process
a897604a9280 Initial revision
yasumura
parents:
diff changeset
124 (start-process "reditclient" nil redit-client-program host))
13
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
125
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
126
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
127 ;; redit-client-process の状態が変化すると redit-client-sentinel を呼ぶ
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
128 (set-process-sentinel redit-client-process 'redit-client-sentinel)
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
129 ;; redit-client-process からのデータ入力は redit-client-process-filter
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
130 ;; を介する
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
131 (set-process-filter redit-client-process 'redit-client-process-filter)
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
132 ;; redit-client-process からの入出力を 8-bit codes で取扱う。
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
133 (set-process-coding-system redit-client-process
a897604a9280 Initial revision
yasumura
parents:
diff changeset
134 'raw-text 'raw-text)
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
135 ;; emacs が終了すると redit-client-process も終了する
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
136 (set-process-query-on-exit-flag redit-client-process nil)
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
137
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
138 ;; フック変数 before-change-functions, after-change-functions
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
139 ;; をバッファローカルにする
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
140 ;; not necessary since Emacs 21.1
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
141 ;; (make-local-hook 'before-change-functions)
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
142 ;; (make-local-hook 'after-change-functions)
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
143
a897604a9280 Initial revision
yasumura
parents:
diff changeset
144 (message "Remote edit client started.")) (error "redit-client connection refused.")))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
145
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
146 ;; (redit-join-command ())
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
147 (defun redit-join-command (host)
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
148 "Allow this Emacs process to be a remote-edit session manager for client processes."
a897604a9280 Initial revision
yasumura
parents:
diff changeset
149 (interactive "P")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
150 (if redit-client-process
a897604a9280 Initial revision
yasumura
parents:
diff changeset
151 (progn
a897604a9280 Initial revision
yasumura
parents:
diff changeset
152 (set-process-sentinel redit-client-process nil)
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
153 (condition-case () ;;
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
154 (delete-process redit-client-process) (error nil))))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
155 (if (setq host (read-string "Hostname: "))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
156 (let ((process-connection-type nil))
13
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
157 ;;(setq redit-client-process
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
158 ;;(start-process "reditclient" nil redit-client-program host))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
159
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
160 ;; lisp で通信ver
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
161 (setq redit-client-process (open-network-stream
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
162 "redit-client"
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
163 nil
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
164 "localhost"
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
165 8766))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
166
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
167 (set-process-sentinel redit-client-process 'redit-client-sentinel)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
168 (set-process-filter redit-client-process 'redit-client-process-filter)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
169 (set-process-coding-system redit-client-process
a897604a9280 Initial revision
yasumura
parents:
diff changeset
170 'raw-text 'raw-text)
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
171
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
172 (set-process-query-on-exit-flag redit-client-process nil)
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
173
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
174 ;; not necessary since Emacs 21.1
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
175 ;; (make-local-hook 'before-change-functions)
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
176 ;; (make-local-hook 'after-change-functions)
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
177
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
178 ;; FIXME
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
179 ;; concat my hostname this command?
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
180 (process-send-string
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
181 redit-client-process
13
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
182 ;;Perl を使わずに、直接SessionManagerに送ってるので
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
183 ;;文字列じゃなくて pack して送信
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
184 ;;(concat (format "%10d%10d%10d%10d%10d%10d" (string-to-number redit-join-command) 0 0 (gen-seqno) 0 0) "\n")))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
185 (concat
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
186 (pack-int (string-to-number redit-join-command))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
187 (pack-int 0)
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
188 (pack-int 0)
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
189 (pack-int 0)
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
190 (pack-int 0) (pack-int 0))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
191 ))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
192 (error "redit-client connection refused.")))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
193
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
194 ;; (redit-get-command)
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
195 (defun redit-get-command ()
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
196 "get. alias redit-join-command and redit-select-command."
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
197 (interactive)
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
198 (redit-join-command ())
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
199 (redit-select-command ()))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
200
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
201 ;; select : select session
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
202 ;; ユーザの入力を受け取って、selectコマンドを構成し、通信プロセスに渡す
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
203 ;; (redit-select-command ()
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
204 (defun redit-select-command (session-name)
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
205 "select session"
a897604a9280 Initial revision
yasumura
parents:
diff changeset
206 (interactive "P")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
207 (if (setq session-name (read-string "session name:"))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
208 (progn
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
209 (setq redit-client-session-id (string-to-number session-name))
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
210 (process-send-string
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
211 redit-client-process
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
212 (concat (format "%10d%10d%10d%10d%10d%10d" (string-to-number redit-select-command) redit-client-session-id redit-client-editor-id (gen-seqno) 0 0) session-name "\n"))
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
213 )
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
214 (error "invalid session name.")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
215 )
a897604a9280 Initial revision
yasumura
parents:
diff changeset
216 )
a897604a9280 Initial revision
yasumura
parents:
diff changeset
217
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
218 ;; (defun redit-put-command ()
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
219 ;; "put"
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
220 ;; (interactive)
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
221 ;; )
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
222 (defun redit-put-command (session-name)
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
223 "put session"
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
224 (interactive "P")
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
225 (if (setq session-name (read-string "put session name:"))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
226 (process-send-string
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
227 redit-client-process
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
228 (concat (format "%10d%10d%10d%10d%10d%10d" (string-to-number redit-put-command) redit-client-session-id redit-client-editor-id (gen-seqno) 0 0) session-name "\n"))
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
229 (error "invalid session name.")
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
230 )
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
231 )
a897604a9280 Initial revision
yasumura
parents:
diff changeset
232
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
233 (defun redit-register-command (session-name)
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
234 "register"
a897604a9280 Initial revision
yasumura
parents:
diff changeset
235 (interactive "P")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
236 (if (setq session-name (read-string "session name:"))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
237 (process-send-string
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
238 redit-client-process
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
239 (concat (format "%10d%10d%10d%10d%10d%10d" (string-to-number redit-register-command) redit-client-session-id redit-client-editor-id (gen-seqno) 0 0) session-name "\n"))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
240 (error "invalid session name.")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
241 )
a897604a9280 Initial revision
yasumura
parents:
diff changeset
242 )
a897604a9280 Initial revision
yasumura
parents:
diff changeset
243
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
244 (defun redit-deregister-command ()
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
245 "deregister"
a897604a9280 Initial revision
yasumura
parents:
diff changeset
246 (interactive)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
247 )
a897604a9280 Initial revision
yasumura
parents:
diff changeset
248
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
249 (defun redit-quit-command ()
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
250 "quit"
a897604a9280 Initial revision
yasumura
parents:
diff changeset
251 (interactive)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
252 )
a897604a9280 Initial revision
yasumura
parents:
diff changeset
253
a897604a9280 Initial revision
yasumura
parents:
diff changeset
254 (defun redit-client-open (file)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
255 (interactive "P")
a897604a9280 Initial revision
yasumura
parents:
diff changeset
256 (if redit-client-process
a897604a9280 Initial revision
yasumura
parents:
diff changeset
257 (if (setq file (read-string "Filename: "))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
258 (progn
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
259 ;; redit-client-process の input に文字列を送信する
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
260 (process-send-string
a897604a9280 Initial revision
yasumura
parents:
diff changeset
261 redit-client-process
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
262 ;; redit-open-command (01) と file を連結させる
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
263 (concat redit-open-command file))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
264 ;; redit-client-process から出力を得るまでループ
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
265 (while (eq nil (accept-process-output redit-client-process)))))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
266 (error "redit-client is not running.")))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
267
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
268 ;; redit-client-process にreadコマンドとバッファ番号、行番号を送り、
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
269 ;; サーバからの出力を得る
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
270 (defun redit-client-read-line (linenum)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
271 (if redit-client-process
a897604a9280 Initial revision
yasumura
parents:
diff changeset
272 (save-excursion
a897604a9280 Initial revision
yasumura
parents:
diff changeset
273 (progn
a897604a9280 Initial revision
yasumura
parents:
diff changeset
274 (process-send-string
a897604a9280 Initial revision
yasumura
parents:
diff changeset
275 redit-client-process
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
276 (format "%10d%10d%10d%10d%10d%10d\n" (string-to-number redit-read-command) redit-client-session-id redit-client-editor-id (gen-seqno) linenum 0))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
277 (while (eq nil
a897604a9280 Initial revision
yasumura
parents:
diff changeset
278 (accept-process-output redit-client-process)))))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
279 (error "redit-client is not running.")))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
280
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
281 ;; linenumで指定された行の編集をサーバへ送る
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
282 ;; redit-client-process にwriteコマンドとバッファ番号、行番号、行の内容を送り、
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
283 ;; Ack を受け取る
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
284 (defun redit-client-write-line (linenum isnewline)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
285 (if redit-client-process
a897604a9280 Initial revision
yasumura
parents:
diff changeset
286 (save-excursion
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
287 (let ((beginp) (endp) (length))
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
288 ;; write lines on server buffer
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
289 (setq beginp
10
ccaeffb8975d *** empty log message ***
gongo
parents: 8
diff changeset
290 (progn (goto-line linenum) (beginning-of-line) (point)))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
291 (setq endp
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
292 (progn (goto-line linenum) (end-of-line) (point)))
15
80db8560887c add rep-string-encoding and translate it.
shinobu
parents: 13
diff changeset
293 ; (setq length (- endp beginp))
80db8560887c add rep-string-encoding and translate it.
shinobu
parents: 13
diff changeset
294 ; rep-string-encoding に変換してから長さを求める
80db8560887c add rep-string-encoding and translate it.
shinobu
parents: 13
diff changeset
295 (setq length (string-bytes (encode-coding-string (buffer-substring beginp endp) rep-string-encoding)))
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
296
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
297 ;; トークンが回ってくるのを待つ場合は、
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
298 ;; すぐに process-send-string せずに
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
299 ;; 編集情報を保存するだけにとどめる
13
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
300 ;;(enqueue
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
301 ;;redit-client-command-queue
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
302 ;;(concat (format "%10d%10d%10d%10d%10d%10d" (string-to-number redit-write-command) redit-client-session-id redit-client-editor-id (gen-seqno) linenum length)
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
303 ;;(buffer-substring beginp endp)
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
304 ;;(if (eq isnewline t) "\n")
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
305 ;;"\n"))
10
ccaeffb8975d *** empty log message ***
gongo
parents: 8
diff changeset
306
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
307 ;; redit-client-process へ
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
308 ;; command_num + buffer_num + line_num + string
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
309 ;; の文字列を送る
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
310 (process-send-string
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
311 redit-client-process
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
312 (concat (format "%10d%10d%10d%10d%10d%10d" (string-to-number redit-write-command) redit-client-session-id redit-client-editor-id (gen-seqno) linenum length)
15
80db8560887c add rep-string-encoding and translate it.
shinobu
parents: 13
diff changeset
313 ; (buffer-substring beginp endp)
80db8560887c add rep-string-encoding and translate it.
shinobu
parents: 13
diff changeset
314 ; rep-string-encoding に変換
80db8560887c add rep-string-encoding and translate it.
shinobu
parents: 13
diff changeset
315 (encode-coding-string (buffer-substring beginp endp) rep-string-encoding)
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
316 (if (eq isnewline t) "\n")
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
317 "\n"))
11
9cb8170fb25d *** empty log message ***
gongo
parents: 10
diff changeset
318 (sleep-for 0.3)
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
319 ))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
320 (error "redit-client is not running.")))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
321
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
322 ;; linenum で指定した行の削除命令を redit-client-process に送信する
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
323 (defun redit-client-delete-line (linenum)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
324 (if redit-client-process
a897604a9280 Initial revision
yasumura
parents:
diff changeset
325 (save-restriction
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
326
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
327 ;; トークンが回ってくるのを待つ場合は、
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
328 ;; すぐに process-send-string せずに
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
329 ;; 編集情報を保存するだけにとどめる
13
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
330 ;;(enqueue redit-client-command-queue
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
331 ;;(concat (format "%10d%10d%10d%10d%10d%10d" (string-to-number redit-delete-line-command) redit-client-session-id redit-client-editor-id (gen-seqno) linenum 0) "\n"))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
332
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
333 ;; write lines on server buffer
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
334 (process-send-string
a897604a9280 Initial revision
yasumura
parents:
diff changeset
335 redit-client-process
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
336 (concat (format "%10d%10d%10d%10d%10d%10d" (string-to-number redit-delete-line-command) redit-client-session-id redit-client-editor-id (gen-seqno) linenum 0) "\n"))
13
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
337 (sleep-for 0.3)
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
338 )
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
339 (error "redit-client is not running.")))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
340
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
341 ;; redit-client-process へcloseコマンドを送る
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
342 (defun redit-client-close ()
a897604a9280 Initial revision
yasumura
parents:
diff changeset
343 "Save File and exit Remote-edit client."
a897604a9280 Initial revision
yasumura
parents:
diff changeset
344 (interactive)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
345 (let ((line redit-client-previous-line))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
346 (redit-client-write-line line nil)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
347 (process-send-string
a897604a9280 Initial revision
yasumura
parents:
diff changeset
348 redit-client-process
8
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
349 (concat (format "%10d%10d%10d%10d%10d%10d" (string-to-number redit-close-command) redit-client-session-id redit-client-editor-id (gen-seqno) 0 0) "\n"))))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
350
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
351 ;; redit-client-process を終了させる
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
352 (defun redit-client-kill ()
a897604a9280 Initial revision
yasumura
parents:
diff changeset
353 "Stop Remote-Edit client process."
a897604a9280 Initial revision
yasumura
parents:
diff changeset
354 (interactive)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
355 (if redit-client-process
a897604a9280 Initial revision
yasumura
parents:
diff changeset
356 (kill-process redit-client-process))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
357 (if redit-client-buffer
a897604a9280 Initial revision
yasumura
parents:
diff changeset
358 (kill-buffer redit-client-buffer))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
359 (kill-all-local-variables))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
360
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
361 ;; proc == redit-client-process
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
362 ;; string == redit-client-process からの output
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
363 (defun redit-client-process-filter (proc string)
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
364 ;; バッファローカルなフックリスト before-change-functions から
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
365 ;; redit-client-before-change-function を取り除く. after も同じ
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
366 ;; proc からの出力に hook しないように
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
367 (remove-hook 'before-change-functions
a897604a9280 Initial revision
yasumura
parents:
diff changeset
368 'redit-client-before-change-function t)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
369 (remove-hook 'after-change-functions
a897604a9280 Initial revision
yasumura
parents:
diff changeset
370 'redit-client-after-change-function t)
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
371
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
372 (let ((command (rep-get-command-from-pkt string)))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
373 ;; command がどの命令かを判断し、対応した処理をする。case みたい
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
374 (cond
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
375 ;; FIXME
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
376 ((if (= command (string-to-number redit-open-ack))
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
377 (if (/= redit-client-editor-id (rep-get-editor-id-from-pkt string))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
378 (redit-client-exec-open-ack string))))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
379
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
380 ((if (= command (string-to-number redit-read-ack))
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
381 (if (= redit-client-editor-id (rep-get-editor-id-from-pkt string))
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
382 (redit-client-exec-read-ack string))))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
383
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
384 ((if (= command (string-to-number redit-write-still-ack))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
385 (if (= redit-client-editor-id (rep-get-editor-id-from-pkt string))
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
386 (redit-client-exec-write-still-ack string))))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
387
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
388 ((if (= command (string-to-number redit-delete-line-ack))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
389 (if (= redit-client-editor-id (rep-get-editor-id-from-pkt string))
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
390 (redit-client-exec-delete-line-ack string))))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
391
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
392 ((if (= command (string-to-number redit-close-ack))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
393 (if (= redit-client-editor-id (rep-get-editor-id-from-pkt string))
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
394 (redit-client-exec-close-ack string))))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
395
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
396 ((if (= command (string-to-number redit-write-command))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
397 (if (/= redit-client-editor-id (rep-get-editor-id-from-pkt string))
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
398 (redit-client-exec-write-line string))))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
399
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
400 ;; from Session Manager
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
401 ;; join ack (editor id)
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
402 ((if (= command (string-to-number redit-join-ack-command))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
403 (redit-client-exec-join string)))
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
404
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
405 ;; put ack (editor id)
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
406 ((if (= command (string-to-number redit-put-ack-command))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
407 (redit-client-exec-put string)))
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
408
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
409 ;; select ack
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
410 ;; TODO : start editing
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
411 ((if (= command (string-to-number redit-select-ack-command))
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
412 (redit-client-exec-select)))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
413
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
414 ;; get
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
415 ((if (= command (string-to-number redit-get-command))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
416 (if (= redit-client-editor-id (rep-get-editor-id-from-pkt string))
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
417 (redit-client-exec-get string))))
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
418 ;; register
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
419 ((if (= command (string-to-number redit-register-command))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
420 (if (= redit-client-editor-id (rep-get-editor-id-from-pkt string))
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
421 (redit-client-exec-register string))))
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
422 ;; deregister
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
423 ((if (= command (string-to-number redit-deregister-command))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
424 (if (= redit-client-editor-id (rep-get-editor-id-from-pkt string))
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
425 (redit-client-exec-deregister string))))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
426
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
427 ;; delete line
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
428 ((if (= command (string-to-number redit-delete-line-command))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
429 (if (/= redit-client-editor-id (rep-get-editor-id-from-pkt string))
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
430 (redit-client-exec-delete-line string))))
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
431 ;;((string-equal string ""))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
432 ))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
433
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
434 (add-hook 'before-change-functions
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
435 'redit-client-before-change-function t t)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
436 (add-hook 'after-change-functions
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
437 'redit-client-after-change-function t t)
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
438 )
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
439
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
440 ;; window-scroll-functions に hook される。
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
441 ;; window がスクロールする度に呼ばれる
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
442 (defun redit-client-update-function (window window-start)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
443 (if (equal (window-buffer) redit-client-buffer)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
444 (save-excursion
a897604a9280 Initial revision
yasumura
parents:
diff changeset
445 (remove-hook 'before-change-functions
a897604a9280 Initial revision
yasumura
parents:
diff changeset
446 'redit-client-before-change-function t)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
447 (remove-hook 'after-change-functions
a897604a9280 Initial revision
yasumura
parents:
diff changeset
448 'redit-client-after-change-function t)
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
449 ;; read part.
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
450 (while (and (= (point-max)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
451 (window-end nil t))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
452 (> redit-client-line-max-in-server
a897604a9280 Initial revision
yasumura
parents:
diff changeset
453 (real-count-lines (window-end nil t))))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
454 ;; (count-lines (window-end nil t))))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
455 (redit-client-read-line (real-count-lines (window-end nil t))))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
456
a897604a9280 Initial revision
yasumura
parents:
diff changeset
457 (if (not (= (count-lines (point-min) (window-end nil t))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
458 (real-count-lines (window-end nil t))))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
459 (redit-client-read-line
a897604a9280 Initial revision
yasumura
parents:
diff changeset
460 (progn (goto-line redit-client-line-max-in-server)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
461 (real-count-lines (point)))))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
462
a897604a9280 Initial revision
yasumura
parents:
diff changeset
463 (if (< redit-client-line-max-in-server
a897604a9280 Initial revision
yasumura
parents:
diff changeset
464 (real-count-lines (window-end nil t)))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
465 (progn (goto-line (window-end nil t))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
466 (delete-region
a897604a9280 Initial revision
yasumura
parents:
diff changeset
467 (progn (beginning-of-line) (backward-char) (point))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
468 (progn (forward-char) (end-of-line) (point)))))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
469
a897604a9280 Initial revision
yasumura
parents:
diff changeset
470 (add-hook 'before-change-functions
a897604a9280 Initial revision
yasumura
parents:
diff changeset
471 'redit-client-before-change-function t t)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
472 (add-hook 'after-change-functions
a897604a9280 Initial revision
yasumura
parents:
diff changeset
473 'redit-client-after-change-function t t))))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
474
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
475 ;; currentp の位置の行数を返す
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
476 (defun real-count-lines (currentp)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
477 (+ (count-lines (point-min) currentp)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
478 (if (= (save-excursion (goto-char currentp) (current-column))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
479 0)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
480 1 0)))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
481
a897604a9280 Initial revision
yasumura
parents:
diff changeset
482 (defun limited-save-excursion (&rest exprs)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
483 (let ((saved-point (point)))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
484 (while exprs
a897604a9280 Initial revision
yasumura
parents:
diff changeset
485 (eval (car exprs))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
486 (setq exprs (cdr exprs)))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
487 (goto-char saved-point)))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
488
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
489 ;; before-change-functions に hook される
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
490 ;; バッファに変更があるたびに呼ばれる。バッファが変更される前に呼ばれる。
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
491 ;; begin と end には変更前の変更部分の始まりと終わりの point が入る
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
492 (defun redit-client-before-change-function (begin end)
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
493 (let ((beginl (real-count-lines begin)) ;; begin の行番号
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
494 (endl (real-count-lines end)) ;; end の行番号
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
495 (currline)) ;; currline = nil
10
ccaeffb8975d *** empty log message ***
gongo
parents: 8
diff changeset
496
ccaeffb8975d *** empty log message ***
gongo
parents: 8
diff changeset
497 (message "before-change-function")
ccaeffb8975d *** empty log message ***
gongo
parents: 8
diff changeset
498
ccaeffb8975d *** empty log message ***
gongo
parents: 8
diff changeset
499 ;; 前回の編集した行と今回の編集した行が
ccaeffb8975d *** empty log message ***
gongo
parents: 8
diff changeset
500 ;; 違っていたら前回の編集をサーバへ送る
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
501 (if (not (= beginl redit-client-previous-edited-line))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
502 (redit-client-write-line redit-client-previous-edited-line nil))
10
ccaeffb8975d *** empty log message ***
gongo
parents: 8
diff changeset
503
ccaeffb8975d *** empty log message ***
gongo
parents: 8
diff changeset
504 ;; 削除処理で起こる。
ccaeffb8975d *** empty log message ***
gongo
parents: 8
diff changeset
505 ;; (ex. BackSpaceによる行そのものの削除, C-Space C-wなどのカット, ...)
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
506 (if (< beginl endl)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
507 (progn
a897604a9280 Initial revision
yasumura
parents:
diff changeset
508 (setq currline endl)
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
509 ;; endlからbeginlまで行の削除命令を出す
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
510 (while (> currline beginl)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
511 (redit-client-delete-line endl)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
512 (setq currline (- currline 1)))))))
10
ccaeffb8975d *** empty log message ***
gongo
parents: 8
diff changeset
513
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
514 ;; after-change-functions に hook される
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
515 ;; バッファに変更があるたびに呼ばれる。バッファが変更された後に呼ばれる
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
516 ;; begin と end には変更後の変更部分の始まりと終わりの point が入る
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
517 (defun redit-client-after-change-function (begin end length)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
518 (let ((beginl (real-count-lines begin))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
519 (endl (real-count-lines end))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
520 (currline))
10
ccaeffb8975d *** empty log message ***
gongo
parents: 8
diff changeset
521
ccaeffb8975d *** empty log message ***
gongo
parents: 8
diff changeset
522 (message "after-change-function")
ccaeffb8975d *** empty log message ***
gongo
parents: 8
diff changeset
523
ccaeffb8975d *** empty log message ***
gongo
parents: 8
diff changeset
524 ;; 挿入処理で起こる。
ccaeffb8975d *** empty log message ***
gongo
parents: 8
diff changeset
525 ;; (ex. 改行, C-y などのペースト, ...)
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
526 (if (< beginl endl)
a897604a9280 Initial revision
yasumura
parents:
diff changeset
527 (progn
a897604a9280 Initial revision
yasumura
parents:
diff changeset
528 (setq currline beginl)
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
529 ;; beginlからendlまで挿入命令を出す
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
530 (while (<= currline endl)
10
ccaeffb8975d *** empty log message ***
gongo
parents: 8
diff changeset
531 (progn (redit-client-write-line currline nil)
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
532 (setq currline (+ currline 1))))))
a897604a9280 Initial revision
yasumura
parents:
diff changeset
533 (setq redit-client-previous-edited-line endl)))
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
534
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
535 ;; 引き数で与えられた string (line_num + text_data) から
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
536 ;; 指定された行を削除し、そこに text_data を挿入する
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
537 (defun redit-client-exec-write-line (string)
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
538 (let ((linenum (rep-get-line-number-from-pkt string)) ;; 行番号
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
539 (text (rep-get-text-from-pkt string))) ;; テキストデータ
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
540 (if (< (real-count-lines (point-max)) linenum)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
541 (progn
8
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
542 (call-interactively 'end-of-buffer) (newline)))
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
543 (goto-line linenum)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
544 (delete-region (progn (beginning-of-line) (point)) ;; 行の頭から
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
545 (progn (end-of-line) (point))) ;; 行の末尾まで削除
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
546 (insert text) ;; テキストデータを挿入
10
ccaeffb8975d *** empty log message ***
gongo
parents: 8
diff changeset
547 (message (concat "recv = " text ", line = " (number-to-string linenum)))
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
548 ))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
549
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
550 ;; 引き数 string (line_num + text_data) で指定された行を削除する
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
551 (defun redit-client-exec-delete-line (string)
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
552 (let ((linenum (rep-get-line-number-from-pkt string)))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
553 (goto-line linenum)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
554 ;; 行頭から末尾までのテキストを削除
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
555 (delete-region (progn (beginning-of-line) (point))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
556 (progn (end-of-line) (point)))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
557 ;; 指定された行自体を削除
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
558 ;; 指定された行番号は別の行の番号を表すことになる
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
559 (if (= (point) (point-max))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
560 (delete-backward-char 1)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
561 (delete-char 1)))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
562 )
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
563
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
564 ;; 引き数 string (buf_num + line_num + text_data)
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
565 (defun redit-client-exec-open-ack (string)
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
566 (save-excursion
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
567 (let ((bufnum (rep-get-editor-id-from-pkt string))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
568 (linenum (rep-get-line-number-from-pkt string)))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
569 (make-variable-buffer-local 'redit-client-buffer-name)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
570 (make-variable-buffer-local 'redit-client-editor-id)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
571 (setq redit-client-buffer-name
8
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
572 (rep-get-text-from-pkt string))
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
573 (setq redit-client-buffer (get-buffer-create redit-client-buffer-name))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
574 ;; プロセスとバッファを関連づける
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
575 (set-process-buffer redit-client-process redit-client-buffer)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
576 (switch-to-buffer redit-client-buffer) ;; windowのバッファを変更する
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
577 (make-variable-buffer-local 'redit-client-previous-edited-line)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
578 (make-variable-buffer-local 'redit-client-after-edited-line)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
579 (make-variable-buffer-local 'redit-client-line-max-in-server)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
580 (make-variable-buffer-local 'redit-client-previous-line)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
581 (setq redit-client-line-max-in-server linenum)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
582 (setq redit-client-editor-id bufnum)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
583 (setq redit-client-previous-edited-line 1)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
584 (setq redit-client-after-edited-line 1)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
585 (setq redit-client-previous-line 1)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
586 ;;(add-hook 'before-change-functions
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
587 ;;'redit-client-before-change-function t t)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
588 ;;(add-hook 'after-change-functions
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
589 ;;'redit-client-after-change-function t t)
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
590
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
591 ;; not necessary since Emacs 21.1
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
592 ;; (make-local-hook 'window-scroll-functions)
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
593
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
594 ;; window がスクロールする度に呼ばれる関数群
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
595 (add-hook 'window-scroll-functions
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
596 'redit-client-update-function t t))))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
597
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
598 ;; string (line_num + text_data) で指定された行に
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
599 ;; text_data を挿入する
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
600 (defun redit-client-exec-read-ack (string)
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
601 (save-excursion
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
602 (let ((lines (rep-get-line-number-from-pkt string)))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
603 ;; redit-client-buffer をカレントバッファにする
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
604 (set-buffer redit-client-buffer)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
605 (goto-line lines)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
606 (beginning-of-line) ;; 行の始めへ移動
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
607 ;; (delete-region (progn (beginning-of-line) (point))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
608 ;; (progn (end-of-line) (point)))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
609 (insert (rep-get-text-from-pkt string))))) ;; テキストデータを挿入
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
610
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
611 ;; redit-client-line-max-in-server に行番号を入れてる(だけ)
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
612 (defun redit-client-exec-write-still-ack (string)
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
613 (save-excursion
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
614 (set-buffer redit-client-buffer)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
615 (let ((linenum (rep-get-line-number-from-pkt string )))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
616 (setq redit-client-line-max-in-server linenum))))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
617
a897604a9280 Initial revision
yasumura
parents:
diff changeset
618 (defun redit-client-exec-delete-line-ack (string)
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
619 (save-excursion
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
620 (set-buffer redit-client-buffer)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
621 (let ((linenum (rep-get-line-number-from-pkt string)))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
622 (setq redit-client-line-max-in-server linenum))))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
623
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
624 ;; プロセスとバッファ、ローカル変数を削除する
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
625 (defun redit-client-exec-close-ack (string)
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
626 (if redit-client-process
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
627 (kill-process redit-client-process))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
628 (if redit-client-buffer
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
629 (kill-buffer redit-client-buffer))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
630 (kill-all-local-variables))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
631
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
632 ;; 引き数で与えられた string から Editor IDを取得する
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
633 (defun redit-client-exec-join (string)
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
634 (setq redit-client-editor-id (rep-get-editor-id-from-pkt string))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
635 (insert (concat "eid = " (number-to-string redit-client-editor-id) "\n"))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
636 (insert (rep-get-text-from-pkt string)))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
637
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
638 ;; 引き数で与えられた string から Session IDを取得する
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
639 (defun redit-client-exec-put (string)
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
640 (setq redit-client-session-id (rep-get-session-id-from-pkt string))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
641 (insert (concat "put session id = " (number-to-string redit-client-session-id) "\n")))
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
642
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
643 ;; SessionIDを名前とした、新しいバッファを開く
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
644 ;; FIXME
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
645 ;; SessionIDではなく、Session Nameが望ましい?
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
646 ;; バッファを開いた後、Sessionで開いてるファイルの中身を表示するべき
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
647 (defun redit-client-exec-select ()
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
648 (switch-to-buffer (get-buffer-create
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
649 (number-to-string redit-client-session-id))))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
650
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
651 ;; プロセスの状態を見て、対応したメッセージを表示
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
652 (defun redit-client-sentinel (proc msg)
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
653 (cond ((eq (process-status proc) 'exit)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
654 (message "Client subprocess exited"))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
655 ((eq (process-status proc) 'signal)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
656 (message "Client subprocess killed"))))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
657
a897604a9280 Initial revision
yasumura
parents:
diff changeset
658 (defun gen-seqno ()
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
659 "generate editor local sequence number."
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
660 (setq redit-client-seqno (+ redit-client-seqno 1)))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
661
a897604a9280 Initial revision
yasumura
parents:
diff changeset
662 (defun rep-get-command-from-pkt (pkt)
13
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
663 ;;(string-to-number (substring pkt 0 10)))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
664 (unpack-int pkt 3 4))
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
665 (defun rep-get-session-id-from-pkt (pkt)
13
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
666 ;;(string-to-number (substring pkt 10 20)))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
667 (unpack-int pkt 7 8))
2
2b212e5a0009 add redit_client.pl and fix redit-client-sm.el
shinobu
parents: 0
diff changeset
668 (defun rep-get-editor-id-from-pkt (pkt)
13
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
669 ;;(string-to-number (substring pkt 20 30)))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
670 (unpack-int pkt 11 12))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
671 (defun rep-get-sequence-id-from-pkt (pkt)
13
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
672 ;;(string-to-number (substring pkt 30 40)))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
673 (unpack-int pkt 15 16))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
674 (defun rep-get-line-number-from-pkt (pkt)
13
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
675 ;;(string-to-number (substring pkt 40 50)))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
676 (unpack-int pkt 19 20))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
677 (defun rep-get-text-size-from-pkt (pkt)
13
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
678 ;;(string-to-number (substring pkt 50 60)))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
679 (unpack-int pkt 23 24))
0
a897604a9280 Initial revision
yasumura
parents:
diff changeset
680 (defun rep-get-text-from-pkt (pkt)
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
681 (let ((size (rep-get-text-size-from-pkt pkt)))
13
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
682 (substring (decode-coding-string pkt 'euc-jp) 27 (+ 27 size))))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
683
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
684 ;; enqueue item in queue
13
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
685 ;; (defun enqueue (queue item)
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
686 ;; (let ((new-cell (list item)))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
687 ;; (if (Queue-front queue)
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
688 ;; ;; 最終セルを書き換える
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
689 ;; (setf (cdr (Queue-rear queue)) new-cell)
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
690 ;; ;; キューは空の状態
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
691 ;; (setf (Queue-front queue) new-cell))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
692 ;; (setf (Queue-rear queue) new-cell)))
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
693
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
694 ;; deque last queue
13
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
695 ;; (defun dequeue (queue)
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
696 ;; (if (Queue-front queue)
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
697 ;; (prog1
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
698 ;; (pop (Queue-front queue))
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
699 ;; (unless (Queue-front queue)
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
700 ;; ;; キューは空になった
554806d53b5e *** empty log message ***
gongo
parents: 11
diff changeset
701 ;; (setf (Queue-rear queue) nil)))))
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
702
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
703 ;;
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
704 ;; USER
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
705 ;; | i | r | d
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
706 ;; ---|--------------------
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
707 ;; T i | 0\+1 | 0\+1 | 0\+1
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
708 ;; O ---|--------------------
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
709 ;; K r | +1\0 | 0\X | i\X
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
710 ;; E ---|--------------------
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
711 ;; N d | +1\0 | X\i | X\X
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
712 ;;
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
713 (defun dequeue-all (queue)
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
714 "clean queue"
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
715 (while (Queue-front queue)
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
716 (dequeue queue)))
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
717
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
718 (defun redit-line-translate-out (cque rque)
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
719 "redit line translate for output"
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
720 (let ((cc) (rc) (xcc) (xrc) (ccc) (crc) (cignore 0) (rignore 0))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
721 (setq xcc 0)
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
722 (setq xrc 0)
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
723 (setq cignore 0)
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
724 (setq rignore 0)
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
725 (while cque
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
726 (setq cc (car cque))
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
727 (while rque
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
728 (setq rc (car rque))
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
729 ;; -------- translation ------------
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
730
8
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
731 (if (< (+ (redit-get-line-from-queue cc) xcc) (+ (redit-get-line-from-queue rc) xrc))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
732 (if (= (redit-get-command-from-queue cc) (string-to-number redit-write-command)) (setq xrc (- xrc 1)))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
733 (if (= (redit-get-command-from-queue cc) (string-to-number redit-delete-line-command)) (setq xrc (- xrc 1))))
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
734
8
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
735 (if (> (+ (redit-get-line-from-queue cc) xcc) (+ (redit-get-line-from-queue rc) xrc))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
736 (if (= (redit-get-command-from-queue rc) (string-to-number redit-write-command)) (setq xcc (+ xcc 1)))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
737 (if (= (redit-get-command-from-queue rc) (string-to-number redit-delete-line-command)) (setq xcc (- xcc 1))))
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
738
8
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
739 (if (= (+ (redit-get-line-from-queue cc) xcc) (+ (redit-get-line-from-queue rc) xrc))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
740 (if (= (redit-get-command-from-queue rc) (string-to-number redit-write-command)) (setq xcc (+ xcc 1)))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
741 (if (= (redit-get-command-from-queue rc) (string-to-number redit-replace-command))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
742 (if (= (redit-get-command-from-queue cc) (string-to-number redit-write-command)) (setq xrc (+ xrc 1)))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
743 (if (= (redit-get-command-from-queue cc) (string-to-number redit-replace-command)) (setq cignore 1))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
744 (if (= (redit-get-command-from-queue cc) (string-to-number redit-delete-line-command)) (setq crc redit-write-command) (setq cignore 1))))
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
745
8
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
746 (if (= (redit-get-command-from-queue rc) (string-to-number redit-delete-line-command))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
747 (if (= (redit-get-command-from-queue cc) (string-to-number redit-write-command)) (setq xrc (+ (redit-get-line-from-queue rc) 1)))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
748 (if (= (redit-get-command-from-queue cc) (string-to-number redit-replace-command)) (setq cignore 1))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
749 (if (= (redit-get-command-from-queue cc) (string-to-number redit-delete-line-command)) (setq cignore 1) (setq rignore 1)))
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
750
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
751 ;; -------- translation ------------
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
752
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
753 (setq rque (cdr rque))) ;; while rque
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
754
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
755 ;; ignore
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
756 (if (= cignore 1)
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
757 ;; xxx
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
758 (setq cignore 0))
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
759 (if (= rignore 1)
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
760 ;; xxx
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
761 (setq cignore 0))
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
762
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
763 ;; -------- add after que ------------
8
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
764 (enqueue after-CQ (concat (format "%2d%2d%9d" (redit-get-command-from-queue cc) (redit-get-uid-from-queue cc) (+ (redit-get-line-from-queue cc) xcc)) (redit-get-text-from-queue cc)))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
765 ;; -------- add after que ------------
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
766
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
767 (setq cque (cdr cque))) ;; while cque
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
768 ) ;; let
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
769 ) ;; defun
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
770
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
771 (defun redit-line-translate-in (cque rque)
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
772 "redit line translate for input"
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
773 (let ((cc) (rc) (xcc) (xrc) (ccc) (crc) (cignore 0) (rignore 0))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
774 (setq xcc 0)
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
775 (setq xrc 0)
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
776 (setq cignore 0)
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
777 (setq rignore 0)
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
778 (while rque
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
779 (setq rc (car rque))
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
780 (setq cignore 0)
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
781 (setq rignore 0)
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
782 (while cque
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
783 (setq cc (car cque))
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
784 ;; -------- translation ------------
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
785
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
786 (if (and (= cignore 1) (= rignore 1))
8
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
787 (if (< (+ (redit-get-line-from-queue rc) xrc) (+ (redit-get-line-from-queue cc) xcc))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
788 (if (= (redit-get-command-from-queue rc) (string-to-number redit-write-command)) (setq xcc (+ xcc 1)))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
789 (if (= (redit-get-command-from-queue rc) (string-to-number redit-delete-line-command)) (setq xcc (- xcc 1))))
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
790
8
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
791 (if (> (+ (redit-get-line-from-queue rc) xrc) (+ (redit-get-line-from-queue cc) xcc))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
792 (if (= (redit-get-command-from-queue cc) (string-to-number redit-write-command)) (setq xrc (- xrc 1)))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
793 (if (= (redit-get-command-from-queue cc) (string-to-number redit-delete-line-command)) (setq xrc (+ xrc 1))))
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
794
8
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
795 (if (= (+ (redit-get-line-from-queue rc) xrc) (+ (redit-get-line-from-queue cc) xcc))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
796 (if (= (redit-get-command-from-queue cc) (string-to-number redit-write-command)) (setq xcc (+ xcc 1)))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
797 (if (= (redit-get-command-from-queue cc) (string-to-number redit-replace-command))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
798 (if (= (redit-get-command-from-queue rc) (string-to-number redit-write-command)) (setq xcc (+ xcc 1)))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
799 (if (= (redit-get-command-from-queue rc) (string-to-number redit-replace-command)) (setq cignore 1))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
800 (if (= (redit-get-command-from-queue rc) (string-to-number redit-delete-line-command)) (setq crc redit-write-command) (setq cignore 1))))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
801 (if (= (redit-get-command-from-queue cc) (string-to-number redit-delete-line-command))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
802 (if (= (redit-get-command-from-queue rc) (string-to-number redit-write-command)) (setq xcc (+ (redit-get-line-from-queue cc) 1)))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
803 (if (= (redit-get-command-from-queue rc) (string-to-number redit-replace-command)) (setq crc redit-write-command) (setq cignore 1))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
804 (if (= (redit-get-command-from-queue rc) (string-to-number redit-delete-line-command)) (setq cignore 1) (setq rignore 1))))
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
805
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
806 ;; -------- translation ------------
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
807
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
808 (setq cque (cdr cque))) ;; while rque
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
809
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
810 ;; ignore
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
811 (if (= cignore 1)
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
812 ;; xxx
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
813 (setq cignore 0))
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
814 (if (= rignore 1)
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
815 ;; xxx
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
816 (setq rignore 0))
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
817
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
818 ;; -------- add after que ------------
8
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
819 (enqueue after-RQ (concat (format "%2d%2d%9d" (redit-get-command-from-queue rc) (redit-get-uid-from-queue rc) (+ (redit-get-line-from-queue rc) xrc)) (redit-get-text-from-queue rc)))
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
820 ;; -------- add after que ------------
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
821
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
822 (setq rque (cdr rque))) ;; while cque
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
823 ) ;; let
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
824 ) ;; defun
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
825
6
5796f9efc332 *** empty log message ***
gongo
parents: 5
diff changeset
826 ;; for debug
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
827 (defun redit-client-print-command-queue ()
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
828 "Print command queue."
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
829 (interactive)
7
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
830 ;;(message redit-client-command-queue))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
831 (let ((queue redit-client-command-queue))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
832 (while (Queue-front queue)
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
833 (message (Queue-front queue))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
834 (setq queue (cdr (Queue-rear queue)))
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
835 )
6b82a318980c *** empty log message ***
gongo
parents: 6
diff changeset
836 ))
5
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
837
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
838 (defun redit-client-print-recive-queue ()
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
839 "Print command queue."
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
840 (interactive)
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
841 (print redit-client-receive-queue))
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
842
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
843 (defun redit-client-print-send-queue ()
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
844 "Print command queue."
ee15fce75335 add translat routine
shinobu
parents: 3
diff changeset
845 (interactive)
8
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
846 (print redit-client-send-queue))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
847
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
848 (defun redit-get-command-from-queue (queue)
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
849 (nth 0 (Queue-front queue)))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
850 (defun redit-get-line-from-queue (queue)
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
851 (nth 1 (Queue-front queue)))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
852 (defun redit-get-uid-from-queue (queue)
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
853 (nth 2 (Queue-front queue)))
2b2c8c2cb9d6 *** empty log message ***
gongo
parents: 7
diff changeset
854 (defun redit-get-text-from-queue (queue)
15
80db8560887c add rep-string-encoding and translate it.
shinobu
parents: 13
diff changeset
855 (nth 3 (Queue-front queue)))