Sha256: 26153466345652e1fb9719caff49952d4dd9ee4446e75969c5fb08188fff6f68

Contents?: true

Size: 1.47 KB

Versions: 1

Compression:

Stored size: 1.47 KB

Contents

# frozen_string_literal: true

module Clipboard
  @implementation = nil
end

require "clipboard"

module Textbringer
  module Commands
    CLIPBOARD_AVAILABLE =
      Clipboard.implementation.name != "Clipboard::Linux" ||
      (ENV["DISPLAY"] && system("which xclip > /dev/null 2>&1"))

    if CLIPBOARD_AVAILABLE
      GLOBAL_MAP.define_key("\ew", :clipboard_copy_region)
      GLOBAL_MAP.define_key("\C-w", :clipboard_kill_region)
      GLOBAL_MAP.define_key(?\C-k, :clipboard_kill_line)
      GLOBAL_MAP.define_key("\ed", :clipboard_kill_word)
      GLOBAL_MAP.define_key("\C-y", :clipboard_yank)
      GLOBAL_MAP.define_key("\ey", :clipboard_yank_pop)
    end

    define_command(:clipboard_copy_region) do
      copy_region
      Clipboard.copy(KILL_RING.current)
    end

    define_command(:clipboard_kill_region) do
      kill_region
      Clipboard.copy(KILL_RING.current)
    end

    define_command(:clipboard_kill_line) do
      kill_line
      Clipboard.copy(KILL_RING.current)
    end

    define_command(:clipboard_kill_word) do
      kill_word
      Clipboard.copy(KILL_RING.current)
    end

    define_command(:clipboard_yank) do
      s = Clipboard.paste.encode(Encoding::UTF_8).gsub(/\r\n/, "\n")
      if !s.empty? && (KILL_RING.empty? || KILL_RING.current != s)
        KILL_RING.push(s)
      end
      yank
      Controller.current.this_command = :yank
    end

    define_command(:clipboard_yank_pop) do
      yank_pop
      Clipboard.copy(KILL_RING.current)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
textbringer-0.1.8 lib/textbringer/commands/clipboard.rb