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
|
@ -6,7 +6,7 @@
|
||||||
"alpha-nvim": { "branch": "main", "commit": "de72250e054e5e691b9736ee30db72c65d560771" },
|
"alpha-nvim": { "branch": "main", "commit": "de72250e054e5e691b9736ee30db72c65d560771" },
|
||||||
"auto-bufferline.nvim": { "branch": "main", "commit": "f5835a4b62bfb6f6c829f8f050e5102ccf230b3e" },
|
"auto-bufferline.nvim": { "branch": "main", "commit": "f5835a4b62bfb6f6c829f8f050e5102ccf230b3e" },
|
||||||
"auto-conform.nvim": { "branch": "main", "commit": "5f0897235e84bf2f8ff9d634e81678d5bfa63ab8" },
|
"auto-conform.nvim": { "branch": "main", "commit": "5f0897235e84bf2f8ff9d634e81678d5bfa63ab8" },
|
||||||
"auto-java-project.nvim": { "branch": "main", "commit": "b685ad4fbda1a28cb61dd941d54fb0dd3c22d8f4" },
|
"auto-java-project.nvim": { "branch": "main", "commit": "796bbee285c5eaed8784b8d91edd0ea5d25a3856" },
|
||||||
"auto-jdtls.nvim": { "branch": "main", "commit": "050da8d68c51a6e02a08d91329b7a848887927e7" },
|
"auto-jdtls.nvim": { "branch": "main", "commit": "050da8d68c51a6e02a08d91329b7a848887927e7" },
|
||||||
"auto-lint.nvim": { "branch": "main", "commit": "aff13cb8eaa055e66e940d43b7d83166397e5413" },
|
"auto-lint.nvim": { "branch": "main", "commit": "aff13cb8eaa055e66e940d43b7d83166397e5413" },
|
||||||
"auto-lsp.nvim": { "branch": "main", "commit": "1f3ef04741972c107187a07be5615ff210888184" },
|
"auto-lsp.nvim": { "branch": "main", "commit": "1f3ef04741972c107187a07be5615ff210888184" },
|
||||||
|
@ -28,7 +28,6 @@
|
||||||
"inc-rename.nvim": { "branch": "main", "commit": "8ba77017ca468f3029bf88ef409c2d20476ea66b" },
|
"inc-rename.nvim": { "branch": "main", "commit": "8ba77017ca468f3029bf88ef409c2d20476ea66b" },
|
||||||
"indent-blankline.nvim": { "branch": "master", "commit": "7871a88056f7144defca9c931e311a3134c5d509" },
|
"indent-blankline.nvim": { "branch": "master", "commit": "7871a88056f7144defca9c931e311a3134c5d509" },
|
||||||
"lazy.nvim": { "branch": "main", "commit": "7967abe55752aa90532e6bb4bd4663fe27a264cb" },
|
"lazy.nvim": { "branch": "main", "commit": "7967abe55752aa90532e6bb4bd4663fe27a264cb" },
|
||||||
"lsp_signature.nvim": { "branch": "master", "commit": "fc38521ea4d9ec8dbd4c2819ba8126cea743943b" },
|
|
||||||
"lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" },
|
"lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" },
|
||||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "cab00668464d2914d0752b86168b4a431cc93eb2" },
|
"mason-lspconfig.nvim": { "branch": "main", "commit": "cab00668464d2914d0752b86168b4a431cc93eb2" },
|
||||||
"mason-nvim-dap.nvim": { "branch": "main", "commit": "8b9363d83b5d779813cdd2819b8308651cec2a09" },
|
"mason-nvim-dap.nvim": { "branch": "main", "commit": "8b9363d83b5d779813cdd2819b8308651cec2a09" },
|
||||||
|
@ -40,7 +39,7 @@
|
||||||
"neotest-java": { "branch": "main", "commit": "320f31c71b183f2c584198f33f93542fd0e5a768" },
|
"neotest-java": { "branch": "main", "commit": "320f31c71b183f2c584198f33f93542fd0e5a768" },
|
||||||
"noice.nvim": { "branch": "main", "commit": "221ffbc499d322699ea079fcd878a2399529e775" },
|
"noice.nvim": { "branch": "main", "commit": "221ffbc499d322699ea079fcd878a2399529e775" },
|
||||||
"nui.nvim": { "branch": "main", "commit": "b58e2bfda5cea347c9d58b7f11cf3012c7b3953f" },
|
"nui.nvim": { "branch": "main", "commit": "b58e2bfda5cea347c9d58b7f11cf3012c7b3953f" },
|
||||||
"nvim-autopairs": { "branch": "master", "commit": "ee297f215e95a60b01fde33275cc3c820eddeebe" },
|
"nvim-autopairs": { "branch": "master", "commit": "b464658e9b880f463b9f7e6ccddd93fb0013f559" },
|
||||||
"nvim-cmp": { "branch": "main", "commit": "f17d9b4394027ff4442b298398dfcaab97e40c4f" },
|
"nvim-cmp": { "branch": "main", "commit": "f17d9b4394027ff4442b298398dfcaab97e40c4f" },
|
||||||
"nvim-colorizer.lua": { "branch": "master", "commit": "f134063618a65cad4d7415fddbd96ff7e0c5b4ae" },
|
"nvim-colorizer.lua": { "branch": "master", "commit": "f134063618a65cad4d7415fddbd96ff7e0c5b4ae" },
|
||||||
"nvim-dap": { "branch": "master", "commit": "29d1f8814fa4fcc194ec574de998a42a22ebbe4a" },
|
"nvim-dap": { "branch": "master", "commit": "29d1f8814fa4fcc194ec574de998a42a22ebbe4a" },
|
||||||
|
|
115
lua/auto-jdtls2/generate_java_class.lua
Normal file
115
lua/auto-jdtls2/generate_java_class.lua
Normal file
|
@ -0,0 +1,115 @@
|
||||||
|
local function create_java_class()
|
||||||
|
local is_maven_project = function()
|
||||||
|
if vim.fn.findfile("pom.xml", vim.fn.getcwd()) == "pom.xml" then
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
-- 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 class name: ", "MyClass")
|
||||||
|
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 class %s {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public %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 class created: " .. file_path, "info")
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("CreateJavaClass", create_java_class, {})
|
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, {})
|
115
lua/auto-jdtls2/generate_java_main_class.lua
Normal file
115
lua/auto-jdtls2/generate_java_main_class.lua
Normal file
|
@ -0,0 +1,115 @@
|
||||||
|
local function create_java_main_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 class name: ", "MyMainClass")
|
||||||
|
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 class %s {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) {
|
||||||
|
System.out.println("Hello World");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
]],
|
||||||
|
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 class created: " .. file_path, "info")
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("CreateJavaMainClass", create_java_main_class, {})
|
|
@ -6,6 +6,9 @@ M.setup = function(opt)
|
||||||
require("auto-jdtls.create_gradle_project")
|
require("auto-jdtls.create_gradle_project")
|
||||||
require("auto-jdtls.create_maven_project")
|
require("auto-jdtls.create_maven_project")
|
||||||
require("auto-jdtls.create_springboot_project")
|
require("auto-jdtls.create_springboot_project")
|
||||||
|
require("auto-jdtls.generate_java_class")
|
||||||
|
require("auto-jdtls.generate_java_interface")
|
||||||
|
require("auto-jdtls.generate_java_main_class")
|
||||||
require("auto-jdtls.utils").attach_jdtls(opt)
|
require("auto-jdtls.utils").attach_jdtls(opt)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,9 @@ M = {
|
||||||
event = "VeryLazy",
|
event = "VeryLazy",
|
||||||
config = function()
|
config = function()
|
||||||
require("auto-java-project").setup()
|
require("auto-java-project").setup()
|
||||||
|
vim.keymap.set("n", "<leader>Jc", ":CreateJavaClass<cr>", { desc = "Create Java Class" })
|
||||||
|
vim.keymap.set("n", "<leader>Jm", ":CreateJavaMainClass<cr>", { desc = "Create Java Main Class" })
|
||||||
|
vim.keymap.set("n", "<leader>Ji", ":CreateJavaInterface<cr>", { desc = "Create Java Interface" })
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -45,7 +45,7 @@ pcode.extras = {
|
||||||
visualmulti = true,
|
visualmulti = true,
|
||||||
yanky = true,
|
yanky = true,
|
||||||
zenmode = true,
|
zenmode = true,
|
||||||
lspsignatur = true,
|
lspsignatur = false,
|
||||||
telescopetreesiterinfo = true,
|
telescopetreesiterinfo = true,
|
||||||
}
|
}
|
||||||
-- activate config themes
|
-- activate config themes
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue