class Amun::Windows::ModeLine

a line of small segments that display information about the current window, like mode name, line number, buffer name…etc

Attributes

left_segments[R]
right_segments[R]

Public Class Methods

new(size) click to toggle source
Calls superclass method Amun::Windows::Base::new
# File lib/amun/windows/mode_line.rb, line 14
def initialize(size)
  super(size)
  @right_segments = []
  @left_segments = [
    ModeLineSegments::BufferName.new,
    ModeLineSegments::MajorMode.new
  ]

  Helpers::Colors.register_default(:mode_line, 0, 255)
end

Public Instance Methods

render(buffer) click to toggle source
# File lib/amun/windows/mode_line.rb, line 25
def render(buffer)
  right_output = render_segments(right_segments, buffer)
  left_output = render_segments(left_segments, buffer)
  filler = empty_space(right_output, left_output)

  curses_window.erase
  Helpers::Colors.print(curses_window, *left_output, filler, *right_output)
  curses_window.refresh
end

Private Instance Methods

empty_space(right_output, left_output) click to toggle source
# File lib/amun/windows/mode_line.rb, line 37
def empty_space(right_output, left_output)
  text_size = (right_output + left_output).map(&:size).inject(0, :+)
  empty_space = [0, width - text_size].max
  (' ' * empty_space).colorize(:mode_line)
end
render_segments(segments, buffer) click to toggle source
# File lib/amun/windows/mode_line.rb, line 43
def render_segments(segments, buffer)
  segments.map do |segment|
    segment.render(buffer)
  end.flatten
end