greduan
greduan

Reputation: 4938

VimL: Get extra KB from function that outputs file size

Right now I'm creating a plugin of sorts for Vim, it's meant to simply have all kinds of utility functions to put in your statusline, here's the link: https://github.com/Greduan/vim-usefulstatusline

Right now I have this function: https://github.com/Greduan/vim-usefulstatusline/blob/master/autoload/usefulstatusline_filesize.vim

It simply outputs the file size from bytes to megabytes. Now, currently if the file size reaches 1MB for example it outputs 1MB, this is fine, but I would also like for it to output the amount of bytes or KB extra that it has.

From example, instead of outputting 1MB it would output 1MB-367KB, see what I mean? It would output the biggest size, and then the remainder of the size that follows it. It's hard to explain.

So how would I modify the current function(s) to output the size this way?

Thanks for your help! Any of it is appreciated. :)

Upvotes: 0

Views: 229

Answers (1)

ZyX
ZyX

Reputation: 53634

Who needs this? I doubt it would be convenient to anyone (especially when having small remainders like 1MB + 3KB), using 1.367MB is much better. I see in your code that you don’t have either MB (1000*1000 B) or MiB (1024*1024 B), 1000*1024 bytes is very strange. Also, don’t use getfsize, it is wrong for any non-file buffer you constantly see in plugins. Use line2byte(line('$')+1)-1.

For 1.367MB you can just rewrite humanize_bytes function in VimL if you are fine with depending on +float feature.

Using integer arithmetic you can get the remainder with

let kbytes_remainder = kbytes % 1000

And do change to either MiB/KiB (M/K is a common shortcut used in ls. Without B) or MB/KB.

Upvotes: 5

Related Questions