Merge pull request #94 from 7brokenmirrors/utf8-default-encoding

Add checks for UTF-8
This commit is contained in:
Anthony Sottile
2020-09-01 10:04:29 -07:00
committed by GitHub
8 changed files with 13 additions and 11 deletions

View File

@@ -236,7 +236,7 @@ class File:
sio = io.StringIO(stdin)
lines, self.nl, mixed, self.sha256 = get_lines(sio)
elif self.filename is not None and os.path.isfile(self.filename):
with open(self.filename, newline='') as f:
with open(self.filename, encoding='UTF-8', newline='') as f:
lines, self.nl, mixed, self.sha256 = get_lines(f)
else:
if self.filename is not None:

View File

@@ -688,7 +688,7 @@ class Grammars:
pass
grammar_path = self._scope_to_files.pop(scope)
with open(grammar_path) as f:
with open(grammar_path, encoding='UTF-8') as f:
ret = self._raw[scope] = json.load(f)
file_types = frozenset(ret.get('fileTypes', ()))

View File

@@ -19,7 +19,8 @@ class History:
history_dir = xdg_data('history')
os.makedirs(history_dir, exist_ok=True)
for filename in os.listdir(history_dir):
with open(os.path.join(history_dir, filename)) as f:
history_filename = os.path.join(history_dir, filename)
with open(history_filename, encoding='UTF-8') as f:
self.data[filename] = f.read().splitlines()
self._orig_len[filename] = len(self.data[filename])
try:
@@ -28,5 +29,6 @@ class History:
for k, v in self.data.items():
new_history = v[self._orig_len[k]:]
if new_history:
with open(os.path.join(history_dir, k), 'a+') as f:
history_filename = os.path.join(history_dir, k)
with open(history_filename, 'a+', encoding='UTF-8') as f:
f.write('\n'.join(new_history) + '\n')

View File

@@ -133,7 +133,7 @@ def main(argv: Optional[Sequence[str]] = None) -> int:
if '-' in args.filenames:
print('reading stdin...', file=sys.stderr)
stdin = sys.stdin.read()
stdin = sys.stdin.buffer.read().decode()
tty = os.open(CONSOLE, os.O_RDONLY)
os.dup2(tty, sys.stdin.fileno())
else:

View File

@@ -36,7 +36,7 @@ class Perf:
def save_profiles(self, filename: str) -> None:
assert self._prof is not None
self._prof.dump_stats(f'{filename}.pstats')
with open(filename, 'w') as f:
with open(filename, 'w', encoding='UTF-8') as f:
f.write('μs\tevent\n')
for name, duration in self._records:
f.write(f'{int(duration * 1000 * 1000)}\t{name}\n')

View File

@@ -483,7 +483,7 @@ class Screen:
self.file.filename = filename
if os.path.isfile(self.file.filename):
with open(self.file.filename, newline='') as f:
with open(self.file.filename, encoding='UTF-8', newline='') as f:
*_, sha256 = get_lines(f)
else:
sha256 = hashlib.sha256(b'').hexdigest()
@@ -496,7 +496,7 @@ class Screen:
self.status.update('(file changed on disk, not implemented)')
return PromptResult.CANCELLED
with open(self.file.filename, 'w', newline='') as f:
with open(self.file.filename, 'w', encoding='UTF-8', newline='') as f:
f.write(contents)
self.file.modified = False

View File

@@ -37,7 +37,7 @@ def _highlight_output(theme: Theme, compiler: Compiler, filename: str) -> int:
if theme.default.bg is not None:
print('\x1b[48;2;{r};{g};{b}m'.format(**theme.default.bg._asdict()))
with open(filename) as f:
with open(filename, encoding='UTF-8') as f:
for line_idx, line in enumerate(f):
first_line = line_idx == 0
state, regions = highlight_line(compiler, state, line, first_line)
@@ -54,7 +54,7 @@ def main(argv: Optional[Sequence[str]] = None) -> int:
parser.add_argument('filename')
args = parser.parse_args(argv)
with open(args.filename) as f:
with open(args.filename, encoding='UTF-8') as f:
first_line = next(f, '')
theme = Theme.from_filename(args.theme)

View File

@@ -147,5 +147,5 @@ class Theme(NamedTuple):
if not os.path.exists(filename):
return cls.blank()
else:
with open(filename) as f:
with open(filename, encoding='UTF-8') as f:
return cls.from_dct(json.load(f))