unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Re: master 40149b8: * lisp/emacs-lisp/eieio.el (oset, oset-default): Mark as obsolete
       [not found] ` <20200503220548.6C53420B5B@vcs0.savannah.gnu.org>
@ 2020-05-05  0:42   ` Basil L. Contovounesios
  2020-05-05  2:43     ` Stefan Monnier
  0 siblings, 1 reply; 3+ messages in thread
From: Basil L. Contovounesios @ 2020-05-05  0:42 UTC (permalink / raw)
  To: emacs-devel; +Cc: Stefan Monnier

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: 0001-Fix-obsolete-EIEIO-uses.patch --]
[-- Type: text/x-diff, Size: 95813 bytes --]

From 20696b1a86f00fe7945b9563b3d936f23b5a8d09 Mon Sep 17 00:00:00 2001
From: "Basil L. Contovounesios" <contovob@tcd.ie>
Date: Tue, 5 May 2020 00:46:51 +0100
Subject: [PATCH] Fix obsolete EIEIO uses

* doc/misc/eieio.texi (Accessing Slots): Document oref,
oref-default, and slot-value as generalized variables, and oset,
oset-default, and set-slot-value as obsolete.  Consistently document
getters before setters.
(Static Methods): Don't mention obsolete oset-default.
(Predicates): Mention cl-print-object in place of the obsolete
object-print.
(Introspection): Document eieio-class-slots in place of the obsolete
object-slots.

* etc/NEWS: Mention oref and oref-default as setf-able alternatives
to oset and oset-default, respectively.

* lisp/emacs-lisp/eieio.el: Set eieio-oset-default as the simple
setter of eieio-oref-default.

* doc/misc/ede.texi (ede-generic-project):
* lisp/auth-source.el (auth-source-backend-parse-parameters):
* lisp/cedet/ede.el (ede-project-configurations-set)
(ede-add-subproject, ede-make-project-local-variable):
* lisp/cedet/ede/auto.el (ede-do-dirmatch)
(ede-add-project-autoload):
* lisp/cedet/ede/base.el (ede-normalize-file/directory):
* lisp/cedet/ede/config.el (project-rescan)
(ede-config-get-configuration):
* lisp/cedet/ede/cpp-root.el (initialize-instance):
* lisp/cedet/ede/custom.el (ede-project-sort-targets):
* lisp/cedet/ede/emacs.el (initialize-instance, project-rescan):
* lisp/cedet/ede/files.el (ede--project-inode):
* lisp/cedet/ede/generic.el (initialize-instance)
(ede-generic-setup-configuration):
* lisp/cedet/ede/linux.el (initialize-instance, project-rescan):
* lisp/cedet/ede/locate.el (ede-enable-locate-on-project)
(ede-locate-flush-hash, ede-locate-file-in-project):
* lisp/cedet/ede/proj-info.el (object-write):
* lisp/cedet/ede/proj.el (ede-proj-load, ede-proj-save)
(project-new-target, project-delete-target):
* lisp/cedet/ede/project-am.el (project-am-load-makefile)
(project-rescan):
* lisp/cedet/ede/simple.el (ede-simple-load):
* lisp/cedet/ede/util.el (ede-update-version):
* lisp/cedet/semantic/analyze.el
(semantic-analyze-find-tag-sequence-default):
* lisp/cedet/semantic/bovine/c.el (semantic-analyze-tag-references)
(semanticdb-find-table-for-include):
* lisp/cedet/semantic/complete.el
(semantic-collector-calculate-completions-raw)
(semantic-collector-calculate-completions)
(semantic-collector-try-completion-whitespace)
(semantic-collector-flush, semantic-collector-calculate-cache)
(semantic-displayor-set-completions)
(semantic-displayer-focus-previous, semantic-displayer-focus-next)
(semantic-displayer-show-request, semantic-displayer-scroll-request)
(semantic-displayer-focus-request):
* lisp/cedet/semantic/db-ebrowse.el (semanticdb-create-database)
(semanticdb-ebrowse-add-tree-to-table):
* lisp/cedet/semantic/db-el.el (semanticdb-get-database-tables):
* lisp/cedet/semantic/db-file.el (semanticdb-create-database)
(semanticdb-load-database, object-write):
* lisp/cedet/semantic/db-find.el (semantic-reset)
(semanticdb-find-translate-path-includes-default):
* lisp/cedet/semantic/db-global.el (semanticdb-get-database-tables):
* lisp/cedet/semantic/db-javascript.el
(semanticdb-get-database-tables):
* lisp/cedet/semantic/db-mode.el (semanticdb-semantic-init-hook-fcn)
(semanticdb-kill-hook):
* lisp/cedet/semantic/db-typecache.el (semantic-reset)
(semanticdb-typecache-notify-reset, semanticdb-partial-synchronize)
(semanticdb-get-typecache, semanticdb-typecache-file-tags)
(semanticdb-typecache-include-tags)
(semanticdb-typecache-for-database)
(semanticdb-typecache-complete-flush, semanticdb-db-typecache-dump):
* lisp/cedet/semantic/debug.el (semantic-debug-set-frame)
(semantic-debug-set-parser-location)
(semantic-debug-set-source-location, semantic-debug-unhighlight):
* lisp/cedet/semantic/mru-bookmark.el (initialize-instance)
(semantic-mrub-update):
* lisp/cedet/semantic/scope.el (semantic-reset)
(semantic-scope-set-typecache)
(semantic-analyze-scope-nested-tags-default)
(semantic-analyze-scope-lineage-tags-default)
(semantic-analyze-scoped-tags-default)
(semantic-analyze-scoped-inherited-tag-map)
(semantic-calculate-scope, semantic-scope-find):
* lisp/cedet/semantic/symref.el (semantic-symref-result-get-files)
(semantic-symref-result-get-tags):
* lisp/cedet/srecode/compile.el (srecode-flush-active-templates)
(srecode-compile-templates, srecode-compile-template-table):
* lisp/cedet/srecode/dictionary.el (initialize-instance):
* lisp/cedet/srecode/extract.el (srecode-extract-state-set)
(srecode-extract-state-set-anchor):
* lisp/cedet/srecode/fields.el (initialize-instance)
(srecode-overlaid-activate, srecode-delete):
* lisp/cedet/srecode/insert.el (srecode-insert-fcn)
(srecode-push, srecode-pop, srecode-inserter-apply-state)
(srecode-insert-method, srecode-parse-input)
(srecode-insert-include-lookup):
* lisp/cedet/srecode/srt-mode.el (semantic-analyze-current-context):
* lisp/cedet/srecode/table.el (srecode-get-mode-table):
* lisp/emacs-lisp/chart.el (initialize-instance, chart-add-sequence)
(chart-sort, chart-sort-matchlist):
* lisp/emacs-lisp/eieio-base.el (clone, make-instance)
(eieio-persistent-save-interactive, eieio-persistent-read):
* lisp/emacs-lisp/eieio-speedbar.el (eieio-speedbar-object-expand):
* test/lisp/emacs-lisp/eieio-tests/eieio-test-persist.el
(eieio-test-persist-simple-1):
* test/lisp/emacs-lisp/eieio-tests/eieio-tests.el
(static-method-class-method, eieio-test-05-static-method-2)
(eieio-test-11-self, eieio-test-13-init-methods)
(eieio-test-17-virtual-slot, eieio-test-18-slot-unbound)
(eieio-test-19-slot-type-checking)
(eieio-test-20-class-allocated-slots)
(eieio-test-29-instance-inheritor, eieio-test-35-named-object):
Use oref and oref-default with setf in place of obsolete oset and
oset-default, respectively.
---
 doc/misc/ede.texi                             |  12 +--
 doc/misc/eieio.texi                           |  62 +++++++----
 etc/NEWS                                      |   5 +-
 lisp/auth-source.el                           |   6 +-
 lisp/cedet/ede.el                             |  14 +--
 lisp/cedet/ede/auto.el                        |   4 +-
 lisp/cedet/ede/base.el                        |   7 +-
 lisp/cedet/ede/config.el                      |  11 +-
 lisp/cedet/ede/cpp-root.el                    |   7 +-
 lisp/cedet/ede/custom.el                      |   3 +-
 lisp/cedet/ede/emacs.el                       |   7 +-
 lisp/cedet/ede/files.el                       |   2 +-
 lisp/cedet/ede/generic.el                     |  18 ++--
 lisp/cedet/ede/linux.el                       |  11 +-
 lisp/cedet/ede/locate.el                      |  14 ++-
 lisp/cedet/ede/proj-info.el                   |   2 +-
 lisp/cedet/ede/proj.el                        |  12 +--
 lisp/cedet/ede/project-am.el                  |  44 ++++----
 lisp/cedet/ede/simple.el                      |   3 +-
 lisp/cedet/ede/util.el                        |   2 +-
 lisp/cedet/semantic/analyze.el                |   3 +-
 lisp/cedet/semantic/bovine/c.el               |   8 +-
 lisp/cedet/semantic/complete.el               |  74 ++++++-------
 lisp/cedet/semantic/db-ebrowse.el             |  12 +--
 lisp/cedet/semantic/db-el.el                  |   7 +-
 lisp/cedet/semantic/db-file.el                |  22 ++--
 lisp/cedet/semantic/db-find.el                |   4 +-
 lisp/cedet/semantic/db-global.el              |   7 +-
 lisp/cedet/semantic/db-javascript.el          |  10 +-
 lisp/cedet/semantic/db-mode.el                |  34 +++---
 lisp/cedet/semantic/db-typecache.el           |  46 ++++----
 lisp/cedet/semantic/debug.el                  |  14 ++-
 lisp/cedet/semantic/mru-bookmark.el           |  12 +--
 lisp/cedet/semantic/scope.el                  | 102 ++++++++----------
 lisp/cedet/semantic/symref.el                 |   6 +-
 lisp/cedet/srecode/compile.el                 |  19 ++--
 lisp/cedet/srecode/dictionary.el              |   2 +-
 lisp/cedet/srecode/extract.el                 |   6 +-
 lisp/cedet/srecode/fields.el                  |  29 ++---
 lisp/cedet/srecode/insert.el                  |  36 +++----
 lisp/cedet/srecode/srt-mode.el                |   2 +-
 lisp/cedet/srecode/table.el                   |   8 +-
 lisp/emacs-lisp/chart.el                      |  27 +++--
 lisp/emacs-lisp/eieio-base.el                 |  14 ++-
 lisp/emacs-lisp/eieio-speedbar.el             |   4 +-
 lisp/emacs-lisp/eieio.el                      |   1 +
 .../eieio-tests/eieio-test-persist.el         |   2 +-
 .../emacs-lisp/eieio-tests/eieio-tests.el     |  44 ++++----
 48 files changed, 379 insertions(+), 422 deletions(-)

diff --git a/doc/misc/ede.texi b/doc/misc/ede.texi
index 584b0d7ee5..5f1083c256 100644
--- a/doc/misc/ede.texi
+++ b/doc/misc/ede.texi
@@ -955,18 +955,16 @@ ede-generic-project
 ;;; MAKEFILE
 
 (defclass ede-generic-makefile-project (ede-generic-project)
-  ((buildfile :initform "Makefile")
-   )
+  ((buildfile :initform "Makefile"))
   "Generic Project for makefiles.")
 
 (defmethod ede-generic-setup-configuration ((proj ede-generic-makefile-project) config)
-  "Setup a configuration for Make."
-  (oset config build-command "make -k")
-  (oset config debug-command "gdb ")
-  )
+  "Set up a configuration for Make."
+  (setf (oref config build-command) "make -k")
+  (setf (oref config debug-command) "gdb "))
 
 (ede-generic-new-autoloader "generic-makefile" "Make"
-			    "Makefile" 'ede-generic-makefile-project)
+                            "Makefile" 'ede-generic-makefile-project)
 @end example
 
 This example project will detect any directory with the file
diff --git a/doc/misc/eieio.texi b/doc/misc/eieio.texi
index 3943c544c7..ce79d151d5 100644
--- a/doc/misc/eieio.texi
+++ b/doc/misc/eieio.texi
@@ -698,35 +698,53 @@ Accessing Slots
 referencing vectors (@pxref{Vectors,,,elisp,GNU Emacs Lisp Reference
 Manual}).
 
+@defmac oref obj slot
+@anchor{oref}
+This macro retrieves the value stored in @var{obj} in the slot named
+by @var{slot}.  @var{slot} is the name of the slot when created by
+@dfn{defclass}.
+
+This is a generalized variable that can be used with @code{setf} to
+modify the value stored in @var{slot}.  @xref{Generalized
+Variables,,,elisp,GNU Emacs Lisp Reference Manual}.
+@end defmac
+
+@defmac oref-default class slot
+@anchor{oref-default}
+This macro returns the value of the class-allocated @var{slot} from
+@var{class}.
+
+This is a generalized variable that can be used with @code{setf} to
+modify the value stored in @var{slot}.  @xref{Generalized
+Variables,,,elisp,GNU Emacs Lisp Reference Manual}.
+@end defmac
+
 @defmac oset object slot value
 This macro sets the value behind @var{slot} to @var{value} in
 @var{object}.  It returns @var{value}.
+
+This macro is considered obsolete and it is recommended to use
+@code{(setf (oref @var{object} @var{slot}) @var{value})} instead.
 @end defmac
 
 @defmac oset-default class slot value
 This macro sets the value for the class-allocated @var{slot} in @var{class} to
 @var{value}.
 
+This macro is considered obsolete and it is recommended to use
+@code{(setf (oref-default @var{class} @var{slot}) @var{value})}
+instead.
+
 For example, if a user wanted all @code{data-objects} (@pxref{Building
 Classes}) to inform a special object of his own devising when they
 changed, this can be arranged by simply executing this bit of code:
 
 @example
-(oset-default data-object reference (list my-special-object))
+(setf (oref-default data-object reference)
+      (list my-special-object))
 @end example
 @end defmac
 
-@defmac oref obj slot
-@anchor{oref}
-Retrieve the value stored in @var{obj} in the slot named by @var{slot}.
-Slot is the name of the slot when created by @dfn{defclass}.
-@end defmac
-
-@defmac oref-default class slot
-@anchor{oref-default}
-Get the value of the class-allocated @var{slot} from @var{class}.
-@end defmac
-
 The following accessors are defined by CLOS to reference or modify
 slot values, and use the previously mentioned set/ref routines.
 
@@ -734,14 +752,21 @@ Accessing Slots
 @anchor{slot-value}
 This function retrieves the value of @var{slot} from @var{object}.
 Unlike @code{oref}, the symbol for @var{slot} must be quoted.
+
+This is a generalized variable that can be used with @code{setf} to
+modify the value stored in @var{slot}.  @xref{Generalized
+Variables,,,elisp,GNU Emacs Lisp Reference Manual}.
 @end defun
 
 @defun set-slot-value object slot value
 @anchor{set-slot-value}
-This is not a CLOS function, but is the setter for @code{slot-value}
-used by the @code{setf} macro.  This
-function sets the value of @var{slot} from @var{object}.  Unlike
+This function sets the value of @var{slot} from @var{object}.  Unlike
 @code{oset}, the symbol for @var{slot} must be quoted.
+
+This is not a CLOS function, but is the obsolete setter for
+@code{slot-value} used by the @code{setf} macro.  It is therefore
+recommended to use @code{(setf (slot-value @var{object} @var{slot})
+@var{value})} instead.
 @end defun
 
 @defun slot-makeunbound object slot
@@ -965,8 +990,7 @@ Static Methods
 @end example
 
 The first argument of a static method will be a class rather than an
-object.  Use the functions @code{oref-default} or @code{oset-default} which
-will work on a class.
+object.  The function @code{oref-default} will work on a class.
 
 A class's @code{make-instance} method is defined as a static
 method.
@@ -1061,7 +1085,7 @@ Predicates
 Return a string of the form @samp{#<object-class myobjname>} for @var{obj}.
 This should look like Lisp symbols from other parts of Emacs such as
 buffers and processes, and is shorter and cleaner than printing the
-object's record.  It is more useful to use @code{object-print} to get
+object's record.  It is more useful to use @code{cl-print-object} to get
 and object's print form, as this allows the object to add extra display
 information into the symbol.
 @end defun
@@ -1217,7 +1241,7 @@ Introspection
 some functions have been provided.  None of these functions are a part
 of CLOS.
 
-@defun object-slots obj
+@defun eieio-class-slots obj
 Return the list of public slots for @var{obj}.
 @end defun
 
diff --git a/etc/NEWS b/etc/NEWS
index 0f4b6244c6..12be21ac4f 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -101,7 +101,10 @@ horizontal movements now stop at the edge of the board.
 \f
 * Changes in Specialized Modes and Packages in Emacs 28.1
 
-** EIEIO: 'oset' and 'oset-default' are declared obsolete
++++
+** The EIEIO macros 'oset' and 'oset-default' are declared obsolete.
+Their 'setf'-able counterparts 'oref' and 'oref-default' can be used
+instead.
 
 ** New minor mode 'cl-font-lock-built-in-mode' for `lisp-mode'
 The mode provides refined highlighting of built-in functions, types,
