Mercurial > hg > RemoteEditor > emacs
changeset 58:4d087b06929a v20080827
*** empty log message ***
author | gongo |
---|---|
date | Wed, 27 Aug 2008 17:29:27 +0900 |
parents | 91236a2c6e2d |
children | 04eb9d562e60 |
files | ChangeLog redit-client-sm.el |
diffstat | 2 files changed, 20 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Wed Aug 27 16:06:20 2008 +0900 +++ b/ChangeLog Wed Aug 27 17:29:27 2008 +0900 @@ -1,5 +1,12 @@ 2008-08-27 Wataru MIYAGUNI <gongo@cr.ie.u-ryukyu.ac.jp> + * redit-client-sm.el (redit-client-after-change-function): + 下の変更により、ここでは SessionInfo から prev を取得している + + * redit-client-sm.el (defstruct SessionInfo): + Session 毎(つまりバッファ毎)に previous-edited-line の保持が必要 + ってことで SessionInfo に追加 + * redit-client-sm.el (redit-client-after-change-function): memo insert/delete 発行判別の説明
--- a/redit-client-sm.el Wed Aug 27 16:06:20 2008 +0900 +++ b/redit-client-sm.el Wed Aug 27 17:29:27 2008 +0900 @@ -183,7 +183,7 @@ ;; eid: Editor ID ;; send_cmdlist: rep_command list from user to SessionManager ;; recv_cmdlist: rep_command list from SessionManager to user -(defstruct SessionInfo (sid nil) (eid nil) +(defstruct SessionInfo (sid nil) (eid nil) (prevline 1) (send_cmdlist nil) (recv_cmdlist nil)) ;; create and initialize @@ -612,11 +612,13 @@ ;; begin と end には変更後の変更部分の始まりと終わりの point が入る (defun redit-client-after-change-function (begin end length) ;; (message "after-change-function") - (let ((endl) (cur-max-line) (max-line-diff) (prev-edit-line)) + (let ((endl) (cur-max-line) (max-line-diff) (prev-edit-line) (sinfo)) (setq redit-client-after-begin-line (real-count-lines begin)) (setq redit-client-after-end-line (real-count-lines end)) (setq cur-max-line (real-count-lines (point-max))) - (setq prev-edit-line redit-client-previous-edited-line) + ;;(setq prev-edit-line redit-client-previous-edited-line) + (setq sinfo (redit-sinfo-get-buf2sinfo (buffer-name))) + (setq prev-edit-line (SessionInfo-prevline sinfo)) ;; 詳しくは ChangeLog [2008-08-27] を見て (if (= redit-client-before-begin-line @@ -626,10 +628,8 @@ redit-client-before-end-line) ;; 前回編集した所と違う行を編集していれば、 ;; 前回編集した行を insert する - (if (not (= redit-client-after-end-line - redit-client-previous-edited-line)) - (redit-client-insert-line - redit-client-previous-edited-line nil)) + (if (not (= redit-client-after-end-line prev-edit-line)) + (redit-client-insert-line prev-edit-line nil)) (progn ;; 行の削除が行われた (setq endl redit-client-before-end-line) @@ -661,8 +661,10 @@ (redit-client-insert-line endl nil) (setq endl (1- endl)))) ) - - (setq redit-client-previous-edited-line redit-client-after-end-line))) + + ;;(setq redit-client-previous-edited-line redit-client-after-end-line) + (setf (SessionInfo-prevline sinfo) redit-client-after-end-line) +)) ;; 引き数で与えられた string (line_num + text_data) から ;; 指定された行を削除し、そこに text_data を挿入する @@ -809,10 +811,11 @@ (redit-sinfo-add-buf2sinfo bufname sinfo) (switch-to-buffer bufname) - + (message (format "join-ack: Session [%d] %s" redit-client-session-id bufname)) (message (format "Your editor id = %d" redit-client-editor-id)) + )) ;; //引き数で与えられた string から Session IDを取得する