diff options
Diffstat (limited to 'configs/nvim/lua')
-rw-r--r-- | configs/nvim/lua/crupest/filesystem-cmd.lua | 49 | ||||
-rw-r--r-- | configs/nvim/lua/crupest/nvim.lua | 114 | ||||
-rw-r--r-- | configs/nvim/lua/crupest/nvim/fs.lua | 168 | ||||
-rw-r--r-- | configs/nvim/lua/crupest/nvim/plugins/lint.lua | 37 | ||||
-rw-r--r-- | configs/nvim/lua/plugins.lua | 1 |
5 files changed, 205 insertions, 164 deletions
diff --git a/configs/nvim/lua/crupest/filesystem-cmd.lua b/configs/nvim/lua/crupest/filesystem-cmd.lua deleted file mode 100644 index 3148cef..0000000 --- a/configs/nvim/lua/crupest/filesystem-cmd.lua +++ /dev/null @@ -1,49 +0,0 @@ -local function setup_filesystem_user_commands() - vim.api.nvim_create_user_command("Mv", function(opts) - require("crupest.nvim").mv_buf_file(vim.api.nvim_get_current_buf(), opts.fargs[1]) - end, { - nargs = 1, - complete = "file" - }) - - vim.api.nvim_create_user_command("MvFile", function(opts) - if (#opts.fargs ~= 2) then - vim.notify("MvFile accepts exactly two arguments, old file and new file.") - end - require("crupest.nvim").mv_file(opts.fargs[1], opts.fargs[2]) - end, { - nargs = "+", - complete = "file" - }) - - vim.api.nvim_create_user_command("MvDir", function(opts) - if (#opts.fargs ~= 2) then - vim.notify("MvDir accepts exactly two arguments, old dir and new dir.") - end - require("crupest.nvim").mv_dir(opts.fargs[1], opts.fargs[2]) - end, { - nargs = "+", - complete = "file" - }) - - vim.api.nvim_create_user_command("Rename", function(opts) - require("crupest.nvim").rename_buf_file(vim.api.nvim_get_current_buf(), opts.fargs[1]) - end, { - nargs = 1, - complete = "file" - }) - - vim.api.nvim_create_user_command("RenameFile", function(opts) - if (#opts.fargs ~= 2) then - vim.notify("RenameFile accepts exactly two arguments, old file and new file.") - end - require("crupest.nvim").rename_file(opts.fargs[1], opts.fargs[2]) - end, { - nargs = "+", - complete = "file" - }) -end - -return { - setup_filesystem_user_commands = setup_filesystem_user_commands -} diff --git a/configs/nvim/lua/crupest/nvim.lua b/configs/nvim/lua/crupest/nvim.lua index 44c9b5f..1c252fd 100644 --- a/configs/nvim/lua/crupest/nvim.lua +++ b/configs/nvim/lua/crupest/nvim.lua @@ -1,5 +1,3 @@ -local fs = require("crupest.system.fs") - local function list_listed_bufs() local bufs = vim.api.nvim_list_bufs() local result = {} @@ -105,123 +103,11 @@ local function close_float() end end -local function full_path(name) - return vim.fn.fnamemodify(name, ":p:gs?\\?/?") -end - -local function coerce_path_for_dir(old, new) - if fs.isdir(new) then - return new .. "/" .. vim.fn.fnamemodify(old, ":t") - end - return new -end - -local function do_mv_file(old, new, overwrite) - new = coerce_path_for_dir(old, new) - - if full_path(old) == full_path(new) then - vim.notify("Paths are identical. Do nothing.", vim.log.levels.WARN) - return false - end - - if not fs.isfile(old) then - vim.notify("Not exists or not a file. Can't move.", vim.log.levels.ERROR) - return false - end - - if not overwrite and fs.exist(new) then - vim.notify("Target path exists.", vim.log.levels.ERROR) - return false - end - - fs.move(old, new) - vim.notify("File moved.") - - return new -end - -local function mv_file(old, new, overwrite) - new = do_mv_file(old, new, overwrite) - if not new then return end - - local bufs = list_listed_bufs() - for _, b in ipairs(bufs) do - if full_path(vim.api.nvim_buf_get_name(b)) == full_path(old) then - vim.api.nvim_buf_set_name(b, new) - end - end -end - -local function mv_buf_file(buf, new, overwrite) - if not buf_is_normal(buf) then - vim.notify("Buf is not a normal buffer, can't move it.", vim.log.levels.ERROR) - return - end - - local name = vim.api.nvim_buf_get_name(buf) - - new = do_mv_file(name, new, overwrite) - if not new then return end - - vim.api.nvim_buf_set_name(buf, new) -end - -local function mv_dir(old_dir, new_dir, overwrite) - new_dir = coerce_path_for_dir(old_dir, new_dir) - - if full_path(old_dir) == full_path(new_dir) then - vim.notify("Paths are identical. Do nothing.", vim.log.levels.WARN) - return - end - - if not fs.isdir(old_dir) then - vim.notify("Not exist or not a dir. Can't move.", vim.log.levels.ERROR) - end - - if not overwrite and fs.exist(new_dir) then - vim.notify("Target path exists.", vim.log.levels.ERROR) - return - end - - if fs.isdir(old_dir) then - fs.move(old_dir, new_dir) - vim.notify("Dir moved.") - end - - local bufs = list_listed_bufs() - - for _, buf in ipairs(bufs) do - local name = vim.api.nvim_buf_get_name(buf) - local full_name = full_path(name) - local old_dir_full = full_path(old_dir) - if string.find(full_name, old_dir_full, 1, true) == 1 then - local new_name = new_dir .. string.sub(full_name, #old_dir_full + 1) - vim.api.nvim_buf_set_name(buf, new_name) - end - end -end - -local function rename_file(old, new, overwrite) - local dir = vim.fn.fnamemodify(old, ":h") - mv_file(old, dir .. "/" .. new, overwrite) -end - -local function rename_buf_file(buf, new_name, overwrite) - local old_path = vim.api.nvim_buf_get_name(buf) - local dir = vim.fn.fnamemodify(old_path, ":h") - mv_buf_file(buf, dir .. "/" .. new_name, overwrite) -end - return { list_listed_bufs = list_listed_bufs, get_previous_buffer = get_previous_buffer, list_wins_editing_buf = list_wins_editing_buf, win_close_buf = win_close_buf, close_float = close_float, - mv_file = mv_file, - mv_buf_file = mv_buf_file, - mv_dir = mv_dir, - rename_file = rename_file, - rename_buf_file = rename_buf_file } diff --git a/configs/nvim/lua/crupest/nvim/fs.lua b/configs/nvim/lua/crupest/nvim/fs.lua new file mode 100644 index 0000000..94eb51e --- /dev/null +++ b/configs/nvim/lua/crupest/nvim/fs.lua @@ -0,0 +1,168 @@ +local list_listed_bufs = require("crupest.nvim").list_listed_bufs; +local fs = require("crupest.system.fs"); + +local function full_path(name) + return vim.fn.fnamemodify(name, ":p:gs?\\?/?") +end + +-- There are two situations. +-- 1. the new path is not a dir, then it is used +-- 2. the new path is a dir, then it is appended with the last name of old path, to create a new valid file path +local function coerce_path_for_dir(old, new) + if fs.isdir(new) then + return new .. "/" .. vim.fn.fnamemodify(old, ":t") + end + return new +end + +local function do_mv_file(old, new, overwrite) + new = coerce_path_for_dir(old, new) + + if full_path(old) == full_path(new) then + vim.notify("Paths are identical. Do nothing.", vim.log.levels.WARN) + return false + end + + if not fs.isfile(old) then + vim.notify("Not exists or not a file. Can't move.", vim.log.levels.ERROR) + return false + end + + if not overwrite and fs.exist(new) then + vim.notify("Target path exists.", vim.log.levels.ERROR) + return false + end + + fs.move(old, new) + vim.notify("File moved.") + + return new +end + +local function mv_file(old, new, overwrite) + new = do_mv_file(old, new, overwrite) + if not new then return end + + local bufs = list_listed_bufs() + for _, b in ipairs(bufs) do + if full_path(vim.api.nvim_buf_get_name(b)) == full_path(old) then + vim.api.nvim_buf_set_name(b, new) + end + end +end + +local function mv_buf_file(buf, new, overwrite) + if not buf_is_normal(buf) then + vim.notify("Buf is not a normal buffer, can't move it.", vim.log.levels.ERROR) + return + end + + local name = vim.api.nvim_buf_get_name(buf) + + new = do_mv_file(name, new, overwrite) + if not new then return end + + vim.api.nvim_buf_set_name(buf, new) +end + +local function mv_dir(old_dir, new_dir, overwrite) + new_dir = coerce_path_for_dir(old_dir, new_dir) + + if full_path(old_dir) == full_path(new_dir) then + vim.notify("Paths are identical. Do nothing.", vim.log.levels.WARN) + return + end + + if not fs.isdir(old_dir) then + vim.notify("Not exist or not a dir. Can't move.", vim.log.levels.ERROR) + end + + if not overwrite and fs.exist(new_dir) then + vim.notify("Target path exists.", vim.log.levels.ERROR) + return + end + + if fs.isdir(old_dir) then + fs.move(old_dir, new_dir) + vim.notify("Dir moved.") + end + + local bufs = list_listed_bufs() + + for _, buf in ipairs(bufs) do + local name = vim.api.nvim_buf_get_name(buf) + local full_name = full_path(name) + local old_dir_full = full_path(old_dir) + if string.find(full_name, old_dir_full, 1, true) == 1 then + local new_name = new_dir .. string.sub(full_name, #old_dir_full + 1) + vim.api.nvim_buf_set_name(buf, new_name) + end + end +end + +local function rename_file(old, new, overwrite) + local dir = vim.fn.fnamemodify(old, ":h") + mv_file(old, dir .. "/" .. new, overwrite) +end + +local function rename_buf_file(buf, new_name, overwrite) + local old_path = vim.api.nvim_buf_get_name(buf) + local dir = vim.fn.fnamemodify(old_path, ":h") + mv_buf_file(buf, dir .. "/" .. new_name, overwrite) +end + +local function setup_filesystem_user_commands() + vim.api.nvim_create_user_command("Mv", function(opts) + mv_buf_file(vim.api.nvim_get_current_buf(), opts.fargs[1]) + end, { + nargs = 1, + complete = "file" + }) + + vim.api.nvim_create_user_command("MvFile", function(opts) + if (#opts.fargs ~= 2) then + vim.notify("MvFile accepts exactly two arguments, old file and new file.") + end + mv_file(opts.fargs[1], opts.fargs[2]) + end, { + nargs = "+", + complete = "file" + }) + + vim.api.nvim_create_user_command("MvDir", function(opts) + if (#opts.fargs ~= 2) then + vim.notify("MvDir accepts exactly two arguments, old dir and new dir.") + end + mv_dir(opts.fargs[1], opts.fargs[2]) + end, { + nargs = "+", + complete = "file" + }) + + vim.api.nvim_create_user_command("Rename", function(opts) + rename_buf_file(vim.api.nvim_get_current_buf(), opts.fargs[1]) + end, { + nargs = 1, + complete = "file" + }) + + vim.api.nvim_create_user_command("RenameFile", function(opts) + if (#opts.fargs ~= 2) then + vim.notify("RenameFile accepts exactly two arguments, old file and new file.") + end + rename_file(opts.fargs[1], opts.fargs[2]) + end, { + nargs = "+", + complete = "file" + }) +end + +return { + mv_file = mv_file, + mv_buf_file = mv_buf_file, + mv_dir = mv_dir, + rename_file = rename_file, + rename_buf_file = rename_buf_file, + setup_filesystem_user_commands = setup_filesystem_user_commands +} + diff --git a/configs/nvim/lua/crupest/nvim/plugins/lint.lua b/configs/nvim/lua/crupest/nvim/plugins/lint.lua new file mode 100644 index 0000000..abab018 --- /dev/null +++ b/configs/nvim/lua/crupest/nvim/plugins/lint.lua @@ -0,0 +1,37 @@ +local lint = require("lint") + +local function run_lint() + lint.try_lint() + lint.try_lint("cspell") +end + +local function setup_lint() + local linter_eslint = require("lint.linters.eslint") + + linter_eslint.cmd = function() + local current_buffer = vim.api.nvim_buf_get_name(0) + return require("crupest.system").find_npm_exe(current_buffer, "eslint") or "eslint" + end + + -- lint library use 'cmd /C' to run exe, but we don't need this, so explicitly + -- set args to empty. + linter_eslint.args = {} + linter_eslint.append_fname = true + + lint.linters_by_ft = { + javascript = { "eslint" }, + javascriptreact = { "eslint" }, + typescript = { "eslint" }, + typescriptreact = { "eslint" }, + } + + vim.api.nvim_create_autocmd({ "BufWritePost" }, { + callback = run_lint, + }) +end + +return { + setup_lint = setup_lint, + run_lint = run_lint +} + diff --git a/configs/nvim/lua/plugins.lua b/configs/nvim/lua/plugins.lua index 5ba7e41..42038a7 100644 --- a/configs/nvim/lua/plugins.lua +++ b/configs/nvim/lua/plugins.lua @@ -18,7 +18,6 @@ return { "nvim-lualine/lualine.nvim", "nvim-telescope/telescope.nvim", "windwp/nvim-autopairs", - "lewis6991/gitsigns.nvim", "mhartington/formatter.nvim", "mfussenegger/nvim-lint", "akinsho/toggleterm.nvim", |