GNU bug report logs -
#40570
[PATCH] Alias cl-subseq to seq-subseq, define gv-setter in the latter
Previous Next
Reported by: Štěpán Němec <stepnem <at> gmail.com>
Date: Sun, 12 Apr 2020 09:46:02 UTC
Severity: normal
Tags: patch
Done: Štěpán Němec <stepnem <at> gmail.com>
Bug is archived. No further changes may be made.
Full log
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
The definition was moved in
2019-10-27T13:25:00-04:00!monnier <at> iro.umontreal.ca
0e4dd67aae (* lisp/emacs-lisp/seq.el: Don't require cl-lib.)
already, but not the gv-setter declaration, so 'setf' worked with
'cl-subseq', but not with 'seq-subseq'. Moving also the gv-setter to
seq-subseq and defining 'cl-subseq' as an alias of the former makes
'setf' work with both.
* lisp/emacs-lisp/cl-extra.el (cl-subseq): Redefine as an alias of
'seq-subseq'.
* lisp/emacs-lisp/seq.el (seq-subseq): Move gv-setter declaration here
from 'cl-subseq' so that 'setf' works.
---
lisp/emacs-lisp/cl-extra.el | 12 +++---------
lisp/emacs-lisp/seq.el | 5 +++++
2 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el
index 5bf74792c0..2583fdb19e 100644
--- a/lisp/emacs-lisp/cl-extra.el
+++ b/lisp/emacs-lisp/cl-extra.el
@@ -538,18 +538,12 @@ cl-float-limits
;;; Sequence functions.
;;;###autoload
-(defun cl-subseq (seq start &optional end)
- "Return the subsequence of SEQ from START to END.
+(defalias 'cl-subseq #'seq-subseq
+ "Return the subsequence of SEQUENCE 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.
Signal an error if START or END are outside of the sequence (i.e
-too large if positive or too small if negative)."
- (declare (gv-setter
- (lambda (new)
- (macroexp-let2 nil new new
- `(progn (cl-replace ,seq ,new :start1 ,start :end1 ,end)
- ,new)))))
- (seq-subseq seq start end))
+too large if positive or too small if negative).")
;;;###autoload
(defalias 'cl-concatenate #'seq-concatenate
diff --git a/lisp/emacs-lisp/seq.el b/lisp/emacs-lisp/seq.el
index e3037a7190..936c38283e 100644
--- a/lisp/emacs-lisp/seq.el
+++ b/lisp/emacs-lisp/seq.el
@@ -154,6 +154,11 @@ seq-subseq
START or END is negative, it counts from the end. Signal an
error if START or END are outside of the sequence (i.e too large
if positive or too small if negative)."
+ (declare (gv-setter
+ (lambda (new)
+ (macroexp-let2 nil new new
+ `(progn (cl-replace ,sequence ,new :start1 ,start :end1 ,end)
+ ,new)))))
(cond
((or (stringp sequence) (vectorp sequence)) (substring sequence start end))
((listp sequence)
--
2.26.0
This bug report was last modified 5 years and 98 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.