nvim/lua/config/commands.lua

132 lines
4.2 KiB
Lua
Raw Normal View History

2023-08-02 16:39:49 +02:00
local pickers = require "telescope.pickers"
local finders = require "telescope.finders"
local conf = require("telescope.config").values
local actions = require "telescope.actions"
local action_state = require "telescope.actions.state"
vim.api.nvim_create_user_command("OP", function ()
local folders = vim.fn.systemlist("\\ls -d $HOME/projects/*/")
for i, folder in ipairs(folders) do
folders[i] = string.match(string.match(folder, "[^/]*/$"), "^[^/]*")
end
pickers.new({}, {
prompt_title = "Open project",
finder = finders.new_table {
results = folders
},
sorter = conf.generic_sorter({}),
attach_mappings = function (prompt_bufnr, map)
actions.select_default:replace(function ()
actions.close(prompt_bufnr)
local selection = action_state.get_selected_entry()
selection = selection[1]
vim.cmd("cd $HOME/projects/" .. selection)
end)
return true
end
}):find()
end, {})
2023-09-19 15:28:44 +02:00
vim.api.nvim_create_user_command("OCC", function ()
local folders = vim.fn.systemlist("\\ls -d $HOME/projects/cc/*/")
for i, folder in ipairs(folders) do
folders[i] = string.match(string.match(folder, "[^/]*/$"), "^[^/]*")
end
pickers.new({}, {
prompt_title = "Open project",
finder = finders.new_table {
results = folders
},
sorter = conf.generic_sorter({}),
attach_mappings = function (prompt_bufnr, map)
actions.select_default:replace(function ()
actions.close(prompt_bufnr)
local selection = action_state.get_selected_entry()
selection = selection[1]
vim.cmd("cd $HOME/projects/cc/" .. selection)
end)
return true
end
}):find()
end, {})
2023-08-02 16:39:49 +02:00
vim.api.nvim_create_user_command("OD", function ()
local folders = vim.fn.systemlist("\\ls -d */")
for i, folder in ipairs(folders) do
folders[i] = string.match(string.match(folder, "[^/]*/$"), "^[^/]*")
end
pickers.new({}, {
prompt_title = "Open directory",
finder = finders.new_table {
results = folders
},
sorter = conf.generic_sorter({}),
attach_mappings = function (prompt_bufnr, map)
actions.select_default:replace(function ()
actions.close(prompt_bufnr)
local selection = action_state.get_selected_entry()
selection = selection[1]
vim.cmd("cd " .. selection)
end)
return true
end
}):find()
end, {})
vim.api.nvim_create_user_command("Config", function ()
vim.cmd("cd $HOME/.config/nvim")
end, {})
vim.api.nvim_create_user_command("RetabFile", function ()
vim.cmd(":set ts=2 sts=2 noet | retab! | set ts=4 sts=4 et | retab!")
end, {})
2023-09-23 23:29:54 +02:00
2023-09-23 23:53:31 +02:00
local function get_makefile_targets()
local makefile = "./Makefile"
local targets = {}
local file = io.open(makefile, "r")
if file then
for line in file:lines() do
local target = line:match("^[^\\s:]+:.*")
if target then
local tg = target:match("^[^:]+")
table.insert(targets, tg)
end
end
file:close()
end
return targets
end
2023-09-23 23:29:54 +02:00
vim.api.nvim_create_user_command("Make", function (args)
local vimCmd = "TermExec cmd=\"make"
if (args["args"]) then
vimCmd = vimCmd .. " " .. args["args"]
end
vimCmd = vimCmd .. "\""
vim.cmd(vimCmd)
2023-09-23 23:53:31 +02:00
end, {nargs = "*", ["complete"] = function()
return get_makefile_targets()
end})
vim.api.nvim_create_user_command("Maket", function()
local targets = get_makefile_targets()
pickers.new({}, {
prompt_title = "Run make target",
finder = finders.new_table {
results = targets
},
sorter = conf.generic_sorter({}),
attach_mappings = function (prompt_bufnr, map)
actions.select_default:replace(function ()
actions.close(prompt_bufnr)
local selection = action_state.get_selected_entry()
selection = selection[1]
vim.cmd(":Make " .. selection)
end)
return true
end
}):find()
end, {})