diff --git a/lisp/auth-source.el b/lisp/auth-source.el
index 7a0e09b9e8..3b7b72b619 100644
--- a/lisp/auth-source.el
+++ b/lisp/auth-source.el
@@ -512,11 +512,11 @@ auth-source-backend-parse-parameters
                  entry))
         val)
     (when (setq val (plist-get entry :host))
-      (oset backend host val))
+      (setf (oref backend host) val))
     (when (setq val (plist-get entry :user))
-      (oset backend user val))
+      (setf (oref backend user) val))
     (when (setq val (plist-get entry :port))
-      (oset backend port val)))
+      (setf (oref backend port) val)))
   backend)
 
 ;; (mapcar #'auth-source-backend-parse auth-sources)
diff --git a/lisp/cedet/ede.el b/lisp/cedet/ede.el
index 8c336117c9..446737b60b 100644
--- a/lisp/cedet/ede.el
+++ b/lisp/cedet/ede.el
@@ -384,7 +384,7 @@ ede-project-configurations-set
 	   (completing-read "New configuration: "
 			    configs nil t
 			    (oref proj configuration-default)))))
-  (oset (ede-current-project) configuration-default newconfig)
+  (setf (oref (ede-current-project) configuration-default) newconfig)
   (message "%s will now build in %s mode."
 	   (eieio-object-name (ede-current-project))
 	   newconfig))
@@ -812,7 +812,7 @@ ede-new
 
 (cl-defmethod ede-add-subproject ((proj-a ede-project) proj-b)
   "Add into PROJ-A, the subproject PROJ-B."
-  (oset proj-a subproj (cons proj-b (oref proj-a subproj))))
+  (setf (oref proj-a subproj) (cons proj-b (oref proj-a subproj))))
 
 (defun ede-invoke-method (sym &rest args)
   "Invoke method SYM on the current buffer's project object.
@@ -1475,11 +1475,11 @@ ede-apply-project-local-variables
 
 (defun ede-make-project-local-variable (variable &optional project)
   "Make VARIABLE project-local to PROJECT."
-  (if (not project) (setq project (ede-toplevel)))
-  (if (assoc variable (oref project local-variables))
-      nil
-    (oset project local-variables (cons (list variable)
-					(oref project local-variables)))))
+  (unless project (setq project (ede-toplevel)))
+  (unless (assoc variable (oref project local-variables))
+    (setf (oref project local-variables)
+          (cons (list variable)
+                (oref project local-variables)))))
 
 (defun ede-set-project-local-variable (variable value &optional project)
   "Set VARIABLE to VALUE for PROJECT.
diff --git a/lisp/cedet/ede/auto.el b/lisp/cedet/ede/auto.el
index 50ed4625ba..5f1d5b288e 100644
--- a/lisp/cedet/ede/auto.el
+++ b/lisp/cedet/ede/auto.el
@@ -112,7 +112,7 @@ ede-do-dirmatch
 	      ;; Convert matchstring to a regexp
 	      (setq matchstring (concat "^" (regexp-quote matchstring)))
 	      ;; Stash it for later.
-	      (oset dirmatch configdatastash matchstring))
+              (setf (oref dirmatch configdatastash) matchstring))
 	    ;; Debug
 	    ;;(message "Stashing config data for dirmatch %S as %S" (eieio-object-name dirmatch) matchstring)
 	    )
@@ -261,7 +261,7 @@ ede-add-project-autoload
 
 	    ;; Generic Projects go at the very end of the list.
 	    ((and flag (eq flag 'generic))
-	     (oset projauto generic-p t)
+             (setf (oref projauto generic-p) t)
 	     (setq ede-project-class-files
 		   (append ede-project-class-files
 			   (list projauto))))
diff --git a/lisp/cedet/ede/base.el b/lisp/cedet/ede/base.el
index d371ad799a..304eb9a578 100644
--- a/lisp/cedet/ede/base.el
+++ b/lisp/cedet/ede/base.el
@@ -631,13 +631,14 @@ ede-normalize-file/directory
 		 (not (oref this file)))
 	     (slot-boundp this :directory)
 	     (oref this directory))
-    (oset this file (expand-file-name project-file-name (oref this directory))))
+    (setf (oref this file)
+          (expand-file-name project-file-name (oref this directory))))
   (when (and (or (not (slot-boundp this :directory))
 		 (not (oref this directory)))
 	     (slot-boundp this :file)
 	     (oref this file))
-    (oset this directory (file-name-directory (oref this file))))
-  )
+    (setf (oref this directory)
+          (file-name-directory (oref this file)))))
 
 
 
diff --git a/lisp/cedet/ede/config.el b/lisp/cedet/ede/config.el
index 07260f0b07..b4599cd300 100644
--- a/lisp/cedet/ede/config.el
+++ b/lisp/cedet/ede/config.el
@@ -117,10 +117,9 @@ ede-target-with-config
 (cl-defmethod project-rescan ((this ede-project-with-config))
   "Rescan this generic project from the sources."
   ;; Force the config to be rescanned.
-  (oset this config nil)
+  (setf (oref this config) nil)
   ;; Ask if it is safe to load the config from disk.
-  (ede-config-get-configuration this t)
-  )
+  (ede-config-get-configuration this t))
 
 ;;; Project Methods for configuration
 
@@ -162,13 +161,13 @@ ede-config-get-configuration
 	  (setq config (make-instance class
 				      "Configuration"
 				      :file fname))
-	  (oset config ignored-file ignore-type)
+          (setf (oref config ignored-file) ignore-type)
 
 	  ;; Set initial values based on project.
 	  (ede-config-setup-configuration proj config))
 	;; Link things together.
-	(oset proj config config)
-	(oset config project proj)))
+        (setf (oref proj config) config)
+        (setf (oref config project) proj)))
     config))
 
 (cl-defmethod ede-config-setup-configuration ((proj ede-project-with-config) config)
diff --git a/lisp/cedet/ede/cpp-root.el b/lisp/cedet/ede/cpp-root.el
index f0dbccb7fc..933ab4f3b8 100644
--- a/lisp/cedet/ede/cpp-root.el
+++ b/lisp/cedet/ede/cpp-root.el
@@ -292,8 +292,8 @@ initialize-instance
 	      (file-directory-p f))
       (delete-instance this)
       (error ":file for ede-cpp-root-project must be a file"))
-    (oset this file f)
-    (oset this directory (file-name-directory f))
+    (setf (oref this file) f)
+    (setf (oref this directory) (file-name-directory f))
     (ede-project-directory-remove-hash (file-name-directory f))
     ;; NOTE: We must add to global list here because these classes are not
     ;;       created via the typical loader, but instead via calls from a .emacs
@@ -301,8 +301,7 @@ initialize-instance
     (ede-add-project-to-global-list this)
 
     (unless (slot-boundp this 'targets)
-      (oset this targets nil))
-    ))
+      (setf (oref this targets) nil))))
 
 ;;; SUBPROJ Management.
 ;;
diff --git a/lisp/cedet/ede/custom.el b/lisp/cedet/ede/custom.el
index 18621ad5f1..3595136be2 100644
--- a/lisp/cedet/ede/custom.el
+++ b/lisp/cedet/ede/custom.el
@@ -110,7 +110,8 @@ ede-project-sort-targets
                                (while (setq cur (pop ede-project-sort-targets-order))
                                  (setq newtargets (append newtargets
                                                           (list (nth cur targets)))))
-                               (oset ede-object-project targets newtargets))
+                               (setf (oref ede-object-project targets)
+                                     newtargets))
                              (ede-commit-project ede-object-project)
                              (kill-buffer))
                    " Accept ")
diff --git a/lisp/cedet/ede/emacs.el b/lisp/cedet/ede/emacs.el
index bfcbd40fcc..ab249b53a9 100644
--- a/lisp/cedet/ede/emacs.el
+++ b/lisp/cedet/ede/emacs.el
@@ -144,7 +144,7 @@ initialize-instance
   "Make sure the targets slot is bound."
   (cl-call-next-method)
   (unless (slot-boundp this 'targets)
-    (oset this :targets nil)))
+    (setf (oref this :targets) nil)))
 
 ;;; File Stuff
 ;;
@@ -276,9 +276,8 @@ ede-expand-filename-impl
 (cl-defmethod project-rescan ((this ede-emacs-project))
   "Rescan this Emacs project from the sources."
   (let ((ver (ede-emacs-version (ede-project-root-directory this))))
-    (oset this name (car ver))
-    (oset this version (cdr ver))
-    ))
+    (setf (oref this name) (car ver))
+    (setf (oref this version) (cdr ver))))
 
 (provide 'ede/emacs)
 
diff --git a/lisp/cedet/ede/files.el b/lisp/cedet/ede/files.el
index db539450e6..c265b0c855 100644
--- a/lisp/cedet/ede/files.el
+++ b/lisp/cedet/ede/files.el
@@ -120,7 +120,7 @@ ede--project-inode
   "Get the inode of the directory project PROJ is in."
   (if (slot-boundp proj 'dirinode)
       (oref proj dirinode)
-    (oset proj dirinode (ede--inode-for-dir (oref proj directory)))))
+    (setf (oref proj dirinode) (ede--inode-for-dir (oref proj directory)))))
 
 (defun ede--inode-get-toplevel-open-project (inode)
   "Return an already open toplevel project that is managing INODE.
diff --git a/lisp/cedet/ede/generic.el b/lisp/cedet/ede/generic.el
index b9805f6fac..3dc96a174c 100644
--- a/lisp/cedet/ede/generic.el
+++ b/lisp/cedet/ede/generic.el
@@ -153,8 +153,7 @@ initialize-instance
   "Make sure the targets slot is bound."
   (cl-call-next-method)
   (unless (slot-boundp this 'targets)
-    (oset this :targets nil))
-  )
+    (setf (oref this :targets) nil)))
 
 (cl-defmethod ede-project-root ((this ede-generic-project))
   "Return my root."
@@ -326,9 +325,8 @@ ede-generic-makefile-project
 
 (cl-defmethod ede-generic-setup-configuration ((proj ede-generic-makefile-project) config)
   "Setup a configuration for Make."
-  (oset config build-command "make -k")
-  (oset config debug-command "gdb ")
-  )
+  (setf (oref config build-command) "make -k")
+  (setf (oref config debug-command) "gdb "))
 
 
 ;;; SCONS
@@ -339,9 +337,8 @@ ede-generic-scons-project
 
 (cl-defmethod ede-generic-setup-configuration ((proj ede-generic-scons-project) config)
   "Setup a configuration for SCONS."
-  (oset config build-command "scons")
-  (oset config debug-command "gdb ")
-  )
+  (setf (oref config build-command) "scons")
+  (setf (oref config debug-command) "gdb "))
 
 
 ;;; CMAKE
