From c50cc229b3cb55c3bba60350bfc775d533ea3f59 Mon Sep 17 00:00:00 2001 From: coast Date: Tue, 4 Nov 2025 16:13:28 +0330 Subject: [PATCH] new nvim line --- config/nvim/init.lua | 2 +- config/nvim/lazy-lock.json | 3 +- config/nvim/lua/plugins/lazy/plugins.lua | 1 + config/nvim/lua/plugins/lsp/init.lua | 122 +++++++----------- config/nvim/lua/status_line/init.lua | 101 +++++++++++++++ ...oast%.local%src%config%nvim%lua%config.lua | Bin 651 -> 5922 bytes ...oast%.local%src%config%waybar%config.jsonc | Bin 52106 -> 63082 bytes config/waybar/config.jsonc | 12 -- 8 files changed, 149 insertions(+), 92 deletions(-) create mode 100644 config/nvim/lua/status_line/init.lua diff --git a/config/nvim/init.lua b/config/nvim/init.lua index 0983320..6e12278 100644 --- a/config/nvim/init.lua +++ b/config/nvim/init.lua @@ -1,6 +1,5 @@ require("plugins/lazy") require("plugins/lsp") -require("plugins/lualine") require("plugins/nvim-tree") require("plugins/telescope") require("plugins/treesitter") @@ -8,3 +7,4 @@ require("plugins/treesitter") require("config") require("plugins/render-markdown") require("plugins/monokai-pro") +require("status_line").setup() diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index 9e685ea..f473390 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -7,7 +7,7 @@ "cmp-spell": { "branch": "master", "commit": "694a4e50809d6d645c1ea29015dad0c293f019d6" }, "cmp-vsnip": { "branch": "main", "commit": "989a8a73c44e926199bfd05fa7a516d51f2d2752" }, "comfy-line-numbers.nvim": { "branch": "main", "commit": "31e2f9287b4491ad72defb9e0185eb2739983799" }, - "lazy.nvim": { "branch": "main", "commit": "db067881fff0fd4be8c00e5bde7492e0e1c77a2f" }, + "lazy.nvim": { "branch": "main", "commit": "202d8e92b3a74ac88eb3a7f1e40fb59b4c2a6535" }, "lsp_signature.nvim": { "branch": "master", "commit": "d50e40b3bf9324128e71b0b7e589765ce89466d2" }, "lualine.nvim": { "branch": "master", "commit": "a94fc68960665e54408fe37dcf573193c4ce82c9" }, "mason.nvim": { "branch": "main", "commit": "8024d64e1330b86044fed4c8494ef3dcd483a67c" }, @@ -31,5 +31,6 @@ "todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" }, "twilight.nvim": { "branch": "main", "commit": "664e752f4a219801265cc3fc18782b457b58c1e1" }, "typst-preview.nvim": { "branch": "master", "commit": "e544812bba84b4f7976590f2b6c0dfbd099e1893" }, + "vim-closetag": { "branch": "master", "commit": "d0a562f8bdb107a50595aefe53b1a690460c3822" }, "vim-vsnip": { "branch": "master", "commit": "0a4b8419e44f47c57eec4c90df17567ad4b1b36e" } } diff --git a/config/nvim/lua/plugins/lazy/plugins.lua b/config/nvim/lua/plugins/lazy/plugins.lua index 27d0526..7791f5e 100644 --- a/config/nvim/lua/plugins/lazy/plugins.lua +++ b/config/nvim/lua/plugins/lazy/plugins.lua @@ -99,5 +99,6 @@ return { }, }, "nguyenvukhang/nvim-toggler", + "alvan/vim-closetag", }, } diff --git a/config/nvim/lua/plugins/lsp/init.lua b/config/nvim/lua/plugins/lsp/init.lua index 6c158c8..1785d51 100644 --- a/config/nvim/lua/plugins/lsp/init.lua +++ b/config/nvim/lua/plugins/lsp/init.lua @@ -3,9 +3,8 @@ local fmt = require("null-ls") local cmp = require("cmp") require("nvim-autopairs").setup({}) -require("lsp_signature").setup({ - hint_enable = false, -}) +require("lsp_signature").setup({ hint_enable = false }) + local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) fmt.setup({ sources = { @@ -27,6 +26,7 @@ fmt.setup({ end end, }) + cmp.setup({ snippet = { expand = function(args) @@ -40,112 +40,78 @@ cmp.setup({ [""] = cmp.mapping.abort(), [""] = cmp.mapping.confirm({ select = true }), }), - window = { - completion = cmp.config.window.bordered(), - documentation = cmp.config.window.bordered(), - }, + window = { completion = cmp.config.window.bordered(), documentation = cmp.config.window.bordered() }, sources = cmp.config.sources({ { name = "nvim_lsp" }, { name = "vsnip" }, - { - name = "spell", - option = { - keep_all_entries = false, - enable_in_context = function() - return true - end, - }, - }, + { name = "spell" }, }, { { name = "buffer" }, { name = "nvim_lua" }, }), }) -cmp.setup.filetype("gitcommit", { - sources = cmp.config.sources({ - { name = "git" }, - }, { - { name = "buffer" }, - }), -}) -cmp.setup.cmdline({ "/", "?" }, { - mapping = cmp.mapping.preset.cmdline(), - sources = { - { name = "buffer" }, +local capabilities = require("cmp_nvim_lsp").default_capabilities() + +lsp.html.setup({ + cmd = { "vscode-html-language-server", "--stdio" }, + capabilities = capabilities, + init_options = { + configurationSection = { "html", "css", "javascript" }, + embeddedLanguages = { css = true, javascript = true }, + provideFormatter = true, + }, + settings = { + html = { + format = { + wrapLineLength = 120, + wrapAttributes = "auto", + contentUnformatted = "pre,code,textarea", + }, + hover = { documentation = true, references = true }, + }, }, }) -cmp.setup.cmdline(":", { - mapping = cmp.mapping.preset.cmdline(), - sources = cmp.config.sources({ - { name = "path" }, - }, { - { name = "cmdline" }, - }), +lsp.cssls.setup({ + capabilities = capabilities, + settings = { css = { validate = true }, scss = { validate = true }, less = { validate = true } }, }) -local capabilities = require("cmp_nvim_lsp").default_capabilities() -lsp.rust_analyzer.setup({ - settings = { - ["rust-analyzer"] = {}, - }, +lsp.ts_ls.setup({ capabilities = capabilities, + on_attach = function(client) + client.server_capabilities.documentFormattingProvider = false + end, }) +lsp.rust_analyzer.setup({ capabilities = capabilities }) + local clangd_capabilities = vim.deepcopy(capabilities) clangd_capabilities["offsetEncoding"] = "utf-8" - lsp.clangd.setup({ - cmd = { - "clangd", - "--background-index", - "--function-arg-placeholders=0", - "-j=12", - "--clang-tidy", - }, + cmd = { "clangd", "--background-index", "--function-arg-placeholders=0", "-j=12", "--clang-tidy" }, capabilities = clangd_capabilities, - init_options = { - documentFormatting = true, - }, + init_options = { documentFormatting = true }, }) -lsp.pyright.setup({ - capabilities = capabilities, -}) -lsp.gopls.setup({ - capabilities = capabilities, -}) -lsp.asm_lsp.setup({ - capabilities = capabilities, -}) -lsp.zls.setup({ - capabilities = capabilities, -}) -lsp.jdtls.setup({ - capabilities = capabilities, -}) -lsp.tinymist.setup({ - capabilities = capabilities, -}) +lsp.pyright.setup({ capabilities = capabilities }) +lsp.gopls.setup({ capabilities = capabilities }) +lsp.asm_lsp.setup({ capabilities = capabilities }) +lsp.zls.setup({ capabilities = capabilities }) +lsp.jdtls.setup({ capabilities = capabilities }) +lsp.tinymist.setup({ capabilities = capabilities }) + lsp.lua_ls.setup({ on_init = function(client) local path = client.workspace_folders[1].name if not vim.loop.fs_stat(path .. "/.luarc.json") and not vim.loop.fs_stat(path .. "/.luarc.jsonc") then client.config.settings = vim.tbl_deep_extend("force", client.config.settings, { Lua = { - runtime = { - version = "LuaJIT", - }, - workspace = { - checkThirdParty = false, - library = { - vim.env.VIMRUNTIME, - }, - }, + runtime = { version = "LuaJIT" }, + workspace = { checkThirdParty = false, library = { vim.env.VIMRUNTIME } }, }, }) - client.notify("workspace/didChangeConfiguration", { settings = client.config.settings }) end return true diff --git a/config/nvim/lua/status_line/init.lua b/config/nvim/lua/status_line/init.lua new file mode 100644 index 0000000..e976437 --- /dev/null +++ b/config/nvim/lua/status_line/init.lua @@ -0,0 +1,101 @@ +colors = { + foreground = "#f8f8f2", + wine = "#7f2f4d", + red = "#d75a6c", + green = "#8ab661", + yellow = "#e0b763", + orange = "#d87f3e", + magenta = "#682776", + cyan = "#36b5b5", + bg_darken = "#1e1e1e", +} + +local M = {} + +function M.setup() + vim.cmd("hi StatusBackground guifg=" .. colors.foreground .. " guibg=" .. colors.bg_darken) + vim.cmd("hi Moden guifg=" .. colors.foreground .. " guibg=" .. colors.wine .. " gui=bold") + vim.cmd("hi Modei guifg=" .. colors.foreground .. " guibg=" .. colors.green .. " gui=bold") + vim.cmd("hi Modev guifg=" .. colors.foreground .. " guibg=" .. colors.yellow .. " gui=bold") + vim.cmd("hi Modet guifg=" .. colors.foreground .. " guibg=" .. colors.orange .. " gui=bold") + vim.cmd("hi Modec guifg=" .. colors.foreground .. " guibg=" .. colors.magenta .. " gui=bold") + vim.cmd("hi Moder guifg=" .. colors.foreground .. " guibg=" .. colors.red .. " gui=bold") + vim.cmd("hi Filetype guifg=" .. colors.cyan .. " guibg=" .. colors.bg_darken .. " gui=bold") + vim.cmd("hi Position guifg=" .. colors.yellow .. " guibg=" .. colors.bg_darken .. " gui=bold") + vim.cmd("hi GitBranch guifg=" .. colors.orange .. " guibg=" .. colors.bg_darken .. " gui=bold") + vim.cmd("hi GitDiff guifg=" .. colors.green .. " guibg=" .. colors.bg_darken) + vim.cmd("hi GitDiffDel guifg=" .. colors.red .. " guibg=" .. colors.bg_darken) + vim.cmd("hi Separator guifg=" .. colors.foreground .. " guibg=" .. colors.bg_darken) + vim.cmd("hi LSPError guifg=" .. colors.red .. " guibg=" .. colors.bg_darken) + vim.cmd("hi LSPWarn guifg=" .. colors.yellow .. " guibg=" .. colors.bg_darken) + vim.cmd("hi LSPInfo guifg=" .. colors.cyan .. " guibg=" .. colors.bg_darken) + vim.cmd("hi LSPOk guifg=" .. colors.green .. " guibg=" .. colors.bg_darken) + + vim.o.statusline = table.concat({ + "%{%v:lua.themeStatuslineMode()%} ", + "%f ", + "%{%v:lua.themeGitBranch()%} ", + "%{%v:lua.themeGitDiff()%} ", + "%{%v:lua.themeLSP()%} ", + "%=", + "%{%v:lua.themeStatuslineFiletype()%} ", + "%{%v:lua.themeStatuslinePosition()%}", + }) +end + +function themeStatuslineMode() + local mode = vim.fn.mode() + local mode_highlight = "Mode" .. mode:sub(1, 1) + return string.format("%%#%s# %s %%#StatusBackground#", mode_highlight, mode:upper()) +end + +function themeStatuslineFiletype() + return string.format("%%#Filetype# %s %%#Separator#│%%#StatusBackground#", vim.bo.filetype) +end + +function themeStatuslinePosition() + local row, col = unpack(vim.api.nvim_win_get_cursor(0)) + return string.format("%%#Position# %03d:%02d ", row, col) +end + +function themeGitBranch() + local branch = vim.fn.systemlist("git rev-parse --abbrev-ref HEAD 2>/dev/null")[1] or "" + if branch ~= "" then + return string.format("%%#GitBranch# %s %%#Separator#│%%#StatusBackground#", branch) + end + return "" +end + +function themeGitDiff() + local diff = vim.fn.systemlist("git diff --shortstat 2>/dev/null")[1] or "" + local added, removed = diff:match("(%d+) insertions?"), diff:match("(%d+) deletions?") + added = added or "0" + removed = removed or "0" + if diff ~= "" then + return string.format("%%#GitDiff#+%s %%#GitDiffDel#-%s %%#StatusBackground#", added, removed) + end + return "" +end + +function themeLSP() + local errors = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.ERROR }) + local warns = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.WARN }) + local info = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.INFO }) + local hints = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.HINT }) + local str = "" + if errors > 0 then + str = str .. string.format("%%#LSPError#E:%d ", errors) + end + if warns > 0 then + str = str .. string.format("%%#LSPWarn#W:%d ", warns) + end + if info > 0 then + str = str .. string.format("%%#LSPInfo#I:%d ", info) + end + if hints > 0 then + str = str .. string.format("%%#LSPOk#H:%d ", hints) + end + return str +end + +return M diff --git a/config/nvim/undo/%home%coast%.local%src%config%nvim%lua%config.lua b/config/nvim/undo/%home%coast%.local%src%config%nvim%lua%config.lua index fbdaff799155d907cf30d94292fa05a2c7e0d486..dc495aceca55c60c83b538265489fd1cce018582 100644 GIT binary patch literal 5922 zcmeI0J4*vW5XUbjKB5FI0*Z-v#41IC2$vVw`RX-dCm~1(BsoyA4_NpCv=kdH)GuLc zCw>7dv9Ykw#zyDAcN5m+yyG;NY6mvEH?xo2{APD=ce~!aD7RM3XDxhRD5j3jr>~5~ z$JXcd<>~y>-H!g2o=U%-#Y(p)VNKIEDJ3(Rs@X925383DHwT+kLPrL@0*}f`;6Q_C?aM2($X>uLlT6QQ*+Dj~VJ3 zC`KriDFKNqZ=)^Rh(=Ub2y?_k(NgsgG};3F57bl@V=MHw&w|gq&?j7G`aj8Yl<`Y~ zx+2fs2s|h9B{Av4&Xa!j_a)v5JpW&;8$9J@9m@8U2jo$dkB|>kmJcaTdle>tM6-1NRu$r5vH4@JkK}w&;a_&Nq7>yFFM(rT0S|DE5*=f-QQn zPx_tqKF|a8xb%7m1BG64NU%jhzvi~;CwwmWKFEVK9|Q4{hyq0(o*0ODk@xwbhwYn% zcY0X|o4wP^(;aFAfdUUt3`7Y0x|s42>kEH~M#Z6PixSF{4YOKl=ry{%5ubddvMTbK z9Or*j6ykU@5O=x(aylNw?Ow2KaMZ{;nE!TDp9TDobnC5F!V3=8ylB(g z%8qMT*)JFvovXNpR|X;!*D=?vEVw(1?l3|WDDnfLjzK!)Lw&ikkZJOwB+{*T$S{C+GgQ~9F$Xxj941_p)@ zAO-;z2*tn%q(K-2U~Diylk-3~3q&OT0z@8#1WCaRVfYUOaAQ!EjdG|H0>J3#f=0(z z380b8K+Fonp!fvG7m8>wP?W*65iAB)3gW{6SUHem0TY1IFmdd)VBw!1EB>T{sLZ&S!)=8T-tJ$QR zq^)U*F(?%DslAHO7xlGI>ZlZHpyGoRq#tN(e2^AFgi>w~vf#`Zlj2RDCMwIBTRb>+aV=8Ipw z{oBp4Tc#H4X^u;h` z{3%d|a$xH+hEYB-J=1XK$^*USa%&rDDow5$TK}1Z8qruLnYDp4p@f0zkY~I*oiF?k zh}ky8^9yZ|8ATXFgS@Ij_K6@St4l|3(*=Nad>00I0NWgRB1}zx<~6n2AILe%ftuRw zz{e)t+1UebW4xW*rYE*5vM<4!-&<@kmoS0xI=M6;I$!jL+~tRyC?8DJ^H`!C>W+5_ z>8M1Y>p()B2T^u^*)jq3hB6Ic|B(*Wi+^#-?qEtQfO4VSM!5c&kCA-E-){C@wc7;F zq=E<3&^27uIGr6#w~6ScXcu>`Juc_@)~-X8MFbiQ#T-b8mW;8t1}zg*4a^AxvBTd6 z2WA!PH*|Ua;AHvXl*y{C|_^wj2=DYk|@yl}2hV~S076z_i@)&;@ zo;^sz4PuIi#rTYj6VEW`5pSm7&}!%*h({sLM)v2}pUVjwT1}yg3pj8NZ{Vxn`Z5hSlEZN9${s^^ zJb@tX###2Mk;_crn_Oil|8uaSv2W*#CQ{B|Rv6^c{ExuaS7<2HpQQ0))9ZCMlBwu- zFC|MR?#E_JL+&&$SEzh%0+;gjXSc=isH|%2>|oJE7M!Qjppf=PzO3n?vd$xG35ON- zJV|>#H{;H?-W+JZB+g&`SNbg3$bOn!8kA9XgO~kCn7W+fO;_-@9r^KQk^qJT*wxw+ znoY7#oSd$)YkP_&6w$-dK;y5sFO2#Hu3lstEsGZGua@n$%EpRFnBuLit`QSZO!I^1 c;`J>l`uqAS&r_m2&lTjYD1>U&r9ZCx3k6MtRsaA1 delta 123 zcmaF$hPi7xvvF8v?)=a^m;9#;%-2t!wc8x+zV)1~0fXJC2|K(vTj`>>v&hGXik}5Q9Jh5@yKcyu``^k`>*UD1VZXVRPfjcZ^KW GR{;QbY#~bk diff --git a/config/waybar/config.jsonc b/config/waybar/config.jsonc index 9868558..ae896b3 100644 --- a/config/waybar/config.jsonc +++ b/config/waybar/config.jsonc @@ -10,7 +10,6 @@ "modules-center": [ ], "modules-right": [ - "network", "clock", // "battery", "pulseaudio" @@ -69,17 +68,6 @@ }, "niri/workspaces": { "format": "●", - "persistent-workspaces": { - "1": 1, - "2": 2, - "3": 3, - "4": 4, - "5": 5, - "6": 6, - "7": 7, - "8": 8, - "9": 9 - }, }, "niri/window": { "icon": false,