Closed tomeksowi closed 3 years ago
Thanks for reporting! Could you verify if #652 affects you? Does it work for you with that fix?
It's better after applying the fix for #652. However, there are still problems with some headers, e.g.
@import Metal; // OK, I see most symbols are indexed
@import QuartzCore.CAMetalLayer; // ECC Error: could not build module 'QuartzCore'
#import <QuartzCore/CAMetalLayer.h> // Equivalent of the above in the old syntax, fails with the same error
I experience the same problem with @import AppKit
. I'm not sure how they are different from @import Metal
which works. Of course, I added -fmodules
in ECC settings.
Another thing (perhaps to be raised separately) is the size of the ECC Info tooltip. It tries to fit the original header in the Body section, which results in tooltip width exploding past screen bounds for most Apple headers as they don't line-break doc comments. I of course have "word_wrap": true
in my user settings.
I have
"popup_maximum_width": 500,
"popup_maximum_height": 500,
in my configuration to deal with the latter issue. But back on topic, can you just not import those headers at all? I was having some issues with modules, but for me it largely went away if I had them off. Are you seeing them in both cases?
@saagarjha, I was unaware of "popupmaximum*". Decreasing it worked, thank you.
As for the main issue, CAMetalLayer
is a necessary link between Cocoa and Metal. I can't eschew it, unfortunately.
As for turning off modules and replacing @import
with regular #import <header>
, ECC does parse CAMetalLayer
correctly. However, it slows down the compilation noticeably so I'd rather not do it.
Unfortunately, beyond fixing the above issues I don't know how I could help. I am by far not an expert in Objective C and the whole Objective C implementation was a contribution. :man_shrugging:
Sorry about that
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Just comment here to prevent this from happening.
The issue has been automatically closed due to lack of activity. Feel free to reopen the issue if it is still relevant.
System info:
3.2.2, Build 3211
macOS 10.15.1
Apple clang version 11.0.0 (clang-1100.0.33.12)
What happens:
EasyClangComplete doesn't find default framework headers, e.g. Cocoa.
A
cocoa_simple.m
file that illustrates the issue:Compiling it from command line with
clang cocoa_simple.m -framework Cocoa
works fine but in Sublime EasyClangComplete fails with'Cocoa/Cocoa.h' file not found
and in consequenceuse of undeclared identifier NSApplication
.The source file is in the Sublime project, I don't use CMake. My user settings for EasyClangComplete are:
As mentioned in the comment,
Cocoa.h
resides in/Library/Frameworks/Cocoa.framework/Versions/A/Headers
on my system. However, it's not enclosed in aCocoa
directory as specified in the#import
statement -- this seems to be normal on a Mac, I can't find any symlink location that would have the header path enclosed in a directory named after the framework.Log that illustrates the issue:
[EasyClangComplete.log](https://github.com/niosus/EasyClangComplete/files/3923787/EasyClangComplete.log)Could be related to #626 and #652.