comparison src/testdir/test_fold.vim @ 31821:5614e76f3dee v9.0.1243

patch 9.0.1243: :setglobal cannot use script-local function for "expr" option Commit: https://github.com/vim/vim/commit/01d4efe2e87632aa085897d3d64e27585908f977 Author: zeertzjq <zeertzjq@outlook.com> Date: Wed Jan 25 15:31:28 2023 +0000 patch 9.0.1243: :setglobal cannot use script-local function for "expr" option Problem: :setglobal cannot use script-local function for "expr" option. Solution: Use the pointer to the option value properly. (closes https://github.com/vim/vim/issues/11883)
author Bram Moolenaar <Bram@vim.org>
date Wed, 25 Jan 2023 16:45:03 +0100
parents b53ab3c3e0c9
children dbec60b8c253
comparison
equal deleted inserted replaced
31820:08ee50169c0f 31821:5614e76f3dee
1501 call setline(1, 'abc') 1501 call setline(1, 'abc')
1502 let g:FoldLnum = 0 1502 let g:FoldLnum = 0
1503 set foldmethod=expr foldexpr=s:FoldFunc() 1503 set foldmethod=expr foldexpr=s:FoldFunc()
1504 redraw! 1504 redraw!
1505 call assert_equal(expand('<SID>') .. 'FoldFunc()', &foldexpr) 1505 call assert_equal(expand('<SID>') .. 'FoldFunc()', &foldexpr)
1506 call assert_equal(expand('<SID>') .. 'FoldFunc()', &g:foldexpr)
1506 call assert_equal(1, g:FoldLnum) 1507 call assert_equal(1, g:FoldLnum)
1507 set foldmethod& foldexpr= 1508 set foldmethod& foldexpr=
1508 bw! 1509 bw!
1509 new | only 1510 new | only
1510 call setline(1, 'abc') 1511 call setline(1, 'abc')
1511 let g:FoldLnum = 0 1512 let g:FoldLnum = 0
1512 set foldmethod=expr foldexpr=<SID>FoldFunc() 1513 set foldmethod=expr foldexpr=<SID>FoldFunc()
1513 redraw! 1514 redraw!
1514 call assert_equal(expand('<SID>') .. 'FoldFunc()', &foldexpr) 1515 call assert_equal(expand('<SID>') .. 'FoldFunc()', &foldexpr)
1516 call assert_equal(expand('<SID>') .. 'FoldFunc()', &g:foldexpr)
1515 call assert_equal(1, g:FoldLnum) 1517 call assert_equal(1, g:FoldLnum)
1516 set foldmethod& foldexpr= 1518 bw!
1519 call setline(1, 'abc')
1520 setlocal foldmethod& foldexpr&
1521 setglobal foldmethod=expr foldexpr=s:FoldFunc()
1522 call assert_equal(expand('<SID>') .. 'FoldFunc()', &g:foldexpr)
1523 call assert_equal('0', &foldexpr)
1524 enew!
1525 call setline(1, 'abc')
1526 redraw!
1527 call assert_equal(expand('<SID>') .. 'FoldFunc()', &foldexpr)
1528 call assert_equal(1, g:FoldLnum)
1529 bw!
1530 call setline(1, 'abc')
1531 setlocal foldmethod& foldexpr&
1532 setglobal foldmethod=expr foldexpr=<SID>FoldFunc()
1533 call assert_equal(expand('<SID>') .. 'FoldFunc()', &g:foldexpr)
1534 call assert_equal('0', &foldexpr)
1535 enew!
1536 call setline(1, 'abc')
1537 redraw!
1538 call assert_equal(expand('<SID>') .. 'FoldFunc()', &foldexpr)
1539 call assert_equal(1, g:FoldLnum)
1540 set foldmethod& foldexpr&
1517 delfunc s:FoldFunc 1541 delfunc s:FoldFunc
1518 bw! 1542 bw!
1519 endfunc 1543 endfunc
1520 1544
1521 " Test for using a script-local function for 'foldtext' 1545 " Test for using a script-local function for 'foldtext'
1525 return foldtext() 1549 return foldtext()
1526 endfunc 1550 endfunc
1527 new | only 1551 new | only
1528 call setline(1, range(50)) 1552 call setline(1, range(50))
1529 let g:FoldTextArgs = [] 1553 let g:FoldTextArgs = []
1530 set foldmethod=manual
1531 set foldtext=s:FoldText() 1554 set foldtext=s:FoldText()
1532 norm! 4Gzf4j 1555 norm! 4Gzf4j
1533 redraw! 1556 redraw!
1534 call assert_equal(expand('<SID>') .. 'FoldText()', &foldtext) 1557 call assert_equal(expand('<SID>') .. 'FoldText()', &foldtext)
1558 call assert_equal(expand('<SID>') .. 'FoldText()', &g:foldtext)
1535 call assert_equal([4, 8], g:FoldTextArgs) 1559 call assert_equal([4, 8], g:FoldTextArgs)
1536 set foldtext& 1560 set foldtext&
1537 bw! 1561 bw!
1538 new | only 1562 new | only
1539 call setline(1, range(50)) 1563 call setline(1, range(50))
1540 let g:FoldTextArgs = [] 1564 let g:FoldTextArgs = []
1541 set foldmethod=manual
1542 set foldtext=<SID>FoldText() 1565 set foldtext=<SID>FoldText()
1543 norm! 8Gzf4j 1566 norm! 8Gzf4j
1544 redraw! 1567 redraw!
1545 call assert_equal(expand('<SID>') .. 'FoldText()', &foldtext) 1568 call assert_equal(expand('<SID>') .. 'FoldText()', &foldtext)
1569 call assert_equal(expand('<SID>') .. 'FoldText()', &g:foldtext)
1546 call assert_equal([8, 12], g:FoldTextArgs) 1570 call assert_equal([8, 12], g:FoldTextArgs)
1571 set foldtext&
1572 bw!
1573 call setline(1, range(50))
1574 let g:FoldTextArgs = []
1575 setlocal foldtext&
1576 setglobal foldtext=s:FoldText()
1577 call assert_equal(expand('<SID>') .. 'FoldText()', &g:foldtext)
1578 call assert_equal('foldtext()', &foldtext)
1579 enew!
1580 call setline(1, range(50))
1581 norm! 12Gzf4j
1582 redraw!
1583 call assert_equal(expand('<SID>') .. 'FoldText()', &foldtext)
1584 call assert_equal([12, 16], g:FoldTextArgs)
1585 set foldtext&
1586 bw!
1587 call setline(1, range(50))
1588 let g:FoldTextArgs = []
1589 setlocal foldtext&
1590 setglobal foldtext=<SID>FoldText()
1591 call assert_equal(expand('<SID>') .. 'FoldText()', &g:foldtext)
1592 call assert_equal('foldtext()', &foldtext)
1593 enew!
1594 call setline(1, range(50))
1595 norm! 16Gzf4j
1596 redraw!
1597 call assert_equal(expand('<SID>') .. 'FoldText()', &foldtext)
1598 call assert_equal([16, 20], g:FoldTextArgs)
1547 set foldtext& 1599 set foldtext&
1548 bw! 1600 bw!
1549 delfunc s:FoldText 1601 delfunc s:FoldText
1550 endfunc 1602 endfunc
1551 1603