Merge pull request #94 from 7brokenmirrors/utf8-default-encoding
Add checks for UTF-8
This commit is contained in:
@@ -236,7 +236,7 @@ class File:
|
|||||||
sio = io.StringIO(stdin)
|
sio = io.StringIO(stdin)
|
||||||
lines, self.nl, mixed, self.sha256 = get_lines(sio)
|
lines, self.nl, mixed, self.sha256 = get_lines(sio)
|
||||||
elif self.filename is not None and os.path.isfile(self.filename):
|
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)
|
lines, self.nl, mixed, self.sha256 = get_lines(f)
|
||||||
else:
|
else:
|
||||||
if self.filename is not None:
|
if self.filename is not None:
|
||||||
|
|||||||
@@ -688,7 +688,7 @@ class Grammars:
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
grammar_path = self._scope_to_files.pop(scope)
|
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)
|
ret = self._raw[scope] = json.load(f)
|
||||||
|
|
||||||
file_types = frozenset(ret.get('fileTypes', ()))
|
file_types = frozenset(ret.get('fileTypes', ()))
|
||||||
|
|||||||
@@ -19,7 +19,8 @@ class History:
|
|||||||
history_dir = xdg_data('history')
|
history_dir = xdg_data('history')
|
||||||
os.makedirs(history_dir, exist_ok=True)
|
os.makedirs(history_dir, exist_ok=True)
|
||||||
for filename in os.listdir(history_dir):
|
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.data[filename] = f.read().splitlines()
|
||||||
self._orig_len[filename] = len(self.data[filename])
|
self._orig_len[filename] = len(self.data[filename])
|
||||||
try:
|
try:
|
||||||
@@ -28,5 +29,6 @@ class History:
|
|||||||
for k, v in self.data.items():
|
for k, v in self.data.items():
|
||||||
new_history = v[self._orig_len[k]:]
|
new_history = v[self._orig_len[k]:]
|
||||||
if new_history:
|
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')
|
f.write('\n'.join(new_history) + '\n')
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ def main(argv: Optional[Sequence[str]] = None) -> int:
|
|||||||
|
|
||||||
if '-' in args.filenames:
|
if '-' in args.filenames:
|
||||||
print('reading stdin...', file=sys.stderr)
|
print('reading stdin...', file=sys.stderr)
|
||||||
stdin = sys.stdin.read()
|
stdin = sys.stdin.buffer.read().decode()
|
||||||
tty = os.open(CONSOLE, os.O_RDONLY)
|
tty = os.open(CONSOLE, os.O_RDONLY)
|
||||||
os.dup2(tty, sys.stdin.fileno())
|
os.dup2(tty, sys.stdin.fileno())
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ class Perf:
|
|||||||
def save_profiles(self, filename: str) -> None:
|
def save_profiles(self, filename: str) -> None:
|
||||||
assert self._prof is not None
|
assert self._prof is not None
|
||||||
self._prof.dump_stats(f'{filename}.pstats')
|
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')
|
f.write('μs\tevent\n')
|
||||||
for name, duration in self._records:
|
for name, duration in self._records:
|
||||||
f.write(f'{int(duration * 1000 * 1000)}\t{name}\n')
|
f.write(f'{int(duration * 1000 * 1000)}\t{name}\n')
|
||||||
|
|||||||
@@ -483,7 +483,7 @@ class Screen:
|
|||||||
self.file.filename = filename
|
self.file.filename = filename
|
||||||
|
|
||||||
if os.path.isfile(self.file.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)
|
*_, sha256 = get_lines(f)
|
||||||
else:
|
else:
|
||||||
sha256 = hashlib.sha256(b'').hexdigest()
|
sha256 = hashlib.sha256(b'').hexdigest()
|
||||||
@@ -496,7 +496,7 @@ class Screen:
|
|||||||
self.status.update('(file changed on disk, not implemented)')
|
self.status.update('(file changed on disk, not implemented)')
|
||||||
return PromptResult.CANCELLED
|
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)
|
f.write(contents)
|
||||||
|
|
||||||
self.file.modified = False
|
self.file.modified = False
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ def _highlight_output(theme: Theme, compiler: Compiler, filename: str) -> int:
|
|||||||
|
|
||||||
if theme.default.bg is not None:
|
if theme.default.bg is not None:
|
||||||
print('\x1b[48;2;{r};{g};{b}m'.format(**theme.default.bg._asdict()))
|
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):
|
for line_idx, line in enumerate(f):
|
||||||
first_line = line_idx == 0
|
first_line = line_idx == 0
|
||||||
state, regions = highlight_line(compiler, state, line, first_line)
|
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')
|
parser.add_argument('filename')
|
||||||
args = parser.parse_args(argv)
|
args = parser.parse_args(argv)
|
||||||
|
|
||||||
with open(args.filename) as f:
|
with open(args.filename, encoding='UTF-8') as f:
|
||||||
first_line = next(f, '')
|
first_line = next(f, '')
|
||||||
|
|
||||||
theme = Theme.from_filename(args.theme)
|
theme = Theme.from_filename(args.theme)
|
||||||
|
|||||||
@@ -147,5 +147,5 @@ class Theme(NamedTuple):
|
|||||||
if not os.path.exists(filename):
|
if not os.path.exists(filename):
|
||||||
return cls.blank()
|
return cls.blank()
|
||||||
else:
|
else:
|
||||||
with open(filename) as f:
|
with open(filename, encoding='UTF-8') as f:
|
||||||
return cls.from_dct(json.load(f))
|
return cls.from_dct(json.load(f))
|
||||||
|
|||||||
Reference in New Issue
Block a user