diff --git a/lua/custom_html_snippets.json b/custom_friendly_snippets/html.json similarity index 100% rename from lua/custom_html_snippets.json rename to custom_friendly_snippets/html.json diff --git a/init.lua b/init.lua index bbbb535..e7d3629 100644 --- a/init.lua +++ b/init.lua @@ -271,8 +271,8 @@ require('lazy').setup({ -- custom/keymaps.lua file require 'keymaps' --- HTML snippet fixer -require 'replace_html_snippets' +-- Copy custom snippets from custom_friendly_snippets folder +require 'replace_with_custom_snippets' -- [[ Setting options ]] -- See `:help vim.o` diff --git a/lua/replace_html_snippets.lua b/lua/replace_html_snippets.lua deleted file mode 100644 index 05c8091..0000000 --- a/lua/replace_html_snippets.lua +++ /dev/null @@ -1,50 +0,0 @@ -local uv = vim.loop -local home = uv.os_homedir() --- Detect OS and friendly-snippets path -local function get_friendly_snippets_html_path() - local os_name = uv.os_uname().sysname - if os_name == 'Windows_NT' then - return home .. '\\.local\\share\\nvim\\lazy\\friendly-snippets\\snippets\\html.json' - else - return home .. '/.local/share/nvim/lazy/friendly-snippets/snippets/html.json' - end -end -local target_path = get_friendly_snippets_html_path() -local source_path = vim.fn.stdpath 'config' .. '/lua/custom_html_snippets.json' --- Read source file -local source_file = io.open(source_path, 'r') -if not source_file then - vim.notify('Custom html.json not found at ' .. source_path, vim.log.levels.ERROR) - return -end -local source_content = source_file:read '*a' -source_file:close() --- Read target file -local target_content = '' -local target_file = io.open(target_path, 'r') -if target_file then - target_content = target_file:read '*a' - target_file:close() -end --- Only update if the contents differ -if target_content ~= source_content then - -- Create backup only if it doesn't exist - local backup_path = target_path .. '.bak' - if not uv.fs_stat(backup_path) and target_content ~= '' then - local backup_file = io.open(backup_path, 'w') - if backup_file then - backup_file:write(target_content) - backup_file:close() - else - vim.notify('Failed to create backup: ' .. backup_path, vim.log.levels.ERROR) - end - end - -- Write custom file - local output = io.open(target_path, 'w') - if output then - output:write(source_content) - output:close() - else - vim.notify('Failed to write custom html.json to ' .. target_path, vim.log.levels.ERROR) - end -end diff --git a/lua/replace_with_custom_snippets.lua b/lua/replace_with_custom_snippets.lua new file mode 100644 index 0000000..ee5d097 --- /dev/null +++ b/lua/replace_with_custom_snippets.lua @@ -0,0 +1,81 @@ +local uv = vim.loop +local home = uv.os_homedir() +-- Detect OS and base path of friendly-snippets +local function get_friendly_snippets_base_path() + local os_name = uv.os_uname().sysname + if os_name == 'Windows_NT' then + return home .. '\\.local\\share\\nvim\\lazy\\friendly-snippets\\snippets\\' + else + return home .. '/.local/share/nvim/lazy/friendly-snippets/snippets/' + end +end +local target_base = get_friendly_snippets_base_path() +local custom_snippets_dir = vim.fn.stdpath 'config' .. '/custom_friendly_snippets/' +-- Read all files in custom_snippets_dir +local function get_custom_snippet_files() + local handle = uv.fs_scandir(custom_snippets_dir) + if not handle then + vim.notify('Custom snippets folder not found: ' .. custom_snippets_dir, vim.log.levels.ERROR) + return {} + end + local files = {} + while true do + local name, type = uv.fs_scandir_next(handle) + if not name then + break + end + if type == 'file' then + table.insert(files, name) + end + end + return files +end +-- Replace each snippet file +local function replace_snippets() + local files = get_custom_snippet_files() + for _, filename in ipairs(files) do + local source_path = custom_snippets_dir .. filename + local target_path = target_base .. filename + -- Read source content + local source_file = io.open(source_path, 'r') + if not source_file then + vim.notify('Failed to read: ' .. source_path, vim.log.levels.ERROR) + goto continue + end + local source_content = source_file:read '*a' + source_file:close() + -- Read target content (if exists) + local target_content = '' + local target_file = io.open(target_path, 'r') + if target_file then + target_content = target_file:read '*a' + target_file:close() + end + -- Only update if different + if source_content ~= target_content then + -- Create backup if not exists + local backup_path = target_path .. '.bak' + if not uv.fs_stat(backup_path) and target_content ~= '' then + local backup_file = io.open(backup_path, 'w') + if backup_file then + backup_file:write(target_content) + backup_file:close() + else + vim.notify('Failed to create backup: ' .. backup_path, vim.log.levels.ERROR) + end + end + -- Write updated content + local output = io.open(target_path, 'w') + if output then + output:write(source_content) + output:close() + vim.notify('Updated snippet: ' .. filename, vim.log.levels.INFO) + else + vim.notify('Failed to write: ' .. target_path, vim.log.levels.ERROR) + end + end + ::continue:: + end +end +-- Run the function +replace_snippets()