Powershell_es is so perfect rn

This commit is contained in:
2026-08-31 11:28:41 +02:00
parent 5b0b6f32c5
commit f4ad52f1b1
4 changed files with 538 additions and 498 deletions
@@ -0,0 +1,29 @@
function! neoformat#formatters#powershell#enabled() abort
return ['pwshfmt']
endfunction
function! neoformat#formatters#powershell#pwshfmt() abort
"if has('win32') || has('win64')
" let l:args = [
" \ '-NoProfile',
" \ '-Command',
" \ 'Import-Module PSScriptAnalyzer; Invoke-Formatter -ScriptDefinition (\$input | Out-String)',
" \ ]
"else
" let l:args = [
" \ '-NoProfile',
" \ '-Command',
" \ '"Import-Module (Resolve-Path \"/opt/powershell-editor-services/PSScriptAnalyzer/*/PSScriptAnalyzer.psd1\" | Select-Object -ExpandProperty Path); Invoke-Formatter -ScriptDefinition (\$input | Out-String)"'
" \ ]
"endif
"
return {
\ 'exe': 'pwsh',
\ 'args': [
\ '-NoProfile',
\ '-Command',
\ 'Import-Module PSScriptAnalyzer; Invoke-Formatter -ScriptDefinition ($input | Out-String)'
\ ],
\ 'stdin': 1,
\ }
endfunction
+26 -26
View File
@@ -1,40 +1,40 @@
local autocmd = vim.api.nvim_create_autocmd
autocmd("LspAttach", {
callback = function(args)
local client = vim.lsp.get_client_by_id(args.data.client_id)
if client then
vim.lsp.document_color.enable(false, { bufnr = args.buf })
end
end,
callback = function(args)
local client = vim.lsp.get_client_by_id(args.data.client_id)
if client then
vim.lsp.document_color.enable(false, { bufnr = args.buf })
end
end,
})
autocmd("VimLeave", {
command = "set guicursor=a:ver25-Cursor",
command = "set guicursor=a:ver25-Cursor",
})
autocmd("BufWritePre", {
pattern = "*",
callback = function(args)
require("conform").format({ bufnr = args.buf })
end,
pattern = "*",
callback = function(args)
require("conform").format({ bufnr = args.buf })
end,
})
-- fWindows
autocmd("VimLeavePre", {
group = vim.api.nvim_create_augroup("fuck_shada_temp", { clear = true }),
pattern = { "*" },
callback = function()
local status = 0
for _, f in ipairs(vim.fn.globpath(vim.fn.stdpath "data" .. "/shada", "*tmp*", false, true)) do
if vim.tbl_isempty(vim.fn.readfile(f)) then
status = status + vim.fn.delete(f)
end
end
if status ~= 0 then
vim.notify("Could not delete empty temporary ShaDa files.", vim.log.levels.ERROR)
vim.fn.getchar()
end
end,
desc = "Delete empty temp ShaDa files",
group = vim.api.nvim_create_augroup("fuck_shada_temp", { clear = true }),
pattern = { "*" },
callback = function()
local status = 0
for _, f in ipairs(vim.fn.globpath(vim.fn.stdpath "data" .. "/shada", "*tmp*", false, true)) do
if vim.tbl_isempty(vim.fn.readfile(f)) then
status = status + vim.fn.delete(f)
end
end
if status ~= 0 then
vim.notify("Could not delete empty temporary ShaDa files.", vim.log.levels.ERROR)
vim.fn.getchar()
end
end,
desc = "Delete empty temp ShaDa files",
})
+263 -252
View File
@@ -3,302 +3,313 @@ local cmp_lsp = require "cmp_nvim_lsp"
local cmp_kinds = require("assets.icons").icons.kinds
local function flatten_to_array(t)
local res = {}
local function _flatten(tbl)
for _, v in ipairs(tbl) do
if type(v) == "table" then
_flatten(v)
else
table.insert(res, v)
end
local res = {}
local function _flatten(tbl)
for _, v in ipairs(tbl) do
if type(v) == "table" then
_flatten(v)
else
table.insert(res, v)
end
end
end
end
_flatten(t)
return res
_flatten(t)
return res
end
local capabilities =
vim.tbl_deep_extend("force", {}, vim.lsp.protocol.make_client_capabilities(), cmp_lsp.default_capabilities())
vim.tbl_deep_extend("force", {}, vim.lsp.protocol.make_client_capabilities(), cmp_lsp.default_capabilities())
require("fidget").setup {}
require("mason-lspconfig").setup {
automatic_enable = false,
ensure_installed = {
"lua_ls",
"qmlls",
"rust_analyzer",
"powershell_es",
},
handlers = {
function(server_name) -- default handler (optional)
require("lspconfig")[server_name].setup {
capabilities = capabilities,
}
end,
automatic_enable = false,
ensure_installed = {
"lua_ls",
"qmlls",
"rust_analyzer",
},
handlers = {
function(server_name) -- default handler (optional)
require("lspconfig")[server_name].setup {
capabilities = capabilities,
}
end,
["tailwindcss"] = function()
local lspconfig = require "lspconfig"
lspconfig.tailwindcss.setup {
capabilities = capabilities,
}
end,
["tailwindcss"] = function()
local lspconfig = require "lspconfig"
lspconfig.tailwindcss.setup {
capabilities = capabilities,
}
end,
["css-lsp"] = function()
local lspconfig = require "lspconfig"
lspconfig.cssls.setup {
capabilities = capabilities,
}
end,
["css-lsp"] = function()
local lspconfig = require "lspconfig"
lspconfig.cssls.setup {
capabilities = capabilities,
}
end,
["powershell_es"] = function()
local lspconfig = require "lspconfig"
lspconfig.powershell_es.setup {
capabilities = capabilities,
}
end,
["rust_analyzer"] = function()
local lspconfig = require "lspconfig"
lspconfig.rust_analyzer.setup {
capabilities = capabilities,
settings = {
["rust-analyzer"] = {
cargo = { allFeatures = true },
checkOnSave = { command = "clippy" },
},
},
}
end,
["rust_analyzer"] = function()
local lspconfig = require "lspconfig"
lspconfig.rust_analyzer.setup {
capabilities = capabilities,
settings = {
["rust-analyzer"] = {
cargo = { allFeatures = true },
checkOnSave = { command = "clippy" },
},
},
}
end,
zls = function()
local lspconfig = require "lspconfig"
lspconfig.zls.setup {
capabilities = capabilities,
root_dir = lspconfig.util.root_pattern(".git", "build.zig", "zls.json"),
settings = {
zls = {
enable_inlay_hints = true,
enable_snippets = true,
warn_style = true,
},
},
}
vim.g.zig_fmt_parse_errors = 0
vim.g.zig_fmt_autosave = 0
end,
zls = function()
local lspconfig = require "lspconfig"
lspconfig.zls.setup {
capabilities = capabilities,
root_dir = lspconfig.util.root_pattern(".git", "build.zig", "zls.json"),
settings = {
zls = {
enable_inlay_hints = true,
enable_snippets = true,
warn_style = true,
},
},
}
vim.g.zig_fmt_parse_errors = 0
vim.g.zig_fmt_autosave = 0
end,
["lua_ls"] = function()
local lspconfig = require "lspconfig"
lspconfig.lua_ls.setup {
capabilities = capabilities,
settings = {
Lua = {
runtime = { version = "Lua 5.1" },
diagnostics = {
globals = {
"bit",
"vim",
"it",
"describe",
"before_each",
"after_each",
},
},
},
},
}
end,
},
["lua_ls"] = function()
local lspconfig = require "lspconfig"
lspconfig.lua_ls.setup {
capabilities = capabilities,
settings = {
Lua = {
runtime = { version = "Lua 5.1" },
diagnostics = {
globals = {
"bit",
"vim",
"it",
"describe",
"before_each",
"after_each",
},
},
},
},
}
end,
},
}
cmp.setup {
preselect = "None",
formatting = {
fields = { "kind", "abbr" },
format = function(entry, vim_item)
vim_item.kind = cmp_kinds[vim_item.kind] or ""
if entry.completion_item.detail then
vim_item.menu = entry.completion_item.detail
end
return vim_item
end,
},
completion = { completeopt = "menu,menuone" },
snippet = {
expand = function(args)
require("luasnip").lsp_expand(args.body)
end,
},
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
},
view = {
entries = "custom",
},
mapping = {
["<C-p>"] = cmp.mapping.select_prev_item(),
["<C-n>"] = cmp.mapping.select_next_item(),
["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.close(),
["<CR>"] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Insert,
select = true,
preselect = "None",
formatting = {
fields = { "kind", "abbr" },
format = function(entry, vim_item)
vim_item.kind = cmp_kinds[vim_item.kind] or ""
if entry.completion_item.detail then
vim_item.menu = entry.completion_item.detail
end
return vim_item
end,
},
completion = { completeopt = "menu,menuone" },
snippet = {
expand = function(args)
require("luasnip").lsp_expand(args.body)
end,
},
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif require("luasnip").expand_or_jumpable() then
require("luasnip").expand_or_jump()
else
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif require("luasnip").jumpable(-1) then
require("luasnip").jump(-1)
else
fallback()
end
end, { "i", "s" }),
},
sources = cmp.config.sources {
{ name = "path" },
{ name = "nvim_lsp" },
{ name = "luasnip" },
{ name = "buffer" },
{ name = "nvim_lua" },
{ name = "copilot" },
},
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
},
view = {
entries = "custom",
},
mapping = {
["<C-p>"] = cmp.mapping.select_prev_item(),
["<C-n>"] = cmp.mapping.select_next_item(),
["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.close(),
["<CR>"] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Insert,
select = true,
},
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif require("luasnip").expand_or_jumpable() then
require("luasnip").expand_or_jump()
else
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif require("luasnip").jumpable(-1) then
require("luasnip").jump(-1)
else
fallback()
end
end, { "i", "s" }),
},
sources = cmp.config.sources {
{ name = "path" },
{ name = "nvim_lsp" },
{ name = "luasnip" },
{ name = "buffer" },
{ name = "nvim_lua" },
{ name = "copilot" },
},
}
vim.diagnostic.config {
virtual_text = false,
virtual_lines = false,
signs = true,
underline = true,
float = {
focusable = false,
style = "minimal",
border = "rounded",
source = true,
header = "",
prefix = "",
},
virtual_text = false,
virtual_lines = false,
signs = true,
underline = true,
float = {
focusable = false,
style = "minimal",
border = "rounded",
source = true,
header = "",
prefix = "",
},
}
local lspconfig = vim.lsp.config
lspconfig("texlab", {
cmd = { "texlab" },
filetypes = { "tex", "bib", "plaintex" },
root_markers = {
".git",
".latexmkrc",
"latexmkrc",
".texlabroot",
"texlabroot",
"Tectonic.toml",
},
settings = {
texlab = {
rootDirectory = nil,
build = {
executable = "latexmk",
args = {
"-pdf",
"-interaction=nonstopmode",
"-synctex=1",
"%f",
},
onSave = true,
forwardSearchAfter = true,
},
forwardSearch = {
executable = "zathura",
args = {
"--synctex-editor-command",
[[ nvim-texlabconfig -file '%%%{input}' -line %%%{line} -server ]] .. vim.v.servername,
"--synctex-forward",
"%l:1:%f",
"%p",
},
},
chktex = {
onEdit = false,
onOpenAndSave = true,
},
diagnosticsDelay = 300,
latexFormatter = "latexindent",
latexindent = {
["local"] = nil,
modifyLineBreaks = false,
},
bibtexFormatter = "texlab",
formatterLineLength = 80,
cmd = { "texlab" },
filetypes = { "tex", "bib", "plaintex" },
root_markers = {
".git",
".latexmkrc",
"latexmkrc",
".texlabroot",
"texlabroot",
"Tectonic.toml",
},
settings = {
texlab = {
rootDirectory = nil,
build = {
executable = "latexmk",
args = {
"-pdf",
"-interaction=nonstopmode",
"-synctex=1",
"%f",
},
onSave = true,
forwardSearchAfter = true,
},
forwardSearch = {
executable = "zathura",
args = {
"--synctex-editor-command",
[[ nvim-texlabconfig -file '%%%{input}' -line %%%{line} -server ]] .. vim.v.servername,
"--synctex-forward",
"%l:1:%f",
"%p",
},
},
chktex = {
onEdit = false,
onOpenAndSave = true,
},
diagnosticsDelay = 300,
latexFormatter = "latexindent",
latexindent = {
["local"] = nil,
modifyLineBreaks = false,
},
bibtexFormatter = "texlab",
formatterLineLength = 80,
},
},
},
})
lspconfig("qmlls", {
cmd = { "qmlls6", "qmlls" },
filetypes = { "qml", "qmljs" },
root_markers = { ".git" },
cmd = { "qmlls6", "qmlls" },
filetypes = { "qml", "qmljs" },
root_markers = { ".git" },
})
lspconfig("jsonls", {
settings = {
json = {
schemas = require("schemastore").json.schemas(),
validate = { enable = true },
settings = {
json = {
schemas = require("schemastore").json.schemas(),
validate = { enable = true },
},
},
})
lspconfig("powershell_es", {
settings = {
powershell = {
codeFormatting = {
preset = "Custom",
openBraceOnSameLine = true,
newLineAfterOpenBrace = false,
newLineAfterCloseBrace = true,
whitespaceBeforeOpenBrace = true,
whitespaceBeforeOpenParen = true,
whitespaceAroundOperator = true,
whitespaceAfterSeparator = true,
ignoreOneLineBlock = true,
pipelineIndentationStyle = "NoIndentation",
},
},
},
},
})
lspconfig("yamlls", {
settings = {
yaml = {
schemaStore = {
enable = false,
url = "",
},
schemas = require("schemastore").yaml.schemas(),
settings = {
yaml = {
schemaStore = {
enable = false,
url = "",
},
schemas = require("schemastore").yaml.schemas(),
},
},
},
})
local lspenable = vim.lsp.enable
local servers = {
"html",
"bashls",
"pyright",
"ts_ls",
"texlab",
"sourcekit",
"qmlls",
"tailwindcss",
-- "systemd-lsp",
require("mason-lspconfig").get_installed_servers(),
"html",
"bashls",
"pyright",
"ts_ls",
"texlab",
"sourcekit",
"qmlls",
"tailwindcss",
"systemd-lsp",
require("mason-lspconfig").get_installed_servers(),
}
local flat_servers = flatten_to_array(servers)
for _, server in ipairs(flat_servers) do
lspconfig(server, {
on_attach = function(client)
if client.name == "typos_lsp" or client.name == "copilot" then
return
end
end,
capabilities = capabilities,
})
lspenable(server)
lspconfig(server, {
on_attach = function(client)
if client.name == "typos_lsp" or client.name == "copilot" then
return
end
end,
capabilities = capabilities,
})
lspenable(server)
end
+220 -220
View File
@@ -1,227 +1,227 @@
return {
{
require "config.snacks",
},
{
"nvim-treesitter/nvim-treesitter",
lazy = false,
build = ":TSUpdate",
branch = "main",
config = function()
require "config.modules.treesitter"
end,
},
{
"sainnhe/edge",
lazy = false,
priority = 1000,
config = function()
vim.g.edge_enable_italic = 1
vim.g.edge_style = "default"
vim.g.edge_menu_selection_background = "purple"
end,
},
{
"rmagatti/auto-session",
config = function()
require "config.modules.autosession"
end,
},
{
"lambdalisue/vim-suda",
init = function()
vim.g.suda_smart_edit = 1
end,
},
{
"nvim-tree/nvim-web-devicons",
},
{
"akinsho/bufferline.nvim",
event = "VeryLazy",
config = function()
require "config.other.barbar"
end,
},
{
"mawkler/modicator.nvim",
config = function()
require "config.gui.modicator"
end,
},
{
"jiaoshijie/undotree",
config = function()
require "config.modules.undotree"
end,
},
{
"hiphish/rainbow-delimiters.nvim",
enabled = true,
},
{
"windwp/nvim-autopairs",
event = "InsertEnter",
config = function()
require "config.other.autopairs"
end,
},
{
"tpope/vim-fugitive",
},
{
"rcarriga/nvim-notify",
config = function()
require "config.other.notify"
end,
},
{
"zbirenbaum/copilot.lua",
cmd = "Copilot",
event = "InsertEnter",
config = function()
require "config.ai.copilot"
end,
},
{
"CopilotC-Nvim/CopilotChat.nvim",
dependencies = {
{ "zbirenbaum/copilot.lua" },
{ "nvim-lua/plenary.nvim", branch = "master" },
{
require "config.snacks",
},
build = "make tiktoken",
config = function()
require "config.ai.copilotchat"
end,
},
{
"mfussenegger/nvim-dap",
config = function()
require "config.other.dapconf"
end,
},
{
"mason-org/mason-lspconfig.nvim",
dependencies = {
{ "mason-org/mason.nvim", opts = {} },
"neovim/nvim-lspconfig",
{
"nvim-treesitter/nvim-treesitter",
lazy = false,
build = ":TSUpdate",
branch = "main",
config = function()
require "config.modules.treesitter"
end,
},
},
{
"folke/lazydev.nvim",
ft = "lua",
opts = function()
require "config.lazydev"
end,
},
{
"neovim/nvim-lspconfig",
enabled = true,
dependencies = {
-- "williamboman/mason.nvim",
-- "williamboman/mason-lspconfig.nvim",
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-path",
"hrsh7th/cmp-cmdline",
"hrsh7th/nvim-cmp",
"L3MON4D3/LuaSnip",
"saadparwaiz1/cmp_luasnip",
"j-hui/fidget.nvim",
"b0o/schemastore.nvim",
{
"sainnhe/edge",
lazy = false,
priority = 1000,
config = function()
vim.g.edge_enable_italic = 1
vim.g.edge_style = "default"
vim.g.edge_menu_selection_background = "purple"
end,
},
config = function()
require "config.format.lspconfig"
end,
},
{
"smolck/command-completion.nvim",
opts = {
border = nil,
highlight_selection = true,
use_matchfuzzy = true,
tab_completion = true,
{
"rmagatti/auto-session",
config = function()
require "config.modules.autosession"
end,
},
},
{
"andweeb/presence.nvim",
},
{
"mfussenegger/nvim-jdtls",
},
{
"ziglang/zig.vim",
},
{
"mg979/vim-visual-multi",
branch = "master",
},
{
"elkowar/yuck.vim",
},
{
"f3fora/nvim-texlabconfig",
config = function()
require "config.format.texlab"
end,
build = "go build",
},
{
"lancewilhelm/horizon-extended.nvim",
},
{
"vimpostor/vim-tpipeline",
},
{
"Yazeed1s/minimal.nvim",
config = function()
vim.g.minimal_italic_comments = true
vim.g.minimal_italic_functions = true
end,
},
{
"aserowy/tmux.nvim",
config = function()
require "config.terminal.tmux"
end,
},
{
"rachartier/tiny-inline-diagnostic.nvim",
config = function()
require "config.format.TID"
end,
},
{
"ThePrimeagen/harpoon",
branch = "harpoon2",
dependencies = {
"nvim-lua/plenary.nvim",
{
"lambdalisue/vim-suda",
init = function()
vim.g.suda_smart_edit = 1
end,
},
{
"nvim-tree/nvim-web-devicons",
},
{
"akinsho/bufferline.nvim",
event = "VeryLazy",
config = function()
require "config.other.barbar"
end,
},
{
"mawkler/modicator.nvim",
config = function()
require "config.gui.modicator"
end,
},
{
"jiaoshijie/undotree",
config = function()
require "config.modules.undotree"
end,
},
{
"hiphish/rainbow-delimiters.nvim",
enabled = true,
},
{
"windwp/nvim-autopairs",
event = "InsertEnter",
config = function()
require "config.other.autopairs"
end,
},
{
"tpope/vim-fugitive",
},
{
"rcarriga/nvim-notify",
config = function()
require "config.other.notify"
end,
},
{
"zbirenbaum/copilot.lua",
cmd = "Copilot",
event = "InsertEnter",
config = function()
require "config.ai.copilot"
end,
},
{
"CopilotC-Nvim/CopilotChat.nvim",
dependencies = {
{ "zbirenbaum/copilot.lua" },
{ "nvim-lua/plenary.nvim", branch = "master" },
},
build = "make tiktoken",
config = function()
require "config.ai.copilotchat"
end,
},
{
"mfussenegger/nvim-dap",
config = function()
require "config.other.dapconf"
end,
},
{
"mason-org/mason-lspconfig.nvim",
dependencies = {
{ "mason-org/mason.nvim", opts = {} },
"neovim/nvim-lspconfig",
},
},
{
"folke/lazydev.nvim",
ft = "lua",
opts = function()
require "config.lazydev"
end,
},
{
"neovim/nvim-lspconfig",
enabled = true,
dependencies = {
-- "williamboman/mason.nvim",
-- "williamboman/mason-lspconfig.nvim",
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-path",
"hrsh7th/cmp-cmdline",
"hrsh7th/nvim-cmp",
"L3MON4D3/LuaSnip",
"saadparwaiz1/cmp_luasnip",
"j-hui/fidget.nvim",
"b0o/schemastore.nvim",
},
config = function()
require "config.format.lspconfig"
end,
},
{
"smolck/command-completion.nvim",
opts = {
border = nil,
highlight_selection = true,
use_matchfuzzy = true,
tab_completion = true,
},
},
{
"andweeb/presence.nvim",
},
{
"mfussenegger/nvim-jdtls",
},
{
"ziglang/zig.vim",
},
{
"mg979/vim-visual-multi",
branch = "master",
},
{
"elkowar/yuck.vim",
},
{
"f3fora/nvim-texlabconfig",
config = function()
require "config.format.texlab"
end,
build = "go build",
},
{
"lancewilhelm/horizon-extended.nvim",
},
{
"vimpostor/vim-tpipeline",
},
{
"Yazeed1s/minimal.nvim",
config = function()
vim.g.minimal_italic_comments = true
vim.g.minimal_italic_functions = true
end,
},
{
"aserowy/tmux.nvim",
config = function()
require "config.terminal.tmux"
end,
},
{
"rachartier/tiny-inline-diagnostic.nvim",
config = function()
require "config.format.TID"
end,
},
{
"ThePrimeagen/harpoon",
branch = "harpoon2",
dependencies = {
"nvim-lua/plenary.nvim",
},
config = function()
require "config.other.harpoon"
end,
},
{
"aznhe21/actions-preview.nvim",
config = function()
require "config.other.actions-preview"
end,
},
{
"Zacharias-Brohn/zterm-navigator.nvim",
config = function()
require "config.terminal.zterm-navigator"
end,
},
{
"Fildo7525/pretty_hover",
event = "LspAttach",
opts = {},
},
{
"jiaoshijie/undotree",
config = function()
require "config.modules.undotree"
end,
},
config = function()
require "config.other.harpoon"
end,
},
{
"aznhe21/actions-preview.nvim",
config = function()
require "config.other.actions-preview"
end,
},
{
"Zacharias-Brohn/zterm-navigator.nvim",
config = function()
require "config.terminal.zterm-navigator"
end,
},
{
"Fildo7525/pretty_hover",
event = "LspAttach",
opts = {},
},
{
"jiaoshijie/undotree",
config = function()
require "config.modules.undotree"
end,
},
}