init.lua 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. require'compe'.setup {
  2. enabled = true;
  3. autocomplete = true;
  4. debug = false;
  5. min_length = 1;
  6. preselect = 'enable';
  7. throttle_time = 80;
  8. source_timeout = 200;
  9. incomplete_delay = 400;
  10. max_abbr_width = 100;
  11. max_kind_width = 100;
  12. max_menu_width = 100;
  13. documentation = true;
  14. source = {
  15. path = true;
  16. buffer = true;
  17. calc = true;
  18. vsnip = true;
  19. nvim_lsp = true;
  20. nvim_lua = true;
  21. spell = true;
  22. tags = true;
  23. snippets_nvim = true;
  24. treesitter = true;
  25. };
  26. }
  27. local t = function(str)
  28. return vim.api.nvim_replace_termcodes(str, true, true, true)
  29. end
  30. local check_back_space = function()
  31. local col = vim.fn.col('.') - 1
  32. if col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') then
  33. return true
  34. else
  35. return false
  36. end
  37. end
  38. -- Use (s-)tab to:
  39. --- move to prev/next item in completion menuone
  40. --- jump to prev/next snippet's placeholder
  41. _G.tab_complete = function()
  42. if vim.fn.pumvisible() == 1 then
  43. return t "<C-n>"
  44. elseif vim.fn.call("vsnip#available", {1}) == 1 then
  45. return t "<Plug>(vsnip-expand-or-jump)"
  46. elseif check_back_space() then
  47. return t "<Tab>"
  48. else
  49. return vim.fn['compe#complete']()
  50. end
  51. end
  52. _G.s_tab_complete = function()
  53. if vim.fn.pumvisible() == 1 then
  54. return t "<C-p>"
  55. elseif vim.fn.call("vsnip#jumpable", {-1}) == 1 then
  56. return t "<Plug>(vsnip-jump-prev)"
  57. else
  58. return t "<S-Tab>"
  59. end
  60. end
  61. vim.api.nvim_set_keymap("i", "<Tab>", "v:lua.tab_complete()", {expr = true})
  62. vim.api.nvim_set_keymap("s", "<Tab>", "v:lua.tab_complete()", {expr = true})
  63. vim.api.nvim_set_keymap("i", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true})
  64. vim.api.nvim_set_keymap("s", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true})