From f8f112f3fce9e5ae5ca15d0bba8ec81e7af857be Mon Sep 17 00:00:00 2001 From: eidheim Date: Sat, 10 May 2025 17:48:12 +0200 Subject: [PATCH 1/3] Made variable sized array constant size --- src/debug_lldb.cpp | 3 ++- src/debug_lldb.hpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/debug_lldb.cpp b/src/debug_lldb.cpp index 83861fe..1f835da 100644 --- a/src/debug_lldb.cpp +++ b/src/debug_lldb.cpp @@ -10,12 +10,13 @@ extern char **environ; bool Debug::LLDB::initialized = false; +const size_t Debug::LLDB::buffer_size = 131072; void log(const char *msg, void *) { std::cout << "debugger log: " << msg << std::endl; } -Debug::LLDB::LLDB() : listener("juCi++ lldb listener"), state(lldb::StateType::eStateInvalid), buffer_size(131072) { +Debug::LLDB::LLDB() : listener("juCi++ lldb listener"), state(lldb::StateType::eStateInvalid) { #ifndef __APPLE__ auto debug_server_path = filesystem::get_executable("lldb-server").string(); if(debug_server_path != "lldb-server") diff --git a/src/debug_lldb.hpp b/src/debug_lldb.hpp index 2de1225..92c3e73 100644 --- a/src/debug_lldb.hpp +++ b/src/debug_lldb.hpp @@ -95,6 +95,6 @@ namespace Debug { lldb::StateType state GUARDED_BY(mutex); - size_t buffer_size; + const static size_t buffer_size; }; } // namespace Debug From 30cdbbf170c0d91859592ff3d6458107a96e3f90 Mon Sep 17 00:00:00 2001 From: doe300 Date: Sat, 23 Aug 2025 09:41:04 +0200 Subject: [PATCH 2/3] Add detection of .mm files as Objective-C This is a common file extension for Objective-C++ files. --- src/source.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/source.cpp b/src/source.cpp index 9965573..98b4ea1 100644 --- a/src/source.cpp +++ b/src/source.cpp @@ -83,6 +83,8 @@ Glib::RefPtr Source::guess_language(const boost::filesystem::path language = language_manager->get_language("glsl"); else if(extension == ".in" || extension == ".bak") return guess_language(boost::filesystem::path(file_path).replace_extension()); + else if(extension == ".mm") + language = language_manager->get_language("objc"); else if(!file_path.has_extension() && std::any_of(file_path.begin(), file_path.end(), [](const boost::filesystem::path &path) { return path == "include"; })) language = language_manager->get_language("cpphdr"); From 598fdee582572d9ccf25e7ba09457ff7aeae2133 Mon Sep 17 00:00:00 2001 From: doe300 Date: Sat, 23 Aug 2025 09:42:26 +0200 Subject: [PATCH 3/3] Try to detect .m files as Objective-C They are detected as Octave, but *.m is also used for Objective-C. --- src/source.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/source.cpp b/src/source.cpp index 98b4ea1..9b7c5cc 100644 --- a/src/source.cpp +++ b/src/source.cpp @@ -103,6 +103,19 @@ Glib::RefPtr Source::guess_language(const boost::filesystem::path } else if(language->get_id() == "opencl") language = language_manager->get_language("cpp"); + else if(language->get_id() == "octave" && extension == ".m") { + // .m is used for both Octave and Objective-C, so try to differentiate + std::ifstream input(file_path.string(), std::ios::binary); + std::string buffer(256, '\0'); + input.read(&buffer[0], static_cast(buffer.size())); + buffer.resize(static_cast(input.gcount())); + if(input && (buffer.find("#import ") != std::string::npos || + buffer.find("@interface ") != std::string::npos || + buffer.find("/*") != std::string::npos || + buffer.find("//") != std::string::npos)) { + language = language_manager->get_language("objc"); + } + } return language; }