mirror of
https://github.com/pojokcodeid/nvim-lazy.git
synced 2025-06-21 08:35:48 +02:00
enc: add create file java
This commit is contained in:
parent
c66913e4c2
commit
11a88eb681
7 changed files with 348 additions and 4 deletions
109
lua/auto-jdtls2/generate_java_interface.lua
Normal file
109
lua/auto-jdtls2/generate_java_interface.lua
Normal file
|
@ -0,0 +1,109 @@
|
|||
local function create_java_class()
|
||||
local function create_notif(message, level)
|
||||
local notif_ok, notify = pcall(require, "notify")
|
||||
if notif_ok then
|
||||
notify(message, level)
|
||||
else
|
||||
print(message)
|
||||
end
|
||||
end
|
||||
|
||||
local is_maven_project = function()
|
||||
if vim.fn.findfile("pom.xml", vim.fn.getcwd()) == "pom.xml" then
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
-- Fungsi untuk meminta input dari pengguna dengan opsi untuk membatalkan
|
||||
local function get_user_input(prompt, default_value)
|
||||
vim.fn.inputsave()
|
||||
local result = vim.fn.input(prompt, default_value)
|
||||
vim.fn.inputrestore()
|
||||
|
||||
-- Cek apakah pengguna menekan Esc untuk membatalkan input
|
||||
if result == "" then
|
||||
create_notif("Input canceled.", "info")
|
||||
return nil, true
|
||||
end
|
||||
|
||||
return result, false
|
||||
end
|
||||
|
||||
-- Fungsi untuk mendapatkan nama package default berdasarkan buffer aktif
|
||||
local function get_default_package()
|
||||
local path = vim.fn.expand("%:p:h")
|
||||
local project_root = vim.fn.getcwd()
|
||||
local relative_path = path:sub(#project_root + 1)
|
||||
relative_path = relative_path:gsub("app\\src\\main\\java\\", "")
|
||||
relative_path = relative_path:gsub("src\\main\\java\\", "")
|
||||
relative_path = relative_path:gsub("app/src/main/java/", "")
|
||||
relative_path = relative_path:gsub("src/main/java/", "")
|
||||
relative_path = relative_path:gsub("\\", ".")
|
||||
relative_path = relative_path:gsub("/", ".")
|
||||
return relative_path:sub(2)
|
||||
end
|
||||
|
||||
-- Ambil input dari pengguna untuk nama package dan nama kelas
|
||||
local package_name, canceled_package = get_user_input("Enter package name: ", get_default_package())
|
||||
if canceled_package then
|
||||
return
|
||||
end
|
||||
|
||||
local class_name, canceled_class = get_user_input("Enter interface name: ", "MyInterface")
|
||||
if canceled_class then
|
||||
return
|
||||
end
|
||||
|
||||
-- Format direktori dan path file berdasarkan input pengguna
|
||||
local package_dir = nil
|
||||
if package_name then
|
||||
if is_maven_project() then
|
||||
package_dir = string.format("src/main/java/%s", package_name:gsub("%.", "/"))
|
||||
else
|
||||
package_dir = string.format("app/src/main/java/%s", package_name:gsub("%.", "/"))
|
||||
end
|
||||
if vim.fn.isdirectory(package_dir) == 0 then
|
||||
vim.fn.mkdir(package_dir, "p")
|
||||
end
|
||||
else
|
||||
create_notif("Invalid package name: " .. package_name, "error")
|
||||
return
|
||||
end
|
||||
|
||||
local file_path = string.format("%s/%s.java", package_dir, class_name)
|
||||
if vim.fn.filereadable(file_path) == 1 then
|
||||
create_notif("Class already exists: " .. file_path, "error")
|
||||
return
|
||||
end
|
||||
|
||||
-- Tulis konten kelas Java ke dalam file
|
||||
local class_content = string.format(
|
||||
[[
|
||||
/*
|
||||
* This Java source file.
|
||||
*/
|
||||
package %s;
|
||||
|
||||
public interface %s {
|
||||
// Other methods and fields
|
||||
}
|
||||
]],
|
||||
package_name,
|
||||
class_name,
|
||||
class_name
|
||||
)
|
||||
|
||||
local file = io.open(file_path, "w")
|
||||
if file then
|
||||
file:write(class_content)
|
||||
file:close()
|
||||
end
|
||||
|
||||
-- Buka file Java yang baru dibuat di Neovim
|
||||
vim.cmd(":edit " .. file_path)
|
||||
create_notif("Java interface created: " .. file_path, "info")
|
||||
end
|
||||
|
||||
vim.api.nvim_create_user_command("CreateJavaInterface", create_java_class, {})
|
Loading…
Add table
Add a link
Reference in a new issue