Update python.lua

This commit is contained in:
DarthMooMancer
2025-03-14 09:14:14 -04:00
parent d8a68ebcbd
commit a357033788
+30 -36
View File
@@ -1,16 +1,16 @@
local M = {} local M = {}
M.close_key = nil M.close_key = nil
M.c_run = nil M.c_run = nil
M.new_c_file = nil M.new_python_file = nil
M.new_c_header_file = nil M.new_python_module_file = nil
M.config = { M.config = {
project_root = "~/Projects/Python", project_root = "~/Projects/Python",
keybinds = { keybinds = {
["<Esc>"] = "CloseTerminal", ["<Esc>"] = "CloseTerminal",
["<leader>pr"] = "CRun", ["<leader>pr"] = "PythonRun",
["<leader>nf"] = "NewCFile", ["<leader>nf"] = "NewPythonFile",
["<leader>nh"] = "NewCHeaderFile", ["<leader>nh"] = "NewPythonModuleFile",
}, },
terminal = { terminal = {
right_padding = 0, right_padding = 0,
@@ -28,19 +28,19 @@ function M.setup(opts)
M.config = vim.tbl_deep_extend("force", M.config, opts or {}) M.config = vim.tbl_deep_extend("force", M.config, opts or {})
for key, command in pairs(M.config.keybinds) do for key, command in pairs(M.config.keybinds) do
if command == "CloseTerminal" then M.close_key = key end if command == "CloseTerminal" then M.close_key = key end
if command == "CRun" then M.c_run = key end if command == "PythonRun" then M.c_run = key end
if command == "NewCFile" then M.new_c_file = key end if command == "NewPythonFile" then M.new_python_file = key end
if command == "NewCHeaderFile" then M.new_c_header_file = key end if command == "NewPythonModuleFile" then M.new_python_module_file = key end
end end
vim.fn.system("source ./venv/bin/activate") vim.fn.system("source ./venv/bin/activate")
vim.api.nvim_create_user_command("NewCHeaderFile", M.create_new_header_file, {}) vim.api.nvim_create_user_command("NewPythonModuleFile", M.create_new_module_file, {})
vim.api.nvim_create_user_command("NewCFile", M.create_new_file, {}) vim.api.nvim_create_user_command("NewPythonFile", M.create_new_file, {})
vim.api.nvim_create_user_command("CRun", M.run, {}) vim.api.nvim_create_user_command("PythonRun", M.run, {})
vim.keymap.set("n", M.c_run, ":CRun<CR>", { silent = true }) vim.keymap.set("n", M.c_run, ":PythonRun<CR>", { silent = true })
vim.keymap.set("n", M.new_c_file, ":NewCFile<CR>", { silent = true }) vim.keymap.set("n", M.new_python_file, ":NewPythonFile<CR>", { silent = true })
vim.keymap.set("n", M.new_c_header_file, ":NewCHeaderFile<CR>", { silent = true }) vim.keymap.set("n", M.new_python_module_file, ":NewPythonModuleFile<CR>", { silent = true })
end end
function M.open_float_terminal(cmd) function M.open_float_terminal(cmd)
@@ -145,39 +145,33 @@ setup(
end end
function M.create_new_file() function M.create_new_file()
vim.ui.input({ prompt = "Enter file name: " }, function(class_name) vim.ui.input({ prompt = "Enter file name: " }, function(file_name)
if not class_name or class_name == "" then return print("File creation canceled.") end if not file_name or file_name == "" then
local root_dir = M.get_project_root() return print("File creation canceled.")
if not root_dir then return print("Error: Project root not found.") end end
write_file(root_dir .. "/src/" .. class_name .. ".c", "")
end) -- Ensure filename has .py extension
if not file_name:match("%.py$") then
file_name = file_name .. ".py"
end end
function M.create_new_header_file()
vim.ui.input({ prompt = "Enter header file name: " }, function(header_name)
if not header_name then return print("Header file creation canceled.") end
local root_dir = M.get_project_root() local root_dir = M.get_project_root()
if not root_dir then return print("Error: Project root not found.") end if not root_dir then
local guard_macro = header_name:upper():gsub("[^A-Z0-9]", "_") .. "_H" return print("Error: Project root not found.")
local content = string.format([[ end
#ifndef %s
#define %s
#include <stdio.h> -- Extract project name from root directory
local project_name = vim.fn.fnamemodify(root_dir, ":t")
local file_path = root_dir .. "/" .. project_name .. "/" .. file_name
// Function prototypes write_file(file_path, "")
void example_function();
#endif // %s
]], guard_macro, guard_macro, guard_macro)
write_file(root_dir .. "/include/" .. header_name .. ".h", content)
end) end)
end end
function M.get_project_root() function M.get_project_root()
local dir = vim.fn.expand("%:p:h") local dir = vim.fn.expand("%:p:h")
while dir ~= "/" do while dir ~= "/" do
if vim.fn.isdirectory(dir .. "/src") == 1 or vim.fn.filereadable(dir .. "/CMakeLists.txt") == 1 then if vim.fn.isdirectory(dir .. "/src") == 1 or vim.fn.filereadable(dir .. "/*.polydev") == 1 then
return dir return dir
end end
dir = vim.fn.fnamemodify(dir, ":h") dir = vim.fn.fnamemodify(dir, ":h")