[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))