@@ -352,9 +349,8 @@ ede-generic-cmake-project
 
 (cl-defmethod ede-generic-setup-configuration ((proj ede-generic-cmake-project) config)
   "Setup a configuration for CMake."
-  (oset config build-command "cmake")
-  (oset config debug-command "gdb ")
-  )
+  (setf (oref config build-command) "cmake")
+  (setf (oref config debug-command) "gdb "))
 
 ;;; Generic Version Control System
 (defclass ede-generic-vc-project (ede-generic-project)
diff --git a/lisp/cedet/ede/linux.el b/lisp/cedet/ede/linux.el
index 8ce6b5c2a4..180919975b 100644
--- a/lisp/cedet/ede/linux.el
+++ b/lisp/cedet/ede/linux.el
@@ -231,7 +231,7 @@ initialize-instance
   "Make sure the targets slot is bound."
   (cl-call-next-method)
   (unless (slot-boundp this 'targets)
-    (oset this :targets nil)))
+    (setf (oref this :targets) nil)))
 
 ;;; File Stuff
 ;;
@@ -380,11 +380,10 @@ project-rescan
 	 (arch (ede-linux--get-architecture dir bdir))
 	 (inc (ede-linux--include-path dir bdir arch))
 	 (ver (ede-linux-version dir)))
-    (oset this version ver)
-    (oset this :build-directory bdir)
-    (oset this :architecture arch)
-    (oset this :include-path inc)
-    ))
+    (setf (oref this version) ver)
+    (setf (oref this :build-directory) bdir)
+    (setf (oref this :architecture) arch)
+    (setf (oref this :include-path) inc)))
 
 (provide 'ede/linux)
 
diff --git a/lisp/cedet/ede/locate.el b/lisp/cedet/ede/locate.el
index 160309ffce..8f7e8de98f 100644
--- a/lisp/cedet/ede/locate.el
+++ b/lisp/cedet/ede/locate.el
@@ -89,10 +89,9 @@ ede-enable-locate-on-project
       (when (called-interactively-p 'interactive)
 	(message "Setting locator to ede-locate-base"))
       (setq ans 'ede-locate-base))
-    (oset proj locate-obj (make-instance ans "Loc" :root root))
+    (setf (oref proj locate-obj) (make-instance ans "Loc" :root root))
     (when (called-interactively-p 'interactive)
-      (message "Setting locator to %s" ans))
-    ))
+      (message "Setting locator to %s" ans))))
 
 ;;; LOCATE BASECLASS
 ;;
@@ -125,7 +124,7 @@ ede-locate-ok-in-project
 
 (cl-defmethod ede-locate-flush-hash ((loc ede-locate-base))
   "For LOC, flush hash table and start from scratch."
-  (oset loc hash (make-hash-table :test 'equal)))
+  (setf (oref loc hash) (make-hash-table :test #'equal)))
 
 (cl-defmethod ede-locate-file-in-hash ((loc ede-locate-base)
 				    filestring)
@@ -143,10 +142,9 @@ ede-locate-file-in-project
   "Locate with LOC occurrences of FILESUBSTRING.
 Searches are done under the current root of the EDE project
 that created this EDE locate object."
-  (let ((ans (ede-locate-file-in-project-impl loc filesubstring))
-	)
-    (oset loc file filesubstring)
-    (oset loc lastanswer ans)
+  (let ((ans (ede-locate-file-in-project-impl loc filesubstring)))
+    (setf (oref loc file) filesubstring)
+    (setf (oref loc lastanswer) ans)
     ans))
 
 (cl-defmethod ede-locate-file-in-project-impl ((loc ede-locate-base)
diff --git a/lisp/cedet/ede/proj-info.el b/lisp/cedet/ede/proj-info.el
index ee41d0cc01..5a2d7911ed 100644
--- a/lisp/cedet/ede/proj-info.el
+++ b/lisp/cedet/ede/proj-info.el
@@ -157,7 +157,7 @@ object-write
 	 nil
        ;; Make sure that MM is first in the list of items.
        (setq nl (cons mm (delq mm s)))
-       (oset this source nl)))
+       (setf (oref this source) nl)))
    (cl-call-next-method))
 
 (cl-defmethod ede-documentation ((this ede-proj-target-makefile-info))
diff --git a/lisp/cedet/ede/proj.el b/lisp/cedet/ede/proj.el
index a6d47e373f..dc6988b473 100644
--- a/lisp/cedet/ede/proj.el
+++ b/lisp/cedet/ede/proj.el
@@ -301,8 +301,8 @@ ede-proj-load
 	  (subdirs (directory-files project nil "[^.].*" nil)))
       (if (not (object-of-class-p ret 'ede-proj-project))
 	  (error "Corrupt project file"))
-      (oset ret directory project)
-      (oset ret rootproject rootproj)
+      (setf (oref ret directory) project)
+      (setf (oref ret rootproject) rootproj)
 
       ;; Load the project file of each subdirectory containing a
       ;; loadable Project.ede.
@@ -311,7 +311,7 @@ ede-proj-load
 		   (expand-file-name (car subdirs) project))))
 	  (if (and (file-directory-p sd)
 		   (file-exists-p (expand-file-name "Project.ede" sd)))
-	      (oset ret subproj
+              (setf (oref ret subproj)
 		    (cons (ede-proj-load sd (or rootproj ret))
 			  (oref ret subproj))))
 	  (setq subdirs (cdr subdirs))))
@@ -327,7 +327,7 @@ ede-proj-save
 	    (slot-makeunbound project :directory)
 	    (eieio-persistent-save project))
 	;; Restore the directory slot
- 	(oset project directory cdir))) ))
+        (setf (oref project directory) cdir)))))
 
 (cl-defmethod ede-commit-local-variables ((proj ede-proj-project))
   "Commit change to local variables in PROJ."
@@ -400,7 +400,7 @@ project-new-target
 	      (setq ede-object ot)
 	      (ede-apply-object-keymap)))
     ;; Add it to the project object
-    ;;(oset this targets (cons ot (oref this targets)))
+    ;; (setf (oref this targets) (cons ot (oref this targets)))
     ;; New form: Add to the end using fancy eieio function.
     ;; @todone - Some targets probably want to be in the front.
     ;;           How to do that?
@@ -436,7 +436,7 @@ project-delete-target
       (setq ts (cdr ts)))
     ;; Remove THIS from its parent.
     ;; The two vectors should be pointer equivalent.
-    (oset p targets (delq this (oref p targets)))
+    (setf (oref p targets) (delq this (oref p targets)))
     (ede-proj-save (ede-current-project))))
 
 (cl-defmethod project-add-file ((this ede-proj-target) file)
diff --git a/lisp/cedet/ede/project-am.el b/lisp/cedet/ede/project-am.el
index 61dc8a1fc6..b9dbf1382c 100644
--- a/lisp/cedet/ede/project-am.el
+++ b/lisp/cedet/ede/project-am.el
@@ -491,8 +491,8 @@ project-am-load-makefile
 		    :version ver
 		    :mailinglist (or bug "")
 		    :file fn)))
-	(oset ampf directory (file-name-directory fn))
-	(oset ampf configureoutputfiles cof)
+        (setf (oref ampf directory) (file-name-directory fn))
+        (setf (oref ampf configureoutputfiles) cof)
 	(make-local-variable 'ede-object)
 	(setq ede-object ampf)
 	;; Move the rescan after we set ede-object to prevent recursion
@@ -637,20 +637,20 @@ project-rescan
 	   (ntargets (project-am-scan-for-targets this dir))
 	   )
       (if suggestedname
-	  (oset this name (project-am-last-dir suggestedname))
+          (setf (oref this name) (project-am-last-dir suggestedname))
 	;; Else, setup toplevel project info.
 	(and pn (string= (directory-file-name
 			  (oref this directory))
 			 (directory-file-name
 			  (project-am-find-topmost-level
 			   (oref this directory))))
-	     (oset this name pn)
-	     (and pv (oset this version pv))
-	     (and bug (oset this mailinglist bug))
-	     (oset this configureoutputfiles cof)))
+             (setf (oref this name) pn)
+             (and pv (setf (oref this version) pv))
+             (and bug (setf (oref this mailinglist) bug))
+             (setf (oref this configureoutputfiles) cof)))
       ;; Now that we have this new list, chuck the old targets
       ;; and replace it with the new list of targets I just created.
-      (oset this targets (nreverse ntargets))
+      (setf (oref this targets) (nreverse ntargets))
       ;; We still have a list of targets.  For all buffers, make sure
       ;; their object still exists!
       ;; FIGURE THIS OUT
@@ -687,49 +687,49 @@ project-rescan
 		    (setq nsubproj (cons tmp nsubproj)))))
 	      )
 	    (nreverse csubprojexpanded))
-      (oset this subproj nsubproj)
+      (setf (oref this subproj) nsubproj)
       ;; All elements should be updated now.
       )))
 
 
 (cl-defmethod project-rescan ((this project-am-program))
   "Rescan object THIS."
-  (oset this source (makefile-macro-file-list (project-am-macro this)))
+  (setf (oref this source) (makefile-macro-file-list (project-am-macro this)))
   (unless (oref this source)
-    (oset this source (list (concat (oref this name) ".c"))))
-  (oset this ldadd (makefile-macro-file-list
-		    (concat (oref this name) "_LDADD"))))
+    (setf (oref this source) (list (concat (oref this name) ".c"))))
+  (setf (oref this ldadd)
+        (makefile-macro-file-list (concat (oref this name) "_LDADD"))))
 
 (cl-defmethod project-rescan ((this project-am-lib))
   "Rescan object THIS."
-  (oset this source (makefile-macro-file-list (project-am-macro this)))
+  (setf (oref this source) (makefile-macro-file-list (project-am-macro this)))
   (unless (oref this source)
-    (oset this source (list (concat (file-name-sans-extension
-                                     (oref this name)) ".c")))))
+    (setf (oref this source)
+          (list (concat (file-name-sans-extension (oref this name)) ".c")))))
 
 (cl-defmethod project-rescan ((this project-am-texinfo))
   "Rescan object THIS."
-  (oset this include (makefile-macro-file-list (project-am-macro this))))
+  (setf (oref this include) (makefile-macro-file-list (project-am-macro this))))
 
 (cl-defmethod project-rescan ((this project-am-man))
   "Rescan object THIS."
-  (oset this source (makefile-macro-file-list (project-am-macro this))))
+  (setf (oref this source) (makefile-macro-file-list (project-am-macro this))))
 
 (cl-defmethod project-rescan ((this project-am-lisp))
   "Rescan the lisp sources."
-  (oset this source (makefile-macro-file-list (project-am-macro this))))
+  (setf (oref this source) (makefile-macro-file-list (project-am-macro this))))
 
 (cl-defmethod project-rescan ((this project-am-header))
   "Rescan the Header sources for object THIS."
-  (oset this source (makefile-macro-file-list (project-am-macro this))))
+  (setf (oref this source) (makefile-macro-file-list (project-am-macro this))))
 
 (cl-defmethod project-rescan ((this project-am-built-src))
   "Rescan built sources for object THIS."
-  (oset this source (makefile-macro-file-list "BUILT_SOURCES")))
+  (setf (oref this source) (makefile-macro-file-list "BUILT_SOURCES")))
 
 (cl-defmethod project-rescan ((this project-am-extra-dist))
   "Rescan object THIS."
-  (oset this source (makefile-macro-file-list "EXTRA_DIST")))
+  (setf (oref this source) (makefile-macro-file-list "EXTRA_DIST")))
 
 (cl-defmethod project-am-macro ((this project-am-objectcode))
   "Return the default macro to `edit' for this object type."
diff --git a/lisp/cedet/ede/simple.el b/lisp/cedet/ede/simple.el
index b1cfd6523f..3883f00856 100644
--- a/lisp/cedet/ede/simple.el
+++ b/lisp/cedet/ede/simple.el
@@ -86,8 +86,7 @@ ede-simple-load
 	(obj nil))
     (when pf
       (setq obj (eieio-persistent-read pf))
-      (oset obj :directory dir)
-      )
+      (setf (oref obj :directory) dir))
     obj))
 
 (defclass ede-simple-target (ede-target)
diff --git a/lisp/cedet/ede/util.el b/lisp/cedet/ede/util.el
index c6da1862ff..5559286028 100644
--- a/lisp/cedet/ede/util.el
+++ b/lisp/cedet/ede/util.el
@@ -42,7 +42,7 @@ ede-update-version
   (let ((ede-object (ede-toplevel)))
     ;; Don't update anything if there was no change.
     (unless (string= (oref ede-object version) newversion)
-      (oset ede-object version newversion)
+      (setf (oref ede-object version) newversion)
       (project-update-version ede-object)
       (ede-update-version-in-source ede-object newversion))))
 
diff --git a/lisp/cedet/semantic/analyze.el b/lisp/cedet/semantic/analyze.el
index cafdc3bee1..29d9304808 100644
--- a/lisp/cedet/semantic/analyze.el
+++ b/lisp/cedet/semantic/analyze.el
@@ -344,8 +344,7 @@ semantic-analyze-find-tag-sequence-default
 	  (let ((rawscope
 		 (apply 'append
 			(mapcar 'semantic-tag-type-members tagtype))))
-	    (oset miniscope fullscope rawscope)))
-	)
+            (setf (oref miniscope fullscope) rawscope))))
       (setq s (cdr s)))
 
     (if typereturn (set typereturn (nreverse tagtype)))
diff --git a/lisp/cedet/semantic/bovine/c.el b/lisp/cedet/semantic/bovine/c.el
index 358829a456..c50a96d61c 100644
--- a/lisp/cedet/semantic/bovine/c.el
+++ b/lisp/cedet/semantic/bovine/c.el
@@ -1257,7 +1257,7 @@ semantic-analyze-tag-references
 	;; It found nothing or only itself - not good enough.  As a
 	;; last resort, let's remove all namespaces from the scope and
 	;; search again.
