Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simplify osascript handling #61

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

sellout
Copy link
Contributor

@sellout sellout commented Jul 14, 2024

This makes a few changes, somewhat independent, but all related:

  • defaults auto-dark-allow-osascript to true1;
  • falls back to osascript on-demand if neither ns-do-applescript nor mac-do-applescript is available2; and
  • removes osascript as a separate auto-dark-detection-method3.

These can be easily separated depending on which, if any, you think are improvements.

Footnotes

  1. I don’t know why this is even a variable. If it’s not allowed, then there is no way to use Auto-Dark on systems that require it, and the failure mode is opaque (“Could not determine a viable theme detection mechanism!”). There’s probably something I’m overlooking, but if so, it should be documented.

  2. If this change isn’t made, then the error message “Try setting auto-dark-allow-osascript to t” doesn’t make sense, as it’s only reported in a location where the value of auto-dark-allow-osascript has no effect. The alternative is to change the error message to something like “auto-dark-detection-method indicates that this Emacs build has AppleScript support, but none could be found. Either rebuild Emacs with AppleScript support or change the detection method and set auto-dark-allow-osascript”.

  3. With Simplify AppleScript handling #59, the two fboundp checks added before falling back to osascript should be more than outweighed by the removal of shell invocation.

@sellout sellout marked this pull request as draft July 14, 2024 18:52
This makes a few changes, somewhat independent, but all related:
* defaults `auto-dark-allow-osascript` to true[^1];
* falls back to `osascript` on-demand if neither `ns-do-applescript` nor
  `mac-do-applescript` is available[^2]; and
* removes `osascript` as a separate `auto-dark-detection-method`[^3].

These can be easily separated depending on which, if any, you think are
improvements.

[^1]: I don’t know why this is even a variable. If it’s not allowed, then there
is no way to use Auto-Dark on systems that require it, and the failure mode is
opaque (“Could not determine a viable theme detection mechanism!”).

[^2]: If this change isn’t made, then the error message “Try setting
`auto-dark-allow-osascript` to t” doesn’t make sense, as it’s only reported in a
location where the value of `auto-dark-allow-osascript` has no effect. The
alternative is to change the error message to something like
“`auto-dark-detection-method` indicates that this Emacs build has AppleScript
support, but none could be found. Either rebuild Emacs with AppleScript support
or change the detection method and set `auto-dark-allow-osascript`”.

[^3]: With LionyxML#59, the two `fboundp` checks added before falling back to
`osascript` should be more than outweighed by the removal of shell invocation.
@sellout
Copy link
Contributor Author

sellout commented Jul 14, 2024

Another question I had somewhat related to this …

I had considered unifying the osascript and powershell management under a single auto-dark-allow-shell variable, but one thing that stopped me was noticing that while osascript is a last resort, powershell is preferred over reading directly from the registry. Why is that? It seems like powershell is simply doing the same thing w32-read-registry is doing, but indirectly, and we don’t have the (fboundp 'w32-read-registry) check like we do on the Darwin side of things, so why does the powershell detection method even exist?

sellout added a commit to sellout/auto-dark-emacs that referenced this pull request Jul 14, 2024
Rather than just saying that we _couldn’t_ determine the detection method, this
indicates why and makes some suggestions. Probably even longer errors with
concrete steps to remedy each case would be helpful.

This includes an alternative approach to the first bullet point in LionyxML#61 –
changing where we suggest that `auto-dark-allow-osascript` should be
enabled (although this does not change the error that suggests it in the wrong
place).
@StefPac
Copy link

StefPac commented Oct 27, 2024

you can have ns-do-applescript defined and run emacs -nw in which case the function will fail when checking for the window system.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants