Mercurial > vim
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 |