diff options
Diffstat (limited to 'src/Editor.cxx')
| -rw-r--r-- | src/Editor.cxx | 34 | 
1 files changed, 20 insertions, 14 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx index 9f65203d2..8590c362f 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -3246,6 +3246,23 @@ void Editor::EnsureLineVisible(int lineDoc) {  	}  } +int Editor::ReplaceTarget(bool replacePatterns, const char *text) { +	pdoc->BeginUndoAction(); +	if (replacePatterns) { +		text = pdoc->SubstituteByPosition(text); +		if (!text) +			return 0; +	} +	if (targetStart != targetEnd) +		pdoc->DeleteChars(targetStart, targetEnd - targetStart); +	targetEnd = targetStart; +	unsigned int len = strlen(text); +	pdoc->InsertString(targetStart, text); +	targetEnd = targetStart + len; +	pdoc->EndUndoAction(); +	return len; +} +  static bool ValidMargin(unsigned long wParam) {  	return wParam < ViewStyle::margins;  } @@ -3566,20 +3583,9 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {  		targetEnd = wParam;  		break; -	case SCI_REPLACETARGET: { -			if (lParam == 0) -				return 0; -			pdoc->BeginUndoAction(); -			unsigned int chars = targetEnd - targetStart; -			if (targetStart != targetEnd) -				pdoc->DeleteChars(targetStart, chars); -			targetEnd = targetStart; -			char *replacement = reinterpret_cast<char *>(lParam); -			pdoc->InsertString(targetStart, replacement); -			targetEnd = targetStart + strlen(replacement); -			pdoc->EndUndoAction(); -		} -		break; +	case SCI_REPLACETARGET:  +		PLATFORM_ASSERT(lParam); +		return ReplaceTarget(wParam, reinterpret_cast<char *>(lParam));  	case EM_LINESCROLL:  	case SCI_LINESCROLL:  | 
