[Ttssh2-commit] [6449] クリップボードからの貼り付け周りの整理

Zurück zum Archiv-Index

svnno****@sourc***** svnno****@sourc*****
2016年 7月 15日 (金) 18:33:36 JST


Revision: 6449
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/6449
Author:   doda
Date:     2016-07-15 18:33:36 +0900 (Fri, 15 Jul 2016)
Log Message:
-----------
クリップボードからの貼り付け周りの整理
・クリップボードの内容が CF_TEXT や CF_OEMTEXT の時も貼り付け開始時点で
  クリップボードの内容をコピーし、貼り付け処理中はクリップボードのロックを
  しないようにした。
  ただし、クリップボードの内容が CF_TEXT や CF_OEMTEXT でも、CF_UNICODETEXT
  として取得できるようで、ほぼすべての場合で CF_UNICODETEXT として処理が
  行われていたはずなので実質的な動作変更はない事になるはず。
・Bracketed Paste や AddCR の処理を CBStartPaste へ移動した。
  クリップボードの内容をコピーする時点で Bracket や CR を付加する。
  Bracketed Paste Mode 有効時に空文字列の貼り付けで終了 Bracket のみ送られる
  というバグがあったが、この処理変更で修正される。
・Bracketed Paste Mode テスト用スクリプトを追加

Modified Paths:
--------------
    trunk/doc/en/html/about/history.html
    trunk/doc/ja/html/about/history.html
    trunk/teraterm/teraterm/clipboar.c

Added Paths:
-----------
    trunk/tests/bracketed-paste-test.rb

