I found that I had mistakenly removed execute from all Map(.....) portions, 
causing them to fail to map to actual keys.
https://github.com/seanexplus/vim-unimpaired/commit/f2ef4fa34e01a8b552037c35525a19f15c94826b

I've now completed testing and fixing most of the functionality. During this 
process, I learned:

Some Vim script patterns that use strings to define actions must be converted 
to lambda syntax in Vim 9 script, such as filter() and substitute().
https://github.com/seanexplus/vim-unimpaired/commit/fb372df8d17f7e1760ded1d927efcd9e3c629094

When using substitute() in Vim 9 script, if the lambda includes expressions 
like nr2char(submatch(1)), it must be rewritten as nr2char(str2nr(submatch(1))).
https://github.com/seanexplus/vim-unimpaired/commit/21659e0da4d1acad5a8dbbc100276f426fa2c18f

In Vim script, you can simply use +/- to move to the next/previous line, but in 
Vim 9 script you must use the cursor() function.
https://github.com/seanexplus/vim-unimpaired/commit/3bf942ff6f39dd77fcca4ed2090fdfafccbf5312

In Vim script, you can operate on registers using @@, but in Vim 9 script you 
have to use setreg()/getreg().
In Vim script, you can use {funcname}(param) to call function by name, but in 
Vim 9 script you have to use function(funcname)(param)
Where <sfile> is used in Vim script, <script>/<stack> must be used in Vim 9 
script.
https://github.com/seanexplus/vim-unimpaired/commit/01ec3e9eb389081b2f01b364c09e2a731949c11a

