formatting/linting added for lua/ts

This commit is contained in:
RingOfStorms (Joshua Bell) 2024-05-02 12:33:00 -05:00
parent e54f6ee975
commit 61d3aec608
18 changed files with 338 additions and 710 deletions

View file

@ -5,6 +5,7 @@ return {
config = function(_, opts)
require("ccc").setup(opts)
vim.api.nvim_create_autocmd("BufRead", {
group = vim.api.nvim_create_augroup("myconfig-color-picker-group", { clear = true }),
callback = function()
vim.cmd.CccHighlighterEnable()
end,

View file

@ -47,7 +47,7 @@ local function gitblame()
if d then
local ok, res = pcall(os.date, "%d %b %y", d.committer_time)
return d.committer .. " - " .. (ok and res or d.committer_time)
return d.committer:sub(1, 12) .. " - " .. (ok and res or d.committer_time)
end
return ""
end
@ -121,11 +121,13 @@ return {
})
end
local group = vim.api.nvim_create_augroup("myconfig-lua-line-group", { clear = true })
vim.api.nvim_create_autocmd("RecordingEnter", {
group = group,
callback = ref,
})
vim.api.nvim_create_autocmd("RecordingLeave", {
group = group,
callback = function()
local timer = vim.loop.new_timer()
timer:start(50, 0, vim.schedule_wrap(ref))

View file

@ -0,0 +1,5 @@
return {
-- This plugin automatically adjusts 'shiftwidth' and 'expandtab' heuristically based on the current file, or, in the case the current file is new, blank, or otherwise insufficient, by looking at other files of the same type in the current and parent directories.
"tpope/vim-sleuth",
event = "VeryLazy",
}

30
lua/plugins/formatter.lua Normal file
View file

@ -0,0 +1,30 @@
return {
"stevearc/conform.nvim",
opts = {
-- https://github.com/stevearc/conform.nvim?tab=readme-ov-file#setup
notify_on_error = true,
formatters_by_ft = {
lua = { "stylua" },
typescript = { { "prettierd", "prettier" } },
typescriptreact = { { "prettierd", "prettier" } },
javascript = { { "prettierd", "prettier" } },
javascriptreact = { { "prettierd", "prettier" } },
},
},
keys = {
{
"<leader>l<leader>",
function()
require("conform").format({ async = true, lsp_fallback = true }, function(err, edited)
if edited then
print("Formatted!")
else
print("Nothing to format!")
end
end)
end,
mode = { "n", "v", "x" },
desc = "Format buffer",
},
},
}

View file

@ -24,7 +24,6 @@ return {
},
current_line_blame = true,
current_line_blame_opts = {
delay = 0,
virt_text = false,
},
}

View file

@ -26,9 +26,10 @@ return {
},
},
},
config = function(_, opts)
init = function()
U.highlight("NonText", { fg = "#303030", gui = "nocombine" })
end,
config = function(_, opts)
local hooks = require("ibl.hooks")
hooks.register(hooks.type.HIGHLIGHT_SETUP, function()
vim.api.nvim_set_hl(0, "IndentBlanklineIndent1", { fg = "#915053" })

139
lua/plugins/lint.lua Normal file
View file

@ -0,0 +1,139 @@
-- Stolen from LazyVim https://github.com/LazyVim/LazyVim/tree/f086bcde253c29be9a2b9c90b413a516f5d5a3b2/lua/lazyvim/plugins
return {
"mfussenegger/nvim-lint",
event = { "VeryLazy", "BufWritePost", "BufReadPost", "InsertLeave" },
opts = {
-- Event to trigger linters
events = { "BufWritePost", "BufReadPost", "InsertLeave", "CursorHold", "CursorHoldI" },
linters_by_ft = {
-- Builtin: https://github.com/mfussenegger/nvim-lint/tree/master/lua/lint/linters
markdown = { "markdownlint" },
lua = { "luacheck" },
typescript = { "biomejs" },
typescriptreact = { "biomejs" },
javascript = { "biomejs" },
javascriptreact = { "biomejs" },
-- Use the "*" filetype to run linters on all filetypes.
-- ['*'] = { 'global linter' },
-- Use the "_" filetype to run linters on filetypes that don't have other linters configured.
-- ['_'] = { 'fallback linter' },
-- ["*"] = { "typos" },
},
-- LazyVim extension to easily override linter options
-- or add custom linters.
---@type table<string,table>
--
-- Options:
-- cmd = 'linter_cmd',
-- stdin = true, -- or false if it doesn't support content input via stdin. In that case the filename is automatically added to the arguments.
-- append_fname = true, -- Automatically append the file name to `args` if `stdin = false` (default: true)
-- args = {}, -- list of arguments. Can contain functions with zero arguments that will be evaluated once the linter is used.
-- stream = nil, -- ('stdout' | 'stderr' | 'both') configure the stream to which the linter outputs the linting result.
-- ignore_exitcode = false, -- set this to true if the linter exits with a code != 0 and that's considered normal.
-- env = nil, -- custom environment table to use with the external process. Note that this replaces the *entire* environment, it is not additive.
-- parser = your_parse_function
--
-- your_parse_function can be a function which takes three arguments:
-- output
-- bufnr
-- linter_cwd
-- The output is the output generated by the linter command. The function must return a list of diagnostics as specified in :help diagnostic-structure.
linters = {
luacheck = {
args = {
"--globals",
"vim",
"--globals",
"NIX",
"--globals",
"U",
"--max_line_length",
"240",
"--max_code_line_length",
"240",
"--max_string_line_length",
"240",
"--max_comment_line_length",
"240",
"--formatter",
"plain",
"--codes",
"--ranges",
"-",
},
},
-- -- Example of using selene only when a selene.toml file is present
-- selene = {
-- -- `condition` is another LazyVim extension that allows you to
-- -- dynamically enable/disable linters based on the context.
-- condition = function(ctx)
-- return vim.fs.find({ "selene.toml" }, { path = ctx.filename, upward = true })[1]
-- end,
-- },
},
},
config = function(_, opts)
local M = {}
local lint = require("lint")
for name, linter in pairs(opts.linters) do
if type(linter) == "table" and type(lint.linters[name]) == "table" then
lint.linters[name] = vim.tbl_deep_extend("force", lint.linters[name], linter)
else
lint.linters[name] = linter
end
end
lint.linters_by_ft = opts.linters_by_ft
function M.debounce(ms, fn)
local timer = vim.uv.new_timer()
return function(...)
local argv = { ... }
timer:start(ms, 0, function()
timer:stop()
vim.schedule_wrap(fn)(unpack(argv))
end)
end
end
function M.lint()
-- Use nvim-lint's logic first:
-- * checks if linters exist for the full filetype first
-- * otherwise will split filetype by "." and add all those linters
-- * this differs from conform.nvim which only uses the first filetype that has a formatter
local names = lint._resolve_linter_by_ft(vim.bo.filetype)
-- Create a copy of the names table to avoid modifying the original.
names = vim.list_extend({}, names)
-- Add fallback linters.
if #names == 0 then
vim.list_extend(names, lint.linters_by_ft["_"] or {})
end
-- Add global linters.
vim.list_extend(names, lint.linters_by_ft["*"] or {})
-- Filter out linters that don't exist or don't match the condition.
local ctx = { filename = vim.api.nvim_buf_get_name(0) }
ctx.dirname = vim.fn.fnamemodify(ctx.filename, ":h")
names = vim.tbl_filter(function(name)
local linter = lint.linters[name]
if not linter then
LazyVim.warn("Linter not found: " .. name, { title = "nvim-lint" })
end
return linter and not (type(linter) == "table" and linter.condition and not linter.condition(ctx))
end, names)
-- Run linters.
if #names > 0 then
lint.try_lint(names)
end
end
vim.api.nvim_create_autocmd(opts.events, {
group = vim.api.nvim_create_augroup("nvim-lint", { clear = true }),
callback = M.debounce(100, M.lint),
})
end,
}

View file

@ -81,12 +81,21 @@ return {
desc = "Resume last telescope",
},
{
"<leader>fj",
"<leader>f/",
function()
require("telescope.builtin").current_buffer_fuzzy_find()
require("telescope.builtin").current_buffer_fuzzy_find(
require("telescope.themes").get_dropdown({ winblend = 10, previewer = false })
)
end,
desc = "Fuzzy find/search in current buffer fuzzy.",
},
{
"<leader>fh",
function()
require("telescope.builtin").help_tags()
end,
desc = "Find help",
},
{
"<leader>ff",
function()
@ -133,21 +142,21 @@ return {
function()
require("telescope.builtin").keymaps()
end,
desc = "Find Commands",
desc = "Find Keymap",
},
{
"<leader>fb",
function()
require("telescope.builtin").buffers()
end,
desc = "Find Commands",
desc = "Find Buffer",
},
{
"<leader>lfr",
function()
require("telescope.builtin").lsp_references()
end,
desc = "Find References",
desc = "Find LSP References",
mode = { "n", "v", "x" },
},
},