MENU

Add custom action to <CR> <S-CR> in mkdnflow’s list

nvim

mkdnflow.nvim の リスト上での <CR> <S-CR> 動作があまり好きではなかったので、以下のようにしました。快適!

   config = function()
      -- Check if list or not, then add new line or just do '<CR>' '<S-CR>' behavior
      function mkdnflow_add_new_list(below, key)
         -- Remind that you need to keep normal-mode '<CR>' '<S-CR>' mappings in list as free in 'mappings' option.
         -- like 'MkdnExtendList' 'MkdnNewListItem', and 'MkdnEnter'(maybe)
         if vim.bo.filetype == 'markdown' then
            local line
            local list_type, indentation = require('mkdnflow.lists').hasListType(line)
            if list_type then
               if below then
                  vim.cmd('MkdnNewListItemBelowInsert') -- Add new list below
               else
                  vim.cmd('MkdnNewListItemAboveInsert') -- Add new list above
               end
               vim.cmd('stopinsert') -- return to normal mode
            else
               vim.cmd(key) -- this only works
            end
         end
      end
      -- Set keymaps
      local cmd_cr = ':lua vim.api.nvim_put({""}, "l", true, false)' -- this is my '<CR>' action
      local cmd_s_cr = ':lua vim.api.nvim_put({""}, "l", false, false)' -- this is my '<S-CR>' action
      vim.keymap.set('n', '<CR>', function() mkdnflow_add_new_list(true, cmd_cr) end, { desc = 'Check & add new markdown list below with mkdnflow' })
      vim.keymap.set('n', '<S-CR>', function() mkdnflow_add_new_list(false, cmd_s_cr) end, { desc = 'Check & add new markdown list above with mkdnflow' })
   end,

・リスト上で <CR> <S-CR> すると下か上にリストを追加
・リスト外で <CR> <S-CR> すると下か上に行を追加

ただし、他の部分での上記キーの挙動はどうなるか不明。

目次

追記

あれからリスト以外でもテーブルで上下行に移動できるように、とかごちゃごちゃやってたら、markdown のプレーンテキスト部分でインサートモードの <CR> が無限ループするようになり(<CR>をマッピングしてるんだからそりゃそうだ)、その解消もできなそうなので、結局全部取りやめました。ちゃんちゃん。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次