クリップボード同期できた
coLinux上のemacsのkill-ringとWindowsのclipboardの連携を
2006-11-29 - BITES THE DUST -負けて死ね-を参考にやろうとして、windowsのrubyにwin32/clipboardがないと怒られた。
http://www115.sakura.ne.jp/~harabu/hiki/?(Ruby)+Cygwin%A4%C7RubyGems+を参考にgemを入れる。
cygwin上でgem install win32-clipboardしたもののうまくいかないのでググるとwin32/clipboard のインストールにてこずるの巻 - @jitteの日記を発見。
結局windows側(clipboardsync_w.rb):
require 'drb/drb' require 'kconv' require 'win32ole' require 'rubygems' require 'Win32API' require 'win32/clipboard' DRb.start_service('druby://192.168.123.1:12345',Proc.new {|s| Win32::Clipboard.set_data(s.tosjis) }) sleep
coLinux側(clipboardsync_l.rb):
#!/usr/bin/ruby require 'drb/drb' DRbObject.new_with_uri("druby://192.168.123.1:12345").call(STDIN.readlines.to_s)
で.emacs追加分:
(defvar cl-sync-command "~/scripts/clipboardsync_l.rb" "*The command for clipboard sync") (defun cl-sync (beg end) (interactive "r") (call-process-region beg end shell-file-name nil nil nil shell-command-switch cl-sync-command)) (defadvice copy-region-as-kill (before clipboard-sync (beg end) activate) (cl-sync beg end)) (defadvice kill-region (before clipboard-sync (beg end) activate) (cl-sync beg end))
となった。よく意味わかってないけど。ポート番号は変えた方がいいだろか?
これは便利。
あとはwindows側のスクリプトがPC起動時に自動で開始するようにする。
よくやり方がわからなかったので
バッチファイル実行時に起動するDOS画面を非表示に。 - その他(プログラミング・Web制作) 締切済 | 教えて!gooを参考にvbsを作る(clipboardsync.vbs):
Dim oShell Set oShell = WScript.CreateObject ("WSCript.shell") oShell.run "ruby /cygdrive/c/scripts/clipboardsync_w.rb",0 Set oShell = Nothing
でスタートアップに放り込む。よし完成。