-	(oset scope parents
+        (setf (oref scope parents)
 	      (let ((parents (oref scope parents))
 		    newparents)
 		(dolist (cur parents)
@@ -1993,9 +1993,9 @@ semanticdb-find-table-for-include
 	;; Create new semantic-table for the wrapped tags, since we don't want
 	;; the namespace to actually be a part of the header file.
 	(setq newtable (semanticdb-table))
-	(oset newtable tags newtags)
-	(oset newtable parent-db (oref inctable parent-db))
-	(oset newtable file (oref inctable file)))
+        (setf (oref newtable tags) newtags)
+        (setf (oref newtable parent-db) (oref inctable parent-db))
+        (setf (oref newtable file) (oref inctable file)))
       newtable)))
 
 
diff --git a/lisp/cedet/semantic/complete.el b/lisp/cedet/semantic/complete.el
index 7abc4360f6..68b8f74d39 100644
--- a/lisp/cedet/semantic/complete.el
+++ b/lisp/cedet/semantic/complete.el
@@ -934,7 +934,7 @@ semantic-collector-calculate-completions-raw
   "calculate the completions for prefix from completionlist."
   ;; if there are no completions yet, calculate them.
   (if (not (slot-boundp obj 'first-pass-completions))
-      (oset obj first-pass-completions
+      (setf (oref obj first-pass-completions)
 	    (semantic-analyze-possible-completions (oref obj context))))
   ;; search our cached completion list.  make it look like a semanticdb
   ;; results type.
@@ -1032,7 +1032,7 @@ semantic-collector-calculate-completions
 		 (let ((context (semantic-analyze-current-context (point))))
 		   ;; Set new context and make first-pass-completions
 		   ;; unbound so that they are newly calculated.
-		   (oset obj context context)
+                   (setf (oref obj context) context)
 		   (when (slot-boundp obj 'first-pass-completions)
 		     (slot-makeunbound obj 'first-pass-completions)))
 		 nil)))
@@ -1047,23 +1047,23 @@ semantic-collector-calculate-completions
     ;;(semanticdb-find-result-test answer)
     (when (not same-prefix-p)
       ;; Save results if it is interesting and beneficial
-      (oset obj last-prefix prefix)
-      (oset obj last-all-completions answer))
+      (setf (oref obj last-prefix) prefix)
+      (setf (oref obj last-all-completions) answer))
     ;; Now calculate the completion.
     (setq completion (try-completion
 		      prefix
 		      (semanticdb-strip-find-results answer)))
-    (oset obj last-whitespace-completion nil)
-    (oset obj current-exact-match nil)
+    (setf (oref obj last-whitespace-completion) nil)
+    (setf (oref obj current-exact-match) nil)
     ;; Only do this if a completion was found.  Letting a nil in
     ;; could cause a full semanticdb search by accident.
     (when completion
-      (oset obj last-completion
+      (setf (oref obj last-completion)
 	    (cond
 	     ;; Unique match in AC.  Last completion is a match.
 	     ;; Also set the current-exact-match.
 	     ((eq completion t)
-	      (oset obj current-exact-match answer)
+              (setf (oref obj current-exact-match) answer)
 	      prefix)
 	     ;; It may be complete (a symbol) but still not unique.
 	     ;; We can capture a match
@@ -1071,10 +1071,9 @@ semantic-collector-calculate-completions
 		    (semanticdb-find-tags-by-name
 		     prefix
 		     answer))
-	      (oset obj current-exact-match
+              (setf (oref obj current-exact-match)
 		    complete-not-uniq)
-	      prefix
-	      )
+              prefix)
 	     ;; Non unique match, return the string that handles
 	     ;; completion
 	     (t (or completion prefix))
@@ -1107,10 +1106,9 @@ semantic-collector-try-completion-whitespace
 	  (when (and twws (car-safe twws))
 	    ;; If COMPARE has succeeded, then we should take the very
 	    ;; first match, and extend prefix by one character.
-	    (oset obj last-whitespace-completion
+            (setf (oref obj last-whitespace-completion)
 		  (substring (semantic-tag-name (car twws))
-			     0 cutlen))))
-      )))
+                             0 cutlen)))))))
 
 
 (cl-defmethod semantic-collector-current-exact-match ((obj semantic-collector-abstract))
@@ -1161,12 +1159,11 @@ semantic-collector-calculate-cache
 
 (cl-defmethod semantic-collector-flush ((this semantic-collector-abstract))
   "Flush THIS collector object, clearing any caches and prefix."
-  (oset this cache nil)
+  (setf (oref this cache) nil)
   (slot-makeunbound this 'last-prefix)
   (slot-makeunbound this 'last-completion)
   (slot-makeunbound this 'last-all-completions)
-  (slot-makeunbound this 'current-exact-match)
-  )
+  (slot-makeunbound this 'current-exact-match))
 
 ;;; PER BUFFER
 ;;
@@ -1220,7 +1217,7 @@ semantic-collector-calculate-cache
   ((obj semantic-collector-buffer-deep))
   "Calculate the completion cache for OBJ.
 Uses `semantic-flatten-tags-table'."
-  (oset obj cache
+  (setf (oref obj cache)
 	;; Must create it in SEMANTICDB find format.
 	;; ( ( DBTABLE TAG TAG ... ) ... )
 	(list
@@ -1277,7 +1274,7 @@ semantic-collector-calculate-completions-raw
   ((obj semantic-collector-local-members) prefix completionlist)
   "Calculate the completions for prefix from completionlist."
   (let* ((scope (or (oref obj scope)
-		    (oset obj scope (semantic-calculate-scope))))
+                    (setf (oref obj scope) (semantic-calculate-scope))))
 	 (localstuff (oref scope scope)))
     (list
      (cons
@@ -1344,8 +1341,8 @@ 'semantic-displayor-set-completions
 (cl-defmethod semantic-displayer-set-completions ((obj semantic-displayer-abstract)
 					       table prefix)
   "Set the list of tags to be completed over to TABLE."
-  (oset obj table table)
-  (oset obj last-prefix prefix))
+  (setf (oref obj table) table)
+  (setf (oref obj last-prefix) prefix))
 
 (define-obsolete-function-alias 'semantic-displayor-show-request
   #'semantic-displayer-show-request "27.1")
@@ -1467,10 +1464,8 @@ semantic-displayer-focus-previous
     (with-slots (table) obj
       (if (or (not (slot-boundp obj 'focus))
 	      (<= (oref obj focus) 0))
-	  (oset obj focus (1- (semanticdb-find-result-length table)))
-	(oset obj focus (1- (oref obj focus)))
-	)
-      )))
+          (setf (oref obj focus) (1- (semanticdb-find-result-length table)))
+        (setf (oref obj focus) (1- (oref obj focus)))))))
 
 (define-obsolete-function-alias 'semantic-displayor-focus-next
   #'semantic-displayer-focus-next "27.1")
@@ -1480,12 +1475,10 @@ semantic-displayer-focus-next
   (when (and (slot-boundp obj 'table) (oref obj table))
     (with-slots (table) obj
       (if (not (slot-boundp obj 'focus))
-	  (oset obj focus 0)
-	(oset obj focus (1+ (oref obj focus)))
-	)
+          (setf (oref obj focus) 0)
+        (setf (oref obj focus) (1+ (oref obj focus))))
       (if (<= (semanticdb-find-result-length table) (oref obj focus))
-	  (oset obj focus 0))
-      )))
+          (setf (oref obj focus) 0)))))
 
 (define-obsolete-function-alias 'semantic-displayor-focus-tag
   #'semantic-displayer-focus-tag "27.1")
@@ -1690,13 +1683,13 @@ semantic-displayer-show-request
       ;; Keep a count of the consecutive completion commands entered by the user.
       (if (and (stringp (this-command-keys))
 	       (string= (this-command-keys) "\C-i"))
-	  (oset obj typing-count (1+ (oref obj typing-count)))
-	(oset obj typing-count 0))
+          (setf (oref obj typing-count) (1+ (oref obj typing-count)))
+        (setf (oref obj typing-count) 0))
       (cond
        ((eq mode 'quiet)
 	;; Switch back to standard mode if user presses key more than 5 times.
 	(when (>= (oref obj typing-count) 5)
-	  (oset obj mode 'standard)
+          (setf (oref obj mode) 'standard)
 	  (setq mode 'standard)
 	  (message "Resetting inline-mode to `standard'."))
 	(when (and (> numcompl max-tags)
@@ -1705,10 +1698,10 @@ semantic-displayer-show-request
 	  (setq msg "...")))
        ((eq mode 'verbose)
 	;; Always show extended match set.
-	(oset obj max-tags-initial semantic-displayer-tooltip-max-tags)
+        (setf (oref obj max-tags-initial) semantic-displayer-tooltip-max-tags)
 	(setq max-tags semantic-displayer-tooltip-max-tags)))
       (unless msg
-	(oset obj shown t)
+        (setf (oref obj shown) t)
 	(cond
 	 ((> numcompl max-tags)
 	  ;; We have too many items, be brave and truncate 'completions'.
@@ -1726,7 +1719,7 @@ semantic-displayer-show-request
 	  (when (string= matchtxt (semantic-tag-name (car table)))
 	    (setq msg "[COMPLETE]\n")))
 	 ((zerop numcompl)
-	  (oset obj shown nil)
+          (setf (oref obj shown) nil)
 	  ;; No matches, say so if in verbose mode!
 	  (when semantic-idle-scheduler-verbose-flag
 	    (setq msg "[NO MATCH]"))))
@@ -1781,9 +1774,8 @@ 'semantic-displayor-scroll-request
 (cl-defmethod semantic-displayer-scroll-request ((obj semantic-displayer-tooltip))
   "A request to for the displayer to scroll the completion list (if needed)."
   ;; Do scrolling in the tooltip.
-  (oset obj max-tags-initial 30)
-  (semantic-displayer-show-request obj)
-  )
+  (setf (oref obj max-tags-initial) 30)
+  (semantic-displayer-show-request obj))
 
 ;; End code contributed by Masatake YAMATO <yamato@redhat.com>
 
@@ -1843,7 +1835,7 @@ semantic-displayer-show-request
   "A request to show the current tags table."
 ;  (if (oref obj first-show)
 ;      (progn
-;	(oset obj first-show nil)
+;       (setf (oref obj first-show) nil)
 	(semantic-displayer-focus-next obj)
 	(semantic-displayer-focus-request obj)
 ;	)
@@ -1871,7 +1863,7 @@ semantic-displayer-focus-request
       ;; inline text.
       (when (or (not (slot-boundp obj 'ghostoverlay))
 		(not (overlay-buffer (oref obj ghostoverlay))))
-	(oset obj ghostoverlay
+        (setf (oref obj ghostoverlay)
 	      (make-overlay (point) (1+ (point)) (current-buffer) t)))
 
       (let* ((lp (semantic-completion-text))
diff --git a/lisp/cedet/semantic/db-ebrowse.el b/lisp/cedet/semantic/db-ebrowse.el
index d63e5bc486..eb7ef879d1 100644
--- a/lisp/cedet/semantic/db-ebrowse.el
+++ b/lisp/cedet/semantic/db-ebrowse.el
@@ -313,11 +313,11 @@ semanticdb-create-database
 		  directory
 		  :ebrowse-struct ebd
 		  ))
-	(oset db reference-directory directory))
+        (setf (oref db reference-directory) directory))
 
       ;; Once we recycle or make a new DB, refresh the
       ;; contents from the BROWSE file.
-      (oset db tables nil)
+      (setf (oref db tables) nil)
       ;; only possible after object creation, tables inited to nil.
       (semanticdb-ebrowse-strip-trees db dat)
 
@@ -436,8 +436,7 @@ semanticdb-ebrowse-add-tree-to-table
 	(setq nst (semantic-find-first-tag-by-name (car ns) taglst))
 	(when (not nst)
 	  (setq nst (semantic-tag (car ns) 'type :type "namespace"))
-	  (oset tab tags (cons nst taglst))
-	  )))
+          (setf (oref tab tags) (cons nst taglst)))))
 
     ;; 3 - Create a proxy tg.
     (setq cls (semantic-tag (ebrowse-cs-name class)
@@ -456,8 +455,9 @@ semanticdb-ebrowse-add-tree-to-table
     (if nst
 	(semantic-tag-put-attribute
 	 nst :members (cons cls (semantic-tag-get-attribute nst :members)))
-      (oset tab tags (cons cls (when (slot-boundp tab 'tags)
-				 (oref tab tags)))))
+      (setf (oref tab tags)
+            (cons cls (and (slot-boundp tab 'tags)
+                           (oref tab tags)))))
 
     ;; 5 - Subclasses
     (let* ((subclass (ebrowse-ts-subclasses tree))
diff --git a/lisp/cedet/semantic/db-el.el b/lisp/cedet/semantic/db-el.el
index 1706988c23..5f2b48a0d0 100644
--- a/lisp/cedet/semantic/db-el.el
+++ b/lisp/cedet/semantic/db-el.el
@@ -105,10 +105,9 @@ semanticdb-get-database-tables
   ;; The table can then answer file name type questions.
   (when (not (slot-boundp obj 'tables))
     (let ((newtable (make-instance 'semanticdb-table-emacs-lisp)))
-      (oset obj tables (list newtable))
-      (oset newtable parent-db obj)
-      (oset newtable tags nil)
-      ))
+      (setf (oref obj tables) (list newtable))
+      (setf (oref newtable parent-db) obj)
+      (setf (oref newtable tags) nil)))
   (cl-call-next-method))
 
 (cl-defmethod semanticdb-file-table ((obj semanticdb-project-database-emacs-lisp) _filename)
diff --git a/lisp/cedet/semantic/db-file.el b/lisp/cedet/semantic/db-file.el
index 9628748710..36bbd9d82b 100644
--- a/lisp/cedet/semantic/db-file.el
+++ b/lisp/cedet/semantic/db-file.el
@@ -149,7 +149,7 @@ semanticdb-create-database
 		:semanticdb-version semanticdb-file-version)))
     ;; Set this up here.   We can't put it in the constructor because it
     ;; would be saved, and we want DB files to be portable.
-    (oset db reference-directory directory)
+    (setf (oref db reference-directory) directory)
     db))
 
 ;;; File IO
@@ -167,7 +167,7 @@ semanticdb-load-database
 	     )
 	;; Restore the parent-db connection
 	(while c
-	  (oset (car c) parent-db r)
+          (setf (oref (car c) parent-db) r)
 	  (setq c (cdr c)))
 	(unless (and (equal semanticdb-file-version fv)
 		     (equal semantic-tag-version tv))
@@ -178,7 +178,7 @@ semanticdb-load-database
 		;; Incompatible version.  Flush tables.
 		(semanticdb-flush-database-tables r)
 		;; Reset the version to new version.
-		(oset r semantic-tag-version semantic-tag-version)
+                (setf (oref r semantic-tag-version) semantic-tag-version)
 		;; Warn user
 		(message "Semanticdb file is old.  Starting over for %s"
 			 filename))
@@ -296,20 +296,17 @@ object-write
                      semantic-show-unmatched-syntax-mode)
             ;; Only do this if the user runs unmatched syntax
             ;; mode display entries.
-            (oset obj unmatched-syntax
-                  (semantic-show-unmatched-lex-tokens-fetch))
-            )
+            (setf (oref obj unmatched-syntax)
+                  (semantic-show-unmatched-lex-tokens-fetch)))
 
           ;; Make sure pointmax is up to date
-          (oset obj pointmax (point-max))
-          )))
+          (setf (oref obj pointmax) (point-max)))))
 
     ;; Make sure that the file size and other attributes are
     ;; up to date.
     (let ((fattr (file-attributes (semanticdb-full-filename obj))))
-      (oset obj fsize (file-attribute-size fattr))
-      (oset obj lastmodtime (file-attribute-modification-time fattr))
-      )
+      (setf (oref obj fsize) (file-attribute-size fattr))
+      (setf (oref obj lastmodtime) (file-attribute-modification-time fattr)))
 
     ;; Do it!
     (condition-case tableerror
@@ -324,8 +321,7 @@ object-write
        (error "%S" (car (cdr tableerror)))))
 
     ;; Clear the dirty bit.
