feat: new config
This commit is contained in:
@@ -0,0 +1,225 @@
|
||||
local function my_on_attach(bufnr)
|
||||
local api = require "nvim-tree.api"
|
||||
|
||||
local function opts(desc)
|
||||
return { desc = "nvim-tree: " .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true }
|
||||
end
|
||||
|
||||
-- default mappings
|
||||
api.config.mappings.default_on_attach(bufnr)
|
||||
|
||||
-- custom mappings
|
||||
vim.keymap.set('n', '<C-t>', api.tree.change_root_to_parent, opts('Up'))
|
||||
vim.keymap.set('n', '?', api.tree.toggle_help, opts('Help'))
|
||||
vim.keymap.set('n', 'l', api.node.open.edit, opts('Edit'))
|
||||
vim.keymap.set('n', 'h', api.node.navigate.parent_close, opts('Parent Close'))
|
||||
vim.keymap.set('n', 's', api.node.open.horizontal, opts('Horizontal Split'))
|
||||
vim.keymap.set('n', 'v', api.node.open.vertical, opts('Vertical Split'))
|
||||
end
|
||||
|
||||
vim.g.nvim_tree_indent_markers = 1 -- "0 by default, this option shows indent markers when folders are open
|
||||
vim.g.nvim_tree_auto_ignore_ft = 'startify' --empty by default, don't auto open tree on specific filetypes.
|
||||
|
||||
vim.g.nvim_tree_icons = {
|
||||
default = '',
|
||||
symlink = '',
|
||||
git = {unstaged = "", staged = "✓", unmerged = "", renamed = "➜", untracked = ""},
|
||||
folder = {default = "", open = "", empty = "", empty_open = "", symlink = ""}
|
||||
}
|
||||
|
||||
|
||||
return {
|
||||
{
|
||||
'nvim-tree/nvim-tree.lua',
|
||||
dependencies = {
|
||||
'nvim-tree/nvim-web-devicons', -- optional
|
||||
},
|
||||
opts = {
|
||||
on_attach = my_on_attach,
|
||||
disable_netrw = true,
|
||||
hijack_netrw = true,
|
||||
--auto_close = false,
|
||||
filters = {
|
||||
dotfiles = false,
|
||||
custom = {}
|
||||
},
|
||||
git = {
|
||||
enable = true,
|
||||
ignore = false,
|
||||
timeout = 500,
|
||||
},
|
||||
update_focused_file = {
|
||||
-- enables the feature
|
||||
enable = true,
|
||||
-- update the root directory of the tree to the one of the folder containing the file if the file is not under the current root directory
|
||||
-- only relevant when `update_focused_file.enable` is true
|
||||
update_cwd = false,
|
||||
-- list of buffer names / filetypes that will not update the cwd if the file isn't found under the current root directory
|
||||
-- only relevant when `update_focused_file.update_cwd` is true and `update_focused_file.enable` is true
|
||||
ignore_list = {}
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"telescope.nvim",
|
||||
dependencies = {
|
||||
{
|
||||
"nvim-telescope/telescope-fzf-native.nvim",
|
||||
build = "make",
|
||||
},
|
||||
"nvim-telescope/telescope-file-browser.nvim",
|
||||
},
|
||||
keys = {
|
||||
{
|
||||
"<leader>fP",
|
||||
function()
|
||||
require("telescope.builtin").find_files({
|
||||
cwd = require("lazy.core.config").options.root,
|
||||
})
|
||||
end,
|
||||
desc = "Find Plugin File",
|
||||
},
|
||||
{
|
||||
";f",
|
||||
function()
|
||||
local builtin = require("telescope.builtin")
|
||||
builtin.find_files({
|
||||
no_ignore = false,
|
||||
hidden = true,
|
||||
})
|
||||
end,
|
||||
desc = "Lists files in your current working directory, respects .gitignore",
|
||||
},
|
||||
{
|
||||
";r",
|
||||
function()
|
||||
local builtin = require("telescope.builtin")
|
||||
builtin.live_grep({
|
||||
additional_args = { "--hidden" },
|
||||
})
|
||||
end,
|
||||
desc = "Search for a string in your current working directory and get results live as you type, respects .gitignore",
|
||||
},
|
||||
{
|
||||
"\\\\",
|
||||
function()
|
||||
local builtin = require("telescope.builtin")
|
||||
builtin.buffers()
|
||||
end,
|
||||
desc = "Lists open buffers",
|
||||
},
|
||||
{
|
||||
";t",
|
||||
function()
|
||||
local builtin = require("telescope.builtin")
|
||||
builtin.help_tags()
|
||||
end,
|
||||
desc = "Lists available help tags and opens a new window with the relevant help info on <cr>",
|
||||
},
|
||||
{
|
||||
";;",
|
||||
function()
|
||||
local builtin = require("telescope.builtin")
|
||||
builtin.resume()
|
||||
end,
|
||||
desc = "Resume the previous telescope picker",
|
||||
},
|
||||
{
|
||||
";e",
|
||||
function()
|
||||
local builtin = require("telescope.builtin")
|
||||
builtin.diagnostics()
|
||||
end,
|
||||
desc = "Lists Diagnostics for all open buffers or a specific buffer",
|
||||
},
|
||||
{
|
||||
";s",
|
||||
function()
|
||||
local builtin = require("telescope.builtin")
|
||||
builtin.treesitter()
|
||||
end,
|
||||
desc = "Lists Function names, variables, from Treesitter",
|
||||
},
|
||||
{
|
||||
"sf",
|
||||
function()
|
||||
local telescope = require("telescope")
|
||||
|
||||
local function telescope_buffer_dir()
|
||||
return vim.fn.expand("%:p:h")
|
||||
end
|
||||
|
||||
telescope.extensions.file_browser.file_browser({
|
||||
path = "%:p:h",
|
||||
cwd = telescope_buffer_dir(),
|
||||
respect_gitignore = false,
|
||||
hidden = true,
|
||||
grouped = true,
|
||||
previewer = false,
|
||||
initial_mode = "normal",
|
||||
layout_config = { height = 40 },
|
||||
})
|
||||
end,
|
||||
desc = "Open File Browser with the path of the current buffer",
|
||||
},
|
||||
},
|
||||
config = function(_, opts)
|
||||
local telescope = require("telescope")
|
||||
local actions = require("telescope.actions")
|
||||
local fb_actions = require("telescope").extensions.file_browser.actions
|
||||
|
||||
opts.defaults = vim.tbl_deep_extend("force", opts.defaults, {
|
||||
wrap_results = true,
|
||||
layout_strategy = "horizontal",
|
||||
layout_config = { prompt_position = "top" },
|
||||
sorting_strategy = "ascending",
|
||||
winblend = 0,
|
||||
mappings = {
|
||||
n = {},
|
||||
},
|
||||
})
|
||||
opts.pickers = {
|
||||
diagnostics = {
|
||||
theme = "ivy",
|
||||
initial_mode = "normal",
|
||||
layout_config = {
|
||||
preview_cutoff = 9999,
|
||||
},
|
||||
},
|
||||
}
|
||||
opts.extensions = {
|
||||
file_browser = {
|
||||
theme = "dropdown",
|
||||
-- disables netrw and use telescope-file-browser in its place
|
||||
hijack_netrw = true,
|
||||
mappings = {
|
||||
-- your custom insert mode mappings
|
||||
["n"] = {
|
||||
-- your custom normal mode mappings
|
||||
["N"] = fb_actions.create,
|
||||
["h"] = fb_actions.goto_parent_dir,
|
||||
["/"] = function()
|
||||
vim.cmd("startinsert")
|
||||
end,
|
||||
["<C-u>"] = function(prompt_bufnr)
|
||||
for i = 1, 10 do
|
||||
actions.move_selection_previous(prompt_bufnr)
|
||||
end
|
||||
end,
|
||||
["<C-d>"] = function(prompt_bufnr)
|
||||
for i = 1, 10 do
|
||||
actions.move_selection_next(prompt_bufnr)
|
||||
end
|
||||
end,
|
||||
["<PageUp>"] = actions.preview_scrolling_up,
|
||||
["<PageDown>"] = actions.preview_scrolling_down,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
telescope.setup(opts)
|
||||
require("telescope").load_extension("fzf")
|
||||
require("telescope").load_extension("file_browser")
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,157 @@
|
||||
return {
|
||||
-- tools
|
||||
{
|
||||
"williamboman/mason.nvim",
|
||||
opts = function(_, opts)
|
||||
vim.list_extend(opts.ensure_installed, {
|
||||
"stylua",
|
||||
"selene",
|
||||
"luacheck",
|
||||
"shellcheck",
|
||||
"shfmt",
|
||||
"tailwindcss-language-server",
|
||||
"typescript-language-server",
|
||||
"css-lsp",
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- lsp servers
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
opts = {
|
||||
inlay_hints = { enabled = false },
|
||||
---@type lspconfig.options
|
||||
servers = {
|
||||
cssls = {},
|
||||
tailwindcss = {
|
||||
root_dir = function(...)
|
||||
return require("lspconfig.util").root_pattern(".git")(...)
|
||||
end,
|
||||
},
|
||||
tsserver = {
|
||||
root_dir = function(...)
|
||||
return require("lspconfig.util").root_pattern(".git")(...)
|
||||
end,
|
||||
single_file_support = false,
|
||||
settings = {
|
||||
typescript = {
|
||||
inlayHints = {
|
||||
includeInlayParameterNameHints = "literal",
|
||||
includeInlayParameterNameHintsWhenArgumentMatchesName = false,
|
||||
includeInlayFunctionParameterTypeHints = true,
|
||||
includeInlayVariableTypeHints = false,
|
||||
includeInlayPropertyDeclarationTypeHints = true,
|
||||
includeInlayFunctionLikeReturnTypeHints = true,
|
||||
includeInlayEnumMemberValueHints = true,
|
||||
},
|
||||
},
|
||||
javascript = {
|
||||
inlayHints = {
|
||||
includeInlayParameterNameHints = "all",
|
||||
includeInlayParameterNameHintsWhenArgumentMatchesName = false,
|
||||
includeInlayFunctionParameterTypeHints = true,
|
||||
includeInlayVariableTypeHints = true,
|
||||
includeInlayPropertyDeclarationTypeHints = true,
|
||||
includeInlayFunctionLikeReturnTypeHints = true,
|
||||
includeInlayEnumMemberValueHints = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
html = {},
|
||||
yamlls = {
|
||||
settings = {
|
||||
yaml = {
|
||||
keyOrdering = false,
|
||||
},
|
||||
},
|
||||
},
|
||||
lua_ls = {
|
||||
-- enabled = false,
|
||||
single_file_support = true,
|
||||
settings = {
|
||||
Lua = {
|
||||
workspace = {
|
||||
checkThirdParty = false,
|
||||
},
|
||||
completion = {
|
||||
workspaceWord = true,
|
||||
callSnippet = "Both",
|
||||
},
|
||||
misc = {
|
||||
parameters = {
|
||||
-- "--log-level=trace",
|
||||
},
|
||||
},
|
||||
hint = {
|
||||
enable = true,
|
||||
setType = false,
|
||||
paramType = true,
|
||||
paramName = "Disable",
|
||||
semicolon = "Disable",
|
||||
arrayIndex = "Disable",
|
||||
},
|
||||
doc = {
|
||||
privateName = { "^_" },
|
||||
},
|
||||
type = {
|
||||
castNumberToInteger = true,
|
||||
},
|
||||
diagnostics = {
|
||||
disable = { "incomplete-signature-doc", "trailing-space" },
|
||||
-- enable = false,
|
||||
groupSeverity = {
|
||||
strong = "Warning",
|
||||
strict = "Warning",
|
||||
},
|
||||
groupFileStatus = {
|
||||
["ambiguity"] = "Opened",
|
||||
["await"] = "Opened",
|
||||
["codestyle"] = "None",
|
||||
["duplicate"] = "Opened",
|
||||
["global"] = "Opened",
|
||||
["luadoc"] = "Opened",
|
||||
["redefined"] = "Opened",
|
||||
["strict"] = "Opened",
|
||||
["strong"] = "Opened",
|
||||
["type-check"] = "Opened",
|
||||
["unbalanced"] = "Opened",
|
||||
["unused"] = "Opened",
|
||||
},
|
||||
unusedLocalExclude = { "_*" },
|
||||
},
|
||||
format = {
|
||||
enable = false,
|
||||
defaultConfig = {
|
||||
indent_style = "space",
|
||||
indent_size = "2",
|
||||
continuation_indent_size = "2",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
gopls = {
|
||||
setup = {
|
||||
cmd = { "gopls", "serve" }, -- use cmd in path, I can update it easily
|
||||
settings = {
|
||||
gopls = {
|
||||
analyses = {
|
||||
nilness = true,
|
||||
unusedparams = true,
|
||||
unusedwrite = true,
|
||||
useany = true,
|
||||
},
|
||||
staticcheck = false
|
||||
}
|
||||
},
|
||||
root_dir = require 'lspconfig'.util.root_pattern(".git", "go.mod", "go.work"),
|
||||
init_options = { usePlaceholders = true, completeUnimported = true },
|
||||
},
|
||||
},
|
||||
},
|
||||
setup = {},
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
return {
|
||||
{ "nvim-treesitter/playground", cmd = "TSPlaygroundToggle" },
|
||||
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
opts = {
|
||||
ensure_installed = {
|
||||
"astro",
|
||||
"cmake",
|
||||
"cpp",
|
||||
"css",
|
||||
"fish",
|
||||
"gitignore",
|
||||
"go",
|
||||
"graphql",
|
||||
"http",
|
||||
"java",
|
||||
"php",
|
||||
"rust",
|
||||
"scss",
|
||||
"sql",
|
||||
"svelte",
|
||||
},
|
||||
|
||||
-- matchup = {
|
||||
-- enable = true,
|
||||
-- },
|
||||
|
||||
-- https://github.com/nvim-treesitter/playground#query-linter
|
||||
query_linter = {
|
||||
enable = true,
|
||||
use_virtual_text = true,
|
||||
lint_events = { "BufWrite", "CursorHold" },
|
||||
},
|
||||
|
||||
playground = {
|
||||
enable = true,
|
||||
disable = {},
|
||||
updatetime = 25, -- Debounced time for highlighting nodes in the playground from source code
|
||||
persist_queries = true, -- Whether the query persists across vim sessions
|
||||
keybindings = {
|
||||
toggle_query_editor = "o",
|
||||
toggle_hl_groups = "i",
|
||||
toggle_injected_languages = "t",
|
||||
toggle_anonymous_nodes = "a",
|
||||
toggle_language_display = "I",
|
||||
focus_language = "f",
|
||||
unfocus_language = "F",
|
||||
update = "R",
|
||||
goto_node = "<cr>",
|
||||
show_help = "?",
|
||||
},
|
||||
},
|
||||
},
|
||||
config = function(_, opts)
|
||||
require("nvim-treesitter.configs").setup(opts)
|
||||
|
||||
-- MDX
|
||||
vim.filetype.add({
|
||||
extension = {
|
||||
mdx = "mdx",
|
||||
},
|
||||
})
|
||||
vim.treesitter.language.register("markdown", "mdx")
|
||||
end,
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user