aboutsummaryrefslogtreecommitdiff
path: root/lua/cmake-explorer/capabilities.lua
diff options
context:
space:
mode:
authorDaniil Rozanov <daniilrozzanov@gmail.com>2024-03-18 01:49:23 +0300
committerDaniil Rozanov <daniilrozzanov@gmail.com>2024-03-18 01:49:23 +0300
commit6184ca819279c7e44f470a731fcca3d469f40a01 (patch)
tree4f51162ca534935c2cbbf404c08ea1c51359340b /lua/cmake-explorer/capabilities.lua
parentd36594025727d32b6580f188a4c0476aaeecfd77 (diff)
feat: new CMakeConfigureLast and CMakeConfigureDir commands. CMakeConfigure and CMakeConfigureDir now have vim.ui.* interface to edit
Diffstat (limited to 'lua/cmake-explorer/capabilities.lua')
-rw-r--r--lua/cmake-explorer/capabilities.lua42
1 files changed, 42 insertions, 0 deletions
diff --git a/lua/cmake-explorer/capabilities.lua b/lua/cmake-explorer/capabilities.lua
new file mode 100644
index 0000000..f3a966c
--- /dev/null
+++ b/lua/cmake-explorer/capabilities.lua
@@ -0,0 +1,42 @@
+local config = require("cmake-explorer.config")
+
+local multiconfig_generators = {
+ "Ninja Multi-Config",
+ "Xcode",
+ "Visual Studio 12 2013",
+ "Visual Studio 14 2015",
+ "Visual Studio 15 2017",
+ "Visual Studio 16 2019",
+ "Visual Studio 17 2022",
+ -- "Green Hills MULTI"
+}
+
+local Capabilities = {
+ json = nil,
+}
+
+function Capabilities.generators()
+ local ret = {}
+ if not Capabilities then
+ return ret
+ end
+ for k, v in pairs(Capabilities.json.generators) do
+ table.insert(ret, v.name)
+ end
+ return vim.fn.reverse(ret)
+end
+
+function Capabilities.is_multiconfig_generator(generator)
+ return vim.tbl_contains(multiconfig_generators, generator)
+end
+
+function Capabilities.has_fileapi()
+ return vim.tbl_get(Capabilities.json, "fileApi") ~= nil
+end
+
+Capabilities.setup = function()
+ local output = vim.fn.system({ config.cmake_cmd, "-E", "capabilities" })
+ Capabilities.json = vim.json.decode(output)
+end
+
+return Capabilities