-    (oset obj dirty nil)
-    ))
+    (setf (oref obj dirty) nil)))
 
 ;;; State queries
 ;;
diff --git a/lisp/cedet/semantic/db-find.el b/lisp/cedet/semantic/db-find.el
index 510f931fa9..7f39594e5c 100644
--- a/lisp/cedet/semantic/db-find.el
+++ b/lisp/cedet/semantic/db-find.el
@@ -200,7 +200,7 @@ semantic-reset
   "Reset the object IDX."
   (require 'semantic/scope)
   ;; Clear the include path.
-  (oset idx include-path nil)
+  (setf (oref idx include-path) nil)
   (when (oref idx type-cache)
     (semantic-reset (oref idx type-cache)))
   ;; Clear the scope.  Scope doesn't have the data it needs to track
@@ -412,7 +412,7 @@ semanticdb-find-translate-path-includes-default
 	  (if (semanticdb-find-need-cache-update-p table)
 	      ;; Let's go look up our indices.
 	      (let ((ans (semanticdb-find-translate-path-includes--internal path)))
-		(oset index include-path ans)
+                (setf (oref index include-path) ans)
 		;; Once we have our new indices set up, notify those
 		;; who depend on us if we found something for them to
 		;; depend on.
diff --git a/lisp/cedet/semantic/db-global.el b/lisp/cedet/semantic/db-global.el
index b6f7c2f379..70f308edbb 100644
--- a/lisp/cedet/semantic/db-global.el
+++ b/lisp/cedet/semantic/db-global.el
@@ -139,10 +139,9 @@ semanticdb-get-database-tables
   ;; The table can then answer file name type questions.
   (when (not (slot-boundp obj 'tables))
     (let ((newtable (make-instance 'semanticdb-table-global)))
-      (oset obj tables (list newtable))
-      (oset newtable parent-db obj)
-      (oset newtable tags nil)
-      ))
+      (setf (oref obj tables) (list newtable))
+      (setf (oref newtable parent-db) obj)
+      (setf (oref newtable tags) nil)))
 
   (cl-call-next-method))
 
diff --git a/lisp/cedet/semantic/db-javascript.el b/lisp/cedet/semantic/db-javascript.el
index 098ee0676b..a40235e066 100644
--- a/lisp/cedet/semantic/db-javascript.el
+++ b/lisp/cedet/semantic/db-javascript.el
@@ -122,12 +122,10 @@ semanticdb-get-database-tables
   ;; The table can then answer file name type questions.
   (when (not (slot-boundp obj 'tables))
     (let ((newtable (semanticdb-table-javascript)))
-      (oset obj tables (list newtable))
-      (oset newtable parent-db obj)
-      (oset newtable tags nil)
-      ))
-  (cl-call-next-method)
-  )
+      (setf (oref obj tables) (list newtable))
+      (setf (oref newtable parent-db) obj)
+      (setf (oref newtable tags) nil)))
+  (cl-call-next-method))
 
 (cl-defmethod semanticdb-file-table ((obj semanticdb-project-database-javascript) filename)
   "From OBJ, return FILENAME's associated table object."
diff --git a/lisp/cedet/semantic/db-mode.el b/lisp/cedet/semantic/db-mode.el
index 0ab03ef49e..06d1c4cf6b 100644
--- a/lisp/cedet/semantic/db-mode.el
+++ b/lisp/cedet/semantic/db-mode.el
@@ -101,10 +101,10 @@ semanticdb-semantic-init-hook-fcn
       ;; Get the current DB for this directory
       (setq semanticdb-current-database cdb)
       ;; We set the major mode because we know what it is.
-      (oset ctbl major-mode major-mode)
+      (setf (oref ctbl major-mode) major-mode)
       ;; Local state
       (setq semanticdb-current-table ctbl)
-      (oset ctbl buffer (current-buffer))
+      (setf (oref ctbl buffer) (current-buffer))
         ;; Try to swap in saved tags
       (if (or (not (slot-boundp ctbl 'tags)) (not (oref ctbl tags))
 	      (/= (or (oref ctbl pointmax) 0) (point-max))
@@ -119,8 +119,7 @@ semanticdb-semantic-init-hook-fcn
 	   ;; syntax slot.  If so, just clear the unmatched syntax cache.
 	   (semantic-clear-unmatched-syntax-cache)
 	   ;; Make sure it has a value.
-	   (oset ctbl unmatched-syntax nil)
-	   ))
+           (setf (oref ctbl unmatched-syntax) nil)))
 	;; Keep lexical tables up to date.  Don't load
 	;; semantic-spp if it isn't needed.
 	(let ((lt (oref ctbl lexical-table)))
@@ -132,11 +131,9 @@ semanticdb-semantic-init-hook-fcn
 	;; since this will turn around and re-save those variables.
 	(semantic--set-buffer-cache (oref ctbl tags))
 	;; Don't need it to be dirty.  Set dirty due to hooks from above.
-	(oset ctbl dirty nil) ;; Special case here.
+        (setf (oref ctbl dirty) nil) ;; Special case here.
 	;; Bind into the buffer.
-	(semantic--tag-link-cache-to-buffer)
-	)
-      )))
+        (semantic--tag-link-cache-to-buffer)))))
 
 (defun semanticdb-revert-hook ()
   "Hook run before a revert buffer.
@@ -165,30 +162,27 @@ semanticdb-kill-hook
 	;; If this is the case, don't save anything.
 	(progn
 	  (semantic-clear-toplevel-cache)
-	  (oset semanticdb-current-table pointmax 0)
-	  (oset semanticdb-current-table fsize 0)
-	  (oset semanticdb-current-table lastmodtime nil)
-	  )
+          (setf (oref semanticdb-current-table pointmax) 0)
+          (setf (oref semanticdb-current-table fsize) 0)
+          (setf (oref semanticdb-current-table lastmodtime) nil))
       ;; We have a clean buffer, save it off.
       (condition-case nil
 	  (progn
 	    (semantic--tag-unlink-cache-from-buffer)
 	    ;; Set pointmax only if we had some success in the unlink.
-	    (oset semanticdb-current-table pointmax (point-max))
+            (setf (oref semanticdb-current-table pointmax) (point-max))
 	    (let ((fattr (file-attributes
 			  (semanticdb-full-filename
 			   semanticdb-current-table))))
-	      (oset semanticdb-current-table fsize (file-attribute-size fattr))
-	      (oset semanticdb-current-table lastmodtime
+              (setf (oref semanticdb-current-table fsize)
+                    (file-attribute-size fattr))
+              (setf (oref semanticdb-current-table lastmodtime)
 		    (file-attribute-modification-time fattr))
-	      (oset semanticdb-current-table buffer nil)
-	      ))
+              (setf (oref semanticdb-current-table buffer) nil)))
 	;; If this messes up, just clear the system
 	(error
 	 (semantic-clear-toplevel-cache)
-	 (message "semanticdb: Failed to deoverlay tag cache.")))
-      )
-    ))
+         (message "semanticdb: Failed to deoverlay tag cache."))))))
 
 (defun semanticdb-kill-emacs-hook ()
   "Function called when Emacs is killed.
diff --git a/lisp/cedet/semantic/db-typecache.el b/lisp/cedet/semantic/db-typecache.el
index 09f0e52e44..d0be806954 100644
--- a/lisp/cedet/semantic/db-typecache.el
+++ b/lisp/cedet/semantic/db-typecache.el
@@ -69,34 +69,31 @@ semanticdb-typecache
 
 (cl-defmethod semantic-reset ((tc semanticdb-typecache))
   "Reset the object IDX."
-  (oset tc filestream nil)
-  (oset tc includestream nil)
+  (setf (oref tc filestream) nil)
+  (setf (oref tc includestream) nil)
 
-  (oset tc stream nil)
+  (setf (oref tc stream) nil)
 
   (mapc 'semantic-reset (oref tc dependants))
-  (oset tc dependants nil)
-  )
+  (setf (oref tc dependants) nil))
 
 (cl-defmethod semanticdb-typecache-notify-reset ((tc semanticdb-typecache))
   "Do a reset from a notify from a table we depend on."
-  (oset tc includestream nil)
+  (setf (oref tc includestream) nil)
   (mapc 'semantic-reset (oref tc dependants))
-  (oset tc dependants nil)
-  )
+  (setf (oref tc dependants) nil))
 
 (cl-defmethod semanticdb-partial-synchronize ((tc semanticdb-typecache)
 					   new-tags)
   "Reset the typecache based on a partial reparse."
   (when (semantic-find-tags-by-class 'include new-tags)
-    (oset tc includestream nil)
+    (setf (oref tc includestream) nil)
     (mapc 'semantic-reset (oref tc dependants))
-    (oset tc dependants nil)
-    )
+    (setf (oref tc dependants) nil))
 
   (when (semantic-find-tags-by-class 'type new-tags)
     ;; Reset our index
-    (oset tc filestream nil)
+    (setf (oref tc filestream) nil)
     t ;; Return true, our core file tags have changed in a relevant way.
     )
 
@@ -137,7 +134,7 @@ semanticdb-get-typecache
     (when (not cache)
       ;; The object won't change as we fill it with stuff.
       (setq cache (semanticdb-typecache (semanticdb-full-filename table)))
-      (oset idx type-cache cache))
+      (setf (oref idx type-cache) cache))
 
     cache))
 
@@ -164,8 +161,7 @@ semanticdb-database-typecache
 
 (cl-defmethod semantic-reset ((tc semanticdb-database-typecache))
   "Reset the object IDX."
-  (oset tc stream nil)
-  )
+  (setf (oref tc stream) nil))
 
 (cl-defmethod semanticdb-synchronize ((cache semanticdb-database-typecache)
 				   new-tags)
@@ -332,11 +328,11 @@ semanticdb-typecache-file-tags
 	  (setq tags (semanticdb-typecache-safe-tag-list tags table))
 	  (dolist (T tags)
 	    (push (semanticdb-expand-nested-tag T) exptags))
-	  (oset cache filestream (semanticdb-typecache-merge-streams exptags nil)))))
+          (setf (oref cache filestream)
+                (semanticdb-typecache-merge-streams exptags nil)))))
 
     ;; Return our cache.
-    (oref cache filestream)
-    ))
+    (oref cache filestream)))
 
 (cl-defmethod semanticdb-typecache-include-tags ((table semanticdb-abstract-table))
   "No tags available from non-file based tables."
@@ -374,15 +370,13 @@ semanticdb-typecache-include-tags
 		   ;; only once (in the loop before this one), so this ends
 		   ;; up being super fast as we edit our file.
 		   (copy-sequence
-		    (semanticdb-typecache-file-tags i))))
-	    ))
+                    (semanticdb-typecache-file-tags i))))))
 
 	;; Save...
-	(oset cache includestream incstream)))
+        (setf (oref cache includestream) incstream)))
 
     ;; Return our cache.
-    (oref cache includestream)
-    ))
+    (oref cache includestream)))
 
 \f
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -561,7 +555,7 @@ semanticdb-typecache-for-database
 	       (copy-sequence
 		(semanticdb-typecache-file-tags table))))
 	))
