[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/emulation/viper-util.el
From: |
Michael Kifer |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/emulation/viper-util.el |
Date: |
Sun, 10 Jul 2005 14:46:32 -0400 |
Index: emacs/lisp/emulation/viper-util.el
diff -c emacs/lisp/emulation/viper-util.el:1.54
emacs/lisp/emulation/viper-util.el:1.55
*** emacs/lisp/emulation/viper-util.el:1.54 Mon Jul 4 17:29:04 2005
--- emacs/lisp/emulation/viper-util.el Sun Jul 10 18:46:24 2005
***************
*** 41,47 ****
(defvar viper-syntax-preference)
(defvar viper-saved-mark)
- (require 'cl)
(require 'ring)
(if noninteractive
--- 41,46 ----
***************
*** 1068,1074 ****
(t key)))
((listp key)
! (setq modifiers (subseq key 0 (1- (length key)))
base-key (viper-seq-last-elt key)
base-key-name (symbol-name base-key)
char-p (= (length base-key-name) 1))
--- 1067,1073 ----
(t key)))
((listp key)
! (setq modifiers (viper-subseq key 0 (1- (length key)))
base-key (viper-seq-last-elt key)
base-key-name (symbol-name base-key)
char-p (= (length base-key-name) 1))
***************
*** 1501,1506 ****
--- 1500,1532 ----
(setq total (+ total local)))
total
))
+
+
+ ;; this is copied from cl-extra.el
+ ;; Return the subsequence of SEQ from START to END.
+ ;; If END is omitted, it defaults to the length of the sequence.
+ ;; If START or END is negative, it counts from the end.
+ (defun viper-subseq (seq start &optional end)
+ (if (stringp seq) (substring seq start end)
+ (let (len)
+ (and end (< end 0) (setq end (+ end (setq len (length seq)))))
+ (if (< start 0) (setq start (+ start (or len (setq len (length seq))))))
+ (cond ((listp seq)
+ (if (> start 0) (setq seq (nthcdr start seq)))
+ (if end
+ (let ((res nil))
+ (while (>= (setq end (1- end)) start)
+ (push (pop seq) res))
+ (nreverse res))
+ (copy-sequence seq)))
+ (t
+ (or end (setq end (or len (length seq))))
+ (let ((res (make-vector (max (- end start) 0) nil))
+ (i 0))
+ (while (< start end)
+ (aset res i (aref seq start))
+ (setq i (1+ i) start (1+ start)))
+ res))))))