diff --git a/roles/neovim/files/after/plugin/statusline.lua b/roles/neovim/files/after/plugin/statusline.lua new file mode 100644 index 0000000..65f4755 --- /dev/null +++ b/roles/neovim/files/after/plugin/statusline.lua @@ -0,0 +1,81 @@ +local status_ok, el = pcall(require, "el") +if not status_ok then + return +end + +local builtin = require "el.builtin" +local diagnostic = require "el.diagnostic" +local extensions = require "el.extensions" +local lsp_statusline = require "el.plugins.lsp_status" +local sections = require "el.sections" +local subscribe = require "el.subscribe" + +local file_icon = subscribe.buf_autocmd("el_file_icon", "BufRead", function(_, buffer) + return extensions.file_icon(_, buffer) +end) + +local git_branch = subscribe.buf_autocmd("el_git_branch", "BufEnter", function(window, buffer) + local branch = extensions.git_branch(window, buffer) + if branch then + return " " .. extensions.git_icon() .. " " .. branch + end +end) + +local git_changes = subscribe.buf_autocmd("el_git_changes", "BufWritePost", function(window, buffer) + return extensions.git_changes(window, buffer) +end) + +local show_current_func = function(window, buffer) + if buffer.filetype == "lua" then + return "" + end + + return lsp_statusline.current_function(window, buffer) +end + +local diagnostic_display = diagnostic.make_buffer() + +el.setup { + generator = function(window, buffer) + local mode = extensions.gen_mode { format_string = " %s " } + + local items = { + { mode }, + { git_branch }, + { sections.split }, + { file_icon }, + { " " }, + { sections.maximum_width(builtin.make_responsive_file(140, 90), 0.40) }, + { sections.collapse_builtin { { " " }, { builtin.modified_flag } } }, + { sections.split }, + { diagnostic_display }, + { show_current_func }, + { git_changes }, + { "[" }, + { builtin.line_with_width(3) }, + { ":" }, + { builtin.column_with_width(2) }, + { "]" }, + { + sections.collapse_builtin { + "[", + builtin.help_list, + builtin.readonly_list, + "]", + }, + }, + { builtin.filetype }, + } + + local add_item = function(result, item) + table.insert(result, item) + end + + local result = {} + for _, item in ipairs(items) do + add_item(result, item) + end + + return result + end, +} diff --git a/roles/neovim/files/lua/opdavies/plugins.lua b/roles/neovim/files/lua/opdavies/plugins.lua index 24a4d60..58890c5 100644 --- a/roles/neovim/files/lua/opdavies/plugins.lua +++ b/roles/neovim/files/lua/opdavies/plugins.lua @@ -35,10 +35,10 @@ return packer.startup(function() use "numToStr/Comment.nvim" use "nvim-lua/plenary.nvim" use "nvim-lua/popup.nvim" - use "nvim-lualine/lualine.nvim" use "rcarriga/nvim-notify" use "sheerun/vim-polyglot" use "theprimeagen/refactoring.nvim" + use "tjdevries/express_line.nvim" use "tpope/vim-surround" use "vim-test/vim-test" use "voldikss/vim-floaterm"