init.lua 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. require('nvim-autopairs').setup()
  2. local npairs = require('nvim-autopairs')
  3. local function imap(lhs, rhs, opts)
  4. local options = {noremap = false}
  5. if opts then options = vim.tbl_extend('force', options, opts) end
  6. vim.api.nvim_set_keymap('i', lhs, rhs, options)
  7. end
  8. _G.MUtils = {}
  9. -- TEST
  10. vim.g.completion_confirm_key = ""
  11. MUtils.completion_confirm = function()
  12. if vim.fn.pumvisible() ~= 0 then
  13. if vim.fn.complete_info()["selected"] ~= -1 then
  14. vim.fn["compe#confirm"]()
  15. -- return npairs.esc("<c-y>")
  16. return npairs.esc("")
  17. else
  18. vim.defer_fn(function()
  19. vim.fn["compe#confirm"]("<cr>")
  20. end, 20)
  21. return npairs.esc("<c-n>")
  22. end
  23. else
  24. return npairs.check_break_line_char()
  25. end
  26. end
  27. -- TEST
  28. MUtils.completion_confirm = function()
  29. if vim.fn.pumvisible() ~= 0 then
  30. if vim.fn.complete_info()["selected"] ~= -1 then
  31. vim.fn["compe#confirm"]()
  32. return npairs.esc("")
  33. else
  34. vim.api.nvim_select_popupmenu_item(0, false, false, {})
  35. vim.fn["compe#confirm"]()
  36. return npairs.esc("<c-n>")
  37. end
  38. else
  39. return npairs.check_break_line_char()
  40. end
  41. end
  42. MUtils.tab = function()
  43. if vim.fn.pumvisible() ~= 0 then
  44. return npairs.esc("<C-n>")
  45. else
  46. if vim.fn["vsnip#available"](1) ~= 0 then
  47. vim.fn.feedkeys(string.format('%c%c%c(vsnip-expand-or-jump)', 0x80, 253, 83))
  48. return npairs.esc("")
  49. else
  50. return npairs.esc("<Tab>")
  51. end
  52. end
  53. end
  54. MUtils.s_tab = function()
  55. if vim.fn.pumvisible() ~= 0 then
  56. return npairs.esc("<C-p>")
  57. else
  58. if vim.fn["vsnip#jumpable"](-1) ~= 0 then
  59. vim.fn.feedkeys(string.format('%c%c%c(vsnip-jump-prev)', 0x80, 253, 83))
  60. return npairs.esc("")
  61. else
  62. return npairs.esc("<C-h>")
  63. end
  64. end
  65. end
  66. -- Autocompletion and snippets
  67. vim.api.nvim_set_keymap('i', '<CR>', 'v:lua.MUtils.completion_confirm()', {expr = true, noremap = true})
  68. -- imap("<CR>", "v:lua.MUtils.completion_confirm()", {expr = true, noremap = true})
  69. imap("<Tab>", "v:lua.MUtils.tab()", {expr = true, noremap = true})
  70. imap("<S-Tab>", "v:lua.MUtils.s_tab()", {expr = true, noremap = true})