diff --git a/programs/develop/cedit/CEDIT b/programs/develop/cedit/CEDIT
index 9c0952ccd9..44c49d92f2 100644
Binary files a/programs/develop/cedit/CEDIT and b/programs/develop/cedit/CEDIT differ
diff --git a/programs/develop/cedit/SRC/CEdit.ob07 b/programs/develop/cedit/SRC/CEdit.ob07
index b3d814a024..f2900125b7 100644
--- a/programs/develop/cedit/SRC/CEdit.ob07
+++ b/programs/develop/cedit/SRC/CEdit.ob07
@@ -28,7 +28,7 @@ IMPORT
     RW, Ini, EB := EditBox, Tabs, Toolbar;
 
 CONST
-    HEADER = "CEdit (22-dec-2021)";
+    HEADER = "CEdit (23-dec-2021)";
 
     ShellFilter = "";
     EditFilter = "SH|INC|TXT|ASM|OB07|C|CPP|H|PAS|PP|LUA|INI|JSON";
@@ -218,15 +218,28 @@ VAR
 
 PROCEDURE WritePos (y: INTEGER);
 VAR
-    s1, s2: ARRAY 32 OF WCHAR;
-    line, col: INTEGER;
+	s1, s2, s3: ARRAY 32 OF WCHAR;
+	line, col, chars, lines: INTEGER;
 BEGIN
-    T.getPos(text, col, line);
-    U.int2str(line, s1);
-    U.int2str(col, s2);
-    U.append(s1, ": ");
-    U.append(s1, s2);
-    K.DrawText(LEFT, y, K.textColor, s1)
+	T.getPos(text, col, line);
+	U.int2str(line, s1);
+	U.int2str(col, s2);
+	U.append(s1, ": ");
+	U.append(s1, s2);
+	IF T.selected(text) THEN
+		T.getSelCnt(text, chars, lines);
+		s3 := "sel: ";
+		U.int2str(chars, s2);
+		U.append(s3, s2);
+		U.append(s3, " | ");
+		U.int2str(lines, s2);
+		U.append(s3, s2)
+	ELSE
+		s3 := ""
+	END;
+	K.DrawRect(LEFT, TOP + canvas.height + scrollWidth, (16+24)*fontWidth, BOTTOM - scrollWidth + 1, K.winColor);
+	K.DrawText(LEFT, y, K.textColor, s1);
+	K.DrawText(LEFT + 16*fontWidth, y, K.textColor, s3)
 END WritePos;
 
 
@@ -284,7 +297,6 @@ PROCEDURE Message (s: ARRAY OF WCHAR);
 CONST
     minWidth = 30;
     height = 40;
-    borderColor = 808080H;
 VAR
     top, left, right, bottom, x, y, width: INTEGER;
 BEGIN
@@ -298,7 +310,7 @@ BEGIN
     x := minWidth DIV 2 + left;
     y := (height - fontHeight) DIV 2 + top;
     K.DrawRect(left, top, width, height, K.winColor);
-    Rect(left, top, right, bottom, borderColor);
+    Rect(left, top, right, bottom, K.borderColor);
     K.DrawText(x, y, K.textColor, s);
 END Message;
 
@@ -376,7 +388,7 @@ BEGIN
     U.append(s, 20X + 20X);
     U.append(s, E.names[enc]);
     SetCaption(text.fileName);
-    K.DrawRect(LEFT + 16*fontWidth, TOP + canvas.height + scrollWidth, width - (LEFT + 16*fontWidth), BOTTOM - scrollWidth + 1, K.winColor);
+    K.DrawRect(LEFT + (16+24)*fontWidth, TOP + canvas.height + scrollWidth, width - (LEFT + (16+24)*fontWidth), BOTTOM - scrollWidth + 1, K.winColor);
     y := height - (BOTTOM - scrollWidth) + (BOTTOM - scrollWidth - 16) DIV 2;
     K.DrawText(width - LENGTH(s)*fontWidth - (RIGHT_PADDING + 1), y, K.textColor, s);
     MarkModified
@@ -395,7 +407,7 @@ END DrawScroll;
 
 PROCEDURE repaint;
 VAR
-    width, height, scrollX, scrollY, y: INTEGER;
+    width, height, scrollX, scrollY: INTEGER;
 BEGIN
     IF (text # NIL) & ~K.RolledUp() THEN
         IF confirm THEN
@@ -416,9 +428,7 @@ BEGIN
             switch := FALSE
         END;
         T.draw(text);
-        y := height - (BOTTOM - scrollWidth) + (BOTTOM - scrollWidth - 16) DIV 2;
-        K.DrawRect(LEFT, TOP + canvas.height + scrollWidth, 16*fontWidth, BOTTOM - scrollWidth + 1, K.winColor);
-        WritePos(y);
+        WritePos(height - (BOTTOM - scrollWidth) + (BOTTOM - scrollWidth - 16) DIV 2);
 
         IF (enc # T.getEnc(text)) OR (eol # T.getEol(text)) THEN
         	DrawState(text, width, height)
diff --git a/programs/develop/cedit/SRC/Text.ob07 b/programs/develop/cedit/SRC/Text.ob07
index 039416c953..990b01e26a 100644
--- a/programs/develop/cedit/SRC/Text.ob07
+++ b/programs/develop/cedit/SRC/Text.ob07
@@ -1472,6 +1472,50 @@ BEGIN
 END redo;
 
 
+PROCEDURE getSelCnt* (text: tText; VAR chars, lines: INTEGER);
+VAR
+	selBeg, selEnd: tPoint;
+	first, last, line: tLine;
+
+	PROCEDURE charCnt (line: tLine; first, last: INTEGER): INTEGER;
+	VAR
+		i, res: INTEGER;
+	BEGIN
+		res := 0;
+		FOR i := first TO last DO
+			IF getChar(line, i) # TAB1 THEN
+				INC(res)
+			END
+		END
+		RETURN res
+	END charCnt;
+
+BEGIN
+	IF selected(text) THEN
+		getSelect(text, selBeg, selEnd);
+		first := getLine(text, selBeg.Y);
+		last  := getLine(text, selEnd.Y);
+		lines := selEnd.Y - selBeg.Y + 1;
+
+		IF lines > 1 THEN
+			chars := charCnt(first, selBeg.X, first.length - 1) + charCnt(last, 0, selEnd.X - 1) + lenEOL;
+			line := first.next(tLine)
+		ELSE
+			chars := charCnt(first, selBeg.X, selEnd.X - 1);
+			line := last
+		END;
+
+		WHILE line # last DO
+			INC(chars, charCnt(line, 0, line.length - 1) + lenEOL);
+			NextLine(line)
+		END
+	ELSE
+		chars := 0;
+		lines := 0
+	END
+END getSelCnt;
+
+
 PROCEDURE copy (text: tText);
 VAR
     selBeg, selEnd: tPoint;