@enquora A quick check in CPMenu.j
:
- (void)awakeFromCib
{
if (_name === @"_CPMainMenu")
{
[self _setMenuName:@"CPMainMenu"];
[CPMenu setMenuBarVisible:YES];
}
}
This means that the mainMenu is set in awakeFromCib:
. I think this is a bug as I should already be set when awakeFromCib:
methods are called. Your awakeFromCib:
is called before this one is but it could have been called after. There is not order on when they are called.
Similarly, the XcodeCapp code seems to use Python to execute several trivial shell operations. I have a vague memory that a Python package was once used to create and manage Xcode xcodeproj files, although this is no longer the case. This needs to be fixed, as the Python runtime referenced is Python 2, which has been deprecated for some time and is likely to disappear from the core OS distribution at any time.
Can anyone confirm my memory of this?
To my mind, IB and the productivity improvements it brings are a ‘unique selling proposition’ which we would be wise to promote (yes, I’m aware it can cause commit clashes when used in some circumstances, and many will complain about that).
Nevertheless, I regularly forget this requirement and routinely spend several hours debugging/remembering the cause. This isn’t the sort of experience we want newcomers to have.
@import
is currently the only way to tell the runtime to load a class that is referenced dynamic from for example a xib
. It is not anything that is handled by the compiler but maybe nib2cib
could track referenced classes in the cib
file and the framework could load them when the cib
is loaded.
Safari 15 has broken disclosure indicators, at least in
CPOutlineView
. They are stuck closed. This is using macOS 12, second release candidate.Anyone using the Safari 15 preview under Big Sur who can test?
@enquora:matrix.org i do not see any issues on safari 15.1 with the kitchen sink app on https://cappuccino-testbook.5apps.com/#ThemeKitchenSink
CPOutlineView
and will look more closely at this. It’s entirely possible something in the view delegate is only half implemented in this app and causing problems. Strange it should have worked properly until Safari 15 though.
A vector version of the XcodeCapp logo is needed for ongoing maintenance and isn’t present in the repo. Does anyone remember who did the original artwork? It’s not obvious from the commit history.
I have autotraced the raster version and it’s a good starting point for cleanup - but it would be nice to have the original.
So I'm trying to install Cappuccino NPM from source—and I got this error.
cappuccino % jake install
(in /Users/gtavares/cappuccino)
Error on line 53 of file [unknown]
Error: require error: couldn't find "fs"
My guess is that Jake was not installed for npm.
Fair enough so I do:
jake install
And now I get:
cappuccino % jake install
jake aborted.
ReferenceError: ObjectiveJ is not defined
Where am I screwing up??
Preprocessor.j
file and was trying to figure out where #if
is implemented because I consider the Preprocessor to have a bug (#if
does not work until it we call @import <Foundation/Foundation.j>
. The hash
function really confuses me. Where can I maybe find the implementation or understand how #if
works so I can fix my issue? Preprocessor.prototype.hash = function(tokens, aStringBuffer)
{
var buffer = aStringBuffer ? aStringBuffer : new StringBuffer(),
token = tokens.next();
if (token === TOKEN_PRAGMA)
{
token = tokens.skip_whitespace();
if (token === TOKEN_MARK)
{
while ((token = tokens.next()).indexOf("\n") < 0);
} } else
throw new SyntaxError(this.error_message("*** Expected \"pragma\" to follow # but instead saw \"" + token + "\"."));
};
Preprocessor.j
is deprecated and not used anymore. Actually it should be removed from the repository. It is the old compiler that was a kind of advanced search and replace of parts of the code to transpile it from Objective-J to Javascript.
await
/async
. The latest Acorn has a poor man type of plugin architecture that can be used to extend the parser. But it is very dependent of the internal workings so not very good at extending more complex things like we do with the Objective-J language. It is also hard if not impossible to extend the Tokenizer with that plugin architecture. The Tokenizer is modified in our version to implementation our preprocessor. It is not built like a regular preprocessor that "preprocess" the file and creates a new file that is then compiled. It is implemented as a Recursive Token Transformer. It will transform tokens on the fly to the "preprocessed" result. This allow it to be very fast and only do one scan over the source file when compiling.
tests.js
at https://github.com/mrcarlberg/acorn. Should be nice if we could get your problem as a test case too.
@mrcarlberg afaik we can build and test XcodeCapp using github actions too. I began looking at this several months ago. From what I saw, the oldest support OS is High Sierra.
Does limiting XcodeCapp support to macOS 10.13 to fit Github’s CI pipeline cause problems for us?
XcodeCloud is available now too, but that is tied to individual Apple IDs - Github Actions seems the better choice.
I continue picking away at the problems in XcodeCapp as time permits and will set up CI actions for it.