defaults: set nostartofline (#11135)

Having the cursor change column can be surprising.

Force startofline in functional and old tests.
Remove the functional breakindent test, as it's a subset of the oldtest one.
This commit is contained in:
Justin M. Keyes 2019-12-03 20:58:03 -08:00 committed by GitHub
commit 3aa95ef27e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 6 additions and 218 deletions

View File

@ -5746,7 +5746,7 @@ A jump table for the options with a short description can be found at |Q_op|.
current one. |:vsplit| current one. |:vsplit|
*'startofline'* *'sol'* *'nostartofline'* *'nosol'* *'startofline'* *'sol'* *'nostartofline'* *'nosol'*
'startofline' 'sol' boolean (default on) 'startofline' 'sol' boolean (default off)
global global
When "on" the commands listed below move the cursor to the first When "on" the commands listed below move the cursor to the first
non-blank of the line. When off the cursor is kept in the same column non-blank of the line. When off the cursor is kept in the same column

View File

@ -55,6 +55,7 @@ the differences.
- 'showcmd' is enabled - 'showcmd' is enabled
- 'sidescroll' defaults to 1 - 'sidescroll' defaults to 1
- 'smarttab' is enabled - 'smarttab' is enabled
- 'startofline' is disabled
- 'tabpagemax' defaults to 50 - 'tabpagemax' defaults to 50
- 'tags' defaults to "./tags;,tags" - 'tags' defaults to "./tags;,tags"
- 'ttimeoutlen' defaults to 50 - 'ttimeoutlen' defaults to 50

View File

@ -2325,9 +2325,9 @@ return {
full_name='startofline', abbreviation='sol', full_name='startofline', abbreviation='sol',
type='bool', scope={'global'}, type='bool', scope={'global'},
vi_def=true, vi_def=true,
vim=true, vim=false,
varname='p_sol', varname='p_sol',
defaults={if_true={vi=true}} defaults={if_true={vi=false}}
}, },
{ {
full_name='statusline', abbreviation='stl', full_name='statusline', abbreviation='stl',

View File

@ -19,6 +19,7 @@ set sidescroll=0
set tags=./tags,tags set tags=./tags,tags
set undodir^=. set undodir^=.
set wildoptions= set wildoptions=
set startofline
" Prevent Nvim log from writing to stderr. " Prevent Nvim log from writing to stderr.
let $NVIM_LOG_FILE = exists($NVIM_LOG_FILE) ? $NVIM_LOG_FILE : 'Xnvim.log' let $NVIM_LOG_FILE = exists($NVIM_LOG_FILE) ? $NVIM_LOG_FILE : 'Xnvim.log'

View File

@ -35,7 +35,7 @@ module.nvim_prog = (
) )
-- Default settings for the test session. -- Default settings for the test session.
module.nvim_set = ( module.nvim_set = (
'set shortmess+=IS background=light noswapfile noautoindent' 'set shortmess+=IS background=light noswapfile noautoindent startofline'
..' laststatus=1 undodir=. directory=. viewdir=. backupdir=.' ..' laststatus=1 undodir=. directory=. viewdir=. backupdir=.'
..' belloff= wildoptions-=pum noshowcmd noruler nomore redrawdebug=invalid') ..' belloff= wildoptions-=pum noshowcmd noruler nomore redrawdebug=invalid')
module.nvim_argv = { module.nvim_argv = {

View File

@ -1,214 +0,0 @@
-- Test for breakindent
local helpers = require('test.functional.helpers')(after_each)
local feed, insert = helpers.feed, helpers.insert
local clear, feed_command, expect = helpers.clear, helpers.feed_command, helpers.expect
describe('breakindent', function()
setup(clear)
-- luacheck: ignore 621 (Indentation)
-- luacheck: ignore 613 (Trailing whitespace in a string)
-- luacheck: ignore 611 (Line contains only whitespaces)
it('is working', function()
insert('dummy text')
feed_command('set wildchar=^E')
feed_command('10new')
feed_command('vsp')
feed_command('vert resize 20')
feed_command([[put =\"\tabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP\"]])
feed_command('set ts=4 sw=4 sts=4 breakindent')
feed_command('fu! ScreenChar(line, width)')
feed_command(' let c=""')
feed_command(' for i in range(1,a:width)')
feed_command(' let c.=nr2char(screenchar(a:line, i))')
feed_command(' endfor')
feed_command([[ let c.="\n"]])
feed_command(' for i in range(1,a:width)')
feed_command(' let c.=nr2char(screenchar(a:line+1, i))')
feed_command(' endfor')
feed_command([[ let c.="\n"]])
feed_command(' for i in range(1,a:width)')
feed_command(' let c.=nr2char(screenchar(a:line+2, i))')
feed_command(' endfor')
feed_command(' return c')
feed_command('endfu')
feed_command('fu DoRecordScreen()')
feed_command(' wincmd l')
feed_command([[ $put =printf(\"\n%s\", g:test)]])
feed_command(' $put =g:line1')
feed_command(' wincmd p')
feed_command('endfu')
feed_command('set briopt=min:0')
feed_command('let g:test="Test 1: Simple breakindent"')
feed_command('let line1=ScreenChar(line("."),8)')
feed_command('call DoRecordScreen()')
feed_command('let g:test="Test 2: Simple breakindent + sbr=>>"')
feed_command('set sbr=>>')
feed_command('let line1=ScreenChar(line("."),8)')
feed_command('call DoRecordScreen()')
feed_command('let g:test ="Test 3: Simple breakindent + briopt:sbr"')
feed_command('set briopt=sbr,min:0 sbr=++')
feed_command('let line1=ScreenChar(line("."),8)')
feed_command('call DoRecordScreen()')
feed_command('let g:test ="Test 4: Simple breakindent + min width: 18"')
feed_command('set sbr= briopt=min:18')
feed_command('let line1=ScreenChar(line("."),8)')
feed_command('call DoRecordScreen()')
feed_command('let g:test =" Test 5: Simple breakindent + shift by 2"')
feed_command('set briopt=shift:2,min:0')
feed_command('let line1=ScreenChar(line("."),8)')
feed_command('call DoRecordScreen()')
feed_command('let g:test=" Test 6: Simple breakindent + shift by -1"')
feed_command('set briopt=shift:-1,min:0')
feed_command('let line1=ScreenChar(line("."),8)')
feed_command('call DoRecordScreen()')
feed_command('let g:test=" Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr"')
feed_command('set briopt=shift:1,sbr,min:0 nu sbr=? nuw=4')
feed_command('let line1=ScreenChar(line("."),10)')
feed_command('call DoRecordScreen()')
feed_command('let g:test=" Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr"')
feed_command('set briopt=shift:1,sbr,min:0 nu sbr=# list lcs&vi')
feed_command('let line1=ScreenChar(line("."),10)')
feed_command('call DoRecordScreen()')
feed_command([[let g:test=" Test 9: breakindent + shift by +1 + 'nu' + sbr=# list"]])
feed_command('set briopt-=sbr')
feed_command('let line1=ScreenChar(line("."),10)')
feed_command('call DoRecordScreen()')
feed_command([[let g:test=" Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n"]])
feed_command('set cpo+=n sbr=~ nu nuw=4 nolist briopt=sbr,min:0')
feed_command('let line1=ScreenChar(line("."),10)')
feed_command('call DoRecordScreen()')
feed_command('wincmd p')
feed_command([[let g:test="\n Test 11: strdisplaywidth when breakindent is on"]])
feed_command('set cpo-=n sbr=>> nu nuw=4 nolist briopt= ts=4')
-- Skip leading tab when calculating text width.
feed_command('let text=getline(2)')
-- Text wraps 3 times.
feed_command('let width = strlen(text[1:])+indent(2)*4+strlen(&sbr)*3')
feed_command('$put =g:test')
feed_command([[$put =printf(\"strdisplaywidth: %d == calculated: %d\", strdisplaywidth(text), width)]])
feed_command([[let g:str="\t\t\t\t\t{"]])
feed_command('let g:test=" Test 12: breakindent + long indent"')
feed_command('wincmd p')
feed_command('set all& breakindent linebreak briopt=min:10 nu numberwidth=3 ts=4')
feed_command('$put =g:str')
feed('zt')
feed_command('let line1=ScreenChar(1,10)')
feed_command('wincmd p')
feed_command('call DoRecordScreen()')
-- Test, that the string " a\tb\tc\td\te" is correctly displayed in a
-- 20 column wide window (see bug report
-- https://groups.google.com/d/msg/vim_dev/ZOdg2mc9c9Y/TT8EhFjEy0IJ ).
feed_command('only')
feed_command('vert 20new')
feed_command('set all& breakindent briopt=min:10')
feed_command([[call setline(1, [" a\tb\tc\td\te", " z y x w v"])]])
feed_command([[/^\s*a]])
feed('fbgjyl')
feed_command('let line1 = @0')
feed_command([[?^\s*z]])
feed('fygjyl')
feed_command('let line2 = @0')
feed_command('quit!')
feed_command([[$put ='Test 13: breakindent with wrapping Tab']])
feed_command('$put =line1')
feed_command('$put =line2')
feed_command('let g:test="Test 14: breakindent + visual blockwise delete #1"')
feed_command('set all& breakindent shada+=nX-test-breakindent.shada')
feed_command('30vnew')
feed_command('normal! 3a1234567890')
feed_command('normal! a abcde')
feed_command([[exec "normal! 0\<C-V>tex"]])
feed_command('let line1=ScreenChar(line("."),8)')
feed_command('call DoRecordScreen()')
feed_command('let g:test="Test 15: breakindent + visual blockwise delete #2"')
feed_command('%d')
feed_command('normal! 4a1234567890')
feed_command([[exec "normal! >>\<C-V>3f0x"]])
feed_command('let line1=ScreenChar(line("."),20)')
feed_command('call DoRecordScreen()')
feed_command('quit!')
-- Assert buffer contents.
expect([[
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP
Test 1: Simple breakindent
abcd
qrst
GHIJ
Test 2: Simple breakindent + sbr=>>
abcd
>>qr
>>EF
Test 3: Simple breakindent + briopt:sbr
abcd
++ qrst
++ GHIJ
Test 4: Simple breakindent + min width: 18
abcd
qrstuv
IJKLMN
Test 5: Simple breakindent + shift by 2
abcd
qr
EF
Test 6: Simple breakindent + shift by -1
abcd
qrstu
HIJKL
Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr
2 ab
? m
? x
Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr
2 ^Iabcd
# opq
# BCD
Test 9: breakindent + shift by +1 + 'nu' + sbr=# list
2 ^Iabcd
#op
#AB
Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n
2 ab
~ mn
~ yz
Test 11: strdisplaywidth when breakindent is on
strdisplaywidth: 46 == calculated: 64
{
Test 12: breakindent + long indent
56
~
Test 13: breakindent with wrapping Tab
d
w
Test 14: breakindent + visual blockwise delete #1
e
~
~
Test 15: breakindent + visual blockwise delete #2
1234567890
~
~ ]])
end)
end)