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.
To view this discussion visit 
https://groups.google.com/d/msgid/vim_use/7eb02c5b-a024-4dc4-81f6-b7f91e289266n%40googlegroups.com.

Reply via email to