Ensure correct encoding for hotkeys scripts #329
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Resolves GH-328
Hotkey scripts are generated using
tempfile.NamedTemporaryFile
, but this currently lacks a specifiedencoding
, which results in the local encoding (i.e.locale.getencoding()
) being used, which will likely produce problems.When the hotstring characters are not valid in the local default encoding, the script generation can fail:
I suspect that, even if this somehow succeeds because the local encoding is valid (say, CP808 or CP866) , the resulting script will either fail to start or not work as expected because it is explicitly started with the
/CP65001
flag, which is likely a mismatch against the local encoding used to write the file.This problem only affects hotstrings that either use characters that are invalid in the local encoding or when the hotstring characters encoded in the local encoding do not overlap correctly with UTF-8.
It may be possible to register hotstrings similar to how we register hotkeys to make hotstrings more resilient to these kinds of problems, but this change should be made in any case.