-    (oset cache stream stream)
+    (setf (oref cache stream) stream)
     cache))
 
 (defun semanticdb-typecache-refresh-for-buffer (buffer)
@@ -583,7 +577,7 @@ semanticdb-typecache-complete-flush
   (let* ((path (semanticdb-find-translate-path nil nil)))
     (dolist (P path)
       (condition-case nil
-	  (oset P pointmax nil)
+          (setf (oref P pointmax) nil)
 	;; Pointmax may not exist for all tables discovered in the
 	;; path.
 	(error nil))
@@ -611,7 +605,7 @@ semanticdb-db-typecache-dump
   (require 'data-debug)
   (let* ((tab semanticdb-current-table)
 	 (idx (semanticdb-get-table-index tab))
-	 (junk (oset idx type-cache nil)) ;; flush!
+         (junk (setf (oref idx type-cache) nil)) ;; flush!
 	 (start (current-time))
 	 (tc (semanticdb-typecache-for-database (oref tab parent-db)))
 	 (end (current-time))
diff --git a/lisp/cedet/semantic/debug.el b/lisp/cedet/semantic/debug.el
index eebdd013aa..c0e06695ef 100644
--- a/lisp/cedet/semantic/debug.el
+++ b/lisp/cedet/semantic/debug.el
@@ -120,24 +120,22 @@ semantic-debug-interface
 (cl-defmethod semantic-debug-set-frame ((iface semantic-debug-interface) frame)
   "Set the current frame on IFACE to FRAME."
   (if frame
-      (oset iface current-frame frame)
+      (setf (oref iface current-frame) frame)
     (slot-makeunbound iface 'current-frame)))
 
 (cl-defmethod semantic-debug-set-parser-location ((iface semantic-debug-interface) point)
   "Set the parser location in IFACE to POINT."
   (with-current-buffer (oref iface parser-buffer)
     (if (not (slot-boundp iface 'parser-location))
-	(oset iface parser-location (make-marker)))
-    (move-marker (oref iface parser-location) point))
-  )
+        (setf (oref iface parser-location) (make-marker)))
+    (move-marker (oref iface parser-location) point)))
 
 (cl-defmethod semantic-debug-set-source-location ((iface semantic-debug-interface) point)
   "Set the source location in IFACE to POINT."
   (with-current-buffer (oref iface source-buffer)
     (if (not (slot-boundp iface 'source-location))
-	(oset iface source-location (make-marker)))
-    (move-marker (oref iface source-location) point))
-  )
+        (setf (oref iface source-location) (make-marker)))
+    (move-marker (oref iface source-location) point)))
 
 (cl-defmethod semantic-debug-interface-layout ((iface semantic-debug-interface))
   "Layout windows in the current frame to facilitate debugging."
@@ -229,7 +227,7 @@ semantic-debug-highlight-rule
 (cl-defmethod semantic-debug-unhighlight ((iface semantic-debug-interface))
   "Remove all debugging overlays."
   (mapc #'delete-overlay (oref iface overlays))
-  (oset iface overlays nil))
+  (setf (oref iface overlays) nil))
 
 ;; Call from the parser at a breakpoint
 (defvar semantic-debug-user-command nil
diff --git a/lisp/cedet/semantic/mru-bookmark.el b/lisp/cedet/semantic/mru-bookmark.el
index bd32f98233..f35b6c0493 100644
--- a/lisp/cedet/semantic/mru-bookmark.el
+++ b/lisp/cedet/semantic/mru-bookmark.el
@@ -89,9 +89,9 @@ initialize-instance
   "Initialize the bookmark SBM with details about :tag."
   (condition-case nil
       (save-excursion
-	(oset sbm filename (semantic-tag-file-name (oref sbm tag)))
+        (setf (oref sbm filename) (semantic-tag-file-name (oref sbm tag)))
 	(semantic-go-to-tag (oref sbm tag))
-	(oset sbm parent (semantic-current-tag-parent)))
+        (setf (oref sbm parent) (semantic-current-tag-parent)))
     (error (message "Error bookmarking tag.")))
   )
 
@@ -124,12 +124,10 @@ semantic-mrub-update
       (progn
 	(with-slots (tag offset frequency) sbm
 	  (setq offset (- point (semantic-tag-start tag)))
-	  (setq frequency (1+ frequency))
-	  )
-	(oset sbm reason reason))
+          (setq frequency (1+ frequency)))
+        (setf (oref sbm reason) reason))
     ;; This can fail on XEmacs at miscellaneous times.
-    (error nil))
-  )
+    (error nil)))
 
 (cl-defmethod semantic-mrub-preflush ((sbm semantic-bookmark))
   "Method called on a tag before the current buffer list of tags is flushed.
diff --git a/lisp/cedet/semantic/scope.el b/lisp/cedet/semantic/scope.el
index 7939438b1b..6c0f92e625 100644
--- a/lisp/cedet/semantic/scope.el
+++ b/lisp/cedet/semantic/scope.el
@@ -103,16 +103,15 @@ semantic-scope-cache
 ;;
 (cl-defmethod semantic-reset ((obj semantic-scope-cache))
   "Reset OBJ back to it's empty settings."
-  (oset obj tag nil)
-  (oset obj scopetypes nil)
-  (oset obj parents nil)
-  (oset obj parentinheritance nil)
-  (oset obj scope nil)
-  (oset obj fullscope nil)
-  (oset obj localargs nil)
-  (oset obj localvar nil)
-  (oset obj typescope nil)
-  )
+  (setf (oref obj tag) nil)
+  (setf (oref obj scopetypes) nil)
+  (setf (oref obj parents) nil)
+  (setf (oref obj parentinheritance) nil)
+  (setf (oref obj scope) nil)
+  (setf (oref obj fullscope) nil)
+  (setf (oref obj localargs) nil)
+  (setf (oref obj localvar) nil)
+  (setf (oref obj typescope) nil))
 
 (cl-defmethod semanticdb-synchronize ((cache semantic-scope-cache)
 				   new-tags)
@@ -147,9 +146,8 @@ semantic-scope-set-typecache
   (let ((newts nil)) ;; New Type Scope
     (dolist (onetype types-in-scope)
       (setq newts (append (semantic-tag-type-members onetype)
-			  newts))
-      )
-    (oset cache typescope newts)))
+                          newts)))
+    (setf (oref cache typescope) newts)))
 
 ;;; TAG SCOPES
 ;;
@@ -327,12 +325,11 @@ semantic-analyze-scope-nested-tags-default
 		  (let ((rawscope
 			 (apply 'append
 				(mapcar 'semantic-tag-type-members
-					(cons (car returnlist) scopetypes)
-					)))
-			)
-		    (oset miniscope parents returnlist) ;; Not really accurate, but close
-		    (oset miniscope scope rawscope)
-		    (oset miniscope fullscope rawscope)
+                                        (cons (car returnlist) scopetypes)))))
+                    ;; Not really accurate, but close
+                    (setf (oref miniscope parents) returnlist)
+                    (setf (oref miniscope scope) rawscope)
+                    (setf (oref miniscope fullscope) rawscope)
 		    (setq ptag
 			  (semantic-analyze-find-tag searchnameraw
 						     'type
@@ -368,11 +365,10 @@ semantic-analyze-scope-lineage-tags-default
 Optional SCOPETYPES are additional scoped entities in which our parent might
 be found."
   (let ((lineage nil)
-	(miniscope (semantic-scope-cache))
-	)
-    (oset miniscope parents parents)
-    (oset miniscope scope scopetypes)
-    (oset miniscope fullscope scopetypes)
+        (miniscope (semantic-scope-cache)))
+    (setf (oref miniscope parents) parents)
+    (setf (oref miniscope scope) scopetypes)
+    (setf (oref miniscope fullscope) scopetypes)
 
     (dolist (slp parents)
       (semantic-analyze-scoped-inherited-tag-map
@@ -425,8 +421,8 @@ semantic-analyze-scoped-tags-default
     ;; adding to the scopelist as we go, and using the scopelist
     ;; for additional searching!
     (while typelist2
-      (oset miniscope scope currentscope)
-      (oset miniscope fullscope currentscope)
+      (setf (oref miniscope scope) currentscope)
+      (setf (oref miniscope fullscope) currentscope)
       (setq currentscope (append
 			  (semantic-analyze-scoped-type-parts (car typelist2)
 							      miniscope)
@@ -438,8 +434,8 @@ semantic-analyze-scoped-tags-default
     ;; declared in using statements, or the like.
     ;; Get the PARENTS including nesting scope for this location.
     (while parentlist
-      (oset miniscope scope currentscope)
-      (oset miniscope fullscope currentscope)
+      (setf (oref miniscope scope) currentscope)
+      (setf (oref miniscope fullscope) currentscope)
       (setq currentscope (append
 			  (semantic-analyze-scoped-type-parts (car parentlist)
 							      miniscope)
@@ -646,21 +642,20 @@ semantic-analyze-scoped-inherited-tag-map
 	  ;; that will help in finding the parent.  We don't really need
 	  ;; to do any of the stuff related to variables and what-not.
 	  (setq tmpscope (semantic-scope-cache))
-	  (let* ( ;; Step 1:
+          (let* (;; Step 1:
 		 (scopetypes (cons type (semantic-analyze-scoped-types (point))))
 		 (parents (semantic-analyze-scope-nested-tags (point) scopetypes))
 		 ;;(parentinherited (semantic-analyze-scope-lineage-tags parents scopetypes))
-		 (lscope nil)
-		 )
-	    (oset tmpscope scopetypes scopetypes)
-	    (oset tmpscope parents parents)
-	    ;;(oset tmpscope parentinheritance parentinherited)
+                 (lscope nil))
+            (setf (oref tmpscope scopetypes) scopetypes)
+            (setf (oref tmpscope parents) parents)
+            ;; (setf (oref tmpscope parentinheritance) parentinherited)
 
 	    (when (or scopetypes parents)
 	      (setq lscope (semantic-analyze-scoped-tags scopetypes tmpscope))
-	      (oset tmpscope scope lscope))
-	    (oset tmpscope fullscope (append scopetypes lscope parents))
-	    )))
+              (setf (oref tmpscope scope) lscope))
+            (setf (oref tmpscope fullscope)
+                  (append scopetypes lscope parents)))))
       ;; END creating tmpscope
 
       ;; Look up each parent one at a time.
@@ -715,20 +710,19 @@ semantic-calculate-scope
 	    ;; Even though we can recycle most of the scope, we
 	    ;; need to redo the local variables since those change
 	    ;; as you move about the tag.
-	    (condition-case nil
-		(oset scopecache localvar (semantic-get-all-local-variables))
-	      (error nil))
+            (ignore-errors
+              (setf (oref scopecache localvar)
+                    (semantic-get-all-local-variables)))
 
 	  (let* (;; Step 1:
 		 (scopetypes (semantic-analyze-scoped-types point))
 		 (parents (semantic-analyze-scope-nested-tags point scopetypes))
 		 (parentinherited (semantic-analyze-scope-lineage-tags
-				   parents scopetypes))
-		 )
-	    (oset scopecache tag TAG)
-	    (oset scopecache scopetypes scopetypes)
-	    (oset scopecache parents parents)
-	    (oset scopecache parentinheritance parentinherited)
+                                   parents scopetypes)))
+            (setf (oref scopecache tag) TAG)
+            (setf (oref scopecache scopetypes) scopetypes)
+            (setf (oref scopecache parents) parents)
+            (setf (oref scopecache parentinheritance) parentinherited)
 
 	    (let* (;; Step 2:
 		   (scope (when (or scopetypes parents)
@@ -746,18 +740,17 @@ semantic-calculate-scope
 		(setq parentinherited (semantic-analyze-scope-lineage-tags
 				       parents (append scopetypes scope)))
 		(when parentinherited
-		  (oset scopecache parentinheritance parentinherited)
+                  (setf (oref scopecache parentinheritance) parentinherited)
 		  ;; Try calculating the scope again with the new inherited parent list.
 		  (setq scope (when (or scopetypes parents)
 				(semantic-analyze-scoped-tags scopetypes scopecache))
 			)))
 
 	      ;; Fill out the scope.
-	      (oset scopecache scope scope)
-	      (oset scopecache fullscope (append scopetypes scope parents))
-	      (oset scopecache localargs localargs)
-	      (oset scopecache localvar localvar)
-	      )))
+              (setf (oref scopecache scope) scope)
+              (setf (oref scopecache fullscope) (append scopetypes scope parents))
+              (setf (oref scopecache localargs) localargs)
+              (setf (oref scopecache localvar) localvar))))
 	;; Make sure we become dependent on the typecache.
 	(semanticdb-typecache-add-dependant scopecache)
 	;; Handy debug output.
@@ -815,9 +808,8 @@ semantic-scope-find
 
 		  (setq namesplit (cdr namesplit)))
 		;; Once done, store the current typecache lookup
-		(oset scope typescope
-		      (append typescoperaw (oref scope typescope)))
-		)))
+                (setf (oref scope typescope)
+                      (append typescoperaw (oref scope typescope))))))
 	  ;; Return it.
 	  ans)
       ;; Not a real scope.  Our scope calculation analyze parts of
diff --git a/lisp/cedet/semantic/symref.el b/lisp/cedet/semantic/symref.el
index 6bdec71745..046320817d 100644
--- a/lisp/cedet/semantic/symref.el
+++ b/lisp/cedet/semantic/symref.el
@@ -407,9 +407,7 @@ semantic-symref-result-get-files
 	;; grouped together.
 	(when (not (string= F (car ans)))
 	  (setq ans (cons F ans))))
-      (oset result hit-files (nreverse ans))
-      )
-    ))
+      (setf (oref result hit-files) (nreverse ans)))))
 
 (defvar semantic-symref-recently-opened-buffers nil
   "List of buffers opened by `semantic-symref-result-get-tags'.")
@@ -468,7 +466,7 @@ semantic-symref-result-get-tags
 	      (semantic--tag-put-property (car out) :hit lines)))
 	  ))
       ;; Out is reversed... twice
