From cefa7ef5fe9492e165467a33c276d1319024c0c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kim=20Silkeb=C3=A6kken?= Date: Thu, 24 Jan 2013 12:35:58 +0100 Subject: [PATCH] Add file_size segment for vim Closes #118. --- .../config_files/colorschemes/vim/default.json | 1 + powerline/segments/vim.py | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/powerline/config_files/colorschemes/vim/default.json b/powerline/config_files/colorschemes/vim/default.json index 065d7281..8703eaa4 100644 --- a/powerline/config_files/colorschemes/vim/default.json +++ b/powerline/config_files/colorschemes/vim/default.json @@ -64,6 +64,7 @@ "branch:divider": { "fg": "gray7", "bg": "gray4" }, "file_directory": { "fg": "gray9", "bg": "gray4" }, "file_name": { "fg": "white", "bg": "gray4", "attr": ["bold"] }, + "file_size": { "fg": "gray8", "bg": "gray2" }, "file_name_no_file": { "fg": "gray9", "bg": "gray4", "attr": ["bold"] }, "file_name_empty": { "fg": "gray9", "bg": "gray4" }, "file_format": { "fg": "gray8", "bg": "gray2" }, diff --git a/powerline/segments/vim.py b/powerline/segments/vim.py index 4c337c51..57602934 100644 --- a/powerline/segments/vim.py +++ b/powerline/segments/vim.py @@ -6,7 +6,7 @@ import os import vim from powerline.bindings.vim import vim_get_func -from powerline.lib import memoize +from powerline.lib import memoize, humanize_bytes from powerline.lib.vcs import guess vim_funcs = { @@ -15,6 +15,7 @@ vim_funcs = { 'expand': vim_get_func('expand'), 'line': vim_get_func('line', rettype=int), 'mode': vim_get_func('mode'), + 'getfsize': vim_get_func('getfsize', rettype=int), } vim_modes = { @@ -101,6 +102,20 @@ def file_name(display_no_file=False, no_file_text='[No file]'): return file_name.decode('utf-8') +@memoize(2) +def file_size(suffix='B', binary_prefix=False): + '''Return file size. + + Returns None if the file isn't saved, or if the size is too + big to fit in a number. + ''' + file_name = vim_funcs['expand']('%') + file_size = vim_funcs['getfsize'](file_name) + if file_size < 0: + return None + return humanize_bytes(file_size, suffix, binary_prefix) + + def file_format(): '''Return file format (i.e. line ending type).