lib/textbringer/commands/clipboard.rb in textbringer-0.1.5 vs lib/textbringer/commands/clipboard.rb in textbringer-0.1.6
- old
+ new
@@ -3,15 +3,18 @@
require "clipboard"
module Textbringer
module Commands
CLIPBOARD_AVAILABLE =
- Clipboard.implementation.name != :Linux || ENV["DISPLAY"]
+ Clipboard.implementation.name != :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)
end
define_command(:clipboard_copy_region) do
copy_region
@@ -21,12 +24,22 @@
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)
- if KILL_RING.empty? || KILL_RING.current != s
+ if !s.empty? && (KILL_RING.empty? || KILL_RING.current != s)
KILL_RING.push(s)
end
yank
Controller.current.this_command = :yank
end