134 lines
3.6 KiB
Lua
134 lines
3.6 KiB
Lua
return {
|
|
-- heuristic indent
|
|
{ "tpope/vim-sleuth" },
|
|
{
|
|
"nvim-treesitter/nvim-treesitter",
|
|
build = ":TSUpdate",
|
|
config = function()
|
|
local configs = require("nvim-treesitter.configs")
|
|
--@diagnostic disable-next-line: missing-fields
|
|
configs.setup({
|
|
ensure_installed = {
|
|
"bash",
|
|
--"zsh",
|
|
"c",
|
|
"cmake",
|
|
"dockerfile",
|
|
"gitignore",
|
|
"go",
|
|
"gotmpl",
|
|
"java",
|
|
"json",
|
|
"lua",
|
|
"make",
|
|
"markdown",
|
|
"markdown_inline",
|
|
"python",
|
|
"query",
|
|
"regex",
|
|
"rust",
|
|
"terraform",
|
|
"vim",
|
|
"vimdoc",
|
|
"yaml",
|
|
},
|
|
|
|
-- Install parsers synchronously (only applied to `ensure_installed`)
|
|
sync_install = false,
|
|
|
|
-- Automatically install missing parsers when entering buffer
|
|
-- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
|
|
auto_install = true,
|
|
|
|
-- List of parsers to ignore installing (or "all")
|
|
ignore_install = { "javascript" },
|
|
|
|
---- If you need to change the installation directory of the parsers (see -> Advanced Setup)
|
|
-- parser_install_dir = "/some/path/to/store/parsers",
|
|
-- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")!
|
|
|
|
highlight = {
|
|
enable = true,
|
|
|
|
-- NOTE: these are the names of the parsers and not the filetype. (for example if you want to
|
|
-- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is
|
|
-- the name of the parser)
|
|
-- list of language that will be disabled
|
|
disable = {},
|
|
-- Or use a function for more flexibility, e.g. to disable slow treesitter highlight for large files
|
|
-- disable = function(lang, buf)
|
|
-- local max_filesize = 100 * 1024 -- 100 KB
|
|
-- local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
|
|
-- if ok and stats and stats.size > max_filesize then
|
|
-- return true
|
|
-- end
|
|
-- end,
|
|
|
|
-- Setting this to true will run `:h syntax` and tree-sitter at the same time.
|
|
-- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
|
|
-- Using this option may slow down your editor, and you may see some duplicate highlights.
|
|
-- Instead of true it can also be a list of languages
|
|
additional_vim_regex_highlighting = false,
|
|
},
|
|
indent = {
|
|
enable = false,
|
|
disable = {},
|
|
},
|
|
})
|
|
end,
|
|
},
|
|
{
|
|
"stevearc/conform.nvim",
|
|
event = { "BufReadPre", "BufNewFile" },
|
|
config = function()
|
|
local conform = require("conform")
|
|
conform.setup({
|
|
formatters_by_ft = {
|
|
-- brew install stylua
|
|
lua = { "stylua" },
|
|
-- install rust
|
|
rust = { "rustfmt" },
|
|
-- brew install prettier
|
|
markdown = { "markdownlint-cli2" },
|
|
json = { "prettierd", "prettier" },
|
|
yaml = { "yamlfmt" },
|
|
-- install terraform
|
|
terraform = { "terraform_fmt" },
|
|
-- brew install shfmt
|
|
bash = { "shfmt" },
|
|
zsh = { "shfmt" },
|
|
sh = { "shfmt" },
|
|
-- brew install ruff
|
|
python = { "ruff" },
|
|
-- go install mvdan.cc/gofumpt@latest
|
|
go = { "gofumpt" },
|
|
},
|
|
formatters = {
|
|
prettier = {
|
|
prepend_args = { "--prose-wrap", "always" },
|
|
},
|
|
shfmt = {
|
|
prepend_args = { "-i", "4", "-ci" },
|
|
},
|
|
ruff = {
|
|
prepend_args = { "--extend-select", "I" },
|
|
},
|
|
},
|
|
format_on_save = {
|
|
lsp_fallback = true,
|
|
async = false,
|
|
timeout_ms = 3000,
|
|
},
|
|
})
|
|
|
|
vim.keymap.set({ "n", "v" }, "<leader>mp", function()
|
|
conform.format({
|
|
lsp_fallback = true,
|
|
async = false,
|
|
timeout_ms = 5000,
|
|
})
|
|
end, { desc = "Format file or range (in visual mode)" })
|
|
end,
|
|
},
|
|
}
|