[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] scratch/last-cedet-merge e4e864a 02/11: semantic: Properly
From: |
David Engster |
Subject: |
[Emacs-diffs] scratch/last-cedet-merge e4e864a 02/11: semantic: Properly create canonical name for C++ type tag |
Date: |
Mon, 23 Jan 2017 21:13:48 +0000 (UTC) |
branch: scratch/last-cedet-merge
commit e4e864a0d64c3d7dfbfe54e74d0ebdfd4384e76a
Author: Eric Ludlam <address@hidden>
Commit: David Engster <address@hidden>
semantic: Properly create canonical name for C++ type tag
* lisp/cedet/semantic/bovine/c.el
(semantic-format-tag-canonical-name): Add part for a type with
:parent. Merge parent names together.
(semantic-c-dereference-typedef): If type is tag, use canonical name.
---
lisp/cedet/semantic/bovine/c.el | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/lisp/cedet/semantic/bovine/c.el b/lisp/cedet/semantic/bovine/c.el
index a72b0dd..8739f8d 100644
--- a/lisp/cedet/semantic/bovine/c.el
+++ b/lisp/cedet/semantic/bovine/c.el
@@ -1422,8 +1422,18 @@ PARENT specifies a parent class.
COLOR indicates that the text should be type colorized.
Enhances the base class to search for the entire parent
tree to make the name accurate."
- (semantic-format-tag-canonical-name-default tag parent color)
- )
+ (cond
+ ((and (semantic-tag-of-class-p tag 'type)
+ (semantic-tag-get-attribute tag :parent))
+ ;; We nee to combine the :parent into the tag name and continue on.
+ (let* ((par (semantic-tag-get-attribute tag :parent))
+ (parstr (if (stringp par) par
+ (mapconcat 'identity par "::")))
+ (clone (semantic-tag-clone
+ tag (concat parstr "::" (semantic-tag-name tag)))))
+ (semantic-format-tag-canonical-name-default clone parent color)))
+ (t (semantic-format-tag-canonical-name-default tag parent color))
+ ))
(define-mode-local-override semantic-format-tag-type c-mode (tag color)
"Convert the data type of TAG to a string usable in tag formatting.
@@ -1653,6 +1663,8 @@ SCOPE is not used, and TYPE-DECLARATION is used only if
TYPE is not a typedef."
(let* ((fname (semantic-tag-file-name type))
(def (semantic-tag-copy dt nil fname)))
(list def def)))
+ ((semantic-tag-p dt)
+ (list (semantic-format-tag-canonical-name dt) dt))
((stringp dt) (list dt (semantic-tag dt 'type)))
((consp dt) (list (car dt) dt))))
- [Emacs-diffs] scratch/last-cedet-merge updated (74263b1 -> 592b5fe), David Engster, 2017/01/23
- [Emacs-diffs] scratch/last-cedet-merge e4e864a 02/11: semantic: Properly create canonical name for C++ type tag,
David Engster <=
- [Emacs-diffs] scratch/last-cedet-merge b893e8a 04/11: semantic: Allow empty type relation separation character, David Engster, 2017/01/23
- [Emacs-diffs] scratch/last-cedet-merge 50139fb 08/11: semantic: Fix scope calculation for 'enum', David Engster, 2017/01/23
- [Emacs-diffs] scratch/last-cedet-merge 3cbb968 10/11: semantic: Use file name for grammar name instead of %package token, David Engster, 2017/01/23
- [Emacs-diffs] scratch/last-cedet-merge 783fb86 09/11: semantic: Add 'fromfile' option to grammar package, David Engster, 2017/01/23
- [Emacs-diffs] scratch/last-cedet-merge 03bb495 07/11: semantic: Fix for Python lexer, David Engster, 2017/01/23
- [Emacs-diffs] scratch/last-cedet-merge 64484cf 06/11: semantic: Set `semantic-type-relation-separator-character' for Emacs Lisp, David Engster, 2017/01/23
- [Emacs-diffs] scratch/last-cedet-merge ebc8418 03/11: semantic: Check if slot is bound, David Engster, 2017/01/23
- [Emacs-diffs] scratch/last-cedet-merge 742013b 05/11: semantic: Improve grammar-mode, David Engster, 2017/01/23
- [Emacs-diffs] scratch/last-cedet-merge cfc56f5 01/11: semantic: Fix for db-global, David Engster, 2017/01/23
- [Emacs-diffs] scratch/last-cedet-merge 592b5fe 11/11: semantic: Improve C++ 'friend' parsing, David Engster, 2017/01/23