Quellcode durchsuchen

Merge pull request #1294 from kylo252/autopairs-refactor

feat: make autopairs configurable
Luc Sinet vor 3 Jahren
Ursprung
Commit
d71c3280c8
3 geänderte Dateien mit 54 neuen und 43 gelöschten Zeilen
  1. 51 42
      lua/core/autopairs.lua
  2. 1 0
      lua/default-config.lua
  3. 2 1
      lua/plugins.lua

+ 51 - 42
lua/core/autopairs.lua

@@ -1,54 +1,63 @@
--- if not package.loaded['nvim-autopairs'] then
---   return
--- end
-local Log = require "core.log"
-local status_ok, _ = pcall(require, "nvim-autopairs")
-if not status_ok then
-  Log:get_default().error "Failed to load autopairs"
-  return
+local M = {}
+
+function M.config()
+  lvim.builtin.autopairs = {
+    active = true,
+    ---@usage  map <CR> on insert mode
+    map_cr = true,
+    ---@usage auto insert after select function or method item,
+    map_complete = vim.bo.filetype ~= "tex",
+    ---@usage check treesitter
+    check_ts = true,
+    ts_config = {
+      lua = { "string" },
+      javascript = { "template_string" },
+      java = false,
+    },
+  }
 end
-local npairs = require "nvim-autopairs"
-local Rule = require "nvim-autopairs.rule"
 
--- skip it, if you use another global object
-_G.MUtils = {}
+M.setup = function()
+  -- skip it, if you use another global object
+  _G.MUtils = {}
+  local npairs = require "nvim-autopairs"
+  local Rule = require "nvim-autopairs.rule"
 
-vim.g.completion_confirm_key = ""
-MUtils.completion_confirm = function()
-  if vim.fn.pumvisible() ~= 0 then
-    if vim.fn.complete_info()["selected"] ~= -1 then
-      return vim.fn["compe#confirm"](npairs.esc "<cr>")
+  vim.g.completion_confirm_key = ""
+  MUtils.completion_confirm = function()
+    if vim.fn.pumvisible() ~= 0 then
+      if vim.fn.complete_info()["selected"] ~= -1 then
+        return vim.fn["compe#confirm"](npairs.esc "<cr>")
+      else
+        return npairs.esc "<cr>"
+      end
     else
-      return npairs.esc "<cr>"
+      return npairs.autopairs_cr()
     end
-  else
-    return npairs.autopairs_cr()
   end
-end
 
-if package.loaded["compe"] then
-  local map_complete_optional = vim.bo.filetype ~= "tex"
-  require("nvim-autopairs.completion.compe").setup {
-    map_cr = true, --  map <CR> on insert mode
-    map_complete = map_complete_optional, -- it will auto insert `(` after select function or method item
+  if package.loaded["compe"] then
+    require("nvim-autopairs.completion.compe").setup {
+      map_cr = lvim.builtin.autopairs.map_cr,
+      map_complete = lvim.builtin.autopairs.map_complete,
+    }
+  end
+
+  npairs.setup {
+    check_ts = lvim.builtin.autopairs.check_ts,
+    ts_config = lvim.builtin.autopairs.ts_config,
   }
-end
 
-npairs.setup {
-  check_ts = true,
-  ts_config = {
-    lua = { "string" }, -- it will not add pair on that treesitter node
-    javascript = { "template_string" },
-    java = false, -- don't check treesitter on java
-  },
-}
+  require("nvim-treesitter.configs").setup { autopairs = { enable = true } }
 
-require("nvim-treesitter.configs").setup { autopairs = { enable = true } }
+  local ts_conds = require "nvim-autopairs.ts-conds"
 
-local ts_conds = require "nvim-autopairs.ts-conds"
+  -- TODO: can these rules be safely added from "config.lua" ?
+  -- press % => %% is only inside comment or string
+  npairs.add_rules {
+    Rule("%", "%", "lua"):with_pair(ts_conds.is_ts_node { "string", "comment" }),
+    Rule("$", "$", "lua"):with_pair(ts_conds.is_not_ts_node { "function" }),
+  }
+end
 
--- press % => %% is only inside comment or string
-npairs.add_rules {
-  Rule("%", "%", "lua"):with_pair(ts_conds.is_ts_node { "string", "comment" }),
-  Rule("$", "$", "lua"):with_pair(ts_conds.is_not_ts_node { "function" }),
-}
+return M

+ 1 - 0
lua/default-config.lua

@@ -1293,3 +1293,4 @@ require("core.treesitter").config()
 require("core.nvimtree").config()
 require("core.rooter").config()
 require("core.bufferline").config()
+require("core.autopairs").config()

+ 2 - 1
lua/plugins.lua

@@ -68,11 +68,12 @@ return {
     -- event = "InsertEnter",
     after = "nvim-compe",
     config = function()
-      require "core.autopairs"
+      require("core.autopairs").setup()
       if lvim.builtin.autopairs.on_config_done then
         lvim.builtin.autopairs.on_config_done(require "nvim-autopairs")
       end
     end,
+    disable = not lvim.builtin.autopairs.active,
   },
 
   -- Treesitter