summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Engster <dengste@eml.cc>2013-07-29 22:26:19 +0200
committerDavid Engster <dengste@eml.cc>2013-07-29 22:26:19 +0200
commit18657165bb88252b8285c4655e907dd4fc29a0f7 (patch)
treef61e2889b255d179d6fc63ce4cb43d21f508750d
parent25ac1ded77db0e0a839841872dbd514c4c14956b (diff)
Merge with CEDET upstream (rev. 8579).
* lisp/cedet/cedet.el (cedet-packages): Remove speedbar since its development does no longer happens in CEDET upstream but in Emacs proper. Also remove cedet-contrib and cogre since those are only in upstream. * semantic/analyze/fcn.el (semantic-analyze-type-to-name): If TYPE has a parent, return a fully qualified name. * semantic/decorate/mode.el (semantic-decoration-on-includes-p-default) (semantic-decoration-on-includes-highlight-default): Declare for byte compiler. * semantic/wisent/python.el (semantic/format): New require. * eieio.texi (top): Make clear that EIEIO is not a full CLOS implementation. (Introduction): Add further missing features. (Building Classes): Add introductory paragraph. (Wish List): Add metaclasses and EQL specialization.
-rw-r--r--doc/misc/ChangeLog8
-rw-r--r--doc/misc/eieio.texi58
-rw-r--r--lisp/cedet/ChangeLog17
-rw-r--r--lisp/cedet/cedet.el3
-rw-r--r--lisp/cedet/semantic/analyze/fcn.el5
-rw-r--r--lisp/cedet/semantic/decorate/mode.el4
-rw-r--r--lisp/cedet/semantic/wisent/python.el1
7 files changed, 72 insertions, 24 deletions
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index 50214bb364..bef3f84c84 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,11 @@
+2013-07-29 David Engster <deng@randomsample.de>
+
+ * eieio.texi (top): Make clear that EIEIO is not a full CLOS
+ implementation.
+ (Introduction): Add further missing features.
+ (Building Classes): Add introductory paragraph.
+ (Wish List): Add metaclasses and EQL specialization.
+
2013-07-26 Tassilo Horn <tsdh@gnu.org>
* gnus.texi (Sorting the Summary Buffer): Document new defcustom
diff --git a/doc/misc/eieio.texi b/doc/misc/eieio.texi
index b16144e98a..c8e8fb6d2e 100644
--- a/doc/misc/eieio.texi
+++ b/doc/misc/eieio.texi
@@ -46,10 +46,10 @@ modify this GNU manual.''
@comment node-name, next, previous, up
@top EIEIO
-@eieio{} (``Enhanced Implementation of Emacs Interpreted Objects'') is
-a CLOS (Common Lisp Object System) compatibility layer for Emacs Lisp.
-It provides a framework for writing object-oriented applications in
-Emacs.
+@eieio{} (``Enhanced Implementation of Emacs Interpreted Objects'')
+provides an Object Oriented layer for Emacs Lisp, following the basic
+concepts of the Common Lisp Object System (CLOS). It provides a
+framework for writing object-oriented applications in Emacs.
@ifnottex
@insertcopying
@@ -201,8 +201,6 @@ Byte compilation support of methods.
@item
Help system extensions for classes and methods.
@item
-Automatic texinfo documentation generator.
-@item
Several base classes for interesting tasks.
@item
Simple test suite.
@@ -212,20 +210,31 @@ Public and private classifications for slots (extensions to CLOS)
Customization support in a class (extension to CLOS)
@end enumerate
-Here are some CLOS features that @eieio{} presently lacks:
+Here are some important CLOS features that @eieio{} presently lacks:
@table @asis
-@item Complete @code{defclass} tag support
-All CLOS tags are currently supported, but the following are not
-currently implemented correctly:
-@table @code
-@item :metaclass
-There is only one base superclass for all @eieio{} classes, which is
-the @code{eieio-default-superclass}.
-@item :default-initargs
+@item Method dispatch
+EIEO does not support method dispatch for built-in types and multiple
+arguments types. In other words, method dispatch only looks at the
+first argument, and this one must be an @eieio{} type.
+
+@item Support for metaclasses
+There is just one default metaclass, @code{eieio-default-superclass},
+and you cannot define your own. The @code{:metaclass} tag in
+@code{defclass} is ignored. Also, functions like `class-of' and
+`find-class', which should return instances of the metaclass, behave
+differently in @eieio{} in that they return symbols or plain structures
+instead.
+
+@item EQL specialization
+EIEIO does not support it.
+
+@item @code{:around} method tag
+This CLOS method tag is non-functional.
+
+@item :default-initargs in @code{defclass}
Each slot has an @code{:initarg} tag, so this is not really necessary.
-@end table
@item Mock object initializers
Each class contains a mock object used for fast initialization of
@@ -233,15 +242,23 @@ instantiated objects. Using functions with side effects on object slot
values can potentially cause modifications in the mock object. @eieio{}
should use a deep copy but currently does not.
-@item @code{:around} method tag
-This CLOS method tag is non-functional.
-
@end table
@node Building Classes
@comment node-name, next, previous, up
@chapter Building Classes
+First off, please note that this manual cannot serve as a complete
+introduction to object oriented programming and generic functions in
+LISP. Although EIEIO is not a complete CLOS implementation and also
+differs from CLOS in several aspects, it follows the same basic
+concepts. Therefore, it is highly recommended to learn these from a
+textbook or tutorial first, especially if you only know OOP from
+languages like C++ or Java. If on the other hand you are already
+familiar with CLOS, you should be aware that @eieio{} does not implement
+the full CLOS specificiation and also differs in some other aspects
+(@xref{Introduction}, and @ref{CLOS compatibility}).
+
A @dfn{class} is a definition for organizing data and methods
together. An @eieio{} class has structures similar to the classes
found in other object-oriented (OO) languages.
@@ -1930,8 +1947,9 @@ Some important compatibility features that would be good to add are:
@enumerate
@item
+Support for metaclasses and EQL specialization.
+@item
@code{:around} method key.
-
@item
Method dispatch for built-in types.
@item
diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog
index 1b8e4725dc..c39a8a700e 100644
--- a/lisp/cedet/ChangeLog
+++ b/lisp/cedet/ChangeLog
@@ -1,3 +1,20 @@
+2013-07-29 David Engster <deng@randomsample.de>
+
+ * lisp/cedet/cedet.el (cedet-packages): Remove speedbar since its
+ development does no longer happens in CEDET upstream but in Emacs
+ proper. Also remove cedet-contrib and cogre since those are only
+ in upstream.
+
+ * semantic/analyze/fcn.el (semantic-analyze-type-to-name): If TYPE
+ has a parent, return a fully qualified name.
+
+ * semantic/decorate/mode.el
+ (semantic-decoration-on-includes-p-default)
+ (semantic-decoration-on-includes-highlight-default): Declare for
+ byte compiler.
+
+ * semantic/wisent/python.el (semantic/format): New require.
+
2013-07-27 Eric Ludlam <zappo@gnu.org>
* lisp/cedet/semantic/edit.el (semantic-edits-splice-remove): Wrap
diff --git a/lisp/cedet/cedet.el b/lisp/cedet/cedet.el
index e8720bc662..f34442996c 100644
--- a/lisp/cedet/cedet.el
+++ b/lisp/cedet/cedet.el
@@ -46,9 +46,6 @@
(semantic "2.2" nil "semantic/doc")
(srecode "1.2" nil "srecode" )
(ede "1.2" nil "ede" )
- (speedbar "1.0.4" nil "speedbar" )
- (cogre "1.2" nil "cogre" )
- (cedet-contrib "1.2" "contrib" nil )
)
"Table of CEDET packages to install.")
diff --git a/lisp/cedet/semantic/analyze/fcn.el b/lisp/cedet/semantic/analyze/fcn.el
index 4300c89c9d..7512b7ca15 100644
--- a/lisp/cedet/semantic/analyze/fcn.el
+++ b/lisp/cedet/semantic/analyze/fcn.el
@@ -165,7 +165,10 @@ SCOPE is the scope object with additional items in which to search for names."
The TYPE field in a tag can be nil (return nil)
or a string, or a non-positional tag."
(cond ((semantic-tag-p type)
- (semantic-tag-name type))
+ (if (semantic-tag-named-parent type)
+ (semantic-analyze-unsplit-name `(,(semantic-tag-named-parent type)
+ ,(semantic-tag-name type)))
+ (semantic-tag-name type)))
((stringp type)
type)
((listp type)
diff --git a/lisp/cedet/semantic/decorate/mode.el b/lisp/cedet/semantic/decorate/mode.el
index ba06c73936..cc5e9d9bec 100644
--- a/lisp/cedet/semantic/decorate/mode.el
+++ b/lisp/cedet/semantic/decorate/mode.el
@@ -541,6 +541,10 @@ Use a primary decoration."
;;; Decoration Modes in other files
;;
+(declare-function semantic-decoration-on-includes-p-default
+ "semantic/decorate/include")
+(declare-function semantic-decoration-on-includes-highlight-default
+ "semantic/decorate/include")
(define-semantic-decoration-style semantic-decoration-on-includes
"Highlight class members that are includes.
This mode provides a nice context menu on the include statements."
diff --git a/lisp/cedet/semantic/wisent/python.el b/lisp/cedet/semantic/wisent/python.el
index 719868f763..2c0ed5868c 100644
--- a/lisp/cedet/semantic/wisent/python.el
+++ b/lisp/cedet/semantic/wisent/python.el
@@ -39,6 +39,7 @@
(require 'semantic/find)
(require 'semantic/dep)
(require 'semantic/ctxt)
+(require 'semantic/format)
(eval-when-compile
(require 'cl))