init.lua 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. --if not package.loaded['compe'] then
  2. -- return
  3. -- end
  4. local M = {}
  5. vim.g.vsnip_snippet_dir = O.vnsip_dir
  6. M.config = function()
  7. local status_ok, compe = pcall(require, "compe")
  8. if not status_ok then
  9. return
  10. end
  11. compe.setup(O.completion)
  12. local t = function(str)
  13. return vim.api.nvim_replace_termcodes(str, true, true, true)
  14. end
  15. local check_back_space = function()
  16. local col = vim.fn.col "." - 1
  17. if col == 0 or vim.fn.getline("."):sub(col, col):match "%s" then
  18. return true
  19. else
  20. return false
  21. end
  22. end
  23. -- Use (s-)tab to:
  24. --- move to prev/next item in completion menuone
  25. --- jump to prev/next snippet's placeholder
  26. _G.tab_complete = function()
  27. if vim.fn.pumvisible() == 1 then
  28. return t "<C-n>"
  29. elseif vim.fn.call("vsnip#available", { 1 }) == 1 then
  30. return t "<Plug>(vsnip-expand-or-jump)"
  31. elseif check_back_space() then
  32. return t "<Tab>"
  33. else
  34. return vim.fn["compe#complete"]()
  35. end
  36. end
  37. _G.s_tab_complete = function()
  38. if vim.fn.pumvisible() == 1 then
  39. return t "<C-p>"
  40. elseif vim.fn.call("vsnip#jumpable", { -1 }) == 1 then
  41. return t "<Plug>(vsnip-jump-prev)"
  42. else
  43. return t "<S-Tab>"
  44. end
  45. end
  46. vim.api.nvim_set_keymap("i", "<Tab>", "v:lua.tab_complete()", { expr = true })
  47. vim.api.nvim_set_keymap("s", "<Tab>", "v:lua.tab_complete()", { expr = true })
  48. vim.api.nvim_set_keymap("i", "<S-Tab>", "v:lua.s_tab_complete()", { expr = true })
  49. vim.api.nvim_set_keymap("s", "<S-Tab>", "v:lua.s_tab_complete()", { expr = true })
  50. vim.api.nvim_set_keymap("i", "<C-Space>", "compe#complete()", { noremap = true, silent = true, expr = true })
  51. vim.api.nvim_set_keymap("i", "<CR>", "compe#confirm('<CR>')", { noremap = true, silent = true, expr = true })
  52. vim.api.nvim_set_keymap("i", "<C-e>", "compe#close('<C-e>')", { noremap = true, silent = true, expr = true })
  53. vim.api.nvim_set_keymap("i", "<C-f>", "compe#scroll({ 'delta': +4 })", { noremap = true, silent = true, expr = true })
  54. vim.api.nvim_set_keymap("i", "<C-d>", "compe#scroll({ 'delta': -4 })", { noremap = true, silent = true, expr = true })
  55. end
  56. return M