82 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
		
		
			
		
	
	
			82 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
|  | 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, | ||
|  | } |