From 1bc11e08ab4e58371dc59cd8b3a9b3ba687ba00f Mon Sep 17 00:00:00 2001 From: Mirek Fidler Date: Thu, 24 Nov 2022 14:58:59 +0100 Subject: [PATCH] ide: Fixed Alt+J on #include (pkg_config issue) --- uppsrc/CtrlCore/CtrlKbd.cpp | 8 ++--- uppsrc/CtrlCore/GtkEvent.cpp | 4 ++- uppsrc/ide/Builders/Build.cpp | 9 +++-- uppsrc/ide/Builders/Build.h | 1 + uppsrc/ide/Methods.cpp | 63 +++++++++++++++-------------------- uppsrc/ide/ide.h | 1 + 6 files changed, 43 insertions(+), 43 deletions(-) diff --git a/uppsrc/CtrlCore/CtrlKbd.cpp b/uppsrc/CtrlCore/CtrlKbd.cpp index 3a9c7b532..2be834217 100644 --- a/uppsrc/CtrlCore/CtrlKbd.cpp +++ b/uppsrc/CtrlCore/CtrlKbd.cpp @@ -2,7 +2,7 @@ namespace Upp { -#define LLOG(x) // DLOG(x) +#define LLOG(x) // DLOG(x) Ptr Ctrl::focusCtrl; Ptr Ctrl::focusCtrlWnd; @@ -87,7 +87,7 @@ bool Ctrl::DispatchKey(dword keycode, int count) if(p->IsEnabled() && p->Key(p->unicode ? keycode : k, count)) { LLOG("Ctrl::DispatchKey(" << FormatIntHex(keycode) << ", " << GetKeyDesc(keycode) - << "): eaten in " << Desc(p)); + << "): consumed in " << Desc(p)); if(Ini::user_log) USRLOG(" -> " << Desc(p)); eventCtrl = focusCtrl; @@ -387,14 +387,14 @@ void Ctrl::AnimateCaret() void Ctrl::PaintCaret(SystemDraw& w) { GuiLock __; - LLOG("PaintCaret " << Name() << ", caretCtrl: " << caretCtrl << ", WndCaretVisible: " << WndCaretVisible); + // LLOG("PaintCaret " << Name() << ", caretCtrl: " << caretCtrl << ", WndCaretVisible: " << WndCaretVisible); if(this == caretCtrl && WndCaretVisible) w.DrawRect(GetCaret(), InvertColor); } void Ctrl::SyncCaret() { GuiLock __; - LLOG("SyncCaret"); + // LLOG("SyncCaret"); if(focusCtrl != caretCtrl) { LLOG("SyncCaret DO " << Upp::Name(caretCtrl) << " -> " << Upp::Name(focusCtrl)); RefreshCaret(); diff --git a/uppsrc/CtrlCore/GtkEvent.cpp b/uppsrc/CtrlCore/GtkEvent.cpp index e535f3b64..4f75cb101 100644 --- a/uppsrc/CtrlCore/GtkEvent.cpp +++ b/uppsrc/CtrlCore/GtkEvent.cpp @@ -646,7 +646,8 @@ void Ctrl::Proc() GDKEY(5), GDKEY(6), GDKEY(7), GDKEY(8), GDKEY(9) }) { GdkKeymapKey *keys; gint n_keys; - if(gdk_keymap_get_entries_for_keyval(NULL, k, &keys, &n_keys)) { + + if(gdk_keymap_get_entries_for_keyval(gdk_keymap_get_for_display(gdk_display_get_default()), k, &keys, &n_keys)) { for(int j = 0; j < n_keys; j++) if(keys[j].group == 0) hwkv.Add(keys[j].keycode, k); @@ -658,6 +659,7 @@ void Ctrl::Proc() } kv += K_DELTA; } + GetKeyDesc(kv); if(GetShift() && kv != K_SHIFT_KEY) kv |= K_SHIFT; if(GetCtrl() && kv != K_CTRL_KEY) diff --git a/uppsrc/ide/Builders/Build.cpp b/uppsrc/ide/Builders/Build.cpp index 95d9bc20b..eddfa2c8a 100644 --- a/uppsrc/ide/Builders/Build.cpp +++ b/uppsrc/ide/Builders/Build.cpp @@ -93,9 +93,8 @@ String NoCr(const char *s) return out; } -void MakeBuild::CreateHost(Host& host, bool darkmode, bool disable_uhd) +void MakeBuild::CreateHost(Host& host, const String& method, bool darkmode, bool disable_uhd) { - SetupDefaultMethod(); VectorMap bm = GetMethodVars(method); { VectorMap env = clone(Environment()); @@ -135,6 +134,12 @@ void MakeBuild::CreateHost(Host& host, bool darkmode, bool disable_uhd) } } +void MakeBuild::CreateHost(Host& host, bool darkmode, bool disable_uhd) +{ + SetupDefaultMethod(); + CreateHost(host, method, darkmode, disable_uhd); +} + One MakeBuild::CreateBuilder(Host *host) { SetupDefaultMethod(); diff --git a/uppsrc/ide/Builders/Build.h b/uppsrc/ide/Builders/Build.h index b16f68dfe..ad2f40553 100644 --- a/uppsrc/ide/Builders/Build.h +++ b/uppsrc/ide/Builders/Build.h @@ -65,6 +65,7 @@ public: bool makefile_svn_revision = true; + void CreateHost(Host& host, const String& method, bool darkmode, bool disable_uhd); void CreateHost(Host& host, bool darkmode = false, bool disable_uhd = false); const TargetMode& GetTargetMode(); diff --git a/uppsrc/ide/Methods.cpp b/uppsrc/ide/Methods.cpp index b662a5e2a..1751a3511 100644 --- a/uppsrc/ide/Methods.cpp +++ b/uppsrc/ide/Methods.cpp @@ -853,28 +853,44 @@ String Ide::GetIncludePath() } } } + + IncludeAddPkgConfig(include_path, Null); -// TODO: replicate with clang + return include_path; +} + +void Ide::IncludeAddPkgConfig(String& include_path, const String& clang_method) +{ +#ifdef PLATFORM_POSIX const Workspace& wspc = GetIdeWorkspace(); - Host dummy_host; - One b = CreateBuilder(&dummy_host); + Host host; + if(clang_method.GetCount()) + CreateHost(host, clang_method, false, false); + else + CreateHost(host, false, false); + One b = CreateBuilder(&host); Index pkg_config; + Index cfg = PackageConfig(wspc, max(GetPackageIndex(), 0), GetMethodVars(method), mainconfigparam, host, *b); for(int i = 0; i < wspc.GetCount(); i++) { const Package& pkg = wspc.GetPackage(i); for(int j = 0; j < pkg.include.GetCount(); j++) MergeWith(include_path, ";", SourcePath(wspc[i], pkg.include[j].text)); - for(String h : Split(Gather(pkg.pkg_config, b->config.GetKeys()), ' ')) + for(String h : Split(Gather(pkg.pkg_config, cfg.GetKeys()), ' ')) pkg_config.FindAdd(h); } - -#ifdef PLATFORM_POSIX - for(String s : pkg_config) - for(String p : Split(Sys("pkg-config --cflags " + s), ' ')) + + static VectorMap cflags; + for(String s : pkg_config) { + int q = cflags.Find(s); + if(q < 0) { + q = cflags.GetCount(); + cflags.Add(s, Sys("pkg-config --cflags " + s)); + } + for(String p : Split(cflags[q], CharFilterWhitespace)) if(p.TrimStart("-I")) MergeWith(include_path, ";", p); + } #endif - - return include_path; } String Ide::GetCurrentIncludePath() @@ -903,33 +919,8 @@ String Ide::GetCurrentIncludePath() } include_path = Join(GetUppDirs(), ";") + ';' + bm.Get("INCLUDE", ""); - - const Workspace& wspc = GetIdeWorkspace(); - Host host; - CreateHost(host, false, false); - One b = CreateBuilder(&host); - Index cfg = PackageConfig(wspc, max(GetPackageIndex(), 0), GetMethodVars(method), mainconfigparam, host, *b); - Index pkg_config; - for(int i = 0; i < wspc.GetCount(); i++) { - const Package& pkg = wspc.GetPackage(i); - for(int j = 0; j < pkg.include.GetCount(); j++) - MergeWith(include_path, ";", SourcePath(wspc[i], pkg.include[j].text)); - for(String h : Split(Gather(pkg.pkg_config, cfg.GetKeys()), ' ')) - pkg_config.FindAdd(h); - } - - static VectorMap cflags; - for(String s : pkg_config) { - int q = cflags.Find(s); - if(q < 0) { - q = cflags.GetCount(); - cflags.Add(s, Sys("pkg-config --cflags " + s)); - } - for(String p : Split(cflags[q], CharFilterWhitespace)) - if(p.TrimStart("-I")) - MergeWith(include_path, ";", p); - } + IncludeAddPkgConfig(include_path, clang_method); return include_path; } diff --git a/uppsrc/ide/ide.h b/uppsrc/ide/ide.h index 7106b6287..9e4b49920 100644 --- a/uppsrc/ide/ide.h +++ b/uppsrc/ide/ide.h @@ -1166,6 +1166,7 @@ public: void ShowTopics(); void ShowTopicsWin(); + void IncludeAddPkgConfig(String& include_path, const String& clang_method); String GetIncludePath(); String GetCurrentIncludePath(); String GetCurrentDefines();