Patch 8.2.1652
Problem:    Cannot translate lines in the options window.
Solution:   Use the AddOption() function to split descriptions where indicated
            by a line break. (issue #6800)
Files:      runtime/optwin.vim


*** ../vim-8.2.1651/runtime/optwin.vim  2020-09-09 15:10:48.460213889 +0200
--- runtime/optwin.vim  2020-09-10 14:24:28.392689581 +0200
***************
*** 1,7 ****
  " These commands create the option window.
  "
  " Maintainer: Bram Moolenaar <[email protected]>
! " Last Change:        2020 aug 30
  
  " If there already is an option window, jump to that one.
  let buf = bufnr('option-window')
--- 1,7 ----
  " These commands create the option window.
  "
  " Maintainer: Bram Moolenaar <[email protected]>
! " Last Change:        2020 Sep 10
  
  " If there already is an option window, jump to that one.
  let buf = bufnr('option-window')
***************
*** 20,26 ****
  set cpo&vim
  
  " function to be called when <CR> is hit in the option-window
! fun! <SID>CR()
  
    " If on a continued comment line, go back to the first comment line
    let lnum = search("^[^\t]", 'bWcn')
--- 20,26 ----
  set cpo&vim
  
  " function to be called when <CR> is hit in the option-window
! func <SID>CR()
  
    " If on a continued comment line, go back to the first comment line
    let lnum = search("^[^\t]", 'bWcn')
***************
*** 47,56 ****
    elseif match(line, '^ \=[0-9]') >= 0
      exe "norm! /" . line . "\<CR>zt"
    endif
! endfun
  
  " function to be called when <Space> is hit in the option-window
! fun! <SID>Space()
  
    let lnum = line(".")
    let line = getline(lnum)
--- 47,56 ----
    elseif match(line, '^ \=[0-9]') >= 0
      exe "norm! /" . line . "\<CR>zt"
    endif
! endfunc
  
  " function to be called when <Space> is hit in the option-window
! func <SID>Space()
  
    let lnum = line(".")
    let line = getline(lnum)
***************
*** 67,80 ****
      endif
  
    endif
! endfun
  
  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)
      let line = getline(a:lnum - 1)
      if line =~ s:local_to_window || line =~ s:local_to_buffer
        let local = 1
--- 67,80 ----
      endif
  
    endif
! 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
! 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,104 ****
        let local = -1
      endif
      return local
! endfun
  
  " Update a "set" line in the option window
! fun! <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', "")
--- 95,104 ----
        let local = -1
      endif
      return local
! endfunc
  
  " Update a "set" line in the option window
! 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,129 ****
      endif
    endif
    set nomodified
! endfun
  
  " Reset 'title' and 'icon' to make it work faster.
  " Reset 'undolevels' to avoid undo'ing until the buffer is empty.
--- 123,129 ----
      endif
    endif
    set nomodified
! endfunc
  
  " Reset 'title' and 'icon' to make it work faster.
  " Reset 'undolevels' to avoid undo'ing until the buffer is empty.
***************
*** 159,193 ****
  
  " These functions are called often below.  Keep them fast!
  
  " Init a local binary option
! fun! <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
  
  " Init a global binary option
! fun! <SID>BinOptionG(name, val)
    call append("$", substitute(substitute(" \tset " . a:val . a:name . "\t" .
        \!a:val . a:name, "0", "no", ""), "1", "", ""))
! endfun
  
  " Init a local string option
! fun! <SID>OptionL(name)
    let val = escape(getwinvar(winnr('#'), '&' . a:name), " \t\\\"|")
    call append("$", " \tset " . a:name . "=" . val)
! endfun
  
  " Init a global string option
! fun! <SID>OptionG(name, val)
    call append("$", " \tset " . a:name . "=" . escape(a:val, " \t\\\"|"))
! endfun
  
  let s:idx = 1
  let s:lnum = line("$")
  call append("$", "")
  
