mirror of
https://github.com/hyzendust/KickestEnd.nvim.git
synced 2026-02-15 05:01:14 +01:00
Update: Modularizing some features and customizations.
This commit is contained in:
93
lua/formatters_auto_config.lua
Normal file
93
lua/formatters_auto_config.lua
Normal file
@@ -0,0 +1,93 @@
|
||||
-- Auto-create config files for formatters (cross-platform)
|
||||
|
||||
local M = {}
|
||||
local uv = vim.loop
|
||||
|
||||
-- Determine OS paths
|
||||
local home = uv.os_homedir()
|
||||
local os_name = uv.os_uname().sysname
|
||||
local appdata = os.getenv 'APPDATA' or (home .. '/AppData/Roaming')
|
||||
|
||||
-- List of formatter configs
|
||||
local formatters = {
|
||||
{
|
||||
name = 'clang-format',
|
||||
path = (os_name:match 'Windows' and home .. '\\.clang-format' or home .. '/.clang-format'),
|
||||
content = [[
|
||||
BasedOnStyle: LLVM
|
||||
IndentWidth: 4
|
||||
TabWidth: 4
|
||||
UseTab: Always
|
||||
]],
|
||||
},
|
||||
{
|
||||
name = 'prettier',
|
||||
path = (os_name:match 'Windows' and appdata .. '\\Prettier\\.prettierrc' or home .. '/.prettierrc'),
|
||||
content = [[
|
||||
{
|
||||
"tabWidth": 4,
|
||||
"useTabs": true,
|
||||
"semi": true,
|
||||
"singleQuote": true,
|
||||
"trailingComma": "es5",
|
||||
"printWidth": 100
|
||||
}
|
||||
]],
|
||||
},
|
||||
{
|
||||
name = 'yapf',
|
||||
path = (os_name:match 'Windows' and home .. '\\.style.yapf' or home .. '/.style.yapf'),
|
||||
content = [[
|
||||
[style]
|
||||
based_on_style = pep8
|
||||
indent_width = 4
|
||||
use_tabs = True
|
||||
]],
|
||||
},
|
||||
{
|
||||
name = 'isort',
|
||||
path = (os_name:match 'Windows' and home .. '\\.isort.cfg' or home .. '/.isort.cfg'),
|
||||
content = [[
|
||||
[settings]
|
||||
profile = black
|
||||
force_single_line = true
|
||||
]],
|
||||
},
|
||||
}
|
||||
|
||||
-- Helper function to create a file if it doesn't exist
|
||||
local function ensure_file(path, content)
|
||||
if not path then
|
||||
print 'Invalid path, skipping file creation'
|
||||
return
|
||||
end
|
||||
|
||||
local stat = uv.fs_stat(path)
|
||||
if not stat then
|
||||
-- Make parent directory if needed
|
||||
local dir = vim.fn.fnamemodify(path, ':h')
|
||||
if vim.fn.isdirectory(dir) == 0 then
|
||||
vim.fn.mkdir(dir, 'p') -- recursively create directories
|
||||
print('Created directory: ' .. dir)
|
||||
end
|
||||
|
||||
-- Write the file
|
||||
local fd = uv.fs_open(path, 'w', 420) -- 0644
|
||||
if fd then
|
||||
uv.fs_write(fd, content, -1)
|
||||
uv.fs_close(fd)
|
||||
print('Created file: ' .. path)
|
||||
else
|
||||
print('Failed to create file: ' .. path)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Function to run the auto-creation for all formatters
|
||||
function M.setup()
|
||||
for _, fmt in ipairs(formatters) do
|
||||
ensure_file(fmt.path, fmt.content)
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
Reference in New Issue
Block a user