-      (oset result hit-tags (nreverse out)))))
+      (setf (oref result hit-tags) (nreverse out)))))
 
 (defun semantic-symref-hit-to-tag-via-db (hit searchtxt searchtype)
   "Convert the symref HIT into a TAG by looking up the tag via a database.
diff --git a/lisp/cedet/srecode/compile.el b/lisp/cedet/srecode/compile.el
index 9f81b2bccc..fea42863bd 100644
--- a/lisp/cedet/srecode/compile.el
+++ b/lisp/cedet/srecode/compile.el
@@ -90,9 +90,8 @@ srecode-flush-active-templates
   (if (oref-default 'srecode-template active)
       (when (y-or-n-p (format "%d active templates.  Flush? "
 			      (length (oref-default 'srecode-template active))))
-	(oset-default 'srecode-template active nil))
-    (message "No active templates to flush."))
-  )
+        (setf (oref-default 'srecode-template active) nil))
+    (message "No active templates to flush.")))
 
 ;;; Inserters
 ;;
@@ -218,8 +217,7 @@ srecode-compile-templates
        ;; CONTEXT tags specify the context all future tags
        ;; belong to.
        ((eq class 'context)
-	(oset STATE context (semantic-tag-name tag))
-	)
+        (setf (oref STATE context) (semantic-tag-name tag)))
 
        ;; PROMPT tags specify prompts for dictionary ? inserters
        ;; which appear in the following templates
@@ -238,11 +236,9 @@ srecode-compile-templates
 	      (cond ((string= name "mode")
 		     (setq mode (intern firstvalue)))
 		    ((string= name "escape_start")
-		     (oset STATE escape_start firstvalue)
-		     )
+                     (setf (oref STATE escape_start) firstvalue))
 		    ((string= name "escape_end")
-		     (oset STATE escape_end firstvalue)
-		     )
+                     (setf (oref STATE escape_end) firstvalue))
 		    ((string= name "application")
 		     (setq application (read firstvalue)))
 		    ((string= name "framework")
@@ -570,9 +566,8 @@ srecode-compile-template-table
 	   (tmpl (oref table templates)))
       ;; Loop over all the templates, and xref.
       (while tmpl
-	(oset (car tmpl) table table)
-	(setq tmpl (cdr tmpl))))
-    ))
+        (setf (oref (car tmpl) table) table)
+        (setq tmpl (cdr tmpl))))))
 
 
 
diff --git a/lisp/cedet/srecode/dictionary.el b/lisp/cedet/srecode/dictionary.el
index 4322b09137..b538dd09c8 100644
--- a/lisp/cedet/srecode/dictionary.el
+++ b/lisp/cedet/srecode/dictionary.el
@@ -141,7 +141,7 @@ initialize-instance
 		   (error "Don't know how to handle variable value %S" nval)))
 	    )
 	  (setq val (cdr val)))
-	(oset this compiled (nreverse comp))))))
+        (setf (oref this compiled) (nreverse comp))))))
 
 ;;; DICTIONARY METHODS
 ;;
diff --git a/lisp/cedet/srecode/extract.el b/lisp/cedet/srecode/extract.el
index 51c5fe4d18..c4a7e03dee 100644
--- a/lisp/cedet/srecode/extract.el
+++ b/lisp/cedet/srecode/extract.el
@@ -57,12 +57,12 @@ srecode-extract-state
 
 (cl-defmethod srecode-extract-state-set ((st srecode-extract-state) ins dict)
   "Set onto the extract state ST a new inserter INS and dictionary DICT."
-  (oset st lastinserter ins)
-  (oset st lastdict dict))
+  (setf (oref st lastinserter) ins)
+  (setf (oref st lastdict) dict))
 
 (cl-defmethod srecode-extract-state-set-anchor ((st srecode-extract-state))
   "Reset the anchor point on extract state ST."
-  (oset st anchor (point)))
+  (setf (oref st anchor) (point)))
 
 (cl-defmethod srecode-extract-state-extract ((st srecode-extract-state)
 					  endpoint)
diff --git a/lisp/cedet/srecode/fields.el b/lisp/cedet/srecode/fields.el
index e46c5820c5..2ace52e005 100644
--- a/lisp/cedet/srecode/fields.el
+++ b/lisp/cedet/srecode/fields.el
@@ -107,10 +107,8 @@ initialize-instance
     (setq olay (make-overlay start end (current-buffer) t nil))
     (overlay-put olay 'srecode-init-only t)
 
-    (oset olaid overlay olay)
-    (cl-call-next-method olaid (nreverse newargs))
-
-    ))
+    (setf (oref olaid overlay) olay)
+    (cl-call-next-method olaid (nreverse newargs))))
 
 (cl-defmethod srecode-overlaid-activate ((olaid srecode-overlaid))
   "Activate the overlaid area."
@@ -125,9 +123,7 @@ srecode-overlaid-activate
 
     (overlay-put ol 'srecode olaid)
 
-    (oset olaid overlay ol)
-
-    ))
+    (setf (oref olaid overlay) ol)))
 
 (cl-defmethod srecode-delete ((olaid srecode-overlaid))
   "Delete the overlay from OLAID."
@@ -196,12 +192,11 @@ initialize-instance
 				&rest args)
   "Initialize IR, capturing the active fields, and creating the overlay."
   ;; Fill in the fields
-  (oset ir fields srecode-field-archive)
+  (setf (oref ir fields) srecode-field-archive)
   (setq srecode-field-archive nil)
 
   ;; Initialize myself first.
-  (cl-call-next-method)
-  )
+  (cl-call-next-method))
 
 (cl-defmethod srecode-overlaid-activate ((ir srecode-template-inserted-region))
   "Activate the template area for IR."
@@ -218,23 +213,21 @@ srecode-overlaid-activate
     (goto-char (overlay-start (oref first overlay))))
 
   ;; Set ourselves up as 'active'
-  (oset ir active-region ir)
+  (setf (oref ir active-region) ir)
 
   ;; Setup the post command hook.
-  (add-hook 'post-command-hook 'srecode-field-post-command t t)
-  )
+  (add-hook 'post-command-hook 'srecode-field-post-command t t))
 
 (cl-defmethod srecode-delete ((ir srecode-template-inserted-region))
   "Call into our base, but also clear out the fields."
   ;; Clear us out of the baseclass.
-  (oset ir active-region nil)
+  (setf (oref ir active-region) nil)
   ;; Clear our fields.
   (mapc 'srecode-delete (oref ir fields))
   ;; Call to our base
   (cl-call-next-method)
   ;; Clear our hook.
-  (remove-hook 'post-command-hook 'srecode-field-post-command t)
-  )
+  (remove-hook 'post-command-hook 'srecode-field-post-command t))
 
 (defsubst srecode-active-template-region ()
   "Return the active region for template fields."
@@ -311,9 +304,7 @@ srecode-overlaid-activate
     (overlay-put tail 'srecode field)
     (overlay-put tail 'keymap srecode-field-keymap)
     (overlay-put tail 'face 'srecode-field-face)
-    (oset field tail tail)
-    )
-  )
+    (setf (oref field tail) tail)))
 
 (cl-defmethod srecode-delete ((olaid srecode-field))
   "Delete our secondary overlay."
diff --git a/lisp/cedet/srecode/insert.el b/lisp/cedet/srecode/insert.el
index c28f7be03a..7fb0edc005 100644
--- a/lisp/cedet/srecode/insert.el
+++ b/lisp/cedet/srecode/insert.el
@@ -140,11 +140,10 @@ srecode-insert-fcn
       (set-buffer standard-output)
       (setq end-mark (point-marker))
       (goto-char  (oref-default 'srecode-template-inserter-point point)))
-    (oset-default 'srecode-template-inserter-point point eieio-unbound)
+    (setf (oref-default 'srecode-template-inserter-point point) eieio-unbound)
 
     ;; Return the end-mark.
-    (or end-mark (point)))
-  )
+    (or end-mark (point))))
 
 (defun srecode--insert-into-buffer (template dictionary)
   "Insert a TEMPLATE with DICTIONARY into a buffer.
@@ -256,11 +255,11 @@ srecode-resolve-argument-list
 ;;
 (cl-defmethod srecode-push ((st srecode-template))
   "Push the srecoder template ST onto the active stack."
-  (oset st active (cons st (oref st active))))
+  (setf (oref st active) (cons st (oref st active))))
 
 (cl-defmethod srecode-pop ((st srecode-template))
   "Pop the srecoder template ST onto the active stack."
-  (oset st active (cdr (oref st active))))
+  (setf (oref st active) (cdr (oref st active))))
 
 (cl-defmethod srecode-peek ((st srecode-template))
   "Fetch the topmost active template record."
@@ -542,16 +541,14 @@ srecode-inserter-apply-state
     (while prompts
       (when (string= (semantic-tag-name (car prompts))
 		     (oref ins object-name))
-	(oset ins prompt
+        (setf (oref ins prompt)
 	      (semantic-tag-get-attribute (car prompts) :text))
-	(oset ins defaultfcn
+        (setf (oref ins defaultfcn)
 	      (semantic-tag-get-attribute (car prompts) :default))
-	(oset ins read-fcn
+        (setf (oref ins read-fcn)
 	      (or (semantic-tag-get-attribute (car prompts) :read)
-		  'read-string))
-	)
-      (setq prompts (cdr prompts)))
-    ))
+                  'read-string)))
+      (setq prompts (cdr prompts)))))
 
 (cl-defmethod srecode-insert-method ((sti srecode-template-inserter-ask)
 				  dictionary)
@@ -771,8 +768,7 @@ srecode-insert-method
       (let ((over (cdr srecode-template-inserter-point-override))
 	    (srecode-template-inserter-point-override nil))
 	(funcall over dictionary))
-    (oset sti point (point-marker))
-    ))
+    (setf (oref sti point) (point-marker))))
 
 (defclass srecode-template-inserter-subtemplate (srecode-template-inserter)
   ()
@@ -857,11 +853,11 @@ srecode-parse-input
 Return the remains of INPUT."
   (let* ((out (srecode-compile-split-code tag input STATE
 					  (oref ins object-name))))
-    (oset ins template (srecode-template
-			(eieio-object-name-string ins)
-			:context nil
-			:args nil
-			:code (cdr out)))
+    (setf (oref ins template)
+          (srecode-template (eieio-object-name-string ins)
+                            :context nil
+                            :args nil
+                            :code (cdr out)))
     (car out)))
 
 (cl-defmethod srecode-dump ((ins srecode-template-inserter-section-start) indent)
@@ -964,7 +960,7 @@ srecode-insert-include-lookup
 	)
 
       ;; Store the found template into this object for later use.
-      (oset sti includedtemplate tmpl))
+      (setf (oref sti includedtemplate) tmpl))
 
     (unless (oref sti includedtemplate)
       ;; @todo - Call into a debugger to help find the template in question.
diff --git a/lisp/cedet/srecode/srt-mode.el b/lisp/cedet/srecode/srt-mode.el
index 4c1e030fce..7097c54e08 100644
--- a/lisp/cedet/srecode/srt-mode.el
+++ b/lisp/cedet/srecode/srt-mode.el
@@ -541,7 +541,7 @@ semantic-analyze-current-context
 	   (scope (semantic-calculate-scope point))
 	   )
 
-      (oset scope fullscope (append (oref scope localvar) globalvar))
+      (setf (oref scope fullscope) (append (oref scope localvar) globalvar))
 
       (when prefix
 	;; First, try to find the variable for the first
diff --git a/lisp/cedet/srecode/table.el b/lisp/cedet/srecode/table.el
index 55093d655c..8e3fd634ac 100644
--- a/lisp/cedet/srecode/table.el
+++ b/lisp/cedet/srecode/table.el
@@ -149,12 +149,12 @@ srecode-get-mode-table
 	      ;; If this is the first, update tables to have
 	      ;; all the mode specific tables in it.
 	      (setq table tmptable)
-	      (oset table tables (oref table modetables)))
+              (setf (oref table tables) (oref table modetables)))
 	  ;; If there already is a table, then reset the tables
 	  ;; slot to include all the tables belonging to this new child node.
-	  (oset table tables (append (oref table modetables)
-				     (oref tmptable modetables)))))
-      )
+          (setf (oref table tables)
+                (append (oref table modetables)
+                        (oref tmptable modetables))))))
     table))
 
 (defun srecode-make-mode-table (mode)
diff --git a/lisp/emacs-lisp/chart.el b/lisp/emacs-lisp/chart.el
index 2321ac1ed5..f1c87c0b00 100644
--- a/lisp/emacs-lisp/chart.el
+++ b/lisp/emacs-lisp/chart.el
@@ -161,8 +161,8 @@ chart-new-buffer
 (cl-defmethod initialize-instance :after ((obj chart) &rest _fields)
   "Initialize the chart OBJ being created with FIELDS.
 Make sure the width/height is correct."
-  (oset obj x-width (- (window-width) 10))
-  (oset obj y-width (- (window-height) 12)))
+  (setf (oref obj x-width) (- (window-width) 10))
+  (setf (oref obj y-width) (- (window-height) 12)))
 
 (defclass chart-axis ()
   ((name :initarg :name
@@ -429,7 +429,7 @@ chart-add-sequence
 					    :name (oref seq name)
 					    :items labels
 					    :chart c))
-		(oset axis items labels)))
+                (setf (oref axis items) labels)))
 	  (let ((range (cons 0 1))
 		(l (oref seq data)))
 	    (if (not axis)
@@ -439,11 +439,12 @@ chart-add-sequence
             (dolist (x l)
               (if (< x (car range)) (setcar range x))
               (if (> x (cdr range)) (setcdr range x)))
-            (oset axis bounds range)))
-	(if (eq axis-label 'x-axis) (oset axis loweredge nil))
-	(eieio-oset c axis-label axis)
-	))
-  (oset c sequences (append (oref c sequences) (list seq))))
+            (setf (oref axis bounds) range)))
+        (when (eq axis-label 'x-axis)
+          (setf (oref axis loweredge) nil))
+        (eieio-oset c axis-label axis)))
+  (setf (oref c sequences)
+        (append (oref c sequences) (list seq))))
 
 ;;; Charting optimizers
 
@@ -473,10 +474,8 @@ chart-sort
 	    (setq s (oref s2 data)))
 	(error "Sorting of chart %s not supported" (eieio-object-name c))))
     (if (eq (oref c direction) 'horizontal)
-	(oset (oref c y-axis) items s)
-      (oset (oref c x-axis) items s)
-	))
-  )
+        (setf (oref (oref c y-axis) items) s)
+      (setf (oref (oref c x-axis) items) s))))
 
 (defun chart-sort-matchlist (namelst numlst pred)
   "Sort NAMELST and NUMLST (both sequence objects) based on predicate PRED.
@@ -501,8 +500,8 @@ chart-sort-matchlist
 	    ulst (cons (cdr (car newlist)) ulst))
       (setq newlist (cdr newlist)))
     ;; 4 - Store them back
