Sha256: 59c6260460985d3eb09379ee37f7f273457ced21d6e14003232f924720b354bc

Contents?: true

Size: 899 Bytes

Versions: 1

Compression:

Stored size: 899 Bytes

Contents

# frozen_string_literal: true

module Textbringer
  class CompletionListMode < Mode
    define_generic_command :choose_completion

    COMPLETION_LIST_MODE_MAP = Keymap.new
    COMPLETION_LIST_MODE_MAP.define_key("\n", :choose_completion_command)

    def initialize(buffer)
      super(buffer)
      buffer.keymap = COMPLETION_LIST_MODE_MAP
    end

    def choose_completion
      unless Window.echo_area.active?
        raise EditorError, "Minibuffer is not active"
      end
      s = @buffer.save_excursion {
        @buffer.beginning_of_line
        @buffer.looking_at?(/.*/)
        @buffer.match_string(0)
      }
      if s.size > 0
        Window.current = Window.echo_area
        complete_minibuffer_with_string(s)
        if COMPLETION[:original_buffer]
          COMPLETION[:completions_window].buffer =
            COMPLETION[:original_buffer]
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
textbringer-0.1.7 lib/textbringer/modes/completion_list_mode.rb