From 9cbaaf54dedabef0deb72828cd8e72d4c7c7bc6d Mon Sep 17 00:00:00 2001 From: cxl Date: Sat, 12 Jul 2014 07:46:30 +0000 Subject: [PATCH] ide: Alt+C handling of static members improved #799 git-svn-id: svn://ultimatepp.org/upp/trunk@7506 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/ide/Assist.cpp | 29 ++++++++++++++++++++++++++--- uppsrc/ide/Browser/init | 2 +- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/uppsrc/ide/Assist.cpp b/uppsrc/ide/Assist.cpp index 7df7d48df..59fc1a7c3 100644 --- a/uppsrc/ide/Assist.cpp +++ b/uppsrc/ide/Assist.cpp @@ -964,8 +964,11 @@ void AssistEditor::DCopy() } } if(m.IsData()) { + String nat = m.natural; if(cls.GetCount()) { - const char *s = m.natural; + nat.Replace("static", ""); + nat = TrimLeft(nat); + const char *s = nat; while(*s) { if(iscib(*s)) { const char *b = s; @@ -984,8 +987,28 @@ void AssistEditor::DCopy() r << *s++; } } - else - r << "extern " << m.natural; + else { + int q = nat.ReverseFind("::"); + if(q >= 0) { // Foo Class2 :: Class::variable; -> static Foo variable; + int e = q + 2; + for(;;) { + while(q >= 0 && nat[q - 1] == ' ') + q--; + if(q == 0 || !iscid(nat[q - 1])) + break; + while(q >= 0 && iscid(nat[q - 1])) + q--; + int w = nat.ReverseFind("::", q); + if(w < 0) + break; + q = w; + } + nat.Remove(q, e - q); + r << "static " << nat; + } + else + r << "extern " << nat; + } r << ";\n"; } } diff --git a/uppsrc/ide/Browser/init b/uppsrc/ide/Browser/init index e30879745..7a2c8bd86 100644 --- a/uppsrc/ide/Browser/init +++ b/uppsrc/ide/Browser/init @@ -4,7 +4,7 @@ #include "ide\Common/init" #include "PdfDraw/init" #include "RichEdit/init" -#define BLITZ_INDEX__ F93222d80ec8e06ccbdf5f9e1c0bd4535 +#define BLITZ_INDEX__ F09f1bfac1925f12219a612fc7165f5a9 #include "TopicI.icpp" #undef BLITZ_INDEX__ #endif