-    (oset namelst data (reverse alst))
-    (oset numlst data (reverse ulst))))
+    (setf (oref namelst data) (reverse alst))
+    (setf (oref numlst data) (reverse ulst))))
 
 ;;; Utilities
 
diff --git a/lisp/emacs-lisp/eieio-base.el b/lisp/emacs-lisp/eieio-base.el
index 010a2b673e..722fef08f4 100644
--- a/lisp/emacs-lisp/eieio-base.el
+++ b/lisp/emacs-lisp/eieio-base.el
@@ -76,7 +76,7 @@ clone
         (slot-makeunbound nobj slot)))
     (when params
       (shared-initialize nobj params))
-    (oset nobj parent-instance obj)
+    (setf (oref nobj parent-instance) obj)
     nobj))
 
 (cl-defmethod eieio-instance-inheritor-slot-boundp ((object eieio-instance-inheritor)
@@ -158,7 +158,7 @@ make-instance
   ;; with class allocated slots or default values.
   (let ((old (oref-default class singleton)))
     (if (eq old eieio-unbound)
-	(oset-default class singleton (cl-call-next-method))
+        (setf (oref-default class singleton) (cl-call-next-method))
       old)))
 
 \f
@@ -213,11 +213,9 @@ eieio-persistent-save-interactive
 Query user for file name with PROMPT if THIS does not yet specify
 a file.  Optional argument NAME specifies a default file name."
   (unless (slot-boundp this 'file)
-      (oset this file
-	    (read-file-name prompt nil
-			    (if   name
-				(concat name (oref this extension))
-			      ))))
+    (setf (oref this file)
+          (let ((def (and name (concat name (oref this extension)))))
+            (read-file-name prompt nil def))))
   (oref this file))
 
 (defun eieio-persistent-read (filename &optional class allow-subclass)
@@ -253,7 +251,7 @@ eieio-persistent-read
              "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))
+          (setf (oref ret file) filename))
       (kill-buffer " *tmp eieio read*"))
     ret))
 
diff --git a/lisp/emacs-lisp/eieio-speedbar.el b/lisp/emacs-lisp/eieio-speedbar.el
index 5c6e0e516d..de99a6a278 100644
--- a/lisp/emacs-lisp/eieio-speedbar.el
+++ b/lisp/emacs-lisp/eieio-speedbar.el
@@ -346,14 +346,14 @@ eieio-speedbar-object-expand
 TOKEN is the object.  INDENT is the current indentation level."
   (cond ((string-match "\\+" text)	;we have to expand this file
 	 (speedbar-change-expand-button-char ?-)
-	 (oset token expanded t)
+         (setf (oref token expanded) t)
 	 (speedbar-with-writable
 	   (save-excursion
 	     (end-of-line) (forward-char 1)
 	     (eieio-speedbar-expand token (1+ indent)))))
 	((string-match "-" text)	;we have to contract this node
 	 (speedbar-change-expand-button-char ?+)
-	 (oset token expanded nil)
+         (setf (oref token expanded) nil)
 	 (speedbar-delete-subblock indent))
 	(t (error "Ooops... not sure what to do")))
   (speedbar-center-buffer-smartly))
diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el
index fe2b80be01..03aad4b21a 100644
--- a/lisp/emacs-lisp/eieio.el
+++ b/lisp/emacs-lisp/eieio.el
@@ -658,6 +658,7 @@ object-remove-from-list
 ;; common code between oref and oset, so as to reduce the redundant work done
 ;; in (push foo (oref bar baz)), like we do for the `nth' expander?
 (gv-define-simple-setter eieio-oref eieio-oset)
+(gv-define-simple-setter eieio-oref-default eieio-oset-default)
 
 \f
 ;;;
diff --git a/test/lisp/emacs-lisp/eieio-tests/eieio-test-persist.el b/test/lisp/emacs-lisp/eieio-tests/eieio-test-persist.el
index 6979da8482..610c4f8843 100644
--- a/test/lisp/emacs-lisp/eieio-tests/eieio-test-persist.el
+++ b/test/lisp/emacs-lisp/eieio-tests/eieio-test-persist.el
@@ -115,7 +115,7 @@ eieio-test-persist-simple-1
     (persist-test-save-and-compare persist-simple-1)
 
     ;; When the slot w/out an initarg HAS been changed
-    (oset persist-simple-1 slot3 3)
+    (setf (oref persist-simple-1 slot3) 3)
     (persist-test-save-and-compare persist-simple-1)
     (delete-file (oref persist-simple-1 file))))
 
diff --git a/test/lisp/emacs-lisp/eieio-tests/eieio-tests.el b/test/lisp/emacs-lisp/eieio-tests/eieio-tests.el
index 34c20b2003..4830435c77 100644
--- a/test/lisp/emacs-lisp/eieio-tests/eieio-tests.el
+++ b/test/lisp/emacs-lisp/eieio-tests/eieio-tests.el
@@ -195,7 +195,7 @@ static-method-class-method
   "Test static methods.
 Argument C is the class bound to this static method."
   (if (eieio-object-p c) (setq c (eieio-object-class c)))
-  (oset-default c some-slot value))
+  (setf (oref-default c some-slot) value))
 
 (ert-deftest eieio-test-04-static-method ()
   ;; Call static method on a class and see if it worked
@@ -213,7 +213,8 @@ eieio-test-05-static-method-2
     "Test static methods.
 Argument C is the class bound to this static method."
     (if (eieio-object-p c) (setq c (eieio-object-class c)))
-    (oset-default c some-slot (intern (concat "moose-" (symbol-name value)))))
+    (setf (oref-default c some-slot)
+          (intern (concat "moose-" (symbol-name value)))))
 
   (static-method-class-method 'static-method-class-2 'class)
   (should (eq (oref-default 'static-method-class-2 some-slot) 'moose-class))
@@ -309,8 +310,8 @@ eieio-test-10-multiple-inheritance
 
 (ert-deftest eieio-test-11-self ()
   ;; Try the self referencing test
-  (should (oset eitest-a self eitest-a))
-  (should (oset eitest-ab self eitest-ab)))
+  (should (setf (oref eitest-a self) eitest-a))
+  (should (setf (oref eitest-ab self) eitest-ab)))
 
 
 (defvar class-fun-value-seq '())
@@ -348,15 +349,15 @@ eieio-test-13-init-methods
     (call-next-method)
     (if (/= (oref a test-tag) 1)
 	(error "shared-initialize test failed."))
-    (oset a test-tag 2))
+    (setf (oref a test-tag) 2))
 
   (defmethod shared-initialize ((a class-a) &rest slots)
     "Shared initialize method for class-a."
     (call-next-method)
-    (oset a test-tag 1))
+    (setf (oref a test-tag) 1))
 
   (let ((ca (class-a)))
-    (should-not (/=  (oref ca test-tag) 2))))
+    (should (= (oref ca test-tag) 2))))
 
 \f
 ;;; Perform slot testing
@@ -409,11 +410,11 @@ eieio-test-17-virtual-slot
   (should (= (oref eitest-vsca base-value) 1))
   (should (= (oref eitest-vsca :derived-value) 2))
 
-  (oset eitest-vsca derived-value 3)
+  (setf (oref eitest-vsca derived-value) 3)
   (should (= (oref eitest-vsca base-value) 2))
   (should (= (oref eitest-vsca :derived-value) 3))
 
-  (oset eitest-vsca base-value 3)
+  (setf (oref eitest-vsca base-value) 3)
   (should (= (oref eitest-vsca base-value) 3))
   (should (= (oref eitest-vsca :derived-value) 4))
 
@@ -432,19 +433,19 @@ eieio-test-18-slot-unbound
   (should (eq (oref eitest-a water) 'moose))
 
   ;; Check if oset of unbound works
-  (oset eitest-a water 'moose)
+  (setf (oref eitest-a water) 'moose)
   (should (eq (oref eitest-a water) 'moose))
 
   ;; oref/oref-default comparison
   (should-not (eq (oref eitest-a water) (oref-default eitest-a water)))
 
   ;; oset-default -> oref/oref-default comparison
-  (oset-default (eieio-object-class eitest-a) water 'moose)
+  (setf (oref-default (eieio-object-class eitest-a) water) 'moose)
   (should (eq (oref eitest-a water) (oref-default eitest-a water)))
 
   ;; After setting 'water to 'moose, make sure a new object has
   ;; the right stuff.
-  (oset-default (eieio-object-class eitest-a) water 'penguin)
+  (setf (oref-default (eieio-object-class eitest-a) water) 'penguin)
   (should (eq (oref (class-a) water) 'penguin))
 
   ;; Revert the above
@@ -457,9 +458,12 @@ eieio-test-18-slot-unbound
 (ert-deftest eieio-test-19-slot-type-checking ()
   ;; Slot type checking
   ;; We should not be able to set a string here
-  (should-error (oset eitest-ab water "a string, not a symbol") :type 'invalid-slot-type)
-  (should-error (oset eitest-ab classslot "a string, not a symbol") :type 'invalid-slot-type)
-  (should-error (class-a :water "a string not a symbol") :type 'invalid-slot-type))
+  (should-error (setf (oref eitest-ab water) "a string, not a symbol")
+                :type 'invalid-slot-type)
+  (should-error (setf (oref eitest-ab classslot) "a string, not a symbol")
+                :type 'invalid-slot-type)
+  (should-error (class-a :water "a string not a symbol")
+                :type 'invalid-slot-type))
 
 (ert-deftest eieio-test-20-class-allocated-slots ()
   ;; Test out class allocated slots
@@ -468,7 +472,7 @@ eieio-test-20-class-allocated-slots
 
   ;; Make sure class slots do not track between objects
   (let ((newval 'moose))
-    (oset eitest-aa classslot newval)
+    (setf (oref eitest-aa classslot) newval)
     (should (eq (oref eitest-a classslot) newval))
     (should (eq (oref eitest-aa classslot) newval)))
 
@@ -690,11 +694,11 @@ eitest-II2
 (defvar eitest-II3 nil)
 (ert-deftest eieio-test-29-instance-inheritor ()
   (setq eitest-II1 (II))
-  (oset eitest-II1 slot2 'cat)
+  (setf (oref eitest-II1 slot2) 'cat)
   (setq eitest-II2 (clone eitest-II1 "eitest-II2 Test."))
-  (oset eitest-II2 slot1 'moose)
+  (setf (oref eitest-II2 slot1) 'moose)
   (setq eitest-II3 (clone eitest-II2 "eitest-II3 Test."))
-  (oset eitest-II3 slot3 'penguin)
+  (setf (oref eitest-II3 slot3) 'penguin)
 
   ;; Test that slots are non-initialized slots are unbounded
   (oref eitest-II2 slot1)
@@ -881,7 +885,7 @@ eieio-test-35-named-object
     (should (setq N (NAMED :object-name "Foo")))
     (should (string= "Foo" (oref N object-name)))
     (should-error (oref N missing-slot) :type 'invalid-slot-name)
-    (oset N object-name "NewName")
+    (setf (oref N object-name) "NewName")
     (should (string= "NewName" (oref N object-name)))))
 
 (defclass opt-test1 ()
-- 
2.26.2


[-- Attachment #2: Type: text/plain, Size: 387 bytes --]


monnier@iro.umontreal.ca (Stefan Monnier) writes:

> branch: master
> commit 40149b871889461713dc73634498f9d2150b0249
> Author: Stefan Monnier <monnier@iro.umontreal.ca>
> Commit: Stefan Monnier <monnier@iro.umontreal.ca>
>
>     * lisp/emacs-lisp/eieio.el (oset, oset-default): Mark as obsolete

How's the attached followup cleanup so that 'make bootstrap' is silent
again?

-- 
Basil

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: master 40149b8: * lisp/emacs-lisp/eieio.el (oset, oset-default): Mark as obsolete
  2020-05-05  0:42   ` master 40149b8: * lisp/emacs-lisp/eieio.el (oset, oset-default): Mark as obsolete Basil L. Contovounesios
@ 2020-05-05  2:43     ` Stefan Monnier
  2020-05-05 11:12       ` Basil L. Contovounesios
  0 siblings, 1 reply; 3+ messages in thread
From: Stefan Monnier @ 2020-05-05  2:43 UTC (permalink / raw)
  To: Basil L. Contovounesios; +Cc: emacs-devel

> Subject: [PATCH] Fix obsolete EIEIO uses

Looks good, thank you.

> +** The EIEIO macros 'oset' and 'oset-default' are declared obsolete.
> +Their 'setf'-able counterparts 'oref' and 'oref-default' can be used
> +instead.

We could also mention the properly namespaced `eieio-oset` as an
alternative if a function setter is needed.


        Stefan




^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: master 40149b8: * lisp/emacs-lisp/eieio.el (oset, oset-default): Mark as obsolete
  2020-05-05  2:43     ` Stefan Monnier
@ 2020-05-05 11:12       ` Basil L. Contovounesios
  0 siblings, 0 replies; 3+ messages in thread
From: Basil L. Contovounesios @ 2020-05-05 11:12 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> Subject: [PATCH] Fix obsolete EIEIO uses
>
> Looks good, thank you.
>
>> +** The EIEIO macros 'oset' and 'oset-default' are declared obsolete.
>> +Their 'setf'-able counterparts 'oref' and 'oref-default' can be used
>> +instead.
>
> We could also mention the properly namespaced `eieio-oset` as an
> alternative if a function setter is needed.

Sure, but I'll hold off pushing on account of
https://lists.gnu.org/archive/html/emacs-devel/2020-05/msg00674.html

-- 
Basil



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-05-05 11:12 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20200503220546.4505.39814@vcs0.savannah.gnu.org>
     [not found] ` <20200503220548.6C53420B5B@vcs0.savannah.gnu.org>
2020-05-05  0:42   ` master 40149b8: * lisp/emacs-lisp/eieio.el (oset, oset-default): Mark as obsolete Basil L. Contovounesios
2020-05-05  2:43     ` Stefan Monnier
2020-05-05 11:12       ` Basil L. Contovounesios

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).