Mercurial > vim
changeset 32331:2a096f5f527c v9.0.1497
patch 9.0.1497: the ruler percentage can't be localized
Commit: https://github.com/vim/vim/commit/971cd2b8bc3e3a7faa886162cd7568938c627882
Author: Emir SARI <emir_sari@icloud.com>
Date: Sat Apr 29 12:09:53 2023 +0100
patch 9.0.1497: the ruler percentage can't be localized
Problem: The ruler percentage can't be localized.
Solution: Use a string that can be translated. (Emir Sari, closes https://github.com/vim/vim/issues/12311)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 29 Apr 2023 13:15:04 +0200 |
parents | 9f9e2a63ad56 |
children | 9ee523cc39d0 |
files | src/buffer.c src/version.c |
diffstat | 2 files changed, 22 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/buffer.c +++ b/src/buffer.c @@ -5231,8 +5231,8 @@ build_stl_str_hl( #endif // FEAT_STL_OPT /* - * Get relative cursor position in window into "buf[buflen]", in the form 99%, - * using "Top", "Bot" or "All" when appropriate. + * Get relative cursor position in window into "buf[buflen]", in the localized + * percentage form like %99, 99%; using "Top", "Bot" or "All" when appropriate. */ void get_rel_pos( @@ -5256,13 +5256,27 @@ get_rel_pos( below = wp->w_buffer->b_ml.ml_line_count - wp->w_botline + 1; if (below <= 0) vim_strncpy(buf, (char_u *)(above == 0 ? _("All") : _("Bot")), - (size_t)(buflen - 1)); + (size_t)(buflen - 1)); else if (above <= 0) vim_strncpy(buf, (char_u *)_("Top"), (size_t)(buflen - 1)); else - vim_snprintf((char *)buf, (size_t)buflen, "%2d%%", above > 1000000L - ? (int)(above / ((above + below) / 100L)) - : (int)(above * 100L / (above + below))); + { + int perc = (above > 1000000L) + ? (int)(above / ((above + below) / 100L)) + : (int)(above * 100L / (above + below)); + + char *p = (char *)buf; + size_t l = buflen; + if (perc < 10) + { + // prepend one space + buf[0] = ' '; + ++p; + --l; + } + // localized percentage value + vim_snprintf(p, l, _("%d%%"), perc); + } } /*