Make file_size segment output buffer size
This commit is contained in:
parent
6f679e08aa
commit
c237e66958
|
@ -16,7 +16,7 @@ def generate_directories(path):
|
||||||
while True:
|
while True:
|
||||||
old_path = path
|
old_path = path
|
||||||
path = os.path.dirname(path)
|
path = os.path.dirname(path)
|
||||||
if path == old_path:
|
if path == old_path or not path:
|
||||||
break
|
break
|
||||||
yield path
|
yield path
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@ vim_funcs = {
|
||||||
'fnamemodify': vim_get_func('fnamemodify'),
|
'fnamemodify': vim_get_func('fnamemodify'),
|
||||||
'expand': vim_get_func('expand'),
|
'expand': vim_get_func('expand'),
|
||||||
'bufnr': vim_get_func('bufnr', rettype=int),
|
'bufnr': vim_get_func('bufnr', rettype=int),
|
||||||
|
'line2byte': vim_get_func('line2byte', rettype=int),
|
||||||
}
|
}
|
||||||
|
|
||||||
vim_modes = {
|
vim_modes = {
|
||||||
|
@ -195,10 +196,9 @@ def file_name(segment_info, display_no_file=False, no_file_text='[No file]'):
|
||||||
return file_name
|
return file_name
|
||||||
|
|
||||||
|
|
||||||
@requires_segment_info
|
@window_cached
|
||||||
@memoize(2, cache_key=bufname, cache_reg_func=purgebuf_on_shell_and_write)
|
def file_size(suffix='B', si_prefix=False):
|
||||||
def file_size(segment_info, suffix='B', si_prefix=False):
|
'''Return file size in &encoding.
|
||||||
'''Return file size.
|
|
||||||
|
|
||||||
:param str suffix:
|
:param str suffix:
|
||||||
string appended to the file size
|
string appended to the file size
|
||||||
|
@ -206,13 +206,9 @@ def file_size(segment_info, suffix='B', si_prefix=False):
|
||||||
use SI prefix, e.g. MB instead of MiB
|
use SI prefix, e.g. MB instead of MiB
|
||||||
:return: file size or None if the file isn't saved or if the size is too big to fit in a number
|
:return: file size or None if the file isn't saved or if the size is too big to fit in a number
|
||||||
'''
|
'''
|
||||||
file_name = segment_info['buffer'].name
|
# Note: returns file size in &encoding, not in &fileencoding. But returned
|
||||||
if not file_name:
|
# size is updated immediately; and it is valid for any buffer
|
||||||
return None
|
file_size = vim_funcs['line2byte'](len(vim.current.buffer) + 1) - 1
|
||||||
try:
|
|
||||||
file_size = os.stat(file_name).st_size
|
|
||||||
except:
|
|
||||||
return None
|
|
||||||
return humanize_bytes(file_size, suffix, si_prefix)
|
return humanize_bytes(file_size, suffix, si_prefix)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -229,7 +229,7 @@ class TestVim(TestCase):
|
||||||
|
|
||||||
def test_file_size(self):
|
def test_file_size(self):
|
||||||
segment_info = vim_module._get_segment_info()
|
segment_info = vim_module._get_segment_info()
|
||||||
self.assertEqual(vim.file_size(segment_info=segment_info), None)
|
self.assertEqual(vim.file_size(segment_info=segment_info), '0 B')
|
||||||
with vim_module._with('buffer', os.path.join(os.path.dirname(__file__), 'empty')) as segment_info:
|
with vim_module._with('buffer', os.path.join(os.path.dirname(__file__), 'empty')) as segment_info:
|
||||||
self.assertEqual(vim.file_size(segment_info=segment_info), '0 B')
|
self.assertEqual(vim.file_size(segment_info=segment_info), '0 B')
|
||||||
|
|
||||||
|
|
15
tests/vim.py
15
tests/vim.py
|
@ -149,6 +149,12 @@ def _emul_exists(varname):
|
||||||
return varname[2:] in _g
|
return varname[2:] in _g
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
@_logged
|
||||||
|
def _emul_line2byte(line):
|
||||||
|
buflines = _buf_lines[_buffer()]
|
||||||
|
if line == len(buflines) + 1:
|
||||||
|
return sum((len(s) for s in buflines)) + 1
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
_window_ids = [None]
|
_window_ids = [None]
|
||||||
_window_id = 0
|
_window_id = 0
|
||||||
|
@ -242,6 +248,15 @@ class _Buffer(object):
|
||||||
_buf_scopes.pop(bufnr)
|
_buf_scopes.pop(bufnr)
|
||||||
|
|
||||||
|
|
||||||
|
class _Current(object):
|
||||||
|
@property
|
||||||
|
def buffer(self):
|
||||||
|
return buffers[_buffer()]
|
||||||
|
|
||||||
|
|
||||||
|
current = _Current()
|
||||||
|
|
||||||
|
|
||||||
_dict = None
|
_dict = None
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue