[Ttssh2-commit] [8136] IRM(挿入モード)が動作

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2019年 9月 13日 (金) 01:00:34 JST


Revision: 8136
          https://osdn.net/projects/ttssh2/scm/svn/commits/8136
Author:   zmatsuo
Date:     2019-09-13 01:00:34 +0900 (Fri, 13 Sep 2019)
Log Message:
-----------
IRM(挿入モード)が動作

- r8103相当

Modified Paths:
--------------
    branches/unicode_buf/teraterm/teraterm/buffer.c
    branches/unicode_buf/teraterm/teraterm/vtterm.c

-------------- next part --------------
Modified: branches/unicode_buf/teraterm/teraterm/buffer.c
===================================================================
--- branches/unicode_buf/teraterm/teraterm/buffer.c	2019-09-12 16:00:23 UTC (rev 8135)
+++ branches/unicode_buf/teraterm/teraterm/buffer.c	2019-09-12 16:00:34 UTC (rev 8136)
@@ -2856,137 +2856,153 @@
 		Attr.Attr |= AttrLineContinued;
 	}
 
-	if (Insert) {
-		// TODO \x96\xA2\x83`\x83F\x83b\x83N
-		int XStart, LineEnd, MoveLen;
-		int extr = 0;
-		if (CursorX > CursorRightM)
-			LineEnd = NumOfColumns - 1;
-		else
-			LineEnd = CursorRightM;
+	buff_char_t *p = NULL;	// NULL\x82̂Ƃ\xAB\x81A\x91O\x82̕\xB6\x8E\x9A\x82͂Ȃ\xA2
+	// \x91O\x82̕\xB6\x8E\x9A
+	if (CursorX >= 1 && CodeLineW[CursorX - 1].u32 != 0) {
+		p = &CodeLineW[CursorX - 1];
+	} else if (CursorX >= 2 && CodeLineW[CursorX - 2].u32 != 0) {
+		p = &CodeLineW[CursorX - 2];
+	}
 
-		if (LineEnd < NumOfColumns - 1 && (AttrLine[LineEnd] & AttrKanji)) {
-			CodeLine[LineEnd] = 0x20;
-#if UNICODE_INTERNAL_BUFF
-			BuffSetChar(&CodeLineW[LineEnd], 0x20, 'H');
-#endif
-			AttrLine[LineEnd] &= ~AttrKanji;
-			CodeLine[LineEnd+1] = 0x20;
-			AttrLine[LineEnd+1] &= ~AttrKanji;
-			extr = 1;
-		}
+	if (UnicodeIsVariationSelector(u32) ||
+		UnicodeIsCombiningCharacter(u32) ||
+		(u32 == 0x200d) ||
+		(p != NULL && p->u32_last == 0x200d))
+	{
+		// Combining
+		//		VariationSelector or
+		//		CombiningCharacter or
+		//		\x83[\x83\x8D\x95\x9D\x90ڍ\x87\x8Eq,ZERO WIDTH JOINER(ZWJ) (U+200d) or
+		//		1\x82‘O\x82\xAA ZWJ
+		move_x = 0;				// \x83J\x81[\x83\\x83\x8B\x88ړ\xAE\x97\xCA=0
 
-		MoveLen = LineEnd - CursorX - 1;
-		if (MoveLen > 0) {
-			memmove(&CodeLine[CursorX+2], &CodeLine[CursorX], MoveLen);
-#if UNICODE_INTERNAL_BUFF
-			memmoveW(&(CodeLineW[CursorX+2]), &(CodeLineW[CursorX]), MoveLen);
-#endif
-			memmove(&AttrLine[CursorX+2], &AttrLine[CursorX], MoveLen);
-			memmove(&AttrLine2[CursorX+2], &AttrLine2[CursorX], MoveLen);
-			memmove(&AttrLineFG[CursorX+2], &AttrLineFG[CursorX], MoveLen);
-			memmove(&AttrLineBG[CursorX+2], &AttrLineBG[CursorX], MoveLen);
+		if (p == NULL) {
+			// \x91O\x82\xAA\x82Ȃ\xA2\x82̂ɂ\xAD\x82\xC1\x82‚\xAD\x95\xB6\x8E\x9A\x82\xAA\x8Fo\x82Ă\xAB\x82\xBD\x82Ƃ\xAB
+			// \x82Ƃ肠\x82\xA6\x82\xB8\x83X\x83y\x81[\x83X\x82ɂ\xAD\x82\xC1\x82‚\xAF\x82\xE9
+			p = &CodeLineW[CursorX];
+			BuffSetChar(p, ' ', 'H');
 		}
 
-		CodeLine[CursorX] = b1;
-#if UNICODE_INTERNAL_BUFF
-		BuffSetChar(&CodeLineW[CursorX], u32, 'H');
-#endif
+		// \x91O\x82̕\xB6\x8E\x9A\x82ɂ\xAD\x82\xC1\x82‚\xAF\x82\xE9
+		BuffAddChar(p, u32);
+#if 0
 		AttrLine[CursorX] = Attr.Attr;
 		AttrLine2[CursorX] = Attr.Attr2;
 		AttrLineFG[CursorX] = Attr.Fore;
 		AttrLineBG[CursorX] = Attr.Back;
-		if (CursorX < LineEnd) {
-			CodeLine[CursorX+1] = 0;
+#endif
+	} else {
+		char width_property;
+		char emoji;
+		BOOL half_width = BuffIsHalfWidthFromCode(&ts, u32, &width_property, &emoji);
+		if (Insert) {
+			// \x91}\x93\xFC\x83\x82\x81[\x83h
+			// TODO \x96\xA2\x83`\x83F\x83b\x83N
+			int XStart, LineEnd, MoveLen;
+			int extr = 0;
+			if (CursorX > CursorRightM)
+				LineEnd = NumOfColumns - 1;
+			else
+				LineEnd = CursorRightM;
+
+			// \x88\xEA\x94ԍŌ\xE3\x82̕\xB6\x8E\x9A\x82\xAA\x91S\x8Ap\x82̏ꍇ\x81A
+			if (LineEnd <= NumOfColumns - 1 && (AttrLine[LineEnd-1] & AttrKanji)) {
+				CodeLine[LineEnd-1] = 0x20;
 #if UNICODE_INTERNAL_BUFF
-			BuffSetChar(&CodeLineW[CursorX + 1], 0, 'H');
+				BuffSetChar(&CodeLineW[LineEnd-1], 0x20, 'H');
 #endif
-			AttrLine[CursorX+1] = Attr.Attr;
-			AttrLine2[CursorX+1] = Attr.Attr2;
-			AttrLineFG[CursorX+1] = Attr.Fore;
-			AttrLineBG[CursorX+1] = Attr.Back;
-		}
-#if 0
-		/* begin - ishizaki */
-		markURL(CursorX);
-		markURL(CursorX+1);
-		/* end - ishizaki */
+				AttrLine[LineEnd] &= ~AttrKanji;
+//				CodeLine[LineEnd+1] = 0x20;
+//				AttrLine[LineEnd+1] &= ~AttrKanji;
+				extr = 1;
+			}
+
+			if (!half_width) {
+				MoveLen = LineEnd - CursorX - 1;
+				if (MoveLen > 0) {
+					memmove(&CodeLine[CursorX+2], &CodeLine[CursorX], MoveLen);
+#if UNICODE_INTERNAL_BUFF
+					memmoveW(&(CodeLineW[CursorX+2]), &(CodeLineW[CursorX]), MoveLen);
 #endif
+					memmove(&AttrLine[CursorX+2], &AttrLine[CursorX], MoveLen);
+					memmove(&AttrLine2[CursorX+2], &AttrLine2[CursorX], MoveLen);
+					memmove(&AttrLineFG[CursorX+2], &AttrLineFG[CursorX], MoveLen);
+					memmove(&AttrLineBG[CursorX+2], &AttrLineBG[CursorX], MoveLen);
+				}
+			} else {
+				MoveLen = LineEnd - CursorX;
+				if (MoveLen > 0) {
+					memmove(&CodeLine[CursorX+1], &CodeLine[CursorX], MoveLen);
+#if UNICODE_INTERNAL_BUFF
+					memmoveW(&(CodeLineW[CursorX+1]), &(CodeLineW[CursorX]), MoveLen);
+#endif
+					memmove(&AttrLine[CursorX+1], &AttrLine[CursorX], MoveLen);
+					memmove(&AttrLine2[CursorX+1], &AttrLine2[CursorX], MoveLen);
+					memmove(&AttrLineFG[CursorX+1], &AttrLineFG[CursorX], MoveLen);
+					memmove(&AttrLineBG[CursorX+1], &AttrLineBG[CursorX], MoveLen);
+				}
+			}
 
-		/* last char in current line is kanji first? */
-		if ((AttrLine[LineEnd] & AttrKanji) != 0) {
-			/* then delete it */
-			CodeLine[LineEnd] = 0x20;
+			CodeLine[CursorX] = b1;
 #if UNICODE_INTERNAL_BUFF
-			BuffSetChar(&CodeLineW[LineEnd], 0x20, 'H');
+			BuffSetChar2(&CodeLineW[CursorX], u32, width_property, half_width, emoji);
 #endif
-			AttrLine[LineEnd] = CurCharAttr.Attr;
-			AttrLine2[LineEnd] = CurCharAttr.Attr2;
-			AttrLineFG[LineEnd] = CurCharAttr.Fore;
-			AttrLineBG[LineEnd] = CurCharAttr.Back;
-		}
-
-		if (StrChangeCount==0) {
-			XStart = CursorX;
-		}
-		else {
-			XStart = StrChangeStart;
-		}
-		StrChangeCount = 0;
-		BuffUpdateRect(XStart, CursorY, LineEnd+extr, CursorY);
-	} else {
-		if ((Attr.AttrEx & AttrPadding) != 0) {
-			// \x8Bl\x82ߕ\xA8
-			buff_char_t *p = &CodeLineW[CursorX];
-			BuffSetChar(p, u32, 'H');
-			p->Padding = TRUE;
 			AttrLine[CursorX] = Attr.Attr;
 			AttrLine2[CursorX] = Attr.Attr2;
 			AttrLineFG[CursorX] = Attr.Fore;
 			AttrLineBG[CursorX] = Attr.Back;
-			move_x = 1;
-		} else {
-			buff_char_t *p = NULL;	// NULL\x82̂Ƃ\xAB\x81A\x91O\x82̕\xB6\x8E\x9A\x82͂Ȃ\xA2
-			// \x91O\x82̕\xB6\x8E\x9A
-			if (CursorX >= 1 && CodeLineW[CursorX - 1].u32 != 0) {
-				p = &CodeLineW[CursorX - 1];
-			} else if (CursorX >= 2 && CodeLineW[CursorX - 2].u32 != 0) {
-				p = &CodeLineW[CursorX - 2];
+			if (!half_width && CursorX < LineEnd) {
+				CodeLine[CursorX+1] = 0;
+#if UNICODE_INTERNAL_BUFF
+				BuffSetChar(&CodeLineW[CursorX + 1], 0, 'H');
+#endif
+				AttrLine[CursorX+1] = Attr.Attr;
+				AttrLine2[CursorX+1] = Attr.Attr2;
+				AttrLineFG[CursorX+1] = Attr.Fore;
+				AttrLineBG[CursorX+1] = Attr.Back;
 			}
+#if 0
+			/* begin - ishizaki */
+			markURL(CursorX);
+			markURL(CursorX+1);
+			/* end - ishizaki */
+#endif
 
-			if (UnicodeIsVariationSelector(u32) ||
-				UnicodeIsCombiningCharacter(u32) ||
-				(u32 == 0x200d) ||
-				(p != NULL && p->u32_last == 0x200d))
-			{
-				// Combining
-				//		VariationSelector or
-				//		CombiningCharacter or
-				//		\x83[\x83\x8D\x95\x9D\x90ڍ\x87\x8Eq,ZERO WIDTH JOINER(ZWJ) (U+200d) or
-				//		1\x82‘O\x82\xAA ZWJ
-				move_x = 0;				// \x83J\x81[\x83\\x83\x8B\x88ړ\xAE\x97\xCA=0
+			/* last char in current line is kanji first? */
+			if ((AttrLine[LineEnd] & AttrKanji) != 0) {
+				/* then delete it */
+				CodeLine[LineEnd] = 0x20;
+#if UNICODE_INTERNAL_BUFF
+				BuffSetChar(&CodeLineW[LineEnd], 0x20, 'H');
+#endif
+				AttrLine[LineEnd] = CurCharAttr.Attr;
+				AttrLine2[LineEnd] = CurCharAttr.Attr2;
+				AttrLineFG[LineEnd] = CurCharAttr.Fore;
+				AttrLineBG[LineEnd] = CurCharAttr.Back;
+			}
 
-				if (p == NULL) {
-					// \x91O\x82\xAA\x82Ȃ\xA2\x82̂ɂ\xAD\x82\xC1\x82‚\xAD\x95\xB6\x8E\x9A\x82\xAA\x8Fo\x82Ă\xAB\x82\xBD\x82Ƃ\xAB
-					// \x82Ƃ肠\x82\xA6\x82\xB8\x83X\x83y\x81[\x83X\x82ɂ\xAD\x82\xC1\x82‚\xAF\x82\xE9
-					p = &CodeLineW[CursorX];
-					BuffSetChar(p, ' ', 'H');
-				}
-
-				// \x91O\x82̕\xB6\x8E\x9A\x82ɂ\xAD\x82\xC1\x82‚\xAF\x82\xE9
-				BuffAddChar(p, u32);
-#if 0
+			if (StrChangeCount==0) {
+				XStart = CursorX;
+			}
+			else {
+				XStart = StrChangeStart;
+			}
+			StrChangeCount = 0;
+			BuffUpdateRect(XStart, CursorY, LineEnd+extr, CursorY);
+		} else {
+			if ((Attr.AttrEx & AttrPadding) != 0) {
+				// \x8Bl\x82ߕ\xA8
+				buff_char_t *p = &CodeLineW[CursorX];
+				BuffSetChar(p, u32, 'H');
+				p->Padding = TRUE;
 				AttrLine[CursorX] = Attr.Attr;
 				AttrLine2[CursorX] = Attr.Attr2;
 				AttrLineFG[CursorX] = Attr.Fore;
 				AttrLineBG[CursorX] = Attr.Back;
-#endif
+				move_x = 1;
 			} else {
 				// \x90V\x82\xB5\x82\xA2\x95\xB6\x8E\x9A\x92lj\xC1
 
-				char width_property;
-				char emoji;
-				BOOL half_width = BuffIsHalfWidthFromCode(&ts, u32, &width_property, &emoji);
 				if (half_width) {
 					// \x94\xBC\x8Ap\x82Ƃ\xB5\x82Ĉ\xB5\x82\xA4
 					move_x = 1;
@@ -3025,163 +3041,163 @@
 					}
 				}
 			}
-		}
 
-		if (StrChangeCount==0) {
-			StrChangeStart = CursorX;
-		}
-		if (move_x == 0) {
-			if (StrChangeCount == 0) {
-				StrChangeCount = 1;
+			if (StrChangeCount==0) {
+				StrChangeStart = CursorX;
 			}
-		} else if (move_x == 1) {
-			// \x94\xBC\x8Ap
-			StrChangeCount = StrChangeCount + 1;
-		} else /*if (move_x == 2)*/ {
-			// \x91S\x8Ap
-			StrChangeCount = StrChangeCount + 2;
-		}
+			if (move_x == 0) {
+				if (StrChangeCount == 0) {
+					StrChangeCount = 1;
+				}
+			} else if (move_x == 1) {
+				// \x94\xBC\x8Ap
+				StrChangeCount = StrChangeCount + 1;
+			} else /*if (move_x == 2)*/ {
+				// \x91S\x8Ap
+				StrChangeCount = StrChangeCount + 2;
+			}
 
-		// URL\x82̌\x9F\x8Fo
-		// DEL\x8E\x9E\x82\xC9URL\x82\xBE\x82\xC1\x82\xBD\x82\xE7URL\x95\xB6\x8E\x9A\x97\xF1\x82\xF0\x8E\xE6\x82\xC1\x82Ă\xAB\x82Č\x9F\x8D\xB8\x82\xB7\x82\xE9
+			// URL\x82̌\x9F\x8Fo
+			// DEL\x8E\x9E\x82\xC9URL\x82\xBE\x82\xC1\x82\xBD\x82\xE7URL\x95\xB6\x8E\x9A\x97\xF1\x82\xF0\x8E\xE6\x82\xC1\x82Ă\xAB\x82Č\x9F\x8D\xB8\x82\xB7\x82\xE9
 #if 0
-		{
-			int x = CursorX;
-			BOOL pass = FALSE;
+			{
+				int x = CursorX;
+				BOOL pass = FALSE;
 
-			// TODO 1\x82Œ\xE3\x82\xEB\x82\xE0URL
-			// 1\x82‘O\x82̃L\x83\x83\x83\x89\x83N\x83^\x82\xAAURL?
-			// \x88\xEA\x94ԍ\xB6\x82̎\x9E\x82́A\x91O\x82̍s\x82\xA9\x82\xE7\x8Cp\x91\xB1\x82\xB5\x82Ă\xA2\x82āA\x91O\x82̍s\x82̍ŌオURL\x82\xBE\x82\xC1\x82\xBD\x8E\x9E
-			if ((x == 0 &&
-				 ((AttrLine[0] & AttrLineContinued) != 0) &&
-				 ((AttrBuff[(PageStart + (CursorY-1)) * NumOfColumns + NumOfColumns - 1] & AttrURL) != 0)) ||
-				(x >= 1 && AttrLine[x-1] & AttrURL)) {
-				if (isURLchar(u32)) {
-					// URL\x82\xF0\x90L\x82΂\xB7
-					AttrLine[x] |= AttrURL;
-					pass = TRUE;
+				// TODO 1\x82Œ\xE3\x82\xEB\x82\xE0URL
+				// 1\x82‘O\x82̃L\x83\x83\x83\x89\x83N\x83^\x82\xAAURL?
+				// \x88\xEA\x94ԍ\xB6\x82̎\x9E\x82́A\x91O\x82̍s\x82\xA9\x82\xE7\x8Cp\x91\xB1\x82\xB5\x82Ă\xA2\x82āA\x91O\x82̍s\x82̍ŌオURL\x82\xBE\x82\xC1\x82\xBD\x8E\x9E
+				if ((x == 0 &&
+					 ((AttrLine[0] & AttrLineContinued) != 0) &&
+					 ((AttrBuff[(PageStart + (CursorY-1)) * NumOfColumns + NumOfColumns - 1] & AttrURL) != 0)) ||
+					(x >= 1 && AttrLine[x-1] & AttrURL)) {
+					if (isURLchar(u32)) {
+						// URL\x82\xF0\x90L\x82΂\xB7
+						AttrLine[x] |= AttrURL;
+						pass = TRUE;
+					}
 				}
-			}
 
-			// \x83J\x81[\x83\\x83\x8B\x88ʒu\x82\xAAURL
-			if ((AttrLine[x] & AttrURL) != 0) {
-				pass = TRUE;	// \x82\xE2\x82邱\x82ƂȂ\xB5
-			}
+				// \x83J\x81[\x83\\x83\x8B\x88ʒu\x82\xAAURL
+				if ((AttrLine[x] & AttrURL) != 0) {
+					pass = TRUE;	// \x82\xE2\x82邱\x82ƂȂ\xB5
+				}
 
-			if (!pass) {
-				// '/' \x82\xAA\x93\xFC\x97͂\xB3\x82ꂽ\x82璲\x82׎n\x82߂\xE9
-				if (u32 == '/') {
-					if (MatchString(x-2, PageStart+CursorY, L"://", TRUE)) {
-						pass = FALSE;
-					}
+				if (!pass) {
+					// '/' \x82\xAA\x93\xFC\x97͂\xB3\x82ꂽ\x82璲\x82׎n\x82߂\xE9
+					if (u32 == '/') {
+						if (MatchString(x-2, PageStart+CursorY, L"://", TRUE)) {
+							pass = FALSE;
+						}
 #if 0
-					if ((CodeLineW[x-2].u32 == ':') && (CodeLineW[x-2].CombinationCharCount16 == 0) &&
-						(CodeLineW[x-1].u32 == '/') && (CodeLineW[x-1].CombinationCharCount16 == 0) &&
-						(CodeLineW[x-0].u32 == '/') && (CodeLineW[x-0].CombinationCharCount16 == 0))
-					{	// "://"\x82\xAA\x93\xFC\x97͂\xB3\x82ꂽ
-						pass = FALSE;
+						if ((CodeLineW[x-2].u32 == ':') && (CodeLineW[x-2].CombinationCharCount16 == 0) &&
+							(CodeLineW[x-1].u32 == '/') && (CodeLineW[x-1].CombinationCharCount16 == 0) &&
+							(CodeLineW[x-0].u32 == '/') && (CodeLineW[x-0].CombinationCharCount16 == 0))
+						{	// "://"\x82\xAA\x93\xFC\x97͂\xB3\x82ꂽ
+							pass = FALSE;
+						} else {
+							pass = TRUE;
+						}
+#endif
 					} else {
 						pass = TRUE;
 					}
-#endif
-				} else {
-					pass = TRUE;
 				}
-			}
 
-			if (!pass) {
-				// \x96{\x8Ai\x93I\x82ɒT\x82\xB7
-				static const struct schemes_t {
-					const wchar_t *str;
-					int len;
-				} schemes[] = {
-					{ L"https://", 8 },
-					{ L"http://", 7},
-					{ L"sftp://", 7},
-					{ L"tftp://", 7},
-					{ L"news://", 7},
-					{ L"ftp://", 6},
-					{ L"mms://", 6},
-				};
-				int i;
-				for (i = 0; i < _countof(schemes); i++) {
-					const wchar_t *prefix = schemes[i].str;
-					const int len = schemes[i].len - 1;
-					int sx = x - len;
-					int sy = PageStart + CursorY;
-					int ey = sy;
-					if (x < len) {
-						// \x92Z\x82\xA2
-						if ((AttrLine[0] & AttrLineContinued) == 0) {
-							// \x91O\x82̍s\x82ƘA\x8C\x8B\x82\xB5\x82Ă\xA2\x82Ȃ\xA2
-							continue;
+				if (!pass) {
+					// \x96{\x8Ai\x93I\x82ɒT\x82\xB7
+					static const struct schemes_t {
+						const wchar_t *str;
+						int len;
+					} schemes[] = {
+						{ L"https://", 8 },
+						{ L"http://", 7},
+						{ L"sftp://", 7},
+						{ L"tftp://", 7},
+						{ L"news://", 7},
+						{ L"ftp://", 6},
+						{ L"mms://", 6},
+					};
+					int i;
+					for (i = 0; i < _countof(schemes); i++) {
+						const wchar_t *prefix = schemes[i].str;
+						const int len = schemes[i].len - 1;
+						int sx = x - len;
+						int sy = PageStart + CursorY;
+						int ey = sy;
+						if (x < len) {
+							// \x92Z\x82\xA2
+							if ((AttrLine[0] & AttrLineContinued) == 0) {
+								// \x91O\x82̍s\x82ƘA\x8C\x8B\x82\xB5\x82Ă\xA2\x82Ȃ\xA2
+								continue;
+							}
+							// \x91O\x82̍s\x82\xA9\x82猟\x8D\x{142A42}\xAF\x82\xE9
+							sx = NumOfColumns + sx;
+							sy = PageStart + CursorY - 1;
 						}
-						// \x91O\x82̍s\x82\xA9\x82猟\x8D\x{142A42}\xAF\x82\xE9
-						sx = NumOfColumns + sx;
-						sy = PageStart + CursorY - 1;
-					}
-					// \x83}\x83b\x83`\x82\xB7\x82邩?
-					int match_x, match_y;
-					if (BuffGetMatchPosFromString(sx, sy, x, ey, prefix, &match_x, &match_y)) {
-						// \x83}\x83b\x83`\x82\xB5\x82\xBD\x82̂\xC5URL\x91\xAE\x90\xAB\x82\xF0\x95t\x82\xAF\x82\xE9
-						if (sy == ey) {
-							int i;
-							for (i = 0; i <= len; i++) {
-								AttrLine[sx + i] |= AttrURL;
+						// \x83}\x83b\x83`\x82\xB7\x82邩?
+						int match_x, match_y;
+						if (BuffGetMatchPosFromString(sx, sy, x, ey, prefix, &match_x, &match_y)) {
+							// \x83}\x83b\x83`\x82\xB5\x82\xBD\x82̂\xC5URL\x91\xAE\x90\xAB\x82\xF0\x95t\x82\xAF\x82\xE9
+							if (sy == ey) {
+								int i;
+								for (i = 0; i <= len; i++) {
+									AttrLine[sx + i] |= AttrURL;
+								}
+								if (StrChangeStart > sx) {
+									StrChangeStart = sx;
+									StrChangeCount += len;
+								}
 							}
-							if (StrChangeStart > sx) {
-								StrChangeStart = sx;
-								StrChangeCount += len;
-							}
-						}
-						else {
-							LONG TmpPtr = GetLinePtr(sy);
-							int xx = sx;
-							size_t left = len + 1;
-							while (left > 0) {
-								AttrBuff[TmpPtr + xx] |= AttrURL;
-								xx++;
-								if (xx == NumOfColumns) {
-									int draw_x = sx;
-									int draw_y = CursorY - 1;
-									if (IsLineVisible(&draw_x, &draw_y)) {
-										BuffDrawLineI(draw_x, draw_y, PageStart+CursorY-1, sx, NumOfColumns-1);
+							else {
+								LONG TmpPtr = GetLinePtr(sy);
+								int xx = sx;
+								size_t left = len + 1;
+								while (left > 0) {
+									AttrBuff[TmpPtr + xx] |= AttrURL;
+									xx++;
+									if (xx == NumOfColumns) {
+										int draw_x = sx;
+										int draw_y = CursorY - 1;
+										if (IsLineVisible(&draw_x, &draw_y)) {
+											BuffDrawLineI(draw_x, draw_y, PageStart+CursorY-1, sx, NumOfColumns-1);
+										}
+										TmpPtr = NextLinePtr(TmpPtr);
+										xx = 0;
 									}
-									TmpPtr = NextLinePtr(TmpPtr);
-									xx = 0;
+									left--;
 								}
-								left--;
+								StrChangeStart = 0;
+								StrChangeCount = xx;
 							}
-							StrChangeStart = 0;
-							StrChangeCount = xx;
+							break;
 						}
-						break;
 					}
 				}
 			}
-		}
 #else
-		{
-			mark_url_w(CursorX, CursorY);
-		}
+			{
+				mark_url_w(CursorX, CursorY);
+			}
 #endif
 //		markURL(CursorX);
 //		markURL(CursorX+1);
-		/* end - ishizaki */
+			/* end - ishizaki */
 
 
 #if 0
-		{
-			char ba[128];
-			memcpy(ba, &CodeLine[0], _countof(ba)-1);
-			ba[127] = 0;
-			OutputDebugPrintf("A '%s'\n", ba);
-			wchar_t bb[128];
-			memcpy(bb, &CodeLineW[0], _countof(bb)-1);
-			bb[127] = 0;
-			OutputDebugPrintfW(L"W '%s'\n", bb);
+			{
+				char ba[128];
+				memcpy(ba, &CodeLine[0], _countof(ba)-1);
+				ba[127] = 0;
+				OutputDebugPrintf("A '%s'\n", ba);
+				wchar_t bb[128];
+				memcpy(bb, &CodeLineW[0], _countof(bb)-1);
+				bb[127] = 0;
+				OutputDebugPrintfW(L"W '%s'\n", bb);
+			}
+#endif
 		}
-#endif
 	}
 
 #if 0

Modified: branches/unicode_buf/teraterm/teraterm/vtterm.c
===================================================================
--- branches/unicode_buf/teraterm/teraterm/vtterm.c	2019-09-12 16:00:23 UTC (rev 8135)
+++ branches/unicode_buf/teraterm/teraterm/vtterm.c	2019-09-12 16:00:34 UTC (rev 8136)
@@ -5670,7 +5670,7 @@
 			CarriageReturn(FALSE);
 			LineFeed(LF,FALSE);
 			CharAttrTmp.Attr |= AttrLineContinued;
-			CharAttrTmp.Attr = CharAttrTmp.AttrEx;
+			CharAttrTmp.AttrEx = CharAttrTmp.Attr;
 		}
 #if 0
 		else if (CursorX > LineEnd - 1) {
@@ -5738,6 +5738,7 @@
 		} else if (r == 2) {
 			// \x91S\x8Ap(2\x83Z\x83\x8B)
 			if (CursorX + 1 == CursorRightM || CursorX + 1 >= NumOfColumns - 1) {
+				MoveRight();	// \x91S\x8Ap\x82̉E\x91\xA4\x82ɃJ\x81[\x83\\x83\x8B\x88ړ\xAE
 				UpdateStr();
 				Wrap = AutoWrapMode;
 			} else {


Ttssh2-commit メーリングリストの案内
Back to archive index