commit 7f9c18536bb86e28393d724faccb11ab797064bf Author: nova Date: Mon Sep 25 23:44:59 2023 +0200 switch to luasnip, added better snipplets diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..1d5a84a --- /dev/null +++ b/init.lua @@ -0,0 +1,19 @@ +require("bootstrap") +require("plugins") +require("config.lsp-config") +require("config.winsep") +require("config.bindings") +require("ui.startscreen") +require("ui.status") +require("ui.highlight") + +--{{{ vim cmd +vim.cmd(":set showtabline=2") +vim.cmd(":set ignorecase") +vim.cmd(":set smartcase") +vim.cmd(":set number") +vim.cmd(":set clipboard+=unnamedplus") +vim.cmd(":set relativenumber") +vim.cmd("set foldmethod=marker") +vim.opt.fillchars:append { eob = " " } +--}}} diff --git a/lazy-lock.json b/lazy-lock.json new file mode 100644 index 0000000..13d835e --- /dev/null +++ b/lazy-lock.json @@ -0,0 +1,15 @@ +{ + "LuaSnip": { "branch": "master", "commit": "480b032f6708573334f4437d3f83307d143f1a72" }, + "alpha-nvim": { "branch": "main", "commit": "234822140b265ec4ba3203e3e0be0e0bb826dff5" }, + "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, + "cmp-cmdline": { "branch": "main", "commit": "8ee981b4a91f536f52add291594e89fb6645e451" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" }, + "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, + "colorful-winsep.nvim": { "branch": "main", "commit": "e1b72c498f25c1fc37a7e9913332c137f753a90a" }, + "friendly-snippets": { "branch": "main", "commit": "ebf6d6e83494cdd88a54a429340256f4dbb6a052" }, + "lazy.nvim": { "branch": "main", "commit": "2a9354c7d2368d78cbd5575a51a2af5bd8a6ad01" }, + "nvim-autopairs": { "branch": "master", "commit": "de4f7138a68d5d5063170f2182fd27faf06b0b54" }, + "nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" }, + "nvim-lspconfig": { "branch": "master", "commit": "ede4114e1fd41acb121c70a27e1b026ac68c42d6" }, + "which-key.nvim": { "branch": "main", "commit": "7ccf476ebe0445a741b64e36c78a682c1c6118b7" } +} \ No newline at end of file diff --git a/lua/bootstrap.lua b/lua/bootstrap.lua new file mode 100644 index 0000000..d14f916 --- /dev/null +++ b/lua/bootstrap.lua @@ -0,0 +1,12 @@ +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not vim.loop.fs_stat(lazypath) then + vim.fn.system({ + "git", + "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", -- latest stable release + lazypath, + }) +end +vim.opt.rtp:prepend(lazypath) diff --git a/lua/config/bindings.lua b/lua/config/bindings.lua new file mode 100644 index 0000000..c288806 --- /dev/null +++ b/lua/config/bindings.lua @@ -0,0 +1,28 @@ +--tab navigation +vim.keymap.set("n", "", "1gt") +vim.keymap.set("n", "", "2gt") +vim.keymap.set("n", "", "3gt") +vim.keymap.set("n", "", "4gt") +vim.keymap.set("n", "", "5gt") +vim.keymap.set("n", "", "6gt") +vim.keymap.set("n", "", "7gt") +vim.keymap.set("n", "", "8gt") +vim.keymap.set("n", "", "9gt") +vim.keymap.set("n", "", ":tablast") +vim.keymap.set("n", "", ":tab new") +--move between splits with hjkl +vim.keymap.set("n", "", ":wincmd l") +vim.keymap.set("n", "", ":wincmd k") +vim.keymap.set("n", "", ":wincmd j") +vim.keymap.set("n", "", ":wincmd h") +--misc +vim.keymap.set("n", "", ":q") --ctrl+w shortcut of :q +vim.keymap.set("n", "", ":NvimTreeToggle") --open file tree +vim.keymap.set("n", "", ":tabnew +term") --create terminal in new tab +vim.keymap.set("t", "", "") --exit terminal mode with esc +vim.keymap.set("n", "", ":tabnew | terminal htop") --open htop in new tab +vim.keymap.set("n", "", ":tabnew | terminal termusic") --open termusic (a music player) in new tab +vim.keymap.set("n", "", ":tabnew | terminal gomuks") --open gomuks (a matrix client) in new tab +vim.keymap.set("n", "", ":tabnew | terminal ranger") --open ranger (a file manager) in new tab +vim.keymap.set("n", "", ":split new") --create a new split +vim.keymap.set("n", "", ":vs new") --create a vplit diff --git a/lua/config/lsp-config.lua b/lua/config/lsp-config.lua new file mode 100644 index 0000000..3cda0cb --- /dev/null +++ b/lua/config/lsp-config.lua @@ -0,0 +1,82 @@ + -- Set up nvim-cmp. + local cmp = require'cmp' + + cmp.setup({ + snippet = { + -- REQUIRED - you must specify a snippet engine + expand = function(args) + -- vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users. + require('luasnip').lsp_expand(args.body) -- For `luasnip` users. + -- require('snippy').expand_snippet(args.body) -- For `snippy` users. + -- vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users. + end, + }, + window = { + -- completion = cmp.config.window.bordered(), + -- documentation = cmp.config.window.bordered(), + }, + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping.select_prev_item(), + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'vsnip' }, -- For vsnip users. + -- { name = 'luasnip' }, -- For luasnip users. + -- { name = 'ultisnips' }, -- For ultisnips users. + -- { name = 'snippy' }, -- For snippy users. + }, { + { name = 'buffer' }, + }) + }) + + -- Set configuration for specific filetype. + cmp.setup.filetype('gitcommit', { + sources = cmp.config.sources({ + { name = 'git' }, -- You can specify the `git` source if [you were installed it](https://github.com/petertriho/cmp-git). + }, { + { name = 'buffer' }, + }) + }) + + -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). + cmp.setup.cmdline({ '/', '?' }, { + mapping = cmp.mapping.preset.cmdline(), + sources = { + { name = 'buffer' } + } + }) + + -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). + cmp.setup.cmdline(':', { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = 'path' } + }, { + { name = 'cmdline' } + }) + }) + + + + + -- Set up lspconfig. + local capabilities = require('cmp_nvim_lsp').default_capabilities() + -- Replace with each lsp server you've enabled. + require('lspconfig')['clangd'].setup { + capabilities = capabilities + } + require('lspconfig')['csharp_ls'].setup { + capabilities = capabilities + } + require('lspconfig')['lua_ls'].setup { + capabilities = capabilities + } + require('lspconfig')['bashls'].setup { + capabilities = capabilities + } diff --git a/lua/config/winsep.lua b/lua/config/winsep.lua new file mode 100644 index 0000000..7f5f6d4 --- /dev/null +++ b/lua/config/winsep.lua @@ -0,0 +1,15 @@ +require("colorful-winsep").setup({ + -- highlight for Window separator + -- timer refresh rate + interval = 30, + -- This plugin will not be activated for filetype in the following table. + no_exec_files = { "packer", "TelescopePrompt", "mason", "CompetiTest", "NvimTree" }, + -- Symbols for separator lines, the order: horizontal, vertical, top left, top right, bottom left, bottom right. + symbols = { "━", "┃", "┏", "┓", "┗", "┛" }, + close_event = function() + -- Executed after closing the window separator + end, + create_event = function() + -- Executed after creating the window separator + end, +}) diff --git a/lua/plugins.lua b/lua/plugins.lua new file mode 100644 index 0000000..e17a48f --- /dev/null +++ b/lua/plugins.lua @@ -0,0 +1,84 @@ +local plugins = { + -- {{{ lsp stuff + -- {{{ basic lsp + { + "neovim/nvim-lspconfig", + event = "VeryLazy", + dependencies = { + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + "hrsh7th/cmp-path", + "hrsh7th/cmp-cmdline", + event = "VeryLazy" + } + }, -- }}} + + -- {{{ snipplets + { + "hrsh7th/nvim-cmp", + event = "InsertEnter", + dependencies = { + } + }, + { + "L3MON4D3/LuaSnip", + event = "InsertEnter", + dependencies = { + "rafamadriz/friendly-snippets", + }, + config = function(_, opts) + require("luasnip.loaders.from_vscode").lazy_load() + end, + }, -- }}} + -- }}} + + -- {{{ editor + -- {{{ prints possible shortcuts upon button press + { + "folke/which-key.nvim", + event = "VeryLazy", + init = function() + lazy = true + vim.o.timeout = true + vim.o.timeoutlen = 0 + require("which-key").setup(opts) + end + }, -- }}} + + -- {{{ auto closes () + { + "windwp/nvim-autopairs", + event = "InsertEnter", + opts = { + fast_wrap = {}, + disable_filetype = { "TelescopePrompt", "vim" }, + }, + config = function(_, opts) + require("nvim-autopairs").setup(opts) + local cmp_autopairs = require "nvim-autopairs.completion.cmp" + require("cmp").event:on("confirm_done", cmp_autopairs.on_confirm_done()) + end, + }, -- }}} + -- }}} + + -- {{{ ui + --better borders for split screen + { + "nvim-zh/colorful-winsep.nvim", + event = "VeryLazy", + config = function () + require('colorful-winsep').setup() + end + }, + + --start screen + { + 'goolord/alpha-nvim', + }, + -- }}} + + -- {{{ misc + -- }}} +} +plugins.lazy = true +require("lazy").setup(plugins) diff --git a/lua/ui/highlight.lua b/lua/ui/highlight.lua new file mode 100644 index 0000000..f34f577 --- /dev/null +++ b/lua/ui/highlight.lua @@ -0,0 +1,256 @@ +vim.cmd([[ +" noctu.vim - Vim color scheme for 16-color terminals +" -------------------------------------------------------------- +" Author: Noah Frederick (http://noahfrederick.com/) +" Version: 1.8.0 +" -------------------------------------------------------------- +" Scheme setup {{{ +set background=dark +hi! clear + +if exists("syntax_on") + syntax reset +endif + +let g:colors_name = "noctu" + +"}}} +" Vim UI {{{ +hi Normal ctermfg=7 +hi Cursor ctermfg=7 ctermbg=1 +hi CursorLine ctermbg=1 cterm=NONE +hi MatchParen ctermfg=7 ctermbg=NONE cterm=underline +hi Pmenu ctermfg=13 ctermbg=0 +hi PmenuThumb ctermbg=7 +hi PmenuSBar ctermbg=8 +hi PmenuSel ctermfg=0 ctermbg=4 +hi ColorColumn ctermbg=0 +hi SpellBad ctermfg=1 ctermbg=NONE cterm=underline +hi SpellCap ctermfg=10 ctermbg=NONE cterm=underline +hi SpellRare ctermfg=11 ctermbg=NONE cterm=underline +hi SpellLocal ctermfg=13 ctermbg=NONE cterm=underline +hi NonText ctermfg=8 +hi LineNr ctermfg=8 ctermbg=NONE +hi CursorLineNr ctermfg=11 ctermbg=0 +hi Visual ctermfg=0 ctermbg=12 +hi IncSearch ctermfg=0 ctermbg=13 cterm=NONE +hi Search ctermfg=0 ctermbg=10 +hi StatusLine ctermfg=7 ctermbg=NONE cterm=bold +hi StatusLineNC ctermfg=1 ctermbg=NONE cterm=bold +hi VertSplit ctermfg=7 ctermbg=0 cterm=NONE +hi TabLine ctermfg=8 ctermbg=0 cterm=NONE +hi TabLineSel ctermfg=1 ctermbg=0 +hi Folded ctermfg=6 ctermbg=0 cterm=bold +hi Conceal ctermfg=6 ctermbg=NONE +hi Directory ctermfg=12 +hi Title ctermfg=3 cterm=bold +hi ErrorMsg ctermfg=15 ctermbg=1 +hi DiffAdd ctermfg=0 ctermbg=2 +hi DiffChange ctermfg=0 ctermbg=3 +hi DiffDelete ctermfg=0 ctermbg=1 +hi DiffText ctermfg=0 ctermbg=11 cterm=bold +hi User1 ctermfg=1 ctermbg=0 +hi User2 ctermfg=4 ctermbg=0 +hi User3 ctermfg=2 ctermbg=0 +hi User4 ctermfg=3 ctermbg=0 +hi User5 ctermfg=5 ctermbg=0 +hi User6 ctermfg=6 ctermbg=0 +hi User7 ctermfg=7 ctermbg=0 +hi User8 ctermfg=8 ctermbg=0 +hi User9 ctermfg=15 ctermbg=5 +hi! link CursorColumn CursorLine +hi! link SignColumn LineNr +hi! link WildMenu Visual +hi! link FoldColumn SignColumn +hi! link WarningMsg ErrorMsg +hi! link MoreMsg Title +hi! link Question MoreMsg +hi! link ModeMsg MoreMsg +hi! link TabLineFill StatusLineNC +hi! link SpecialKey NonText + +"}}} +" Generic syntax {{{ +hi Delimiter ctermfg=7 +hi Comment ctermfg=8 +hi Underlined ctermfg=4 cterm=underline +hi Type ctermfg=4 +hi String ctermfg=11 +hi Keyword ctermfg=2 +hi Todo ctermfg=14 ctermbg=NONE cterm=bold,underline +hi Function ctermfg=4 +hi Identifier ctermfg=7 cterm=NONE +hi Statement ctermfg=2 cterm=bold +hi Constant ctermfg=13 +hi Number ctermfg=12 +hi Boolean ctermfg=4 +hi Special ctermfg=13 +hi Ignore ctermfg=0 +hi PreProc ctermfg=8 cterm=bold +hi! link Operator Delimiter +hi! link Error ErrorMsg + +"}}} +" HTML {{{ +hi htmlTagName ctermfg=2 +hi htmlTag ctermfg=2 +hi htmlArg ctermfg=10 +hi htmlH1 cterm=bold +hi htmlBold cterm=bold +hi htmlItalic cterm=underline +hi htmlUnderline cterm=underline +hi htmlBoldItalic cterm=bold,underline +hi htmlBoldUnderline cterm=bold,underline +hi htmlUnderlineItalic cterm=underline +hi htmlBoldUnderlineItalic cterm=bold,underline +hi! link htmlLink Underlined +hi! link htmlEndTag htmlTag + +"}}} +" XML {{{ +hi xmlTagName ctermfg=4 +hi xmlTag ctermfg=12 +hi! link xmlString xmlTagName +hi! link xmlAttrib xmlTag +hi! link xmlEndTag xmlTag +hi! link xmlEqual xmlTag + +"}}} +" JavaScript {{{ +hi! link javaScript Normal +hi! link javaScriptBraces Delimiter + +"}}} +" PHP {{{ +hi phpSpecialFunction ctermfg=5 +hi phpIdentifier ctermfg=11 +hi phpParent ctermfg=8 +hi! link phpVarSelector phpIdentifier +hi! link phpHereDoc String +hi! link phpDefine Statement + +"}}} +" Markdown {{{ +hi! link markdownHeadingRule NonText +hi! link markdownHeadingDelimiter markdownHeadingRule +hi! link markdownLinkDelimiter Delimiter +hi! link markdownURLDelimiter Delimiter +hi! link markdownCodeDelimiter NonText +hi! link markdownLinkTextDelimiter markdownLinkDelimiter +hi! link markdownUrl markdownLinkText +hi! link markdownAutomaticLink markdownLinkText +hi! link markdownCodeBlock String +hi markdownCode cterm=bold +hi markdownBold cterm=bold +hi markdownItalic cterm=underline + +"}}} +" Ruby {{{ +hi! link rubyDefine Statement +hi! link rubyLocalVariableOrMethod Identifier +hi! link rubyConstant Constant +hi! link rubyInstanceVariable Number +hi! link rubyStringDelimiter rubyString + +"}}} +" Git {{{ +hi gitCommitBranch ctermfg=3 +hi gitCommitSelectedType ctermfg=10 +hi gitCommitSelectedFile ctermfg=2 +hi gitCommitUnmergedType ctermfg=9 +hi gitCommitUnmergedFile ctermfg=1 +hi! link gitCommitFile Directory +hi! link gitCommitUntrackedFile gitCommitUnmergedFile +hi! link gitCommitDiscardedType gitCommitUnmergedType +hi! link gitCommitDiscardedFile gitCommitUnmergedFile + +"}}} +" Vim {{{ +hi! link vimSetSep Delimiter +hi! link vimContinue Delimiter +hi! link vimHiAttrib Constant + +"}}} +" LESS {{{ +hi lessVariable ctermfg=11 +hi! link lessVariableValue Normal + +"}}} +" NERDTree {{{ +hi! link NERDTreeHelp Comment +hi! link NERDTreeExecFile String + +"}}} +" Vimwiki {{{ +hi! link VimwikiHeaderChar markdownHeadingDelimiter +hi! link VimwikiList markdownListMarker +hi! link VimwikiCode markdownCode +hi! link VimwikiCodeChar markdownCodeDelimiter + +"}}} +" Help {{{ +hi! link helpExample String +hi! link helpHeadline Title +hi! link helpSectionDelim Comment +hi! link helpHyperTextEntry Statement +hi! link helpHyperTextJump Underlined +hi! link helpURL Underlined + +"}}} +" CtrlP {{{ +hi! link CtrlPMatch String +hi! link CtrlPLinePre Comment + +"}}} +" Mustache {{{ +hi mustacheSection ctermfg=14 cterm=bold +hi mustacheMarker ctermfg=6 +hi mustacheVariable ctermfg=14 +hi mustacheVariableUnescape ctermfg=9 +hi mustachePartial ctermfg=13 + +"}}} +" Shell {{{ +hi shDerefSimple ctermfg=11 +hi! link shDerefVar shDerefSimple + +"}}} +" Syntastic {{{ +hi SyntasticWarningSign ctermfg=3 ctermbg=NONE +hi SyntasticErrorSign ctermfg=1 ctermbg=NONE +hi SyntasticStyleWarningSign ctermfg=2 ctermbg=NONE +hi SyntasticStyleErrorSign ctermfg=4 ctermbg=NONE + +"}}} +" Netrw {{{ +hi netrwExe ctermfg=9 +hi netrwClassify ctermfg=8 cterm=bold + +"}}} +" Ledger {{{ +hi ledgerAccount ctermfg=11 +hi! link ledgerMetadata Comment +hi! link ledgerTransactionStatus Statement + +"}}} +" Diff {{{ +hi diffAdded ctermfg=2 +hi diffRemoved ctermfg=1 +hi! link diffFile PreProc +hi! link diffLine Title + +"}}} +" Plug {{{ +hi plugSha ctermfg=3 + +"}}} +" Blade {{{ +hi! link bladeStructure PreProc +hi! link bladeParen phpParent +hi! link bladeEchoDelim PreProc + +"}}} + +" vim: fdm=marker:sw=2:sts=2:et + +]]) diff --git a/lua/ui/startscreen.lua b/lua/ui/startscreen.lua new file mode 100644 index 0000000..a9be514 --- /dev/null +++ b/lua/ui/startscreen.lua @@ -0,0 +1,177 @@ +local alpha = require("alpha") + +local col = function(strlist, opts) + -- strlist is a TABLE of TABLES, representing columns of text + -- opts is a text display option + + -- column spacing + local padding = 12 + -- fill lines up to the maximim length with 'fillchar' + local fillchar = ' ' + -- columns padding char (for testing) + local padchar = ' ' + + -- define maximum string length in a table + local maxlen = function(str) + local max = 0 + for i in pairs(str) do + if #str[i] > max then + max = #str[i] + end + end + return max + end + + -- add as much right-padding to align the text block + local pad = function(str, max) + local strlist = {} + for i in pairs(str) do + if #str[i] < max then + local newstr = str[i] .. string.rep(fillchar, max-#str[i]) + table.insert(strlist, newstr) + else + table.insert(strlist, str[i]) + end + end + return strlist + end + + -- this is a table for text strings + local values = {} + -- process all the lines + for i=1,maxlen(strlist) do + local str = '' + -- process all the columns but last, because we dont wand extra padding + -- after last column + for column=1,#strlist-1 do + local maxstr = maxlen(strlist[column]) + local padded = pad(strlist[column], maxstr) + if strlist[column][i] == nil then + str = str .. string.rep(fillchar, maxstr) .. string.rep(padchar, padding) + else + str = str .. padded[i] .. string.rep(padchar, padding) + end + end + + -- lets process the last column, no extra padding + do + local maxstr = maxlen(strlist[#strlist]) + local padded = pad(strlist[#strlist], maxstr) + if strlist[#strlist][i] == nil then + str = str .. string.rep(fillchar, maxlen(strlist[#strlist])) + else + str = str .. padded[i] + end + end + + -- insert result into output table + table.insert(values, { type = "text", val = str, opts = opts }) + end + + return values +end + +local window_managment = { + + "ALT-ENT new tab terminal", + "ALT-NUM move to tab n", + "ALT-v horizontal split", + "ALT-v vertical split", +} + +local text_managment = { + "CTRL-t new file", + "CTRL-w :q", + "CTRL-n open file manager" +} + + +local applications = { + "ALT+ESC htop", + "ALT+t termusic", + "ALT+r ranger", + "ALT+m matrix", + +} + + + + +local head = { + type = "text", + val = { +[[ .█▄╥ _▄K¥▄ ]], +[[ █ '▀▄_ ▄▄ ╓▄▀" ▀▌ ]], +[[ █ "▀▄, ▓ ▀▀▄ ▄▀- █ ]], +[[ ▐▌ ▀▄▌▀▀▀▀'""▀▀█ ▀▄ _▄▀ ▓ ]], +[[ ▓ "▓╥ "▓_.▓▀ ╫ ]], +[[ )▌ ▀█ ╫ ]], +[[ ▐∩ █ ]], +[[ ▐∩ ▐▌ ]], +[[ ▐µ █▌ ]], +[[ ▓ ╨▓▓█▄▄╥_ ,▄▄█████▄ █ ]], +[[ ▐▄ `"▀▀██▄ ▐███▌╓_ .▓" ]], +[[ "▓▄ _▄▄███▀' ▄▄▄▄┐ "▀▀█████▄ .▄K▀▀▀▀█ ]], +[[▐▌▀▀▀▀ª ▀▀' "▀▄, _ _╥▄▀ ]], +[[ ▓▄ _╥µ __ ,▄▄ ]µ ` ╫▌@╨ ▀▌ ]], +[[ "▀▄` ▓K" *▌▄▄▀" "▀▀▓▀ ▀▄ ]], +[[ █. ▐▌ j▌ _ █ ]], +[[ █ , ▀▄ ▐▌ ▄▓"▀▀▀▀" ]], +[[ ▐█K▀▀"▀¥██▌▄▄_ ╨▓_ _█ ,▄▄K▀▀ ]], +[[ ▐▌ "▀W "▀" "█µ ]], +[[ ▐█ "▓_ ]], +[[ _▓▀ ▀▄ ]], +[[ j█____ _ ▀▄ ]], +[[ ''"▓" ▓⌐ ]], +[[ █ ▐▌ ]], +[[ ▀ ▀ ]], + +}, +opts = { +position = "center", +hl = "Type", +}, +} + +local foot = { +type = "text", +val = "footer", +opts = { +position = "center", +hl = "Number", +}, +} + +local block1 = { +type = "group", +val = col({window_managment, text_managment}, { position = "center", hl = {{ "Title", 0, 7 }, {"Comment", 7, 37}, {"Title", 37, 44}, {"Comment", 44, -1}}}), +opts = { +spacing = 0 +}, +} + +local block2 = { +type = "group", +val = col({applications}, { position = "center", hl = {{"Comment", 7, -1}, { "Title", 0, 7 }} }), +opts = { +spacing = 0 +}, +} + + +local opts = { +layout = { +{ type = "padding", val = 2 }, +head, +{ type = "padding", val = 2 }, +block1, +{ type = "padding", val = 2 }, +block2, +}, +opts = { +noautocmd = true, +margin = 5, +}, +} +alpha.setup(opts) + diff --git a/lua/ui/status.lua b/lua/ui/status.lua new file mode 100644 index 0000000..6b2aa71 --- /dev/null +++ b/lua/ui/status.lua @@ -0,0 +1,49 @@ +vim.cmd([[ +set laststatus=3 +set statusline= +set statusline+=%1* +set statusline+=%{StatuslineMode()} +set statusline+=\ +set statusline+=| +set statusline+=\ +set statusline+=%2* +set statusline+=%F +set statusline+=%= +set statusline+=%3* +set statusline+=%l +set statusline+=\ +set statusline+=/ +set statusline+=\ +set statusline+=%L +set statusline+=\ +set statusline+=\ +set statusline+=| +set statusline+=\ +set statusline+=%{strftime('%c')} +hi User1 ctermbg=black ctermfg=blue guibg=black guifg=blue +hi User9 ctermbg=black ctermfg=white guibg=black guifg=white +hi User2 ctermbg=black ctermfg=green guibg=black guifg=green +hi User3 ctermbg=black ctermfg=white guibg=black guifg=white + +function! StatuslineMode() + let l:mode=mode() + if l:mode==#"n" + return "NORMAL" + elseif l:mode==?"v" + return "VISUAL" + elseif l:mode==#"i" + return "INSERT" + elseif l:mode==#"R" + return "REPLACE" + elseif l:mode==?"s" + return "SELECT" + elseif l:mode==#"t" + return "TERMINAL" + elseif l:mode==#"c" + return "COMMAND" + elseif l:mode==#"!" + return "SHELL" + endif +endfunction +:call timer_start(1000, {-> execute(':let &stl=&stl')}, {'repeat': -1}) +]])