- Pin the base (CI-provided) OS image to Ventura, not Sonoma
- Fixes some C/C++ compilation errors??
- Gives us older XCode & compiler toolchain, I guess?
- Get node using tj/n utility, not Homebrew
- Homebrew "node" package is conflicting with (now deprecated)
"node@16" package, loading dynamic libraries like icu4c
keeps breaking...
- Get Yarn using npm global install, not from Homebrew
- I... honestly don't even know at this point. But Yarn from Homebrew
is breaking somehow, possibly due to it referring back to Homebrew
"node" package, but _that's just a guess_. It's cursed, I guess.
- Get python-setuptools from Homebrew, not from pip
- Why? Why is this necessary? Homebrew, explain? Something about our
"environment being externally managed", so global package installs
with pip aren't allowed. This makes sense to someone. See PEP 668.
- Adjust PATH exports now that there's no "node@16" from Homebrew
I must have accidentally regenerated the token an additional time
after encrypting it last time, such that the encrypted version was
already inactive (regenerated over) by the time the PR went up
to switch to it.
Fingers crossed I've done it correctly this time.
If it throws the Exception, other valid uris such as atom://teletype/...
will not be evaluated in the else branch
The old fs-plus did not throw.
Newer versions of fs.lstatSync allow for option parameter to control if it throws.
* When set to `true`, `hideDuplicateTextMateGrammars` will hide all grammars except whichever one the user has indicated a preference for — via `useTreeSitterParsers` and `useLegacyTreeSitter` settings, whether global or scope-specific.
* When set to `false`, `hideDuplicateTextMateGrammars` will show all grammars, even Legacy Tree-sitter.
…but only while we can afford to spend time on re-parsing.
Synchronous indentation hinting is clearly the best choice, but it can theoretically be very costly. So we'll set a time budget per transaction — currently 10ms, but could be adjusted up or down. We'll start out doing synchronous indentation, but flip to async indentation if we run out of time in a given transaction. At the end of a transaction, the time budget resets.
This allows us to balance indentation accuracy with editor responsiveness, and would even allow us to expose this tradeoff as a setting in the future. The current threshold, 10ms, would probably result in one dropped frame if exceeded, but not two.
Right now, any one parse can exceed the budget — because we don't set a timeout on the parse the way we do with an async parse. But this could be changed in the future. The main goal here is to prevent a catastrophic scenario where a complex transaction locks up the editor.
Better to receive future minor/patch updates than pin exact,
considering this dependency used to be totally unbounded ">= 0".
We probably won't remember to update this in the future,
so best to specify a range rather than an exact arbitrary version.
This indirect dependency has a newer version that requires
Ruby 3.0 or newer. We're on Debian 10 "Buster" for now, which is
still on Ruby 2.5.
Pin to dotenv 2.8.1, the latest version compatible with our older Ruby,
per the error message from CI:
> The last version of dotenv (>= 0) to support your Ruby & RubyGems
> was 2.8.1. Try installing it with `gem install dotenv -v 2.8.1`
> and then running the current command again
>
> dotenv requires Ruby version >= 3.0.
> The current ruby version is 2.5.0.