diff options
| author | David Engster | 2013-07-29 22:28:22 +0200 |
|---|---|---|
| committer | David Engster | 2013-07-29 22:28:22 +0200 |
| commit | 86b192c1479d167c13edb9cdaa026c231c8a0442 (patch) | |
| tree | 11eaea65e24ad6c9fd4db7d1b1c166ac0356bd20 | |
| parent | 218e063750a79e79651eb41f67c0b07209980056 (diff) | |
| parent | 18657165bb88252b8285c4655e907dd4fc29a0f7 (diff) | |
| download | emacs-86b192c1479d167c13edb9cdaa026c231c8a0442.tar.gz emacs-86b192c1479d167c13edb9cdaa026c231c8a0442.zip | |
Merge CEDET upstream (rev. 8579)
| -rw-r--r-- | doc/misc/ChangeLog | 8 | ||||
| -rw-r--r-- | doc/misc/eieio.texi | 58 | ||||
| -rw-r--r-- | lisp/cedet/ChangeLog | 17 | ||||
| -rw-r--r-- | lisp/cedet/cedet.el | 3 | ||||
| -rw-r--r-- | lisp/cedet/semantic/analyze/fcn.el | 5 | ||||
| -rw-r--r-- | lisp/cedet/semantic/decorate/mode.el | 4 | ||||
| -rw-r--r-- | lisp/cedet/semantic/wisent/python.el | 1 |
7 files changed, 72 insertions, 24 deletions
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index b4cd73bda08..b306ce5ba0a 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog | |||
| @@ -1,3 +1,11 @@ | |||
| 1 | 2013-07-29 David Engster <deng@randomsample.de> | ||
| 2 | |||
| 3 | * eieio.texi (top): Make clear that EIEIO is not a full CLOS | ||
| 4 | implementation. | ||
| 5 | (Introduction): Add further missing features. | ||
| 6 | (Building Classes): Add introductory paragraph. | ||
| 7 | (Wish List): Add metaclasses and EQL specialization. | ||
| 8 | |||
| 1 | 2013-07-29 Michael Albinus <michael.albinus@gmx.de> | 9 | 2013-07-29 Michael Albinus <michael.albinus@gmx.de> |
| 2 | 10 | ||
| 3 | * tramp.texi (Frequently Asked Questions): Mention | 11 | * tramp.texi (Frequently Asked Questions): Mention |
diff --git a/doc/misc/eieio.texi b/doc/misc/eieio.texi index b16144e98a2..c8e8fb6d2e2 100644 --- a/doc/misc/eieio.texi +++ b/doc/misc/eieio.texi | |||
| @@ -46,10 +46,10 @@ modify this GNU manual.'' | |||
| 46 | @comment node-name, next, previous, up | 46 | @comment node-name, next, previous, up |
| 47 | @top EIEIO | 47 | @top EIEIO |
| 48 | 48 | ||
| 49 | @eieio{} (``Enhanced Implementation of Emacs Interpreted Objects'') is | 49 | @eieio{} (``Enhanced Implementation of Emacs Interpreted Objects'') |
| 50 | a CLOS (Common Lisp Object System) compatibility layer for Emacs Lisp. | 50 | provides an Object Oriented layer for Emacs Lisp, following the basic |
| 51 | It provides a framework for writing object-oriented applications in | 51 | concepts of the Common Lisp Object System (CLOS). It provides a |
| 52 | Emacs. | 52 | framework for writing object-oriented applications in Emacs. |
| 53 | 53 | ||
| 54 | @ifnottex | 54 | @ifnottex |
| 55 | @insertcopying | 55 | @insertcopying |
| @@ -201,8 +201,6 @@ Byte compilation support of methods. | |||
| 201 | @item | 201 | @item |
| 202 | Help system extensions for classes and methods. | 202 | Help system extensions for classes and methods. |
| 203 | @item | 203 | @item |
| 204 | Automatic texinfo documentation generator. | ||
| 205 | @item | ||
| 206 | Several base classes for interesting tasks. | 204 | Several base classes for interesting tasks. |
| 207 | @item | 205 | @item |
| 208 | Simple test suite. | 206 | Simple test suite. |
| @@ -212,20 +210,31 @@ Public and private classifications for slots (extensions to CLOS) | |||
| 212 | Customization support in a class (extension to CLOS) | 210 | Customization support in a class (extension to CLOS) |
| 213 | @end enumerate | 211 | @end enumerate |
| 214 | 212 | ||
| 215 | Here are some CLOS features that @eieio{} presently lacks: | 213 | Here are some important CLOS features that @eieio{} presently lacks: |
| 216 | 214 | ||
| 217 | @table @asis | 215 | @table @asis |
| 218 | @item Complete @code{defclass} tag support | ||
| 219 | All CLOS tags are currently supported, but the following are not | ||
| 220 | currently implemented correctly: | ||
| 221 | 216 | ||
| 222 | @table @code | 217 | @item Method dispatch |
| 223 | @item :metaclass | 218 | EIEO does not support method dispatch for built-in types and multiple |
| 224 | There is only one base superclass for all @eieio{} classes, which is | 219 | arguments types. In other words, method dispatch only looks at the |
| 225 | the @code{eieio-default-superclass}. | 220 | first argument, and this one must be an @eieio{} type. |
| 226 | @item :default-initargs | 221 | |
| 222 | @item Support for metaclasses | ||
| 223 | There is just one default metaclass, @code{eieio-default-superclass}, | ||
| 224 | and you cannot define your own. The @code{:metaclass} tag in | ||
| 225 | @code{defclass} is ignored. Also, functions like `class-of' and | ||
| 226 | `find-class', which should return instances of the metaclass, behave | ||
| 227 | differently in @eieio{} in that they return symbols or plain structures | ||
| 228 | instead. | ||
| 229 | |||
| 230 | @item EQL specialization | ||
| 231 | EIEIO does not support it. | ||
| 232 | |||
| 233 | @item @code{:around} method tag | ||
| 234 | This CLOS method tag is non-functional. | ||
| 235 | |||
| 236 | @item :default-initargs in @code{defclass} | ||
| 227 | Each slot has an @code{:initarg} tag, so this is not really necessary. | 237 | Each slot has an @code{:initarg} tag, so this is not really necessary. |
| 228 | @end table | ||
| 229 | 238 | ||
| 230 | @item Mock object initializers | 239 | @item Mock object initializers |
| 231 | Each class contains a mock object used for fast initialization of | 240 | 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 | |||
| 233 | values can potentially cause modifications in the mock object. @eieio{} | 242 | values can potentially cause modifications in the mock object. @eieio{} |
| 234 | should use a deep copy but currently does not. | 243 | should use a deep copy but currently does not. |
| 235 | 244 | ||
| 236 | @item @code{:around} method tag | ||
| 237 | This CLOS method tag is non-functional. | ||
| 238 | |||
| 239 | @end table | 245 | @end table |
| 240 | 246 | ||
| 241 | @node Building Classes | 247 | @node Building Classes |
| 242 | @comment node-name, next, previous, up | 248 | @comment node-name, next, previous, up |
| 243 | @chapter Building Classes | 249 | @chapter Building Classes |
| 244 | 250 | ||
| 251 | First off, please note that this manual cannot serve as a complete | ||
| 252 | introduction to object oriented programming and generic functions in | ||
| 253 | LISP. Although EIEIO is not a complete CLOS implementation and also | ||
| 254 | differs from CLOS in several aspects, it follows the same basic | ||
| 255 | concepts. Therefore, it is highly recommended to learn these from a | ||
| 256 | textbook or tutorial first, especially if you only know OOP from | ||
| 257 | languages like C++ or Java. If on the other hand you are already | ||
| 258 | familiar with CLOS, you should be aware that @eieio{} does not implement | ||
| 259 | the full CLOS specificiation and also differs in some other aspects | ||
| 260 | (@xref{Introduction}, and @ref{CLOS compatibility}). | ||
| 261 | |||
| 245 | A @dfn{class} is a definition for organizing data and methods | 262 | A @dfn{class} is a definition for organizing data and methods |
| 246 | together. An @eieio{} class has structures similar to the classes | 263 | together. An @eieio{} class has structures similar to the classes |
| 247 | found in other object-oriented (OO) languages. | 264 | found in other object-oriented (OO) languages. |
| @@ -1930,8 +1947,9 @@ Some important compatibility features that would be good to add are: | |||
| 1930 | 1947 | ||
| 1931 | @enumerate | 1948 | @enumerate |
| 1932 | @item | 1949 | @item |
| 1950 | Support for metaclasses and EQL specialization. | ||
| 1951 | @item | ||
| 1933 | @code{:around} method key. | 1952 | @code{:around} method key. |
| 1934 | |||
| 1935 | @item | 1953 | @item |
| 1936 | Method dispatch for built-in types. | 1954 | Method dispatch for built-in types. |
| 1937 | @item | 1955 | @item |
diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog index 1b8e4725dc1..c39a8a700ef 100644 --- a/lisp/cedet/ChangeLog +++ b/lisp/cedet/ChangeLog | |||
| @@ -1,3 +1,20 @@ | |||
| 1 | 2013-07-29 David Engster <deng@randomsample.de> | ||
| 2 | |||
| 3 | * lisp/cedet/cedet.el (cedet-packages): Remove speedbar since its | ||
| 4 | development does no longer happens in CEDET upstream but in Emacs | ||
| 5 | proper. Also remove cedet-contrib and cogre since those are only | ||
| 6 | in upstream. | ||
| 7 | |||
| 8 | * semantic/analyze/fcn.el (semantic-analyze-type-to-name): If TYPE | ||
| 9 | has a parent, return a fully qualified name. | ||
| 10 | |||
| 11 | * semantic/decorate/mode.el | ||
| 12 | (semantic-decoration-on-includes-p-default) | ||
| 13 | (semantic-decoration-on-includes-highlight-default): Declare for | ||
| 14 | byte compiler. | ||
| 15 | |||
| 16 | * semantic/wisent/python.el (semantic/format): New require. | ||
| 17 | |||
| 1 | 2013-07-27 Eric Ludlam <zappo@gnu.org> | 18 | 2013-07-27 Eric Ludlam <zappo@gnu.org> |
| 2 | 19 | ||
| 3 | * lisp/cedet/semantic/edit.el (semantic-edits-splice-remove): Wrap | 20 | * lisp/cedet/semantic/edit.el (semantic-edits-splice-remove): Wrap |
diff --git a/lisp/cedet/cedet.el b/lisp/cedet/cedet.el index e8720bc6624..f34442996c1 100644 --- a/lisp/cedet/cedet.el +++ b/lisp/cedet/cedet.el | |||
| @@ -46,9 +46,6 @@ | |||
| 46 | (semantic "2.2" nil "semantic/doc") | 46 | (semantic "2.2" nil "semantic/doc") |
| 47 | (srecode "1.2" nil "srecode" ) | 47 | (srecode "1.2" nil "srecode" ) |
| 48 | (ede "1.2" nil "ede" ) | 48 | (ede "1.2" nil "ede" ) |
| 49 | (speedbar "1.0.4" nil "speedbar" ) | ||
| 50 | (cogre "1.2" nil "cogre" ) | ||
| 51 | (cedet-contrib "1.2" "contrib" nil ) | ||
| 52 | ) | 49 | ) |
| 53 | "Table of CEDET packages to install.") | 50 | "Table of CEDET packages to install.") |
| 54 | 51 | ||
diff --git a/lisp/cedet/semantic/analyze/fcn.el b/lisp/cedet/semantic/analyze/fcn.el index 4300c89c9df..7512b7ca15a 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." | |||
| 165 | The TYPE field in a tag can be nil (return nil) | 165 | The TYPE field in a tag can be nil (return nil) |
| 166 | or a string, or a non-positional tag." | 166 | or a string, or a non-positional tag." |
| 167 | (cond ((semantic-tag-p type) | 167 | (cond ((semantic-tag-p type) |
| 168 | (semantic-tag-name type)) | 168 | (if (semantic-tag-named-parent type) |
| 169 | (semantic-analyze-unsplit-name `(,(semantic-tag-named-parent type) | ||
| 170 | ,(semantic-tag-name type))) | ||
| 171 | (semantic-tag-name type))) | ||
| 169 | ((stringp type) | 172 | ((stringp type) |
| 170 | type) | 173 | type) |
| 171 | ((listp type) | 174 | ((listp type) |
diff --git a/lisp/cedet/semantic/decorate/mode.el b/lisp/cedet/semantic/decorate/mode.el index ba06c73936b..cc5e9d9bec2 100644 --- a/lisp/cedet/semantic/decorate/mode.el +++ b/lisp/cedet/semantic/decorate/mode.el | |||
| @@ -541,6 +541,10 @@ Use a primary decoration." | |||
| 541 | 541 | ||
| 542 | ;;; Decoration Modes in other files | 542 | ;;; Decoration Modes in other files |
| 543 | ;; | 543 | ;; |
| 544 | (declare-function semantic-decoration-on-includes-p-default | ||
| 545 | "semantic/decorate/include") | ||
| 546 | (declare-function semantic-decoration-on-includes-highlight-default | ||
| 547 | "semantic/decorate/include") | ||
| 544 | (define-semantic-decoration-style semantic-decoration-on-includes | 548 | (define-semantic-decoration-style semantic-decoration-on-includes |
| 545 | "Highlight class members that are includes. | 549 | "Highlight class members that are includes. |
| 546 | This mode provides a nice context menu on the include statements." | 550 | 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 719868f7635..2c0ed5868ce 100644 --- a/lisp/cedet/semantic/wisent/python.el +++ b/lisp/cedet/semantic/wisent/python.el | |||
| @@ -39,6 +39,7 @@ | |||
| 39 | (require 'semantic/find) | 39 | (require 'semantic/find) |
| 40 | (require 'semantic/dep) | 40 | (require 'semantic/dep) |
| 41 | (require 'semantic/ctxt) | 41 | (require 'semantic/ctxt) |
| 42 | (require 'semantic/format) | ||
| 42 | 43 | ||
| 43 | (eval-when-compile | 44 | (eval-when-compile |
| 44 | (require 'cl)) | 45 | (require 'cl)) |