summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPasi Bergman <[email protected]>2021-07-18 21:36:08 +0300
committerGitHub <[email protected]>2021-07-18 14:36:08 -0400
commitd9936b0d84b45e9825849681d656ff399104ca16 (patch)
tree62121102c795165fcb02bb9499b70fa82ac37183
parentb797c2398fafaaa3e5f81d9e1630a41240a31bf8 (diff)
[Feature] Add Vue formatter (prettier) setup (#1016)
-rw-r--r--lua/default-config.lua1
-rw-r--r--lua/lang/vue.lua42
-rw-r--r--lua/lv-utils/init.lua11
3 files changed, 49 insertions, 5 deletions
diff --git a/lua/default-config.lua b/lua/default-config.lua
index 70c5f070..2a1368fe 100644
--- a/lua/default-config.lua
+++ b/lua/default-config.lua
@@ -189,5 +189,6 @@ require("lang.swift").config()
require("lang.terraform").config()
require("lang.tex").config()
require("lang.vim").config()
+require("lang.vue").config()
require("lang.yaml").config()
require("lang.zig").config()
diff --git a/lua/lang/vue.lua b/lua/lang/vue.lua
index 8fd2af7e..33c6dda7 100644
--- a/lua/lang/vue.lua
+++ b/lua/lang/vue.lua
@@ -1,13 +1,44 @@
local M = {}
M.config = function()
- -- TODO: implement config for language
- return "No config available!"
+ O.lang.vue = {
+ formatter = {
+ exe = "prettier",
+ args = {
+ "--stdin-filepath",
+ "${FILEPATH}",
+ },
+ stdin = true,
+ },
+ auto_import = true,
+ }
end
M.format = function()
- -- TODO: implement formatter for language
- return "No formatter available!"
+ vim.cmd "let proj = FindRootDirectory()"
+ local root_dir = vim.api.nvim_get_var "proj"
+
+ -- use the global formatter if you didn't find the local one
+ local formatter_instance = root_dir .. "/node_modules/.bin/" .. O.lang.vue.formatter.exe
+ if vim.fn.executable(formatter_instance) ~= 1 then
+ formatter_instance = O.lang.vue.formatter.exe
+ end
+
+ local ft = vim.bo.filetype
+ O.formatters.filetype[ft] = {
+ function()
+ local lv_utils = require "lv-utils"
+ return {
+ exe = formatter_instance,
+ args = lv_utils.gsub_args(O.lang.vue.formatter.args),
+ stdin = O.lang.vue.formatter.stdin,
+ }
+ end,
+ }
+ require("formatter.config").set_defaults {
+ logging = false,
+ filetype = O.formatters.filetype,
+ }
end
M.lint = function()
@@ -24,8 +55,9 @@ M.lsp = function()
require("lspconfig").vuels.setup {
cmd = { DATA_PATH .. "/lspinstall/vue/node_modules/.bin/vls", "--stdio" },
on_attach = require("lsp").common_on_attach,
- root_dir = require("lspconfig").util.root_pattern(".git", "vue.config.js", "package.json", "yarn.lock"),
}
+
+ require("lsp.ts-fmt-lint").setup()
end
M.dap = function()
diff --git a/lua/lv-utils/init.lua b/lua/lv-utils/init.lua
index c88c106d..a1566903 100644
--- a/lua/lv-utils/init.lua
+++ b/lua/lv-utils/init.lua
@@ -204,6 +204,17 @@ lv_utils.define_augroups {
_user_autocommands = O.user_autocommands,
}
+function lv_utils.gsub_args(args)
+ if args == nil or type(args) ~= "table" then
+ return args
+ end
+ local buffer_filepath = vim.fn.fnameescape(vim.api.nvim_buf_get_name(0))
+ for i = 1, #args do
+ args[i], _ = string.gsub(args[i], "${FILEPATH}", buffer_filepath)
+ end
+ return args
+end
+
vim.cmd [[
function! QuickFixToggle()
if empty(filter(getwininfo(), 'v:val.quickfix'))