[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 3f6e4c1: * lisp/mh-e/mh-acros.el (mh-defstruct): Mi
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] master 3f6e4c1: * lisp/mh-e/mh-acros.el (mh-defstruct): Minor simplification |
Date: |
Mon, 18 Feb 2019 23:11:33 -0500 (EST) |
branch: master
commit 3f6e4c1ce54d995b977ba762513666cb21243c2b
Author: Stefan Monnier <address@hidden>
Commit: Stefan Monnier <address@hidden>
* lisp/mh-e/mh-acros.el (mh-defstruct): Minor simplification
---
lisp/mh-e/mh-acros.el | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/lisp/mh-e/mh-acros.el b/lisp/mh-e/mh-acros.el
index 8935644..3bbf509 100644
--- a/lisp/mh-e/mh-acros.el
+++ b/lisp/mh-e/mh-acros.el
@@ -143,6 +143,8 @@ check if variable `transient-mark-mode' is active."
;;;###mh-autoload
(defmacro mh-defstruct (name-spec &rest fields)
+ ;; FIXME: Use `cl-defstruct' instead: shouldn't emit warnings any
+ ;; more nor depend on run-time CL functions.
"Replacement for `defstruct' from the \"cl\" package.
The `defstruct' in the \"cl\" library produces compiler warnings,
and generates code that uses functions present in \"cl\" at
@@ -160,15 +162,17 @@ more details."
(constructor (or (and (consp name-spec)
(cadr (assoc :constructor (cdr name-spec))))
(intern (format "make-%s" struct-name))))
- (field-names (mapcar #'(lambda (x) (if (atom x) x (car x))) fields))
- (field-init-forms (mapcar #'(lambda (x) (and (consp x) (cadr x)))
- fields))
+ (fields (mapcar (lambda (x)
+ (if (atom x)
+ (list x nil)
+ (list (car x) (cadr x))))
+ fields))
+ (field-names (mapcar #'car fields))
(struct (gensym "S"))
(x (gensym "X"))
(y (gensym "Y")))
`(progn
- (defun* ,constructor (&key ,@(mapcar* #'(lambda (x y) (list x y))
- field-names field-init-forms))
+ (defun* ,constructor (&key ,@fields)
(list (quote ,struct-name) ,@field-names))
(defun ,predicate (arg)
(and (consp arg) (eq (car arg) (quote ,struct-name))))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master 3f6e4c1: * lisp/mh-e/mh-acros.el (mh-defstruct): Minor simplification,
Stefan Monnier <=