! fun! <SID>Header(text)
    let line = s:idx . " " . a:text
    if s:idx < 10
      let line = " " . line
--- 159,203 ----
  
  " 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
! 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", "", ""))
! endfunc
  
  " Init a global binary option
! func <SID>BinOptionG(name, val)
    call append("$", substitute(substitute(" \tset " . a:val . a:name . "\t" .
        \!a:val . a:name, "0", "no", ""), "1", "", ""))
! endfunc
  
  " Init a local string option
! func <SID>OptionL(name)
    let val = escape(getwinvar(winnr('#'), '&' . a:name), " \t\\\"|")
    call append("$", " \tset " . a:name . "=" . val)
! endfunc
  
  " Init a global string option
! func <SID>OptionG(name, val)
    call append("$", " \tset " . a:name . "=" . escape(a:val, " \t\\\"|"))
! endfunc
  
  let s:idx = 1
  let s:lnum = line("$")
  call append("$", "")
  
! func <SID>Header(text)
    let line = s:idx . " " . a:text
    if s:idx < 10
      let line = " " . line
***************
*** 198,212 ****
    call append(s:lnum, line)
    let s:idx = s:idx + 1
    let s:lnum = s:lnum + 1
! endfun
  
  " Get the value of 'pastetoggle'.  It could be a special key.
! fun! <SID>PTvalue()
    redir @a
    silent set pt
    redir END
    return substitute(@a, '[^=]*=\(.*\)', '\1', "")
! endfun
  
  " Restore the previous value of 'cpoptions' here, it's used below.
  let &cpo = s:cpo_save
--- 208,222 ----
    call append(s:lnum, line)
    let s:idx = s:idx + 1
    let s:lnum = s:lnum + 1
! endfunc
  
  " Get the value of 'pastetoggle'.  It could be a special key.
! func <SID>PTvalue()
    redir @a
    silent set pt
    redir END
    return substitute(@a, '[^=]*=\(.*\)', '\1', "")
! endfunc
  
  " Restore the previous value of 'cpoptions' here, it's used below.
  let &cpo = s:cpo_save
***************
*** 240,247 ****
  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>BinOptionG("sol", &sol)
  call append("$", "paragraphs\tnroff macro names that separate paragraphs")
  call <SID>OptionG("para", &para)
--- 250,256 ----
  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 <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", &para)
***************
*** 286,300 ****
  
  
  call <SID>Header("tags")
! call append("$", "tagbsearch\tuse 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 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")
--- 295,308 ----
  
  
  call <SID>Header("tags")
! 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 <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,1452 ****
        \ call <SID>unload() | delfun <SID>unload
  augroup END
  
! fun! <SID>unload()
    delfun <SID>CR
    delfun <SID>Space
    delfun <SID>Find
--- 1454,1460 ----
        \ call <SID>unload() | delfun <SID>unload
  augroup END
  
! func <SID>unload()
    delfun <SID>CR
    delfun <SID>Space
    delfun <SID>Find
***************
*** 1457,1463 ****
    delfun <SID>BinOptionG
    delfun <SID>Header
    au! optwin
! endfun
  
  " Restore the previous value of 'title' and 'icon'.
  let &title = s:old_title
--- 1465,1471 ----
    delfun <SID>BinOptionG
    delfun <SID>Header
    au! optwin
! endfunc
  
  " Restore the previous value of 'title' and 'icon'.
  let &title = s:old_title
*** ../vim-8.2.1651/src/version.c       2020-09-09 22:43:15.362693356 +0200
--- src/version.c       2020-09-10 14:23:04.872920089 +0200
***************
*** 752,753 ****
--- 752,755 ----
  {   /* Add new patch number below this line */
+ /**/
+     1652,
  /**/

-- 
LAUNCELOT: Isn't there a St. Aaaaarrrrrrggghhh's in Cornwall?
ARTHUR:    No, that's Saint Ives.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202009101225.08ACPtYh609342%40masaka.moolenaar.net.

Raspunde prin e-mail lui