Merge CEDET upstream (rev. 8579)
This commit is contained in:
commit
86b192c147
7 changed files with 72 additions and 24 deletions
|
@ -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-29 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* tramp.texi (Frequently Asked Questions): Mention
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.")
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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."
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
(require 'semantic/find)
|
||||
(require 'semantic/dep)
|
||||
(require 'semantic/ctxt)
|
||||
(require 'semantic/format)
|
||||
|
||||
(eval-when-compile
|
||||
(require 'cl))
|
||||
|
|
Loading…
Add table
Reference in a new issue