[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: UTF-8 out-of-the box experience



On Fri, 4 May 2001, Robert Brady wrote:

> I am working on fixing this issue now (got underlines working, bold is a
> little trickier).  Should have a patch later this evening.

This turns out to be a whole lot easier than I had anticipated.  Try the
attached patch. (against less-358)

-- 
Robert
diff -ruN -X X less-358/line.c less-358-rob/line.c
--- less-358/line.c	Sun Jul  9 01:26:46 2000
+++ less-358-rob/line.c	Fri May  4 15:19:57 2001
@@ -469,11 +469,39 @@
 		 * bold (if an identical character is overstruck),
 		 * or just deletion of the character in the buffer.
 		 */
-		overstrike = 0;
-		if ((char)c == linebuf[curr])
+	  	overstrike--;
+	  	if (utf_mode && (curr>1) && (char)c == linebuf[curr-2]) {
+	    		backc();
+		        backc();
 			STOREC(linebuf[curr], AT_BOLD);
-		else if (c == '_')
+			overstrike = 2;
+		} else if (utf_mode && curr && (char)c == linebuf[curr-1]) {
+		        backc();
+			STOREC(linebuf[curr], AT_BOLD);
+			overstrike = 1;
+		}
+		else if ((char)c == linebuf[curr])
+			STOREC(linebuf[curr], AT_BOLD);
+		else if (c == '_') {
+		  	if (utf_mode) {
+				if (curr && IS_CONT(linebuf[curr])) {
+				  attr[curr-1] = AT_UNDERLINE;
+				  if (curr>1 && IS_CONT(linebuf[curr-1])) {
+				    attr[curr-2] = AT_UNDERLINE;
+				  }
+				  if (curr>2 && IS_CONT(linebuf[curr-2])) {
+				    attr[curr-3] = AT_UNDERLINE;
+				  }
+				  if (curr>3 && IS_CONT(linebuf[curr-3])) {
+				    attr[curr-4] = AT_UNDERLINE;
+				  }
+				  if (curr>4 && IS_CONT(linebuf[curr-4])) {
+				    attr[curr-5] = AT_UNDERLINE;
+				  }
+				}
+			}
 			STOREC(linebuf[curr], AT_UNDERLINE);
+		}
 		else if (linebuf[curr] == '_')
 			STOREC(c, AT_UNDERLINE);
 		else if (control_char(c))