Mercurial > vim
changeset 22206:5251a6592aaa v8.2.1652
patch 8.2.1652: cannot translate lines in the options window
Commit: https://github.com/vim/vim/commit/a953b5cf4f291875b805262eebd361e502de8c92
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Sep 10 14:25:25 2020 +0200
patch 8.2.1652: cannot translate lines in the options window
Problem: Cannot translate lines in the options window.
Solution: Use the AddOption() function to split descriptions where indicated
by a line break. (issue #6800)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 10 Sep 2020 14:30:03 +0200 |
parents | 81977a0405db |
children | d32eb3b1201e |
files | runtime/optwin.vim src/version.c |
diffstat | 2 files changed, 38 insertions(+), 28 deletions(-) [+] |
line wrap: on
line diff
--- a/runtime/optwin.vim +++ b/runtime/optwin.vim @@ -1,7 +1,7 @@ " These commands create the option window. " " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2020 aug 30 +" Last Change: 2020 Sep 10 " If there already is an option window, jump to that one. let buf = bufnr('option-window') @@ -20,7 +20,7 @@ let s:cpo_save = &cpo set cpo&vim " function to be called when <CR> is hit in the option-window -fun! <SID>CR() +func <SID>CR() " If on a continued comment line, go back to the first comment line let lnum = search("^[^\t]", 'bWcn') @@ -47,10 +47,10 @@ fun! <SID>CR() elseif match(line, '^ \=[0-9]') >= 0 exe "norm! /" . line . "\<CR>zt" endif -endfun +endfunc " function to be called when <Space> is hit in the option-window -fun! <SID>Space() +func <SID>Space() let lnum = line(".") let line = getline(lnum) @@ -67,14 +67,14 @@ fun! <SID>Space() endif endif -endfun +endfunc let s:local_to_window = gettext('(local to window)') let s:local_to_buffer = gettext('(local to buffer)') " find the window in which the option applies " returns 0 for global option, 1 for local option, -1 for error -fun! <SID>Find(lnum) +func <SID>Find(lnum) let line = getline(a:lnum - 1) if line =~ s:local_to_window || line =~ s:local_to_buffer let local = 1 @@ -95,10 +95,10 @@ fun! <SID>Find(lnum) let local = -1 endif return local -endfun +endfunc " Update a "set" line in the option window -fun! <SID>Update(lnum, line, local, thiswin) +func <SID>Update(lnum, line, local, thiswin) " get the new value of the option and update the option window line if match(a:line, "=") >= 0 let name = substitute(a:line, '^ \tset \([^=]*\)=.*', '\1', "") @@ -123,7 +123,7 @@ fun! <SID>Update(lnum, line, local, this endif endif set nomodified -endfun +endfunc " Reset 'title' and 'icon' to make it work faster. " Reset 'undolevels' to avoid undo'ing until the buffer is empty. @@ -159,35 +159,45 @@ call append(6, gettext('" Hit <Space> on " These functions are called often below. Keep them fast! +" Add an option name and explanation. The text can contain "\n" characters +" where a line break is to be inserted. +func <SID>AddOption(name, text) + let lines = split(a:text, "\n") + call append("$", a:name .. "\t" .. lines[0]) + for line in lines[1:] + call append("$", "\t" .. line) + endfor +endfunc + " Init a local binary option -fun! <SID>BinOptionL(name) +func <SID>BinOptionL(name) let val = getwinvar(winnr('#'), '&' . a:name) call append("$", substitute(substitute(" \tset " . val . a:name . "\t" . \!val . a:name, "0", "no", ""), "1", "", "")) -endfun +endfunc " Init a global binary option -fun! <SID>BinOptionG(name, val) +func <SID>BinOptionG(name, val) call append("$", substitute(substitute(" \tset " . a:val . a:name . "\t" . \!a:val . a:name, "0", "no", ""), "1", "", "")) -endfun +endfunc " Init a local string option -fun! <SID>OptionL(name) +func <SID>OptionL(name) let val = escape(getwinvar(winnr('#'), '&' . a:name), " \t\\\"|") call append("$", " \tset " . a:name . "=" . val) -endfun +endfunc " Init a global string option -fun! <SID>OptionG(name, val) +func <SID>OptionG(name, val) call append("$", " \tset " . a:name . "=" . escape(a:val, " \t\\\"|")) -endfun +endfunc let s:idx = 1 let s:lnum = line("$") call append("$", "") -fun! <SID>Header(text) +func <SID>Header(text) let line = s:idx . " " . a:text if s:idx < 10 let line = " " . line @@ -198,15 +208,15 @@ fun! <SID>Header(text) call append(s:lnum, line) let s:idx = s:idx + 1 let s:lnum = s:lnum + 1 -endfun +endfunc " Get the value of 'pastetoggle'. It could be a special key. -fun! <SID>PTvalue() +func <SID>PTvalue() redir @a silent set pt redir END return substitute(@a, '[^=]*=\(.*\)', '\1', "") -endfun +endfunc " Restore the previous value of 'cpoptions' here, it's used below. let &cpo = s:cpo_save @@ -240,8 +250,7 @@ call <SID>OptionG("hf", &hf) call <SID>Header("moving around, searching and patterns") call append("$", "whichwrap\tlist of flags specifying which commands wrap to another line") call <SID>OptionG("ww", &ww) -call append("$", "startofline\tmany jump commands move the cursor to the first non-blank") -call append("$", "\tcharacter of a line") +call <SID>AddOption("startofline", gettext("many jump commands move the cursor to the first non-blank\ncharacter of a line")) call <SID>BinOptionG("sol", &sol) call append("$", "paragraphs\tnroff macro names that separate paragraphs") call <SID>OptionG("para", ¶) @@ -286,15 +295,14 @@ endif call <SID>Header("tags") -call append("$", "tagbsearch\tuse binary searching in tags files") +call <SID>AddOption("tagbsearch", gettext("use binary searching in tags files")) call <SID>BinOptionG("tbs", &tbs) call append("$", "taglength\tnumber of significant characters in a tag name or zero") call append("$", " \tset tl=" . &tl) call append("$", "tags\tlist of file names to search for tags") call append("$", "\t(global or local to buffer)") call <SID>OptionG("tag", &tag) -call append("$", "tagcase\thow to handle case when searching in tags files:") -call append("$", "\t\"followic\" to follow 'ignorecase', \"ignore\" or \"match\"") +call <SID>AddOption("tagcase", gettext("how to handle case when searching in tags files:\n\"followic\" to follow 'ignorecase', \"ignore\" or \"match\"")) call append("$", "\t(global or local to buffer)") call <SID>OptionG("tc", &tc) call append("$", "tagrelative\tfile names in a tags file are relative to the tags file") @@ -1446,7 +1454,7 @@ augroup optwin \ call <SID>unload() | delfun <SID>unload augroup END -fun! <SID>unload() +func <SID>unload() delfun <SID>CR delfun <SID>Space delfun <SID>Find @@ -1457,7 +1465,7 @@ fun! <SID>unload() delfun <SID>BinOptionG delfun <SID>Header au! optwin -endfun +endfunc " Restore the previous value of 'title' and 'icon'. let &title = s:old_title