diff options
author | Glenn Morris <rgm@gnu.org> | 2018-03-22 07:50:37 -0700 |
---|---|---|
committer | Glenn Morris <rgm@gnu.org> | 2018-03-22 07:50:37 -0700 |
commit | 0afb436eeb9b87dbd13b012e3b13d51fc6745f0d (patch) | |
tree | 683cf853c6bc6065a5f5a3d9ae81feda1882da95 /lisp | |
parent | 081c39beb0340f5d6084dc90796ba726a52c928e (diff) | |
parent | 8ac621bb5594786c66cc724864e6037c8c650774 (diff) | |
download | emacs-0afb436eeb9b87dbd13b012e3b13d51fc6745f0d.tar.gz emacs-0afb436eeb9b87dbd13b012e3b13d51fc6745f0d.tar.bz2 emacs-0afb436eeb9b87dbd13b012e3b13d51fc6745f0d.zip |
Merge from origin/emacs-26
8ac621b (origin/emacs-26) Document DEFUN attributes
16d0cc7 * etc/NEWS: Add an entry for auth-source-pass.
cc1702f Fix the MSDOS build
daa9e85 Improve warning and error messages
7612dd1 Adjust eieio persistence tests for expected failure
f0cf4dc Let eieio-persistent-read read what object-write has written
40ad1ff Handle possible classtype values in eieio-persistent-read
4ec935d Add new tests for eieio persistence
47917d8 * lisp/gnus/gnus-cloud.el (gnus-cloud-synced-files): Fix doc ...
e32f352 * lisp/ibuf-ext.el (ibuffer-never-search-content-mode): Fix t...
5268f30 * doc/lispref/windows.texi (Selecting Windows): Fix a typo.
143b485 * doc/lispref/internals.texi (Writing Emacs Primitives): Fix ...
4ab4551 Firm up documentation of generalized variables
a5bf099 Improve documentation of Auto-Revert mode
ed05eaa Improvements in dired.texi
Conflicts:
etc/NEWS
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/emacs-lisp/eieio-base.el | 47 | ||||
-rw-r--r-- | lisp/gnus/gnus-cloud.el | 12 | ||||
-rw-r--r-- | lisp/ibuf-ext.el | 2 |
3 files changed, 40 insertions, 21 deletions
diff --git a/lisp/emacs-lisp/eieio-base.el b/lisp/emacs-lisp/eieio-base.el index c0ad7ac4605..9f9f870a757 100644 --- a/lisp/emacs-lisp/eieio-base.el +++ b/lisp/emacs-lisp/eieio-base.el @@ -219,7 +219,7 @@ for CLASS. Optional ALLOW-SUBCLASS says that it is ok for `eieio-persistent-read' to load in subclasses of class instead of being pedantic." (unless class - (message "Unsafe call to `eieio-persistent-read'.")) + (warn "`eieio-persistent-read' called without specifying a class")) (when class (cl-check-type class class)) (let ((ret nil) (buffstr nil)) @@ -234,13 +234,16 @@ being pedantic." ;; the current buffer will work. (setq ret (read buffstr)) (when (not (child-of-class-p (car ret) 'eieio-persistent)) - (error "Corrupt object on disk: Unknown saved object")) + (error + "Invalid object: %s is not a subclass of `eieio-persistent'" + (car ret))) (when (and class - (not (or (eq (car ret) class ) ; same class - (and allow-subclass - (child-of-class-p (car ret) class)) ; subclasses - ))) - (error "Corrupt object on disk: Invalid saved class")) + (not (or (eq (car ret) class) ; same class + (and allow-subclass ; subclass + (child-of-class-p (car ret) class))))) + (error + "Invalid object: %s is not an object of class %s nor a subclass" + (car ret) class)) (setq ret (eieio-persistent-convert-list-to-object ret)) (oset ret file filename)) (kill-buffer " *tmp eieio read*")) @@ -332,7 +335,8 @@ Second, any text properties will be stripped from strings." ;; We have a predicate, but it doesn't satisfy the predicate? (dolist (PV (cdr proposed-value)) (unless (child-of-class-p (car PV) (car classtype)) - (error "Corrupt object on disk"))) + (error "Invalid object: slot member %s does not match class %s" + (car PV) (car classtype)))) ;; We have a list of objects here. Lets load them ;; in. @@ -349,7 +353,7 @@ Second, any text properties will be stripped from strings." (seq-some (lambda (elt) (child-of-class-p (car proposed-value) elt)) - classtype)) + (if (listp classtype) classtype (list classtype)))) (eieio-persistent-convert-list-to-object proposed-value)) (t @@ -360,19 +364,28 @@ Second, any text properties will be stripped from strings." ((hash-table-p proposed-value) (maphash (lambda (key value) - (when (class-p (car-safe value)) - (setf (gethash key proposed-value) - (eieio-persistent-convert-list-to-object - value)))) + (cond ((class-p (car-safe value)) + (setf (gethash key proposed-value) + (eieio-persistent-convert-list-to-object + value))) + ((and (consp value) + (eq (car value) 'quote)) + (setf (gethash key proposed-value) + (cadr value))))) proposed-value) proposed-value) ((vectorp proposed-value) (dotimes (i (length proposed-value)) - (when (class-p (car-safe (aref proposed-value i))) - (aset proposed-value i - (eieio-persistent-convert-list-to-object - (aref proposed-value i))))) + (let ((val (aref proposed-value i))) + (cond ((class-p (car-safe val)) + (aset proposed-value i + (eieio-persistent-convert-list-to-object + (aref proposed-value i)))) + ((and (consp val) + (eq (car val) 'quote)) + (aset proposed-value i + (cadr val)))))) proposed-value) ((stringp proposed-value) diff --git a/lisp/gnus/gnus-cloud.el b/lisp/gnus/gnus-cloud.el index ac5ff7d47cf..86cd399ff1c 100644 --- a/lisp/gnus/gnus-cloud.el +++ b/lisp/gnus/gnus-cloud.el @@ -48,10 +48,14 @@ "~/.authinfo.gpg" "~/.gnus.el" (:directory "~/News" :match ".*.SCORE\\'")) - "List of file regexps that should be kept up-to-date via the cloud." + "List of files that should be kept up-to-date via the cloud. +Each element may be either a string or a property list. +The latter should have a :directory element whose value is a string, +and a :match element whose value is a regular expression to match +against the basename of files in said directory." :group 'gnus-cloud - ;; FIXME this type does not match the default. Nor does the documentation. - :type '(repeat regexp)) + :type '(repeat (choice (string :tag "File") + (plist :tag "Property list")))) (defcustom gnus-cloud-storage-method (if (featurep 'epg) 'epg 'base64-gzip) "Storage method for cloud data, defaults to EPG if that's available." @@ -290,6 +294,8 @@ Use old data if FORCE-OLDER is not nil." (dolist (elem gnus-cloud-synced-files) (cond ((stringp elem) + ;; This seems fragile. String comparison, with no + ;; expand-file-name to resolve ~, etc. (when (equal elem file-name) (setq matched t))) ((consp elem) diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el index 91d9acb3a3c..a1adb1df35a 100644 --- a/lisp/ibuf-ext.el +++ b/lisp/ibuf-ext.el @@ -114,7 +114,7 @@ Buffers whose name matches a regexp in this list, are not searched." "A list of major modes ignored by `ibuffer-mark-by-content-regexp'. Buffers whose major mode is in this list, are not searched." :version "26.1" - :type '(repeat regexp) + :type '(repeat (symbol :tag "Major mode")) :require 'ibuf-ext :group 'ibuffer) |