- (let* ((keyseq (its-get-keyseq-syl syl))
- (len (length keyseq))
- (p (- (point) (length (its-get-output syl))))
- (its-current-map (get-text-property (1- (point)) 'its-map))
- (its-current-language (get-text-property (1- (point)) 'egg-lang))
- back pp)
- (if (< n 0)
- (signal 'args-out-of-range (list (- (point) n) (point))))
- (if its-delete-by-keystroke
- (while (null (or (eq p pp) (its-concrete-DSYL-p syl)))
- (setq pp p)
- (while (and (setq syl (get-text-property (1- p) 'its-syl))
- (its-DSYL-with-back-p syl)
- (<= (setq back (- (its-get-kst/t syl))) len)
- (> back (- len n))
- (equal (substring (its-get-keyseq syl) (- back))
- (substring keyseq 0 back)))
- (setq keyseq (concat (its-get-keyseq-syl syl) keyseq)
- len (length keyseq)
- p (- p (length (its-get-output syl)))))
- (if (and (eq p pp) syl (> n len))
- (setq n (- n len)
- keyseq (its-get-keyseq-syl syl)
- len (length keyseq)
- p (- p (length (its-get-output syl))))))
- (if (and (> n len) (its-concrete-DSYL-p syl))
- (setq len 1)))
- (if (> n len)
- (setq n (- n len)
- len 0))
- (while (and (> n len) (setq syl (get-text-property (1- p) 'its-syl)))
- (setq n (1- n)
- p (- p (length (its-get-output syl)))))
- (if (> n len)
- (signal 'beginning-of-buffer nil))
- (delete-region p (point))
- (cond
- ((> len n)
- (its-state-machine-keyseq (substring keyseq 0 (- len n))
- 'its-buffer-ins/del-SYL))
- ;; Check if empty
- ((and (get-text-property (1- (point)) 'its-start)
- (get-text-property (1+ (point)) 'its-end))
- (its-exit-mode-internal))
- ((and its-delete-by-keystroke
- (null (its-concrete-DSYL-p (get-text-property (1- p) 'its-syl))))
- (its-set-cursor-status 'its-cursor))
- (t
- (its-set-cursor-status t)))))
+ (if (let* ((keyseq (its-get-keyseq-syl syl))
+ (len (length keyseq))
+ (p (- (point) (length (its-get-output syl))))
+ (its-current-map (get-text-property (1- (point)) 'its-map))
+ (its-current-language (get-text-property (1- (point)) 'egg-lang))
+ back pp)
+ (if (< n 0)
+ (signal 'args-out-of-range (list (- (point) n) (point))))
+ (if its-delete-by-keystroke
+ (while (null (or (eq p pp) (its-concrete-DSYL-p syl)))
+ (setq pp p)
+ (while (and (setq syl (get-text-property (1- p) 'its-syl))
+ (its-DSYL-with-back-p syl)
+ (<= (setq back (- (its-get-kst/t syl))) len)
+ (> back (- len n))
+ (equal (substring (its-get-keyseq syl) (- back))
+ (substring keyseq 0 back)))
+ (setq keyseq (concat (its-get-keyseq-syl syl) keyseq)
+ len (length keyseq)
+ p (- p (length (its-get-output syl)))))
+ (if (and (eq p pp) syl (> n len))
+ (setq n (- n len)
+ keyseq (its-get-keyseq-syl syl)
+ len (length keyseq)
+ p (- p (length (its-get-output syl))))))
+ (if (and (> n len) (its-concrete-DSYL-p syl))
+ (setq len 1)))
+ (if (> n len)
+ (setq n (- n len)
+ len 0))
+ (while (and (> n len) (setq syl (get-text-property (1- p) 'its-syl)))
+ (setq n (1- n)
+ p (- p (length (its-get-output syl)))))
+ (if (> n len)
+ (signal 'beginning-of-buffer nil))
+ (delete-region p (point))
+ (if (> len n)
+ (its-state-machine-keyseq (substring keyseq 0 (- len n))
+ 'its-buffer-ins/del-SYL)
+ (its-set-cursor-status
+ (if (or (null its-delete-by-keystroke)
+ (its-concrete-DSYL-p (get-text-property (1- p) 'its-syl)))
+ t
+ 'its-cursor)))
+ (and (get-text-property (1- (point)) 'its-start)
+ (get-text-property (1+ (point)) 'its-end)))
+ (its-exit-mode-internal)))