Thread: Re: [CEDET-devel] Re[1]: Migration in progess... ;-)
Brought to you by:
zappo
From: David P. <dav...@wa...> - 2003-03-31 13:15:28
|
Eric, [...] >>So now, semantic-texi should work again ;-) > > > That's great. I only got one conflict. Which one? Did you fixed it? [...] > Also, I found the old alias for `semantic-nonterminal-children' > doesn't work very well. Here is what I have for this morning in > semantic-tag.el I am confused too by `semantic-tag-components-with-overlays' vs. `semantic-nonterminal-children'. In the old implementation `semantic-nonterminal-children' returned all children regardless of tag having positions. The new implementation changed the behavior, as only tag with positions are returned. Is that your problem? Maybe could we reintroduce the old behavior in `semantic-tag-components'? [...] > Another problem I bumped into is that the `semantic-tag-new-*' macros > don't allow edebug inside. I tried concocting an edebug definition > for it but it didn't work very well. If someone else knows how to do > that, that would be great. Maybe using functions instead of macro could be better? I tried the following code that seems to work well: (defsubst semantic-tag-new-variable (name type default-value &rest attributes) "Create a semantic tag of class variable. NAME is the name of this variable. TYPE is a string or semantic tag representing the type of this variable. DEFAULT-VALUE is a string representing the default value of this variable. ATTRIBUTES is a list of additional attributes belonging to this tag." (apply 'semantic-tag name 'variable :type type :default-value default-value attributes)) (defsubst semantic-tag-new-function (name type arg-list &rest attributes) "Create a semantic tag of class function. NAME is the name of this function. TYPE is a string or semantic tag representing the type of this function. ARG-LIST is a list of strings or semantic tags representing the arguments of this function. ATTRIBUTES is a list of additional attributes belonging to this tag." (apply 'semantic-tag name 'function :type type :arguments arg-list attributes)) (defsubst semantic-tag-new-type (name type members parents &rest attributes) "Create a semantic tag of class type. NAME is the name of this type. TYPE is a string or semantic tag representing the type of this type. MEMBERS is a list of strings or semantic tags representing the elements that make up this type if it is a composite type. PARENTS is a cons cell. (EXPLICIT-PARENTS . INTERFACE-PARENTS) EXPLICIT-PARENTS can be a single string (Just one parent) or a list of parents (in a multiple inheritance situation). It can also be nil. INTERFACE-PARENTS is a list of strings representing the names of all INTERFACES, or abstract classes inherited from. It can also be nil. This slot can be interesting because the form: ( nil \"string\") is a valid parent where there is no explicit parent, and only an interface. ATTRIBUTES is a list of additional attributes belonging to this tag." (apply 'semantic-tag name 'type :type type :members members :superclasses (car parents) :interfaces (cdr parents) attributes)) (defsubst semantic-tag-new-include (name system-flag &rest attributes) "Create a semantic tag of class include. NAME is the name of this include. SYSTEM-FLAG represents that we were able to identify this include as belonging to the system, as opposed to belonging to the local project. ATTRIBUTES is a list of additional attributes belonging to this tag." (apply 'semantic-tag name 'include :system-flag system-flag attributes)) (defsubst semantic-tag-new-package (name detail &rest attributes) "Create a semantic tag of class package. NAME is the name of this package. DETAIL is extra information about this package, such as a location where it can be found. ATTRIBUTES is a list of additional attributes belonging to this tag." (apply 'semantic-tag name 'package :detail detail attributes)) (defsubst semantic-tag-new-code (name detail &rest attributes) "Create a semantic tag of class code. NAME is a name for this code. DETAIL is extra information about the code. ATTRIBUTES is a list of additional attributes belonging to this tag." (apply 'semantic-tag name 'code :detail detail attributes)) David |
From: Eric M. L. <er...@si...> - 2003-03-31 16:08:39
|
>>> David PONCE <dav...@wa...> seems to think that: >Eric, > >[...] >>>So now, semantic-texi should work again ;-) >> >> >> That's great. I only got one conflict. > >Which one? Did you fixed it? I too had changed some of semantic-imenu.el to use the new API. I just deleted mine and pulled your copy in. >[...] >> Also, I found the old alias for `semantic-nonterminal-children' >> doesn't work very well. Here is what I have for this morning in >> semantic-tag.el > >I am confused too by `semantic-tag-components-with-overlays' >vs. `semantic-nonterminal-children'. In the old implementation >`semantic-nonterminal-children' returned all children regardless of >tag having positions. The new implementation changed the behavior, >as only tag with positions are returned. Is that your problem? > >Maybe could we reintroduce the old behavior in >`semantic-tag-components'? The old `semantic-nonterminal-children' had a flag for `positiononly'. `semantic-tag-components-with-overlays' returns what `semamantic-nonterminal-children' returned with that flag was t. `semantic-tag-components' returns what the old fcn return when the flag was nil. The alias pointed to the `with-overlays' version to be `safe', but in fact broke code not expecting this (when the flag was nil). The new compatibility only function is to switch on that argument. >[...] >> Another problem I bumped into is that the `semantic-tag-new-*' macros >> don't allow edebug inside. I tried concocting an edebug definition >> for it but it didn't work very well. If someone else knows how to do >> that, that would be great. > >Maybe using functions instead of macro could be better? I tried the >following code that seems to work well: > >(defsubst semantic-tag-new-variable (name type default-value &rest attributes) > "Create a semantic tag of class variable. >NAME is the name of this variable. >TYPE is a string or semantic tag representing the type of this variable. >DEFAULT-VALUE is a string representing the default value of this variable. >ATTRIBUTES is a list of additional attributes belonging to this tag." > (apply 'semantic-tag name 'variable > :type type > :default-value default-value > attributes)) [ ... ] Hmmm, interesting idea. That would certainly be easier that understanding edebug macros, but at the same time adds an extra function call. I doubt it makes much of a difference though. Eric -- Eric Ludlam: za...@gn..., er...@si... Home: http://www.ludlam.net Siege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org |