summaryrefslogtreecommitdiff
path: root/lua/lvim/config/_deprecated.lua
blob: 594b47af0956410a8c90c7178c3e512635af7939 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
---@diagnostic disable: deprecated
local M = {}

local function deprecate(name, alternative)
  local in_headless = #vim.api.nvim_list_uis() == 0
  if in_headless then
    return
  end

  alternative = alternative or "See https://github.com/LunarVim/LunarVim#breaking-changes"

  local trace = debug.getinfo(3, "Sl")
  local shorter_src = trace.short_src
  local t = shorter_src .. ":" .. (trace.currentline or trace.lastlinedefined)
  vim.schedule(function()
    vim.notify_once(string.format("%s: `%s` is deprecated.\n %s.", t, name, alternative), vim.log.levels.WARN)
  end)
end

function M.handle()
  local mt = {
    __newindex = function(_, k, _)
      deprecate(k)
    end,
  }

  ---@deprecated
  lvim.builtin.theme.options = {}
  setmetatable(lvim.builtin.theme.options, {
    __newindex = function(_, k, v)
      deprecate("lvim.builtin.theme.options." .. k, "Use `lvim.builtin.theme.<theme>.options` instead")
      lvim.builtin.theme.tokyonight.options[k] = v
    end,
  })

  ---@deprecated
  lvim.builtin.notify = {}
  setmetatable(lvim.builtin.notify, {
    __newindex = function(_, k, _)
      deprecate("lvim.builtin.notify." .. k, "See LunarVim#3294")
    end,
  })

  if lvim.lsp.override and not vim.tbl_isempty(lvim.lsp.override) then
    deprecate("lvim.lsp.override", "Use `lvim.lsp.automatic_configuration.skipped_servers` instead")
    vim.tbl_map(function(c)
      if not vim.tbl_contains(lvim.lsp.automatic_configuration.skipped_servers, c) then
        table.insert(lvim.lsp.automatic_configuration.skipped_servers, c)
      end
    end, lvim.lsp.override)
  end

  if lvim.autocommands.custom_groups then
    deprecate(
      "lvim.autocommands.custom_groups",
      "Use vim.api.nvim_create_autocmd instead or check LunarVim#2592 to learn about the new syntax"
    )
  end

  if lvim.lsp.automatic_servers_installation then
    deprecate(
      "lvim.lsp.automatic_servers_installation",
      "Use `lvim.lsp.installer.setup.automatic_installation` instead"
    )
  end

  ---@deprecated
  lvim.builtin.dashboard = {}
  setmetatable(lvim.builtin.dashboard, {
    __newindex = function(_, k, _)
      deprecate("lvim.builtin.dashboard." .. k, "Use `lvim.builtin.alpha` instead. See LunarVim#1906")
    end,
  })

  ---@deprecated
  lvim.lsp.popup_border = {}
  setmetatable(lvim.lsp.popup_border, mt)

  ---@deprecated
  lvim.lang = {}
  setmetatable(lvim.lang, mt)

  ---@deprecated
  lvim.builtin.theme.tokyonight = {}
  local tokyonight_deprecation = function(t, k, v)
    lvim.colorscheme = "lunar"
    deprecate(
      "lvim.builtin.theme.tokyonight." .. k,
      "tokyonight was removed from core plugins, configure it like this <https://www.lunarvim.org/docs/master/plugins/extra-plugins#tokyonight>"
    )
    rawset(t, k, v ~= nil and v or {})
    return t[k]
  end
  setmetatable(lvim.builtin.theme.tokyonight, {
    __newindex = tokyonight_deprecation,
    __index = tokyonight_deprecation,
  })
end

return M