> Salman Halim <salmanha...@gmail.com> 於 2025年6月11日 晚上8:45 寫道:
> 
> Use .. in Vim 9 (mappings 2 and 3 below). Also, you have v.count and v:count. 
> They probably aren't both correct (all of them have that). 
> 
> What happens when you just type the whole thing on the command line directly?
> 
> Salman
> 
> On Wed, Jun 11, 2025, 08:21 Yu Lang Chiang <seanexp...@gmail.com 
> <mailto:seanexp...@gmail.com>> wrote:
>> I tried the following combinations:
>> 
>> <C-U>exe "" . (v.count ? v:count : "") . "bprevious"<CR>
>> <C-U>exe "” .. (v.count ? v:count : "") .. "bprevious"<CR>
>> <C-U>execute "” .. (v.count ? v:count : "") .. "bprevious"<CR>
>> <C-U>execute "” . (v.count ? v:count : "") . "bprevious"<CR>
>> 
>> 
>> None of them work.
>> 
>> Vim has been updated to version 9.1.1435
>> 
>>> Maxim Kim <haba...@gmail.com <mailto:haba...@gmail.com>> 於 2025年6月11日 
>>> 上午11:05 寫道:
>>> 
>>> vim9script enforces spaces between operators,  your mappings are defined in 
>>> vim9script context so it expects spaces between concatenation operator .
>>> 
>>> :<C-U>exe "" . (v.count ? v:count : "") . "bprevious"<CR>
>>> 
>>> On Tuesday, June 3, 2025 at 4:45:56 PM UTC+10 Yu Lang Chiang wrote:
>>>> Recently I've been trying to learn Vim 9 script by rewriting Vim plugins 
>>>> into Vim 9 script. While attempting to modify *vim-unimpaired*, I 
>>>> discovered that functions related to setting up mappings do not work 
>>>> properly when ported to Vim 9 script. For example, in the 
>>>> `plugin/unimpaired.vim` file, the function `MapNextFamilty` is problematic.
>>>> 
>>>> **Original version:**
>>>> 
>>>> ```vim
>>>> execute 'nnoremap <silent> '.prefix.'previous) :<C-U>exe 
>>>> "'.cmd.'previous'.end
>>>> execute 'nnoremap <silent> '.prefix.'next)     :<C-U>exe "'.cmd.'next'.end
>>>> execute 'nnoremap '.prefix.'first)    :<C-U><C-R>=v:count ? v:count . "' . 
>>>> a:current . '" : "' . a:cmd . 'first"<CR><CR>' . zv
>>>> execute 'nnoremap '.prefix.'last)     :<C-U><C-R>=v:count ? v:count . "' . 
>>>> a:current . '" : "' . a:cmd . 'last"<CR><CR>' . zv
>>>> execute 'nnoremap <silent> '.map.'Previous :<C-U>exe "'.cmd.'previous'.end
>>>> execute 'nnoremap <silent> '.map.'Next     :<C-U>exe "'.cmd.'next'.end
>>>> execute 'nnoremap <silent> '.map.'First    :<C-U>exe "'.cmd.'first'.end
>>>> execute 'nnoremap <silent> '.map.'Last     a:<C-U>exe "'.cmd.'last'.end
>>>> ```
>>>> 
>>>> **Vim 9 script version:**
>>>> 
>>>> ```vim
>>>> execute 'nnoremap <silent> ' .. prefix .. 'previous) :<C-U>exe "' .. tcmd 
>>>> .. 'previous' .. end
>>>> execute 'nnoremap <silent> ' .. prefix .. 'next)     :<C-U>exe "' .. tcmd 
>>>> .. 'next' .. end
>>>> execute 'nnoremap ' .. prefix .. 'first)    :<C-U><C-R>=v:count ? v:count 
>>>> . "' .. current .. '" : "' .. cmd .. 'first"<CR><CR>' .. zv
>>>> execute 'nnoremap ' .. prefix .. 'last)     :<C-U><C-R>=v:count ? v:count 
>>>> . "' .. current .. '" : "' .. cmd .. 'last"<CR><CR>' .. zv
>>>> execute 'nnoremap <silent> ' .. tmap .. 'Previous :<C-U>exe "' .. tcmd .. 
>>>> 'previous' .. end
>>>> execute 'nnoremap <silent> ' .. tmap .. 'Next     :<C-U>exe "' .. tcmd .. 
>>>> 'next' .. end
>>>> execute 'nnoremap <silent> ' .. tmap .. 'First    :<C-U>exe "' .. tcmd .. 
>>>> 'first' .. end
>>>> execute 'nnoremap <silent> ' .. tmap .. 'Last     :<C-U>exe "' .. tcmd .. 
>>>> 'last' .. end
>>>> ```
>>>> 
>>>> When inspecting the mappings using:
>>>> 
>>>> ```vim
>>>> echo maparg('<Plug>('unimpaired-commmand')', 'n')
>>>> ```
>>>> 
>>>> you find that both versions produce identical mappings. For example:
>>>> 
>>>> - **Original version:**
>>>> 
>>>>   ```
>>>>   :<C-U>exe "".(v.count ? v:count : "")."bprevious"<CR>
>>>>   ```
>>>> 
>>>> - **Vim 9 script version:**
>>>> 
>>>>   ```
>>>>   :<C-U>exe "".(v.count ? v:count : "")."bprevious"<CR>
>>>>   ```
>>>> 
>>>> Despite the mappings appearing the same, the one defined in the Vim 9 
>>>> script version does not work. Even after removing `<silent>`, no error 
>>>> messages are reported. Any advice?
>>>> 
>>>> **Test Environment:**
>>>> 
>>>> - **OS:** Fedora Linux 42 (x86-64)
>>>> - **Vim:** 9.1.1418
>>>> 
>>>> My repository is https://github.com/seanexplus/vim-unimpaired/tree/master 
>>>> . All vim 9 script rewriting is in vim-9-test branch. 
>>> 
>>> 
>>> -- 
>>> -- 
>>> You received this message from the "vim_use" 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_use" group.
>>> To unsubscribe from this group and stop receiving emails from it, send an 
>>> email to vim_use+unsubscr...@googlegroups.com 
>>> <mailto:vim_use+unsubscr...@googlegroups.com>.
>>> To view this discussion visit 
>>> https://groups.google.com/d/msgid/vim_use/98ea42d5-faba-46f9-b642-f1c82d957d71n%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/vim_use/98ea42d5-faba-46f9-b642-f1c82d957d71n%40googlegroups.com?utm_medium=email&utm_source=footer>.
>> 
>> 
>> -- 
>> -- 
>> You received this message from the "vim_use" 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_use" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to vim_use+unsubscr...@googlegroups.com 
>> <mailto:vim_use+unsubscr...@googlegroups.com>.
>> To view this discussion visit 
>> https://groups.google.com/d/msgid/vim_use/0C87B90E-C27A-466E-B58E-60A4A837C3B4%40gmail.com
>>  
>> <https://groups.google.com/d/msgid/vim_use/0C87B90E-C27A-466E-B58E-60A4A837C3B4%40gmail.com?utm_medium=email&utm_source=footer>.
> 
> 
> -- 
> -- 
> You received this message from the "vim_use" 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_use" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to vim_use+unsubscr...@googlegroups.com 
> <mailto:vim_use+unsubscr...@googlegroups.com>.
> To view this discussion visit 
> https://groups.google.com/d/msgid/vim_use/CANuxnEdyMUNHo5ZEBmV_JJm338GtjwpKMSpb6aXOfLb2DApDiw%40mail.gmail.com
>  
> <https://groups.google.com/d/msgid/vim_use/CANuxnEdyMUNHo5ZEBmV_JJm338GtjwpKMSpb6aXOfLb2DApDiw%40mail.gmail.com?utm_medium=email&utm_source=footer>.

-- 
-- 
You received this message from the "vim_use" 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_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_use+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/vim_use/FA03E381-903B-474C-8E0F-AD33E3AA7E3A%40gmail.com.

Reply via email to