-------------- next part --------------
Modified: trunk/doc/en/html/about/history.html
===================================================================
--- trunk/doc/en/html/about/history.html	2016-07-15 09:33:33 UTC (rev 6448)
+++ trunk/doc/en/html/about/history.html	2016-07-15 09:33:36 UTC (rev 6449)
@@ -53,6 +53,7 @@
       <li>Tera Term(ttermpro.exe) can not run on Windows 95/98/Me/NT4.0.</li>
       <li>When the clipboard is read from remote host, unnecessary NUL character is added at the end of the string.</li>
       <!-- li>\x83\x8A\x83\x82\x81[\x83g\x82\xA9\x82\xE7\x82̃N\x83\x8A\x83b\x83v\x83{\x81[\x83h\x8F\x91\x82\xAB\x8D\x9E\x82݂ŁA\x8B󕶎\x9A\x97񂪃Z\x83b\x83g\x8Fo\x97\x88\x82Ȃ\xA2\x96\xE2\x91\xE8\x82\xF0\x8FC\x90\xB3\x82\xB5\x82\xBD\x81B</li -->
+      <!-- li>\x83N\x83\x8A\x83b\x83v\x83{\x81[\x83h\x82̓\xE0\x97e\x82\xAA\x8B󕶎\x9A\x97\xF1\x82̎\x9E\x81A<a href="../usage/tips/vim.html#Bracketed">Bracketed Paste Mode</a> \x97L\x8C\xF8\x8E\x9E\x82̓\\x82\xE8\x95t\x82\xAF\x82ŏI\x97\xB9 Bracket \x82݂̂\xAA\x91\x97\x82\xE7\x82\xEA\x82\xE9\x96\xE2\x91\xE8\x82\xF0\x8FC\x90\xB3\x82\xB5\x82\xBD\x81B</li -->
       <li>MACRO: When invalid regular expression is specified at the <a href="../macro/command/strreplace.html">strreplace</a> command, source string is corrupted.
         <ul>
           <li>The result variable returns -1 when invalid regular expression is specified.</li>

Modified: trunk/doc/ja/html/about/history.html
===================================================================
--- trunk/doc/ja/html/about/history.html	2016-07-15 09:33:33 UTC (rev 6448)
+++ trunk/doc/ja/html/about/history.html	2016-07-15 09:33:36 UTC (rev 6449)
@@ -53,6 +53,7 @@
       <li>Windows 95/98/Me/NT4.0\x82ŋN\x93\xAE\x82ł\xAB\x82Ȃ\xAD\x82Ȃ\xC1\x82Ă\xA2\x82\xBD\x96\xE2\x91\xE8\x82\xF0\x8FC\x90\xB3\x82\xB5\x82\xBD\x81B</li>
       <li>\x83\x8A\x83\x82\x81[\x83g\x82\xA9\x82\xE7\x82̃N\x83\x8A\x83b\x83v\x83{\x81[\x83h\x93ǂݎ\xE6\x82\xE8\x82ɑ΂\xB5\x82āA\x96\x96\x94\xF6\x82ɗ]\x8Cv\x82\xC8 NUL \x95\xB6\x8E\x9A\x82\xF0\x95t\x89\xC1\x82\xB5\x82Ă\xA2\x82\xBD\x96\xE2\x91\xE8\x82\xF0\x8FC\x90\xB3\x82\xB5\x82\xBD\x81B</li>
       <li>\x83\x8A\x83\x82\x81[\x83g\x82\xA9\x82\xE7\x82̃N\x83\x8A\x83b\x83v\x83{\x81[\x83h\x8F\x91\x82\xAB\x8D\x9E\x82݂ŁA\x8B󕶎\x9A\x97񂪃Z\x83b\x83g\x8Fo\x97\x88\x82Ȃ\xA2\x96\xE2\x91\xE8\x82\xF0\x8FC\x90\xB3\x82\xB5\x82\xBD\x81B</li>
+      <li>\x83N\x83\x8A\x83b\x83v\x83{\x81[\x83h\x82̓\xE0\x97e\x82\xAA\x8B󕶎\x9A\x97\xF1\x82̎\x9E\x81A<a href="../usage/tips/vim.html#Bracketed">Bracketed Paste Mode</a> \x97L\x8C\xF8\x8E\x9E\x82̓\\x82\xE8\x95t\x82\xAF\x82ŏI\x97\xB9 Bracket \x82݂̂\xAA\x91\x97\x82\xE7\x82\xEA\x82\xE9\x96\xE2\x91\xE8\x82\xF0\x8FC\x90\xB3\x82\xB5\x82\xBD\x81B</li>
       <li><a href="../macro/command/strreplace.html">strreplace</a> \x83}\x83N\x83\x8D\x83R\x83}\x83\x93\x83h\x82ŁA\x90\xB3\x82\xB5\x82\xAD\x82Ȃ\xA2\x90\xB3\x8BK\x95\\x8C\xBB\x82\xF0\x8Ew\x92肵\x82\xBD\x8E\x9E\x82Ɍ\xB3\x95\xB6\x8E\x9A\x97񂪉\xF3\x82\xEA\x82\xE9\x96\xE2\x91\xE8\x82\xF0\x8FC\x90\xB3\x82\xB5\x82\xBD\x81B
         <ul>
           <li>\x90\xB3\x82\xB5\x82\xAD\x96\xB3\x82\xA2\x90\xB3\x8BK\x95\\x8C\xBB\x82\xF0\x8Ew\x92肵\x82\xBD\x8E\x9E\x82\xCD result \x82\xC5 -1 \x82\xF0\x95Ԃ\xB7\x82悤\x82ɂ\xB5\x82\xBD\x81B</li>

Modified: trunk/teraterm/teraterm/clipboar.c
===================================================================
--- trunk/teraterm/teraterm/clipboar.c	2016-07-15 09:33:33 UTC (rev 6448)
+++ trunk/teraterm/teraterm/clipboar.c	2016-07-15 09:33:36 UTC (rev 6449)
@@ -24,21 +24,14 @@
 static HGLOBAL CBCopyWideHandle = NULL;
 static LPWSTR CBCopyWidePtr = NULL;
 
-#define CB_BRACKET_NONE  0
-#define CB_BRACKET_START 1
-#define CB_BRACKET_END   2
 // for clipboard paste
 static HGLOBAL CBMemHandle = NULL;
 static PCHAR CBMemPtr = NULL;
 static LONG CBMemPtr2 = 0;
-static BOOL CBAddCR = FALSE;
-static int CBBracketed = CB_BRACKET_NONE;
 static BYTE CBByte;
 static BOOL CBRetrySend;
 static BOOL CBRetryEcho;
 static BOOL CBSendCR;
-static BOOL CBDDE;
-static BOOL CBWIDE;
 static BOOL CBEchoOnly;
 static BOOL CBInsertDelay = FALSE;
 
@@ -117,17 +110,12 @@
 		return;
 	}
 
-	CBAddCR = FALSE;
-	CBBracketed = CB_BRACKET_NONE;
-
 	CBEchoOnly = EchoOnly;
 
 	CBMemHandle = NULL;
 	CBMemPtr = NULL;
 
 	CBMemPtr2 = 0;
-	CBDDE = TRUE;
-	CBWIDE = FALSE;
 
 	CBInsertDelay = FALSE;
 
@@ -151,7 +139,13 @@
 
 void CBStartPaste(HWND HWin, BOOL AddCR, BOOL Bracketed)
 {
+	static char BracketStart[] = "\033[200~";
+	static char BracketEnd[] = "\033[201~";
 	UINT Cf;
+	PCHAR TmpPtr;
+	LPWSTR TmpPtrW;
+	HGLOBAL TmpHandle;
+	int BuffLen, BracketLen;
 
 	if (! cv.Ready) {
 		return;
@@ -160,11 +154,6 @@
 		return;
 	}
 
-	CBAddCR = AddCR;
-	if (Bracketed) {
-		CBBracketed = CB_BRACKET_START;
-	}
-
 	if (IsClipboardFormatAvailable(CF_UNICODETEXT)) {
 		Cf = CF_UNICODETEXT;
 	}
@@ -183,48 +172,72 @@
 	CBMemHandle = NULL;
 	CBMemPtr = NULL;
 	CBMemPtr2 = 0;
-	CBDDE = FALSE;
-	CBWIDE = FALSE;
-	CBInsertDelay = FALSE;
 
+	if (ts.PasteDelayPerLine > 0) {
+		CBInsertDelay = TRUE;
+	}
+	else {
+		CBInsertDelay = FALSE;
+	}
+
 	CBRetrySend = FALSE;
 	CBRetryEcho = FALSE;
 	CBSendCR = FALSE;
 
-	if (ts.PasteDelayPerLine > 0) {
-		CBInsertDelay = TRUE;
-	}
 	if (OpenClipboard(HWin)) {
-		if (Cf == CF_UNICODETEXT) {
-			// \x93\\x82\xE8\x95t\x82\xAF\x8F\x88\x97\x9D\x82ł\xCD CBMemHandle \x82ł͂Ȃ\xAD dde \x82Ɠ\xAF\x82\xB6\x82悤\x82\xC9 CBMemPtr \x82\xAA\x8Eg\x82\xED\x82\xEA\x82\xE9
-			HGLOBAL TmpHandle = GetClipboardData(Cf);
-			CBWIDE = TRUE;
-			if (TmpHandle) {
-				LPWSTR TmpPtr = (LPWSTR)GlobalLock(TmpHandle);
-				int mb_len = WideCharToMultiByte(CP_ACP, 0, TmpPtr, -1, 0, 0, NULL, NULL);
+		if ((TmpHandle = GetClipboardData(Cf)) != NULL) {
+			if (Cf == CF_UNICODETEXT) {
+				TmpPtrW = (LPWSTR)GlobalLock(TmpHandle);
+				BuffLen = WideCharToMultiByte(CP_ACP, 0, TmpPtrW, -1, 0, 0, NULL, NULL);
+			}
+			else {
+				TmpPtr = (PCHAR)GlobalLock(TmpHandle);
+				BuffLen = strlen(TmpPtr) + 1;
+			}
 
-				CBMemHandle = GlobalAlloc(GHND, mb_len);
-				if (CBMemHandle != NULL) {
-					CBMemPtr = GlobalLock(CBMemHandle);
-					if (CBMemPtr != NULL) {
-						WideCharToMultiByte(CP_ACP, 0, TmpPtr, -1, CBMemPtr, mb_len, NULL, NULL);
+			if (Bracketed) {
+				BuffLen += sizeof(BracketStart) + sizeof(BracketEnd);
+			}
 
-						GlobalUnlock(CBMemHandle);
-						CBMemPtr=NULL;
-						TalkStatus=IdTalkCB;
+			if (AddCR) {
+				BuffLen++;
+			}
+
+			if ((CBMemHandle = GlobalAlloc(GHND, BuffLen)) != NULL) {
+				if ((CBMemPtr = GlobalLock(CBMemHandle)) != NULL) {
+					if (Bracketed) {
+						strncpy_s(CBMemPtr, BuffLen, BracketStart, _TRUNCATE);
+						BracketLen = strlen(CBMemPtr);
 					}
+					else {
+						BracketLen = 0;
+					}
 
-					GlobalUnlock(TmpHandle);
-					CloseClipboard();
+					if (Cf == CF_UNICODETEXT) {
+						WideCharToMultiByte(CP_ACP, 0, TmpPtrW, -1, CBMemPtr+BracketLen, BuffLen-BracketLen, NULL, NULL);
+					}
+					else {
+						strncat_s(CBMemPtr, BuffLen, TmpPtr, _TRUNCATE);
+					}
+
+					if (Bracketed) {
+						strncat_s(CBMemPtr, BuffLen, BracketEnd, _TRUNCATE);
+					}
+
+					if (AddCR) {
+						strncat_s(CBMemPtr, BuffLen, "\r", _TRUNCATE);
+					}
+
+					CBMemPtr = NULL;
+
+					TalkStatus = IdTalkCB;
 				}
+				GlobalUnlock(CBMemHandle);
+				CBMemPtr = NULL;
 			}
+			GlobalUnlock(TmpHandle);
 		}
-		else {
-			CBMemHandle = GetClipboardData(Cf);
-			if (CBMemHandle!=NULL) {
-				TalkStatus=IdTalkCB;
-			}
-		}
+		CloseClipboard();
 	}
 
 	if (TalkStatus != IdTalkCB) {
@@ -252,8 +265,6 @@
 	CBMemHandle = NULL;
 	CBMemPtr = NULL;
 	CBMemPtr2 = 0;
-	CBDDE = TRUE;
-	CBWIDE = FALSE;
 
 	if (ts.PasteDelayPerLine > 0) {
 		CBInsertDelay = TRUE;
@@ -262,6 +273,10 @@
 		CBInsertDelay = FALSE;
 	}
 
+	CBRetrySend = FALSE;
+	CBRetryEcho = FALSE;
+	CBSendCR = FALSE;
+
 	if (IsClipboardFormatAvailable(CF_UNICODETEXT) && OpenClipboard(HWin)) {
 		Cf = CF_UNICODETEXT;
 		if ((tmpHandle = GetClipboardData(CF_UNICODETEXT)) == NULL) {
@@ -281,7 +296,6 @@
 		}
 	}
 
-
 	if (tmpHandle) {
 		if (Cf == CF_UNICODETEXT) {
 			if ((tmpPtrWide = GlobalLock(tmpHandle)) != NULL) {
@@ -332,9 +346,6 @@
 		CloseClipboard();
 	}
 
-	CBRetrySend = FALSE;
-	CBRetryEcho = FALSE;
-	CBSendCR = FALSE;
 	if (TalkStatus != IdTalkCB) {
 		CBEndPaste();
 	}
@@ -352,9 +363,6 @@
 	int c;
 	BOOL EndFlag;
 	static DWORD lastcr;
-	static char BracketStart[] = "\033[200~";
-	static char BracketEnd[] = "\033[201~";
-	static int BracketPtr = 0;
 	DWORD now;
 
 	if (CBMemHandle==NULL) {
@@ -408,14 +416,7 @@
 		}
 
 		EndFlag = (CBMemPtr[CBMemPtr2]==0);
-		if (CBBracketed == CB_BRACKET_START) {
-			CBByte = BracketStart[BracketPtr++];
-			if (BracketPtr >= sizeof(BracketStart) - 1) {
-				CBBracketed = CB_BRACKET_END;
-				BracketPtr = 0;
-			}
-		}
-		else if (! EndFlag) {
+		if (! EndFlag) {
 			CBByte = CBMemPtr[CBMemPtr2];
 			CBMemPtr2++;
 // Decoding characters which are encoded by MACRO
@@ -430,19 +431,6 @@
 				CBByte = CBByte - 1; // character just after 0x01
 			}
 		}
-		else if (CBAddCR) {
-			EndFlag = FALSE;
-			CBAddCR = FALSE;
-			CBByte = 0x0d;
-		}
-		else if (CBBracketed == CB_BRACKET_END) {
-			EndFlag = FALSE;
-			CBByte = BracketEnd[BracketPtr++];
-			if (BracketPtr >= sizeof(BracketEnd) - 1) {
-				CBBracketed = CB_BRACKET_NONE;
-				BracketPtr = 0;
-			}
-		}
 		else {
 			CBEndPaste();
 			return;
@@ -530,20 +518,12 @@
 		if (CBMemPtr!=NULL) {
 			GlobalUnlock(CBMemHandle);
 		}
-		if (CBDDE || CBWIDE) {
-			GlobalFree(CBMemHandle);
-		}
+		GlobalFree(CBMemHandle);
 	}
-	if (!CBDDE && !CBWIDE) {
-		CloseClipboard();
-	}
 
-	CBDDE = FALSE;
-	CBWIDE = FALSE;
 	CBMemHandle = NULL;
 	CBMemPtr = NULL;
 	CBMemPtr2 = 0;
-	CBAddCR = FALSE;
 	CBEchoOnly = FALSE;
 	CBInsertDelay = FALSE;
 }

Added: trunk/tests/bracketed-paste-test.rb
===================================================================
--- trunk/tests/bracketed-paste-test.rb	                        (rev 0)
+++ trunk/tests/bracketed-paste-test.rb	2016-07-15 09:33:36 UTC (rev 6449)
@@ -0,0 +1,226 @@
+#!/usr/bin/env ruby
+# encoding: ASCII-8BIT
+
+Encoding.default_external = "ASCII-8BIT" if RUBY_VERSION >= "1.9.0"
+
+require 'timeout'
+require 'kconv'
+
+def rawio(t=nil, &blk)
+  saved_mode = nil
+  open("|stty -g") do |stty|
+    saved_mode = stty.gets
+  end
+  begin
+    system("stty raw -echo")
+    if t
+      return Timeout.timeout(t, &blk) 
+    else
+      return blk.call
+    end
+  ensure
+    system("stty #{saved_mode}")
+  end
+end
+
+def check_kcode
+  begin
+    rawio(1) do
+      print "\r\xe6\xa4\xa3\xe6\x8e\xa7\e[6n\e[1K\r"
+      buff = ""
+      while c = STDIN.getc
+	buff << c.chr
+	if /(\x9c|\x1b\[)(\d+);(\d+)R/ =~ buff
+	  case $3.to_i
+	  when 5
+	    $out_code = :toutf8
+	  when 6
+	    $out_code = :toeuc
+	  when 7
+	    $out_code = :tosjis
+	  end
+	  break
+ 	end
+      end
+    end
+  rescue Timeout::Error
+    $out_code = nil
+  end
+end
+
+def msgout(msg)
+  if $out_code
+    puts msg.to_s.method($out_code).call
+  else
+    puts msg.to_s
+  end
+end
+
+def getClipboard
+  begin
+    return rawio(1) do
+      rdata = ""
+      cbnum = ""
+
+      print "\e]52;c;?\e\\"
+
+      while (c = STDIN.getc)
+	break if c.ord == 3 || c.ord == 4
+	rdata << c
+	if /(\e\]|\x9d)52;([cps0-7]+);/ =~ rdata
+	  cbnum = $2
+	  break
+	end
+      end
+
+      rdata = ""
+      if (cbnum != "")
+	while (c = STDIN.getc)
+	  break if c.ord == 3 || c.ord == 4
+	  rdata << c
+	  if /(\x9c|\x1b\\)/ =~ rdata
+	    return $`.unpack("m")[0]
+	    break
+	  end
+	end
+      end
+      nil
+    end
+  rescue Timeout::Error
+    nil
+  end
+end
+
+def setClipboard(data)
+  printf "\e]52;c;#{[data].pack("m").chomp}\e\\"
+end
+
+def getBracketedString
+  bracket_type = nil
+  rdata = ""
+  begin
+    return rawio(30) do
+      pdata = nil
+
+      c = STDIN.getc
+      if c.ord == 3 || c.ord == 4
+	return [:interrupt, rdata]
+      end
+      rdata << c
+
+      # \xB0\xECʸ\xBB\xFA\xA4Ǥ\xE2\xCD褿\xA4\xE9\xBBĤ\xEA\xA4Υ\xBF\xA5\xA4\xA5ॢ\xA5\xA6\xA5Ȥ\xF2 1 \xC9ä\xCB\xCAѹ\xB9\xA4\xB9\xA4\xEB
+      Timeout.timeout(1) do
+	while (c = STDIN.getc)
+	  if c.ord == 3 || c.ord == 4
+	    return [:interrupt, rdata]
+	  end
+	  rdata << c
+	  if /(?:\e\[|\x9b)20([01])~/ =~ rdata
+	    pdata = $`
+	    bracket_type = $1.to_i
+	    break
+	  end
+	end
+
+	case bracket_type
+	when nil
+	  # \xA4\xB3\xA4ʤ\xA4\xA4Ϥ\xBA\xA4\xC0\xA4\xB1\xA4\xC9
+	  return [:interrupt, rdata]
+	when 0
+	  nil
+	when 1
+	  return [:nostart, pdata]
+	else
+	  # \xA4\xB3\xA4\xEC\xA4\xE2\xA4ʤ\xA4\xA4Ϥ\xBA
+	  return [:invalid, bracket_type]
+	end
+
+	rdata = ""
+	while (c = STDIN.getc)
+	  if c.ord == 3 || c.ord == 4
+	    return [:interrupt, rdata]
+	  end
+	  rdata << c
+	  if /(\e\[|\x9b)201~/ =~ rdata
+	    return [:ok, $`]
+	  end
+	end
+      end
+      [:noend, rdata]
+    end
+  rescue Timeout::Error
+    case bracket_type
+    when nil
+      [:timeout, rdata]
+    when 0
+      [:noend, rdata]
+    when 1
+      [:nostart, rdata]
+    else
+      return [:invalid, bracket_type]
+    end
+  ensure
+    print "\e[?2004l"
+  end
+end
+
+def testBracketedPaste(msg, str, enableBracket)
+  msgout msg
+  setClipboard str
+  print "\e[?2004h" if enableBracket
+  msgout "Ž\xA4\xEA\xC9դ\xB1\xC1\xE0\xBA\xEE(\xA5ޥ\xA6\xA5\xB9\xB1\xA6\xA5ܥ\xBF\xA5󥯥\xEA\xA5å\xAF\xA4\xE4Alt+v\xC5\xF9)\xA4\xF2\xB9ԤäƤ\xAF\xA4\xC0\xA4\xB5\xA4\xA4\xA1\xA3"
+  result, data = getBracketedString
+
+  case result
+  when :ok
+    if enableBracket
+      if str == data
+	msgout "\xB7\xEB\xB2\xCC: \xA1\xFB"
+      else
+	msgout "\xB7\xEB\xB2\xCC: \xA1\xDF - \xC0\xDF\xC4\xEA\xA4ȱ\xFE\xC5\xFA\xA4\xAC\xB0\xEC\xC3פ\xB7\xA4ޤ\xBB\xA4󡣼\xF5\xBF\xAEʸ\xBB\xFA\xCE\xF3: \"#{data}\""
+      end
+    else
+      if str == data
+	msgout "\xB7\xEB\xB2\xCC: \xA1\xDF - \xC8\xF3ͭ\xB8\xFA\xB2\xBD\xA4ʤΤ\xCB Bracket \xA4ǰϤޤ\xEC\xA4Ƥ\xA4\xA4ޤ\xB9\xA1\xA3"
+      else
+	msgout "\xB7\xEB\xB2\xCC: \xA1\xDF - \xC8\xF3ͭ\xB8\xFA\xB2\xBD\xA4ʤΤ\xCB Bracket \xA4ǰϤޤ\xEC\xA4Ƥ\xA4\xA4ޤ\xB9\xA1\xA3\xC0\xDF\xC4\xEA\xA4ȱ\xFE\xC5\xFA\xA4\xAC\xB0\xEC\xC3פ\xB7\xA4ޤ\xBB\xA4󡣼\xF5\xBF\xAEʸ\xBB\xFA\xCE\xF3: \"#{data}\""
+      end
+    end
+  when :interrupt
+    msgout "\xB7\xEB\xB2\xCC: \xA1\xDF - \xBD\xE8\xCD\xFD\xA4\xAC\xC3\xE6\xC3Ǥ\xB5\xA4\xEC\xA4ޤ\xB7\xA4\xBF\xA1\xA3"
+  when :invalid
+    msgout "\xB7\xEB\xB2\xCC: \xA1\xDF - \xB0۾\xEF\xA4ʾ\xF5\xC2֤Ǥ\xB9\xA1\xA3"
+  when :timeout
+    if enableBracket
+      if str == data
+	msgout "\xB7\xEB\xB2\xCC: \xA1\xDF - \xB1\xFE\xC5\xFA\xA4\xAC Bracket \xA4ǰϤޤ\xEC\xA4Ƥ\xA4\xA4ޤ\xBB\xA4\xF3\xA1\xA3"
+      else
+	msgout "\xB7\xEB\xB2\xCC: \xA1\xDF - \xA5\xBF\xA5\xA4\xA5ॢ\xA5\xA6\xA5Ȥ\xB7\xA4ޤ\xB7\xA4\xBF\xA1\xA3\xBC\xF5\xBF\xAEʸ\xBB\xFA\xCE\xF3: \"#{data}\""
+      end
+    else
+      if str == data
+	msgout "\xB7\xEB\xB2\xCC: \xA1\xFB"
+      else
+	msgout "\xB7\xEB\xB2\xCC: \xA1\xDF - \xC0\xDF\xC4\xEA\xA4ȱ\xFE\xC5\xFA\xA4\xAC\xB0\xEC\xC3פ\xB7\xA4ޤ\xBB\xA4󡣼\xF5\xBF\xAEʸ\xBB\xFA\xCE\xF3: \"#{data}\""
+      end
+    end
+  when :nostart
+    msgout "\xB7\xEB\xB2\xCC: \xA1\xDF - \xB3\xAB\xBB\xCF Bracket \xA4\xAC\xCD\xE8\xA4ʤ\xA4\xA4Τ˽\xAAλ Bracket \xA4\xAC\xCD\xE8\xA4ޤ\xB7\xA4\xBF\xA1\xA3\xBC\xF5\xBF\xAEʸ\xBB\xFA\xCE\xF3: \"#{data}\""
+  when :noend
+    msgout "\xB7\xEB\xB2\xCC: \xA1\xDF - \xB3\xAB\xBB\xCF Bracket \xA4\xCF\xCD\xE8\xA4ޤ\xB7\xA4\xBF\xA4\xAC\xBD\xAAλ Bracket \xA4\xAC\xCD\xE8\xA4ޤ\xBB\xA4\xF3\xA4Ǥ\xB7\xA4\xBF\xA1\xA3\xBC\xF5\xBF\xAEʸ\xBB\xFA\xCE\xF3: \"#{data}\""
+  else
+    msgout "\xB7\xEB\xB2\xCC: \xA1\xDF - \xB0۾\xEF\xA4ʾ\xF5\xC2֤Ǥ\xB9\xA1\xA3"
+  end
+  puts ""
+end
+
+check_kcode
+msgout "Bracketed Paste Mode \xA4Υƥ\xB9\xA5Ȥ\xF2\xB9Ԥ\xA4\xA4ޤ\xB9\xA1\xA3"
+msgout "\xA1\xD6\xC0\xDF\xC4\xEA\xA1ע֤͡\xBD\xA4\xCE¾\xA4\xCE\xC0\xDF\xC4\xEA\xA1ע͡\xD6\xC0\xA9\xB8楷\xA1\xBC\xA5\xB1\xA5󥹡פˤ\xA2\xA4\xEB"
+msgout "\xA1֥\xEA\xA5⡼\xA5Ȥ\xAB\xA4\xE9\xA4Υ\xAF\xA5\xEA\xA5åץܡ\xBC\xA5ɥ\xA2\xA5\xAF\xA5\xBB\xA5\xB9\xA1פ\xF2\xA1Ƚ\xF1\xB9\xFE\xA4Τߡɤޤ\xBF\xA4ϡ\xC8\xC6ɹ\xFE/\xBD\xF1\xB9\xFE\xA1ɤˤ\xB7\xA4Ʋ\xBC\xA4\xB5\xA4\xA4\xA1\xA3"
+msgout "\xBD\xE0\xC8\x{1E4B3D}\xD0\xCD褿\xA4\xE9\xA5꥿\xA1\xBC\xA5󥭡\xBC\xA4򲡤\xB7\xA4Ʋ\xBC\xA4\xB5\xA4\xA4\xA1\xA3"
+STDIN.gets
+
+testBracketedPaste("\xA5ƥ\xB9\xA5\xC81: \xC4̾\xEF", "Bracketed Paste Test", true)
+testBracketedPaste("\xA5ƥ\xB9\xA5\xC82: \xB6\xF5ʸ\xBB\xFA\xCE\xF3", "", true)
+testBracketedPaste("\xA5ƥ\xB9\xA5\xC83: \xC8\xF3ͭ\xB8\xFA\xB2\xBD", "Non-Bracketed Mode Test", false)


Property changes on: trunk/tests/bracketed-paste-test.rb
___________________________________________________________________
Added: svn:executable
   + *



Ttssh2-commit メーリングリストの案内
Zurück zum Archiv-Index