diff options
author | crupest <crupest@outlook.com> | 2023-11-19 00:51:47 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2023-11-19 18:04:32 +0800 |
commit | 93f631255b94f8aaceadd3ca72985101ecc01860 (patch) | |
tree | 4914420216990bf8e67431b1668e4d4d4d1dea85 | |
parent | 8aea2c0afa64fd516efe55d2dbb46b47552041ea (diff) | |
download | crupest-93f631255b94f8aaceadd3ca72985101ecc01860.tar.gz crupest-93f631255b94f8aaceadd3ca72985101ecc01860.tar.bz2 crupest-93f631255b94f8aaceadd3ca72985101ecc01860.zip |
config(nvim): make format optional and remove redundant deno lint.
-rw-r--r-- | configs/nvim/init.lua | 4 | ||||
-rw-r--r-- | configs/nvim/lua/crupest/constants.lua | 9 | ||||
-rw-r--r-- | configs/nvim/lua/crupest/nvim/plugins/format.lua | 116 | ||||
-rw-r--r-- | configs/nvim/lua/crupest/nvim/plugins/lint.lua | 10 |
4 files changed, 48 insertions, 91 deletions
diff --git a/configs/nvim/init.lua b/configs/nvim/init.lua index b57c0bf..09d3885 100644 --- a/configs/nvim/init.lua +++ b/configs/nvim/init.lua @@ -95,7 +95,7 @@ require('gitsigns').setup() -- setup format local format = require("crupest.nvim.plugins.format") -format.setup_formatter() +format.setup_format() -- setup lint local lint = require("crupest.nvim.plugins.lint") @@ -169,7 +169,7 @@ vim.api.nvim_create_autocmd('LspAttach', { vim.keymap.set({ 'n', 'v' }, '<space>ca', vim.lsp.buf.code_action, opts) vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts) - vim.keymap.set('n', '<space>f', format.run_formatter, opts) + vim.keymap.set('n', '<space>f', format.do_format, opts) end, }) diff --git a/configs/nvim/lua/crupest/constants.lua b/configs/nvim/lua/crupest/constants.lua index c8238e7..89ae968 100644 --- a/configs/nvim/lua/crupest/constants.lua +++ b/configs/nvim/lua/crupest/constants.lua @@ -20,12 +20,13 @@ local config_patterns = { } } -local filetypes = { - js_ts = { 'javascript', 'javascriptreact', 'typescript', 'typescriptreact' } - +local filetype_collections = { + js_ts = { 'javascript', 'javascriptreact', 'typescript', 'typescriptreact' }, + html_css = { 'html', 'css' }, + frontend = { 'javascript', 'javascriptreact', 'typescript', 'typescriptreact', 'html', 'css' }, } return { config_patterns = config_patterns, - filetypes = filetypes, + filetype_collections = filetype_collections, } diff --git a/configs/nvim/lua/crupest/nvim/plugins/format.lua b/configs/nvim/lua/crupest/nvim/plugins/format.lua index 9f6138f..0e3320a 100644 --- a/configs/nvim/lua/crupest/nvim/plugins/format.lua +++ b/configs/nvim/lua/crupest/nvim/plugins/format.lua @@ -1,78 +1,45 @@ -local fs = require("crupest.system.fs") -local find_npm_exe = require("crupest.system.find").find_npm_exe; - -local prettier_formatter = function() - local current_buffer = vim.api.nvim_buf_get_name(0) - local prettier_exe = find_npm_exe(current_buffer, "prettier") or "prettier" - - if vim.fn.has("win32") ~= 0 then - local escape = fs.escape_space - current_buffer = escape(current_buffer) - prettier_exe = escape(prettier_exe) - end +local find = require("crupest.system.find") +local constants = require("crupest.constants") + +local function wrap_formatter_with_exe(name, exe) + local formatter = require('formatter.defaults.' .. name) + formatter = formatter() + formatter.try_node_modules = false + formatter.exe = exe + return formatter +end - return { - exe = prettier_exe, - args = { - "--stdin-filepath", - current_buffer - }, - stdin = true, - } +local function set_formatters_for_filetype(filetype, formatters) + require('formatter.config').values.filetype[filetype] = formatters end -local formatters_for_filetype = { - html = { - prettier_formatter - }, - css = { - prettier_formatter - }, - javascript = { - prettier_formatter +local my_formatters = { + { + name = "prettier", + exe_places = { "npm" }, + filetypes = constants.filetype_collections.frontend, + config_files = constants.config_patterns.nodejs, }, - javascriptreact = { - prettier_formatter - }, - typescript = { - prettier_formatter - }, - typescriptreact = { - prettier_formatter - } } -local function get_formatter_name(formatter) - if formatter == prettier_formatter then return "prettier" end - return nil -end +local function find_custom_formatter(opts) + if opts == nil then opts = {} end + if opts.buf == nil then opts.buf = 0 end -local function get_formatter_name_list(formatters) - local result = {} - for _, formatter in ipairs(formatters) do - table.insert(result, get_formatter_name(formatter)) + for _, f in ipairs(my_formatters) do + local r = find.find_exe_for_buf(opts.buf, f) + if r ~= nil then + local formatter = wrap_formatter_with_exe(r.name, r.exe_path) + set_formatters_for_filetype(r.filetype, { formatter }) + return r.name + end end - return result -end -local function setup_formatter() - require("formatter").setup { - filetype = formatters_for_filetype - } + return nil end -local function get_custom_formatters(bufnr) - local filetype = vim.api.nvim_buf_get_option(bufnr, "filetype") - for ft, formatters in pairs(formatters_for_filetype) do - if filetype == ft then - return true, get_formatter_name_list(formatters) - end - end - return false, {} -end - -local function run_formatter(opt) +local function do_format(opt) if not opt then opt = {} end @@ -81,19 +48,10 @@ local function run_formatter(opt) opt.buf = 0 end - local has_custom_formatter, formatter_names = get_custom_formatters(opt.buf) + local custom_formatter = find_custom_formatter(opt) - local formatter_name_str = "" - for i, name in ipairs(formatter_names) do - if i == 1 then - formatter_name_str = name - else - formatter_name_str = formatter_name_str .. " " .. name - end - end - - if has_custom_formatter then - print("Use custom formatters: " .. formatter_name_str .. ".") + if custom_formatter then + print("Use custom formatters: " .. custom_formatter .. ".") vim.cmd("Format") return end @@ -108,7 +66,11 @@ local function run_formatter(opt) vim.notify("No formatters found.", vim.log.levels.ERROR); end +local function setup_format() + require("formatter").setup {} +end + return { - setup_formatter = setup_formatter, - run_formatter = run_formatter + setup_format = setup_format, + do_format = do_format, } diff --git a/configs/nvim/lua/crupest/nvim/plugins/lint.lua b/configs/nvim/lua/crupest/nvim/plugins/lint.lua index 1db4d32..2ba3e36 100644 --- a/configs/nvim/lua/crupest/nvim/plugins/lint.lua +++ b/configs/nvim/lua/crupest/nvim/plugins/lint.lua @@ -12,15 +12,9 @@ local my_linters = { { name = "eslint", exe_places = { "npm" }, - filetypes = constants.filetypes.js_ts, - config_files = { "package.json" } + filetypes = constants.filetype_collections.js_ts, + config_files = constants.config_patterns.nodejs, }, - { - name = "deno", - exe_places = { "global" }, - filetypes = constants.filetypes.js_ts, - config_files = { "deno.json", "deno.jsonc" } - } } local function run_lint(opt) |