view line-merge.el @ 35:8991e2263f83

*** empty log message ***
author gongo
date Sat, 22 Dec 2007 21:06:07 +0900
parents 5796f9efc332
children
line wrap: on
line source

;;
;;      USER
;;     |  i   |  r   |  d
;;  ---|--------------------
;;T  i | 0\+1 | 0\+1 | 0\+1
;;O ---|--------------------
;;K  r | +1\0 | 0\X  | i\X
;;E ---|--------------------
;;N  d | +1\0 | X\i  | X\X
;;
(defun dequeue-all (queue)
  "clean queue"
  (while (Queue-front queue)
    (dequeue queue)))

(defun redit-line-translate-out (cque rque)
  "redit line translate for output"
  (let ((cc) (rc) (xcc) (xrc) (ccc) (crc) (cignore 0) (rignore 0))
  (setq xcc 0)
  (setq xrc 0)
  (setq cignore 0)
  (setq rignore 0)
  (while cque
    (setq cc (car cque))
    (while rque
      (setq rc (car rque))
;;-------- translation ------------

      (if (< (+ (redit-get-line cc) xcc) (+ (redit-get-line rc) xrc))
	  (if (= (redit-get-command cc) (string-to-number redit-write-command)) (setq xrc (- xrc 1)))
	  (if (= (redit-get-command cc) (string-to-number redit-delete-line-command)) (setq xrc (- xrc 1))))

      (if (> (+ (redit-get-line cc) xcc) (+ (redit-get-line rc) xrc))
	  (if (= (redit-get-command rc) (string-to-number redit-write-command)) (setq xcc (+ xcc 1)))
	  (if (= (redit-get-command rc) (string-to-number redit-delete-line-command)) (setq xcc (- xcc 1))))

      (if (= (+ (redit-get-line cc) xcc) (+ (redit-get-line rc) xrc))
	  (if (= (redit-get-command rc) (string-to-number redit-write-command)) (setq xcc (+ xcc 1)))
	  (if (= (redit-get-command rc) (string-to-number redit-replace-command))
	    (if (= (redit-get-command cc) (string-to-number redit-write-command)) (setq xrc (+ xrc 1)))
	    (if (= (redit-get-command cc) (string-to-number redit-replace-command)) (setq cignore 1))
	    (if (= (redit-get-command cc) (string-to-number redit-delete-line-command)) (setq crc redit-write-command) (setq cignore 1))))

	  (if (= (redit-get-command rc) (string-to-number redit-delete-line-command))
	    (if (= (redit-get-command cc) (string-to-number redit-write-command)) (setq xrc (+ (redit-get-line rc) 1)))
	    (if (= (redit-get-command cc) (string-to-number redit-replace-command)) (setq cignore 1))
	    (if (= (redit-get-command cc) (string-to-number redit-delete-line-command)) (setq cignore 1) (setq rignore 1)))

;;-------- translation ------------

      (setq rque (cdr rque)))                    ;; while rque

	  ;;ignore
	  (if (= cignore 1)
	      ;;xxx
	      (setq cignore 0))
	  (if (= rignore 1)
	      ;;xxx
	      (setq cignore 0))

;;-------- add after que ------------
          (enqueue after-CQ (concat (format "%2d%2d%9d" (redit-get-command cc) (redit-get-uid cc) (+ (redit-get-line cc) xcc)) (redit-get-text cc)))
;;-------- add after que ------------

    (setq cque (cdr cque)))                     ;; while cque
  ) ;; let
) ;;defun

(defun redit-line-translate-in (cque rque)
  "redit line translate for input"
  (let ((cc) (rc) (xcc) (xrc) (ccc) (crc) (cignore 0) (rignore 0))
  (setq xcc 0)
  (setq xrc 0)
  (setq cignore 0)
  (setq rignore 0)
  (while rque
    (setq rc (car rque))
    (setq cignore 0)
    (setq rignore 0)
    (while cque
      (setq cc (car cque))
;;-------- translation ------------

      (if (and (= cignore 1) (= rignore 1))
      (if (< (+ (redit-get-line rc) xrc) (+ (redit-get-line cc) xcc))
	  (if (= (redit-get-command rc) (string-to-number redit-write-command)) (setq xcc (+ xcc 1)))
	  (if (= (redit-get-command rc) (string-to-number redit-delete-line-command)) (setq xcc (- xcc 1))))

      (if (> (+ (redit-get-line rc) xrc) (+ (redit-get-line cc) xcc))
	  (if (= (redit-get-command cc) (string-to-number redit-write-command)) (setq xrc (- xrc 1)))
	  (if (= (redit-get-command cc) (string-to-number redit-delete-line-command)) (setq xrc (+ xrc 1))))

      (if (= (+ (redit-get-line rc) xrc) (+ (redit-get-line cc) xcc))
	  (if (= (redit-get-command cc) (string-to-number redit-write-command)) (setq xcc (+ xcc 1)))
	  (if (= (redit-get-command cc) (string-to-number redit-replace-command))
	    (if (= (redit-get-command rc) (string-to-number redit-write-command)) (setq xcc (+ xcc 1)))
	    (if (= (redit-get-command rc) (string-to-number redit-replace-command)) (setq cignore 1))
	    (if (= (redit-get-command rc) (string-to-number redit-delete-line-command)) (setq crc redit-write-command) (setq cignore 1))))
	  (if (= (redit-get-command cc) (string-to-number redit-delete-line-command))
	    (if (= (redit-get-command rc) (string-to-number redit-write-command)) (setq xcc (+ (redit-get-line cc) 1)))
	    (if (= (redit-get-command rc) (string-to-number redit-replace-command)) (setq crc redit-write-command) (setq cignore 1))
	    (if (= (redit-get-command rc) (string-to-number redit-delete-line-command)) (setq cignore 1) (setq rignore 1))))

;;-------- translation ------------

      (setq cque (cdr cque)))                    ;; while rque

	  ;;ignore
	  (if (= cignore 1)
	      ;;xxx
	      (setq cignore 0))
	  (if (= rignore 1)
	      ;;xxx
	      (setq rignore 0))

;;-------- add after que ------------
          (enqueue after-RQ (concat (format "%2d%2d%9d" (redit-get-command rc) (redit-get-uid rc) (+ (redit-get-line rc) xrc)) (redit-get-text rc)))
;;-------- add after que ------------

    (setq rque (cdr rque)))                     ;; while cque
  ) ;; let
) ;;defun