*** empty log message ***
authorpcg <pcg>
Tue, 25 Nov 2003 15:25:16 +0000 (15:25 +0000)
committerpcg <pcg>
Tue, 25 Nov 2003 15:25:16 +0000 (15:25 +0000)
src/command.C
src/defaultfont.C
src/defaultfont.h
src/init.C
src/init.h
src/iom.C
src/main.C
src/ptytty.C
src/rxvt.C
src/rxvt.h
src/screen.C

index fe6a55a..a74d86d 100644 (file)
@@ -1,7 +1,7 @@
 /*--------------------------------*-C-*---------------------------------*
  * File:       command.c
  *----------------------------------------------------------------------*
- * $Id: command.C,v 1.3 2003-11-25 11:52:42 pcg Exp $
+ * $Id: command.C,v 1.4 2003-11-25 15:25:16 pcg Exp $
  *
  * All portions of code are copyright by their respective author/s.
  * Copyright (c) 1992      John Bovey, University of Kent at Canterbury <jdb@ukc.ac.uk>
@@ -634,7 +634,7 @@ rxvt_cmd_write(pR_ const unsigned char *str, unsigned int count)
     unsigned int    n, s;
     unsigned char  *cmdbuf_base = R->cmdbuf_base,
                    *cmdbuf_endp = R->cmdbuf_endp,
-                   *cmdbuf_ptr = R->cmdbuf_ptr;
+                   *cmdbuf_ptr  = R->cmdbuf_ptr;
 
     n = cmdbuf_ptr - cmdbuf_base;
     s = cmdbuf_base + BUFSIZ - 1 - cmdbuf_endp;
@@ -703,24 +703,26 @@ void
 rxvt_term::x_cb (io_watcher &w, short revents)
 {
   process_x_events ();
+
+  flush ();
 }
 
 // read the next character, currently handles UTF-8
 // will probably handle all sorts of other stuff in the future
-static uint32_t
-next_char (pR)
+uint32_t
+rxvt_term::next_char ()
 {
-  mbstate &s = R->mbstate;
+  struct mbstate &s = mbstate;
 
-  while (R->cmdbuf_ptr < R->cmdbuf_endp)
+  while (cmdbuf_ptr < cmdbuf_endp)
     {
-      uint8_t ch = *R->cmdbuf_ptr;
+      uint8_t ch = *cmdbuf_ptr;
 
       if (s.cnt)
         {
           if ((ch & 0xc0) == 0x80)
             {
-              R->cmdbuf_ptr++;
+              cmdbuf_ptr++;
 
               /* continuation */
               s.reg = (s.reg << 6) | (ch & 0x7f);
@@ -739,7 +741,7 @@ next_char (pR)
       
       if ((ch & 0xc0) == 0xc0)
         {
-          R->cmdbuf_ptr++;
+          cmdbuf_ptr++;
 
           /* first byte */
           s.orig = ch; /* for broken encodings */
@@ -752,7 +754,7 @@ next_char (pR)
         }
       else
         {
-          R->cmdbuf_ptr++; /* _occasional_ non-utf8 may slip through... */
+          cmdbuf_ptr++; /* _occasional_ non-utf8 may slip through... */
           return ch;
         }
     }
@@ -760,40 +762,155 @@ next_char (pR)
   return NOCHAR;
 }
 
-void
-rxvt_term::pty_cb (io_watcher &w, short revents)
+bool
+rxvt_term::pty_fill (size_t count)
 {
-  int             n;
-  unsigned int    count;
+  ssize_t n = cmdbuf_endp - cmdbuf_ptr;
 
-  if (count = (cmdbuf_endp - cmdbuf_ptr))
+  memmove (cmdbuf_base, cmdbuf_ptr, n);
+  cmdbuf_ptr = cmdbuf_base;
+  cmdbuf_endp = cmdbuf_ptr + n;
+  n = read (cmd_fd, cmdbuf_endp, count);
+
+  if (n > 0)
     {
-      memmove (cmdbuf_base, cmdbuf_ptr, count);
-      cmdbuf_ptr = cmdbuf_base;
-      cmdbuf_endp = cmdbuf_ptr + count;
+      cmdbuf_endp += n;
+      return true;
     }
-      
+  else if (n < 0 && errno == EAGAIN)
+    return false;
 
-  for (count = BUFSIZ - count; count; count -= n, cmdbuf_endp += n)
-      if ((n = read(cmd_fd, cmdbuf_endp, count)) > 0)
-        continue;
-      else if (n == 0 || (n < 0 && errno == EAGAIN))
-        break;
-      else
+  rxvt_clean_exit();
+  exit(EXIT_FAILURE);  /* bad order of events? */
+}
+
+void
+rxvt_term::pty_cb (io_watcher &w, short revents)
+{
+  while (pty_fill (BUFSIZ - (cmdbuf_endp - cmdbuf_ptr)))
+    {
+      /* once we know the shell is running, send the screen size.  Again! */
+      //ch = rxvt_cmd_getc(aR);        /* wait for something */
+      //rxvt_tt_winsize(cmd_fd, TermWin.ncol, TermWin.nrow, cmd_pid);
+
+      uint32_t ch = NOCHAR;
+
+      for (;;)
         {
-          rxvt_clean_exit();
-          exit(EXIT_FAILURE);  /* bad order of events? */
+          if (ch == NOCHAR)
+            ch = next_char ();
+
+          if (ch == NOCHAR) // TODO: improve
+            break;
+
+          if (ch >= ' ' || ch == '\t' || ch == '\n' || ch == '\r')
+            {
+              /* Read a text string from the input buffer */
+              uint32_t buf[BUFSIZ];
+              bool refreshnow = false;
+              int nlines = 0;
+              uint32_t *str = buf;
+
+              *str++ = ch;
+
+              for (;;)
+                {
+                  ch = next_char ();
+
+                  if (ch == NOCHAR || (ch < ' ' && ch != '\t' && ch != '\n' && ch != '\r'))
+                    break;
+                  else
+                    {
+                      *str++ = ch;
+
+                      if (ch == '\n')
+                        {
+                          nlines++;
+                          refresh_count++;
+
+                          if (!(Options & Opt_jumpScroll)
+                              || (refresh_count >= (refresh_limit * (TermWin.nrow - 1))))
+                            {
+                              refreshnow = true;
+                              ch = NOCHAR;
+                              break;
+                            }
+                        }
+
+                      if (str >= buf + BUFSIZ)
+                        {
+                          ch = NOCHAR;
+                          break;
+                        }
+                    }
+                }
+
+              rxvt_scr_add_lines (this, buf, nlines, str - buf);
+
+              /*
+               * If there have been a lot of new lines, then update the screen
+               * What the heck I'll cheat and only refresh less than every page-full.
+               * the number of pages between refreshes is refresh_limit, which
+               * is incremented here because we must be doing flat-out scrolling.
+               *
+               * refreshing should be correct for small scrolls, because of the
+               * time-out
+               */
+              if (refreshnow)
+                {
+                  if ((Options & Opt_jumpScroll) && refresh_limit < REFRESH_PERIOD)
+                    refresh_limit++;
+
+                  rxvt_scr_refresh (this, refresh_type);
+                }
+
+            }
+          else
+            {
+              switch (ch)
+                {
+                  default:
+                    rxvt_process_nonprinting (this, ch);
+                    break;
+                  case C0_ESC: /* escape char */
+                    rxvt_process_escape_seq (this);
+                    break;
+                  /*case 0x9b: */      /* CSI */
+                  /*  rxvt_process_csi_seq (this); */
+                }
+
+              ch = NOCHAR;
+            }
         }
+    }
+
+  flush ();
+}
 
-  if (count != BUFSIZ) /* some characters read in */
+void
+rxvt_term::flush ()
+{
+#ifdef TRANSPARENT
+  if (want_full_refresh)
     {
-      uint32_t c = next_char (this);
+      want_full_refresh = 0;
+      rxvt_scr_clear (this);
+      rxvt_scr_touch (this, False);
+      want_refresh = 1;
+    }
+#endif
 
-#if 0
-      if (c != NOCHAR)
-        return c;
+  if (want_refresh)
+    {
+      rxvt_scr_refresh (this, refresh_type);
+      rxvt_scrollbar_show (this, 1);
+#ifdef USE_XIM
+      rxvt_IMSendSpot (this);
 #endif
     }
+
+  XFlush (Xdisplay);
 }
 
 /* rxvt_cmd_getc() - Return next input character */
@@ -805,6 +922,19 @@ rxvt_term::pty_cb (io_watcher &w, short revents)
 uint32_t
 rxvt_cmd_getc(pR)
 {
+  for (;;)
+    {
+      uint32_t c = R->next_char ();
+      if (c != NOCHAR)
+        return c;
+
+      // incomplete sequences should occur rarely, still, a better solution
+      // would be preferred. either setjmp/longjmp or better design.
+      fcntl (R->cmd_fd, F_SETFL, 0);
+      R->pty_fill (1);
+      fcntl (R->cmd_fd, F_SETFL, O_NONBLOCK);
+    }
+
 #define TIMEOUT_USEC   5000
     fd_set          readfds;
     int             quick_timeout, select_res;
@@ -814,10 +944,6 @@ rxvt_cmd_getc(pR)
     struct timeval  tp;
 #endif
 
-    uint32_t c = next_char (aR);
-    if (c != NOCHAR)
-      return c;
-
     for (;;) {
     /* loop until we can return something */
 
@@ -981,49 +1107,8 @@ rxvt_cmd_getc(pR)
        if (R->Options & Opt_cursorBlink)
            R->want_refresh = 1;
 #endif
-
-    /* See if we can read new data from the application */
-       if (select_res > 0 && FD_ISSET(R->cmd_fd, &readfds)) {
-           int             n;
-           unsigned int    count;
-
-           R->cmdbuf_ptr = R->cmdbuf_endp = R->cmdbuf_base;
-           for (count = BUFSIZ; count; count -= n, R->cmdbuf_endp += n)
-               if ((n = read(R->cmd_fd, R->cmdbuf_endp, count)) > 0)
-                   continue;
-               else if (n == 0 || (n < 0 && errno == EAGAIN))
-                   break;
-               else {
-                   rxvt_clean_exit();
-                   exit(EXIT_FAILURE); /* bad order of events? */
-               }
-
-           if (count != BUFSIZ)        /* some characters read in */
-              {
-                uint32_t c = next_char (aR);
-                if (c != NOCHAR)
-                  return c;
-              }
-       }
-#ifdef TRANSPARENT
-       if (R->want_full_refresh) {
-           R->want_full_refresh = 0;
-           rxvt_scr_clear(aR);
-           rxvt_scr_touch(aR_ False);
-           R->want_refresh = 1;
-       }
-#endif
-       if (R->want_refresh) {
-           rxvt_scr_refresh(aR_ R->refresh_type);
-           rxvt_scrollbar_show(aR_ 1);
-#ifdef USE_XIM
-           rxvt_IMSendSpot(aR);
-#endif
-       }
     }
-/* NOTREACHED */
 }
-/*}}} */
 
 /* EXTPROTO */
 void
@@ -3394,107 +3479,6 @@ rxvt_process_graphics(pR)
 
 /* ------------------------------------------------------------------------- */
 
-/*{{{ Read and process output from the application */
-/* LIBPROTO */
-void
-rxvt_main_loop(pR)
-{
-    uint32_t ch, *str, buf[BUFSIZ];
-    int nlines, refreshnow;
-
-    R->cmdbuf_ptr = R->cmdbuf_endp = R->cmdbuf_base;
-
-    /* once we know the shell is running, send the screen size.  Again! */
-    ch = rxvt_cmd_getc(aR);    /* wait for something */
-    rxvt_tt_winsize(R->cmd_fd, R->TermWin.ncol, R->TermWin.nrow, R->cmd_pid);
-
-    refreshnow = 0;
-    for (;;) {
-        if (ch == NOCHAR)
-          ch = rxvt_cmd_getc(aR);
-
-       if (ch >= ' ' || ch == '\t' || ch == '\n' || ch == '\r')
-          {
-            /* Read a text string from the input buffer */
-            nlines = 0;
-            str = buf;
-            *str++ = ch;
-            for (;;)
-              {
-                ch = next_char (aR);
-
-               if (ch == NOCHAR || (ch < ' ' && ch != '\t' && ch != '\n' && ch != '\r'))
-                  break;
-                else
-                  {
-                    *str++ = ch;
-
-                    if (ch == '\n')
-                      {
-                        nlines++;
-                        R->refresh_count++;
-                        if (!(R->Options & Opt_jumpScroll)
-                            || (R->refresh_count >= (R->refresh_limit
-                                                     * (R->TermWin.nrow - 1))))
-                          {
-                            refreshnow = 1;
-                            ch = NOCHAR;
-                            break;
-                          }
-                      }
-
-                    if (str >= buf + BUFSIZ)
-                      {
-                        ch = NOCHAR;
-                        break;
-                      }
-                  }
-             }
-
-           rxvt_scr_add_lines(aR_ buf, nlines, str - buf);
-
-            /*
-             * If there have been a lot of new lines, then update the screen
-             * What the heck I'll cheat and only refresh less than every page-full.
-             * the number of pages between refreshes is R->refresh_limit, which
-             * is incremented here because we must be doing flat-out scrolling.
-             *
-             * refreshing should be correct for small scrolls, because of the
-             * time-out
-             */
-
-            //TODO: REFRESH_PERIOD is one, fix it
-           if (refreshnow)
-              {
-               refreshnow = 0;
-
-               if ((R->Options & Opt_jumpScroll) && R->refresh_limit < REFRESH_PERIOD)
-                 R->refresh_limit++;
-
-               rxvt_scr_refresh(aR_ R->refresh_type);
-             }
-
-         }
-        else
-          {
-           switch (ch)
-              {
-                default:
-                    rxvt_process_nonprinting(aR_ ch);
-                    break;
-                case C0_ESC:   /* escape char */
-                    rxvt_process_escape_seq(aR);
-                    break;
-                /* case 0x9b: */       /* CSI */
-                /*  rxvt_process_csi_seq(aR); */
-              }
-
-            ch = NOCHAR;
-          }
-    }
-/* NOTREACHED */
-}
-
 /*
  * Send printf() formatted output to the command.
  * Only use for small amounts of data.
index bfbe9f1..569038d 100644 (file)
@@ -23,9 +23,9 @@
 #include "rxvt.h"
 #include "defaultfont.h"
 
-#define DISPLAY  R->Xdisplay
-#define DRAWABLE R->TermWin.vt
-#define GC       R->TermWin.gc
+#define DISPLAY  r->Xdisplay
+#define DRAWABLE r->TermWin.vt
+#define GC       r->TermWin.gc
 
 const struct rxvt_fallback_font {
   codeset cs;
@@ -165,7 +165,7 @@ rxvt_font::clear_rect (int x, int y, int w, int h, int color)
     XClearArea (DISPLAY, DRAWABLE, x, y, w, h, FALSE);
   else if (color >= 0)
     {
-      XSetForeground (DISPLAY, GC, R->PixColors[color]);
+      XSetForeground (DISPLAY, GC, r->PixColors[color]);
       XFillRectangle (DISPLAY, DRAWABLE, GC, x, y, w, h);
     }
 }
@@ -204,7 +204,7 @@ rxvt_font_default::draw (int x, int y,
                          const text_t *text, int len,
                          int fg, int bg)
 {
-  clear_rect (x, y, R->TermWin.fwidth * len, R->TermWin.fheight, bg);
+  clear_rect (x, y, r->TermWin.fwidth * len, r->TermWin.fheight, bg);
 
   while (len--)
     {
@@ -214,11 +214,11 @@ rxvt_font_default::draw (int x, int y,
           case ZERO_WIDTH_CHAR:
             break;
           default:
-            XSetForeground (DISPLAY, GC, R->PixColors[fg]);
-            XDrawRectangle (DISPLAY, DRAWABLE, GC, x + 2, y + 2, R->TermWin.fwidth - 5, R->TermWin.fheight - 5);
+            XSetForeground (DISPLAY, GC, r->PixColors[fg]);
+            XDrawRectangle (DISPLAY, DRAWABLE, GC, x + 2, y + 2, r->TermWin.fwidth - 5, r->TermWin.fheight - 5);
         }
 
-      x += R->TermWin.fwidth;
+      x += r->TermWin.fwidth;
     }
 }
 
@@ -406,14 +406,14 @@ rxvt_font_x11::draw (int x, int y,
   // but the result still isn't perfect /.
 
   bool slow = prop
-              || width != R->TermWin.fwidth
-              || height != R->TermWin.fheight;
+              || width != r->TermWin.fwidth
+              || height != r->TermWin.fheight;
 
-  int base = R->TermWin.fbase;
+  int base = r->TermWin.fbase;
 
   XGCValues v;
-  v.foreground = R->PixColors[fg];
-  v.background = R->PixColors[bg];
+  v.foreground = r->PixColors[fg];
+  v.background = r->PixColors[bg];
   v.font = f->fid;
 
   if (enc2b)
@@ -427,7 +427,7 @@ rxvt_font_x11::draw (int x, int y,
         }
       else
         {
-          clear_rect (x, y, R->TermWin.fwidth * len, R->TermWin.fheight, bg);
+          clear_rect (x, y, r->TermWin.fwidth * len, r->TermWin.fheight, bg);
 
           XChangeGC (DISPLAY, GC, GCForeground | GCFont, &v);
           
@@ -438,7 +438,7 @@ rxvt_font_x11::draw (int x, int y,
                   if (xc->byte1 || xc->byte2)
                     XDrawString16 (DISPLAY, DRAWABLE, GC, x, y + base, xc, 1);
 
-                  x += R->TermWin.fwidth;
+                  x += r->TermWin.fwidth;
                   xc++; len--;
                 }
               while (len);
@@ -458,7 +458,7 @@ rxvt_font_x11::draw (int x, int y,
         }
       else
         {
-          clear_rect (x, y, R->TermWin.fwidth * len, R->TermWin.fheight, bg);
+          clear_rect (x, y, r->TermWin.fwidth * len, r->TermWin.fheight, bg);
 
           XChangeGC (DISPLAY, GC, GCForeground | GCFont, &v);
           
@@ -469,7 +469,7 @@ rxvt_font_x11::draw (int x, int y,
                   if (*xc)
                     XDrawString (DISPLAY, DRAWABLE, GC, x, y + base, xc, 1);
 
-                  x += R->TermWin.fwidth;
+                  x += r->TermWin.fwidth;
                   xc++; len--;
                 }
               while (len);
@@ -546,7 +546,7 @@ rxvt_font_xft::clear ()
 {
   if (f)
     {
-      XftFontClose (R->Xdisplay, f);
+      XftFontClose (DISPLAY, f);
       f = 0;
     }
 
@@ -572,7 +572,7 @@ rxvt_font_xft::load (int maxheight)
 
   clear ();
 
-  f = XftFontOpenName (R->Xdisplay, DefaultScreen (R->Xdisplay), name);
+  f = XftFontOpenName (DISPLAY, DefaultScreen (DISPLAY), name);
 
   if (!f)
     return false;
@@ -588,8 +588,8 @@ rxvt_font_xft::load (int maxheight)
       XGlyphInfo g1, g2;
       FcChar8 c;
 
-      c = 'i'; XftTextExtents8 (R->Xdisplay, f, &c, 1, &g1);
-      c = 'W'; XftTextExtents8 (R->Xdisplay, f, &c, 1, &g2);
+      c = 'i'; XftTextExtents8 (DISPLAY, f, &c, 1, &g1);
+      c = 'W'; XftTextExtents8 (DISPLAY, f, &c, 1, &g2);
 
       prop = prop || g1.xOff != g2.xOff; // don't simply trust the font
 
@@ -634,7 +634,7 @@ void rxvt_font::gen_coverage_swath (unsigned int page)
 bool
 rxvt_font_xft::has_codepoint (uint32_t unicode)
 {
-  return XftCharExists (R->Xdisplay, f, unicode);
+  return XftCharExists (DISPLAY, f, unicode);
 }
 
 void
@@ -643,19 +643,22 @@ rxvt_font_xft::draw (int x, int y,
                      int fg, int bg)
 {
   if (!d)
-    d = XftDrawCreate (R->Xdisplay, DRAWABLE, XVISUAL, XCMAP);
+    {
+      dR;
+      d = XftDrawCreate (DISPLAY, DRAWABLE, XVISUAL, XCMAP);
+    }
 
   if (bg >= 0 && bg != Color_bg)
-    XftDrawRect (d, &R->PixColors[bg].c, x, y, R->TermWin.fwidth * len, R->TermWin.fheight);
+    XftDrawRect (d, &r->PixColors[bg].c, x, y, r->TermWin.fwidth * len, r->TermWin.fheight);
   else
-    clear_rect (x, y, R->TermWin.fwidth * len, R->TermWin.fheight, bg);
+    clear_rect (x, y, r->TermWin.fwidth * len, r->TermWin.fheight, bg);
 
-  if (!prop && width == R->TermWin.fwidth)
+  if (!prop && width == r->TermWin.fwidth)
     {
       if (sizeof (text_t) == sizeof (FcChar16))
-        XftDrawString16 (d, &R->PixColors[fg].c, f, x, y + R->TermWin.fbase, (const FcChar16 *)text, len);
+        XftDrawString16 (d, &r->PixColors[fg].c, f, x, y + r->TermWin.fbase, (const FcChar16 *)text, len);
       else
-        XftDrawString32 (d, &R->PixColors[fg].c, f, x, y + R->TermWin.fbase, (const FcChar32 *)text, len);
+        XftDrawString32 (d, &r->PixColors[fg].c, f, x, y + r->TermWin.fbase, (const FcChar32 *)text, len);
     }
   else
     {
@@ -664,12 +667,12 @@ rxvt_font_xft::draw (int x, int y,
           if (*text != NOCHAR && *text != ' ')
             {
               if (sizeof (text_t) == sizeof (FcChar16))
-                XftDrawString16 (d, &R->PixColors[fg].c, f, x, y + R->TermWin.fbase, (const FcChar16 *)text, 1);
+                XftDrawString16 (d, &r->PixColors[fg].c, f, x, y + r->TermWin.fbase, (const FcChar16 *)text, 1);
               else
-                XftDrawString32 (d, &R->PixColors[fg].c, f, x, y + R->TermWin.fbase, (const FcChar32 *)text, 1);
+                XftDrawString32 (d, &r->PixColors[fg].c, f, x, y + r->TermWin.fbase, (const FcChar32 *)text, 1);
             }
 
-          x += R->TermWin.fwidth;
+          x += r->TermWin.fwidth;
           text++;
           len--;
         }
@@ -679,9 +682,9 @@ rxvt_font_xft::draw (int x, int y,
 
 /////////////////////////////////////////////////////////////////////////////
 
-rxvt_fontset::rxvt_fontset (pR)
+rxvt_fontset::rxvt_fontset (rxvt_t r)
 #ifdef EXPLICIT_CONTEXT
-: rxvt_term(R)
+: r(r)
 #endif
 {
   clear ();
@@ -730,7 +733,7 @@ rxvt_fontset::new_font (const char *name, codeset cs)
   else
     f = new rxvt_font_x11;
 
-  f->set_term (aR);
+  f->set_term (r);
   f->set_name (strdup (name));
 
   f->cs = cs;
index 5754e84..f5d7d2b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: defaultfont.h,v 1.4 2003-11-25 11:52:42 pcg Exp $
+ * $Id: defaultfont.h,v 1.5 2003-11-25 15:25:17 pcg Exp $
  */
 
 #ifndef _DEFAULTFONT_H_
 
 struct rxvt_font {
   // managed by the fontset
-#if EXPLICIT_CONTEXT
-  rxvt_t rxvt_term;
-  void set_term (pR) { this->rxvt_term = R; }
-#else
-  void set_term (pR) { }
-#endif
+  rxvt_t r;
+  void set_term (rxvt_t r) { this->r = r; }
+
   char *name;
   codeset cs;
   bool loaded;
@@ -68,7 +65,7 @@ struct rxvt_font {
 struct rxvt_fallback_font;
 
 struct rxvt_fontset {
-  rxvt_fontset (pR);
+  rxvt_fontset (rxvt_t r);
   ~rxvt_fontset ();
 
   rxvt_font *new_font (const char *name, codeset cs);
@@ -87,9 +84,7 @@ struct rxvt_fontset {
   }
 
 private:
-#ifdef EXPLICIT_CONTEXT
-  rxvt_t rxvt_term;
-#endif
+  rxvt_t r;
   simplevec<rxvt_font *> fonts;
   const rxvt_fallback_font *fallback;
 
index e0f383d..cc0a0a3 100644 (file)
@@ -1,17 +1,17 @@
 /*--------------------------------*-C-*---------------------------------*
- * File:       init.c
+ * File:        init.c
  *----------------------------------------------------------------------*
- * $Id: init.C,v 1.3 2003-11-25 11:52:42 pcg Exp $
+ * $Id: init.C,v 1.4 2003-11-25 15:25:17 pcg Exp $
  *
  * All portions of code are copyright by their respective author/s.
  * Copyright (c) 1992      John Bovey, University of Kent at Canterbury <jdb@ukc.ac.uk>
- *                             - original version
+ *                              - original version
  * Copyright (c) 1994      Robert Nation <nation@rocket.sanders.lockheed.com>
- *                             - extensive modifications
+ *                              - extensive modifications
  * Copyright (c) 1998-2001 Geoff Wing <gcw@pobox.com>
- *                             - extensive modifications
+ *                              - extensive modifications
  * Copyright (c) 1999      D J Hawkey Jr <hawkeyd@visi.com>
- *                             - QNX support
+ *                              - QNX support
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -31,8 +31,8 @@
  * Initialisation routines.
  */
 
-#include "../config.h"         /* NECESSARY */
-#include "rxvt.h"              /* NECESSARY */
+#include "../config.h"          /* NECESSARY */
+#include "rxvt.h"               /* NECESSARY */
 #include "init.h"
 
 #include <signal.h>
@@ -41,35 +41,35 @@ const char *const def_colorName[] = {
     COLOR_FOREGROUND,
     COLOR_BACKGROUND,
 /* low-intensity colors */
-    "Black",                   /* 0: black             (#000000) */
+    "Black",                    /* 0: black             (#000000) */
 #ifndef NO_BRIGHTCOLOR
-    "Red3",                    /* 1: red               (#CD0000) */
-    "Green3",                  /* 2: green             (#00CD00) */
-    "Yellow3",                 /* 3: yellow            (#CDCD00) */
-    "Blue3",                   /* 4: blue              (#0000CD) */
-    "Magenta3",                        /* 5: magenta           (#CD00CD) */
-    "Cyan3",                   /* 6: cyan              (#00CDCD) */
+    "Red3",                     /* 1: red               (#CD0000) */
+    "Green3",                   /* 2: green             (#00CD00) */
+    "Yellow3",                  /* 3: yellow            (#CDCD00) */
+    "Blue3",                    /* 4: blue              (#0000CD) */
+    "Magenta3",                 /* 5: magenta           (#CD00CD) */
+    "Cyan3",                    /* 6: cyan              (#00CDCD) */
 # ifdef XTERM_COLORS
-    "Grey90",                  /* 7: white             (#E5E5E5) */
+    "Grey90",                   /* 7: white             (#E5E5E5) */
 # else
-    "AntiqueWhite",            /* 7: white             (#FAEBD7) */
+    "AntiqueWhite",             /* 7: white             (#FAEBD7) */
 # endif
 /* high-intensity colors */
 # ifdef XTERM_COLORS
-    "Grey30",                  /* 8: bright black      (#4D4D4D) */
+    "Grey30",                   /* 8: bright black      (#4D4D4D) */
 # else
-    "Grey25",                  /* 8: bright black      (#404040) */
+    "Grey25",                   /* 8: bright black      (#404040) */
 # endif
-#endif                         /* NO_BRIGHTCOLOR */
-    "Red",                     /* 1/9: bright red      (#FF0000) */
-    "Green",                   /* 2/10: bright green   (#00FF00) */
-    "Yellow",                  /* 3/11: bright yellow  (#FFFF00) */
-    "Blue",                    /* 4/12: bright blue    (#0000FF) */
-    "Magenta",                 /* 5/13: bright magenta (#FF00FF) */
-    "Cyan",                    /* 6/14: bright cyan    (#00FFFF) */
-    "White",                   /* 7/15: bright white   (#FFFFFF) */
+#endif                          /* NO_BRIGHTCOLOR */
+    "Red",                      /* 1/9: bright red      (#FF0000) */
+    "Green",                    /* 2/10: bright green   (#00FF00) */
+    "Yellow",                   /* 3/11: bright yellow  (#FFFF00) */
+    "Blue",                     /* 4/12: bright blue    (#0000FF) */
+    "Magenta",                  /* 5/13: bright magenta (#FF00FF) */
+    "Cyan",                     /* 6/14: bright cyan    (#00FFFF) */
+    "White",                    /* 7/15: bright white   (#FFFFFF) */
 #ifdef TTY_256COLOR
-    "rgb:00/00/00",            /* default 16-255 color table     */
+    "rgb:00/00/00",             /* default 16-255 color table     */
     "rgb:00/00/2a",
     "rgb:00/00/55",
     "rgb:00/00/7f",
@@ -313,27 +313,27 @@ const char *const def_colorName[] = {
 #ifndef NO_CURSORCOLOR
     COLOR_CURSOR_BACKGROUND,
     COLOR_CURSOR_FOREGROUND,
-#endif                         /* ! NO_CURSORCOLOR */
-    NULL,                      /* Color_pointer                  */
-    NULL,                      /* Color_border                   */
+#endif                          /* ! NO_CURSORCOLOR */
+    NULL,                       /* Color_pointer                  */
+    NULL,                       /* Color_border                   */
 #ifndef NO_BOLD_UNDERLINE_REVERSE
-    NULL,                      /* Color_BD                       */
-    NULL,                      /* Color_UL                       */
-    NULL,                      /* Color_RV                       */
-#endif                         /* ! NO_BOLD_UNDERLINE_REVERSE */
+    NULL,                       /* Color_BD                       */
+    NULL,                       /* Color_UL                       */
+    NULL,                       /* Color_RV                       */
+#endif                          /* ! NO_BOLD_UNDERLINE_REVERSE */
 #ifdef OPTION_HC
     NULL,
 #endif
 #ifdef KEEP_SCROLLCOLOR
     COLOR_SCROLLBAR,
     COLOR_SCROLLTROUGH,
-#endif                         /* KEEP_SCROLLCOLOR */
+#endif                          /* KEEP_SCROLLCOLOR */
 };
 
 const char *const xa_names[NUM_XA] = {
     "COMPOUND_TEXT",
-    "MULTIPLE",        
-    "TARGETS", 
+    "MULTIPLE", 
+    "TARGETS",  
     "TEXT",
     "TIMESTAMP",
     "VT_SELECTION",
@@ -363,76 +363,76 @@ rxvt_getdtablesize(void)
 }
 #endif
 /*----------------------------------------------------------------------*/
-/* EXTPROTO */
-int
-rxvt_init_vars(pR)
+bool
+rxvt_term::init_vars()
 {
-    R->PixColors = (rxvt_color *)rxvt_malloc(sizeof(rxvt_color) * TOTAL_COLORS);
-    if (R->PixColors == NULL)
-       return -1;
+    PixColors = new rxvt_color [TOTAL_COLORS];
+    if (PixColors == NULL)
+        return false;
 
 #if defined(XPM_BACKGROUND) || defined(TRANSPARENT)
-    R->TermWin.pixmap = None;
+    TermWin.pixmap = None;
 #endif
 #ifdef UTMP_SUPPORT
-    R->next_utmp_action = SAVE;
+    next_utmp_action = SAVE;
 #endif
 #ifndef NO_SETOWNER_TTYDEV
-    R->next_tty_action = SAVE;
+    next_tty_action = SAVE;
 #endif
-    R->MEvent.time = CurrentTime;
-    R->MEvent.button = AnyButton;
-    R->Options = DEFAULT_OPTIONS;
-    R->want_refresh = 1;
-    R->cmd_pid = -1;
-    R->cmd_fd = R->tty_fd = R->Xfd = -1;
-    R->PrivateModes = R->SavedModes = PrivMode_Default;
-    R->TermWin.focus = 1;
-    R->TermWin.ncol = 80;
-    R->TermWin.nrow = 24;
-    R->TermWin.int_bwidth = INTERNALBORDERWIDTH;
-    R->TermWin.ext_bwidth = EXTERNALBORDERWIDTH;
-    R->TermWin.lineSpace = LINESPACE;
-    R->TermWin.saveLines = SAVELINES;
-    R->numPixColors = TOTAL_COLORS;
+    MEvent.time = CurrentTime;
+    MEvent.button = AnyButton;
+    Options = DEFAULT_OPTIONS;
+    want_refresh = 1;
+    cmd_pid = -1;
+    cmd_fd = tty_fd = Xfd = -1;
+    PrivateModes = SavedModes = PrivMode_Default;
+    TermWin.focus = 1;
+    TermWin.ncol = 80;
+    TermWin.nrow = 24;
+    TermWin.int_bwidth = INTERNALBORDERWIDTH;
+    TermWin.ext_bwidth = EXTERNALBORDERWIDTH;
+    TermWin.lineSpace = LINESPACE;
+    TermWin.saveLines = SAVELINES;
+    numPixColors = TOTAL_COLORS;
 #ifndef NO_NEW_SELECTION
-    R->selection_style = NEW_SELECT;
+    selection_style = NEW_SELECT;
 #else
-    R->selection_style = OLD_SELECT;
+    selection_style = OLD_SELECT;
 #endif
 #ifndef NO_BRIGHTCOLOR
-    R->colorfgbg = DEFAULT_RSTYLE;
+    colorfgbg = DEFAULT_RSTYLE;
 #endif
 #if defined (HOTKEY_CTRL) || defined (HOTKEY_META)
-    R->ks_bigfont = XK_greater;
-    R->ks_smallfont = XK_less;
+    ks_bigfont = XK_greater;
+    ks_smallfont = XK_less;
 #endif
 #ifdef GREEK_SUPPORT
-    R->ks_greekmodeswith = GREEK_KEYBOARD_MODESWITCH;
+    ks_greekmodeswith = GREEK_KEYBOARD_MODESWITCH;
 #endif
-    R->refresh_limit = 1;
-    R->refresh_type = SLOW_REFRESH;
-    R->prev_nrow = R->prev_ncol = 0;
+    refresh_limit = 1;
+    refresh_type = SLOW_REFRESH;
+    prev_nrow = prev_ncol = 0;
 #ifdef MULTICHAR_SET
 # ifdef MULTICHAR_ENCODING
-    R->encoding_method = MULTICHAR_ENCODING;
+    encoding_method = MULTICHAR_ENCODING;
 # endif
-    R->multichar_decode = rxvt_euc2jis;
+    multichar_decode = rxvt_euc2jis;
 #endif
-    R->oldcursor.row = R->oldcursor.col = -1;
+    oldcursor.row = oldcursor.col = -1;
 #ifdef XPM_BACKGROUND
-/*  R->bgPixmap.w = R->bgPixmap.h = 0; */
-    R->bgPixmap.x = R->bgPixmap.y = 50;
-    R->bgPixmap.pixmap = None;
+/*  bgPixmap.w = bgPixmap.h = 0; */
+    bgPixmap.x = bgPixmap.y = 50;
+    bgPixmap.pixmap = None;
 #endif
-    R->last_bot = R->last_state = -1;
+    last_bot = last_state = -1;
 #ifdef MENUBAR
-    R->menu_readonly = 1;
+    menu_readonly = 1;
 # if !(MENUBAR_MAX > 1)
-    R->CurrentBar = &(R->BarList);
-# endif                                /* (MENUBAR_MAX > 1) */
+    CurrentBar = &(BarList);
+# endif                         /* (MENUBAR_MAX > 1) */
 #endif
-    return 0;
+
+    return true;
 }
 
 /* EXTPROTO */
@@ -443,14 +443,14 @@ rxvt_init_secondary(pR)
 #ifdef TTY_GID_SUPPORT
     struct group   *gr = getgrnam("tty");
 
-    if (gr) {          /* change group ownership of tty to "tty" */
-       R->ttymode = S_IRUSR | S_IWUSR | S_IWGRP;
-       R->ttygid = gr->gr_gid;
+    if (gr) {           /* change group ownership of tty to "tty" */
+        R->ttymode = S_IRUSR | S_IWUSR | S_IWGRP;
+        R->ttygid = gr->gr_gid;
     } else
-#endif                         /* TTY_GID_SUPPORT */
+#endif                          /* TTY_GID_SUPPORT */
     {
-       R->ttymode = S_IRUSR | S_IWUSR | S_IWGRP | S_IWOTH;
-       R->ttygid = getgid();
+        R->ttymode = S_IRUSR | S_IWUSR | S_IWGRP | S_IWOTH;
+        R->ttygid = getgid();
     }
 #if defined(HAVE_XSETLOCALE) || defined(HAVE_SETLOCALE)
     R->locale = setlocale(LC_CTYPE, "");
@@ -468,19 +468,19 @@ rxvt_init_secondary(pR)
  * We don't want them, we don't need them.
  */
     if ((i = open("/dev/null", O_RDONLY)) < 0) {
-       /* TODO: BOO HISS */
-       dup2(STDERR_FILENO, STDIN_FILENO);
+        /* TODO: BOO HISS */
+        dup2(STDERR_FILENO, STDIN_FILENO);
     } else if (i > STDIN_FILENO) {
-       dup2(i, STDIN_FILENO);
-       close(i);
+        dup2(i, STDIN_FILENO);
+        close(i);
     }
     dup2(STDERR_FILENO, STDOUT_FILENO);
     for (i = STDERR_FILENO + 1; i < R->num_fds; i++) {
-#ifdef __sgi                   /* Alex Coventry says we need 4 & 7 too */
-       if (i == 4 || i == 7)
-           continue;
+#ifdef __sgi                    /* Alex Coventry says we need 4 & 7 too */
+        if (i == 4 || i == 7)
+            continue;
 #endif
-       close(i);
+        close(i);
     }
 }
 
@@ -498,52 +498,52 @@ rxvt_init_resources(pR_ int argc, const char *const *argv)
  * Look for -exec option.  Find => split and make cmd_argv[] of command args
  */
     for (r_argc = 0; r_argc < argc; r_argc++)
-       if (!STRCMP(argv[r_argc], "-e") || !STRCMP(argv[r_argc], "-exec"))
-           break;
+        if (!STRCMP(argv[r_argc], "-e") || !STRCMP(argv[r_argc], "-exec"))
+            break;
     r_argv = (const char **)rxvt_malloc(sizeof(char *) * (r_argc + 1));
 
     for (i = 0; i < r_argc; i++)
-       r_argv[i] = (const char *)argv[i];
+        r_argv[i] = (const char *)argv[i];
     r_argv[i] = NULL;
     if (r_argc == argc)
-       cmd_argv = NULL;
+        cmd_argv = NULL;
     else {
-       cmd_argv = (const char **)rxvt_malloc(sizeof(char *) * (argc - r_argc));
+        cmd_argv = (const char **)rxvt_malloc(sizeof(char *) * (argc - r_argc));
 
-       for (i = 0; i < argc - r_argc - 1; i++)
-           cmd_argv[i] = (const char *)argv[i + r_argc + 1];
-       cmd_argv[i] = NULL;
+        for (i = 0; i < argc - r_argc - 1; i++)
+            cmd_argv[i] = (const char *)argv[i + r_argc + 1];
+        cmd_argv[i] = NULL;
     }
 
 /* clear all resources */
     rs = R->rs;
     for (i = 0; i < NUM_RESOURCES;)
-       rs[i++] = NULL;
+        rs[i++] = NULL;
 
     rs[Rs_name] = rxvt_r_basename(argv[0]);
 /*
  * Open display, get options/resources and create the window
  */
     if ((rs[Rs_display_name] = getenv("DISPLAY")) == NULL)
-       rs[Rs_display_name] = ":0";
+        rs[Rs_display_name] = ":0";
 
     rxvt_get_options(aR_ r_argc, r_argv);
     free(r_argv);
 
 #ifdef LOCAL_X_IS_UNIX
     if (rs[Rs_display_name][0] == ':') {
-       val = rxvt_malloc(5 + STRLEN(rs[Rs_display_name]));
-       STRCPY(val, "unix");
-       STRCAT(val, rs[Rs_display_name]);
-       R->Xdisplay = XOpenDisplay(val);
-       free(val);
+        val = rxvt_malloc(5 + STRLEN(rs[Rs_display_name]));
+        STRCPY(val, "unix");
+        STRCAT(val, rs[Rs_display_name]);
+        R->Xdisplay = XOpenDisplay(val);
+        free(val);
     }
 #endif
 
     if (R->Xdisplay == NULL
-       && (R->Xdisplay = XOpenDisplay(rs[Rs_display_name])) == NULL) {
-       rxvt_print_error("can't open display %s", rs[Rs_display_name]);
-       exit(EXIT_FAILURE);
+        && (R->Xdisplay = XOpenDisplay(rs[Rs_display_name])) == NULL) {
+        rxvt_print_error("can't open display %s", rs[Rs_display_name]);
+        exit(EXIT_FAILURE);
     }
 
     rxvt_extract_resources(aR_ R->Xdisplay, rs[Rs_name]);
@@ -552,101 +552,101 @@ rxvt_init_resources(pR_ int argc, const char *const *argv)
  * set any defaults not already set
  */
     if (cmd_argv && cmd_argv[0]) {
-       if (!rs[Rs_title])
-           rs[Rs_title] = rxvt_r_basename(cmd_argv[0]);
-       if (!rs[Rs_iconName])
-           rs[Rs_iconName] = rs[Rs_title];
+        if (!rs[Rs_title])
+            rs[Rs_title] = rxvt_r_basename(cmd_argv[0]);
+        if (!rs[Rs_iconName])
+            rs[Rs_iconName] = rs[Rs_title];
     } else {
-       if (!rs[Rs_title])
-           rs[Rs_title] = rs[Rs_name];
-       if (!rs[Rs_iconName])
-           rs[Rs_iconName] = rs[Rs_name];
+        if (!rs[Rs_title])
+            rs[Rs_title] = rs[Rs_name];
+        if (!rs[Rs_iconName])
+            rs[Rs_iconName] = rs[Rs_name];
     }
     if (rs[Rs_saveLines] && (i = atoi(rs[Rs_saveLines])) >= 0)
-       R->TermWin.saveLines = BOUND_POSITIVE_INT16(i);
+        R->TermWin.saveLines = BOUND_POSITIVE_INT16(i);
 #ifndef NO_FRILLS
     if (rs[Rs_int_bwidth] && (i = atoi(rs[Rs_int_bwidth])) >= 0)
-       R->TermWin.int_bwidth = min(i, 100);    /* arbitrary limit */
+        R->TermWin.int_bwidth = min(i, 100);    /* arbitrary limit */
     if (rs[Rs_ext_bwidth] && (i = atoi(rs[Rs_ext_bwidth])) >= 0)
-       R->TermWin.ext_bwidth = min(i, 100);    /* arbitrary limit */
+        R->TermWin.ext_bwidth = min(i, 100);    /* arbitrary limit */
 #endif
 #ifndef NO_LINESPACE
     if (rs[Rs_lineSpace] && (i = atoi(rs[Rs_lineSpace])) >= 0)
-       R->TermWin.lineSpace = min(i, 100);     /* arbitrary limit */
+        R->TermWin.lineSpace = min(i, 100);     /* arbitrary limit */
 #endif
 
 #ifdef POINTER_BLANK
     if (rs[Rs_pointerBlankDelay] && (i = atoi(rs[Rs_pointerBlankDelay])) >= 0)
-       R->pointerBlankDelay = i;
+        R->pointerBlankDelay = i;
     else
-       R->pointerBlankDelay = 2;
+        R->pointerBlankDelay = 2;
 #endif
 
 /* no point having a scrollbar without having any scrollback! */
     if (!R->TermWin.saveLines)
-       R->Options &= ~Opt_scrollBar;
+        R->Options &= ~Opt_scrollBar;
 
 #ifdef PRINTPIPE
     if (!rs[Rs_print_pipe])
-       rs[Rs_print_pipe] = PRINTPIPE;
+        rs[Rs_print_pipe] = PRINTPIPE;
 #endif
     if (!rs[Rs_cutchars])
-       rs[Rs_cutchars] = CUTCHARS;
+        rs[Rs_cutchars] = CUTCHARS;
 #ifdef ACS_ASCII
     if (!rs[Rs_acs_chars])
-       rs[Rs_acs_chars] = ACS_CHARS;
+        rs[Rs_acs_chars] = ACS_CHARS;
     if ((i = STRLEN(rs[Rs_acs_chars])) < 0x20) {
-       val = rxvt_realloc((void *)rs[Rs_acs_chars], 0x20);
-       for (; i < 0x20; )
-           val[i] = ' ';
-       rs[Rs_acs_chars] = val;
+        val = rxvt_realloc((void *)rs[Rs_acs_chars], 0x20);
+        for (; i < 0x20; )
+            val[i] = ' ';
+        rs[Rs_acs_chars] = val;
     }
 #endif
 #ifndef NO_BACKSPACE_KEY
     if (!rs[Rs_backspace_key])
 # ifdef DEFAULT_BACKSPACE
-       R->key_backspace = DEFAULT_BACKSPACE;
+        R->key_backspace = DEFAULT_BACKSPACE;
 # else
-       R->key_backspace = "DEC";       /* can toggle between \010 or \177 */
+        R->key_backspace = "DEC";       /* can toggle between \010 or \177 */
 # endif
     else {
-       val = STRDUP(rs[Rs_backspace_key]);
-       rxvt_Str_trim(val);
-       rxvt_Str_escaped(val);
-       R->key_backspace = val;
+        val = STRDUP(rs[Rs_backspace_key]);
+        rxvt_Str_trim(val);
+        rxvt_Str_escaped(val);
+        R->key_backspace = val;
     }
 #endif
 #ifndef NO_DELETE_KEY
     if (!rs[Rs_delete_key])
 # ifdef DEFAULT_DELETE
-       R->key_delete = DEFAULT_DELETE;
+        R->key_delete = DEFAULT_DELETE;
 # else
-       R->key_delete = "\033[3~";
+        R->key_delete = "\033[3~";
 # endif
     else {
-       val = STRDUP(rs[Rs_delete_key]);
-       rxvt_Str_trim(val);
-       rxvt_Str_escaped(val);
-       R->key_delete = val;
+        val = STRDUP(rs[Rs_delete_key]);
+        rxvt_Str_trim(val);
+        rxvt_Str_escaped(val);
+        R->key_delete = val;
     }
 #endif
     if (rs[Rs_answerbackstring]) {
-       rxvt_Str_trim((char *)rs[Rs_answerbackstring]);
-       rxvt_Str_escaped((char *)rs[Rs_answerbackstring]);
+        rxvt_Str_trim((char *)rs[Rs_answerbackstring]);
+        rxvt_Str_escaped((char *)rs[Rs_answerbackstring]);
     }
 
     if (rs[Rs_selectstyle]) {
-       if (STRNCASECMP(rs[Rs_selectstyle], "oldword", 7) == 0)
-           R->selection_style = OLD_WORD_SELECT;
+        if (STRNCASECMP(rs[Rs_selectstyle], "oldword", 7) == 0)
+            R->selection_style = OLD_WORD_SELECT;
 #ifndef NO_OLD_SELECTION
-       else if (STRNCASECMP(rs[Rs_selectstyle], "old", 3) == 0)
-           R->selection_style = OLD_SELECT;
+        else if (STRNCASECMP(rs[Rs_selectstyle], "old", 3) == 0)
+            R->selection_style = OLD_SELECT;
 #endif
     }
 
 #ifdef HAVE_SCROLLBARS
     rxvt_setup_scrollbar(aR_ rs[Rs_scrollBar_align], rs[Rs_scrollstyle],
-                        rs[Rs_scrollBar_thickness]);
+                         rs[Rs_scrollBar_thickness]);
 #endif
 
     R->TermWin.fontset = new rxvt_fontset (aR);
@@ -658,21 +658,21 @@ rxvt_init_resources(pR_ int argc, const char *const *argv)
 #ifdef XTERM_REVERSE_VIDEO
 /* this is how xterm implements reverseVideo */
     if (R->Options & Opt_reverseVideo) {
-       if (!rs[Rs_color + Color_fg])
-           rs[Rs_color + Color_fg] = def_colorName[Color_bg];
-       if (!rs[Rs_color + Color_bg])
-           rs[Rs_color + Color_bg] = def_colorName[Color_fg];
+        if (!rs[Rs_color + Color_fg])
+            rs[Rs_color + Color_fg] = def_colorName[Color_bg];
+        if (!rs[Rs_color + Color_bg])
+            rs[Rs_color + Color_bg] = def_colorName[Color_fg];
     }
 #endif
 
     for (i = 0; i < NRS_COLORS; i++)
-       if (!rs[Rs_color + i])
-           rs[Rs_color + i] = def_colorName[i];
+        if (!rs[Rs_color + i])
+            rs[Rs_color + i] = def_colorName[i];
 
 #ifndef XTERM_REVERSE_VIDEO
 /* this is how we implement reverseVideo */
     if (R->Options & Opt_reverseVideo)
-       SWAP_IT(rs[Rs_color + Color_fg], rs[Rs_color + Color_bg], const char *);
+        SWAP_IT(rs[Rs_color + Color_fg], rs[Rs_color + Color_bg], const char *);
 #endif
 
 /* convenient aliases for setting fg/bg to colors */
@@ -681,14 +681,14 @@ rxvt_init_resources(pR_ int argc, const char *const *argv)
 #ifndef NO_CURSORCOLOR
     rxvt_color_aliases(aR_ Color_cursor);
     rxvt_color_aliases(aR_ Color_cursor2);
-#endif                         /* NO_CURSORCOLOR */
+#endif                          /* NO_CURSORCOLOR */
     rxvt_color_aliases(aR_ Color_pointer);
     rxvt_color_aliases(aR_ Color_border);
 #ifndef NO_BOLD_UNDERLINE_REVERSE
     rxvt_color_aliases(aR_ Color_BD);
     rxvt_color_aliases(aR_ Color_UL);
     rxvt_color_aliases(aR_ Color_RV);
-#endif                         /* ! NO_BOLD_UNDERLINE_REVERSE */
+#endif                          /* ! NO_BOLD_UNDERLINE_REVERSE */
 
     return cmd_argv;
 }
@@ -716,10 +716,10 @@ rxvt_init_env(pR)
     val = rxvt_network_display(R->rs[Rs_display_name]);
     R->rs[Rs_display_name] = (const char *)val;
     if (val == NULL)
-#endif                         /* DISPLAY_IS_IP */
-       val = XDisplayString(R->Xdisplay);
+#endif                          /* DISPLAY_IS_IP */
+        val = XDisplayString(R->Xdisplay);
     if (R->rs[Rs_display_name] == NULL)
-       R->rs[Rs_display_name] = val;   /* use broken `:0' value */
+        R->rs[Rs_display_name] = val;   /* use broken `:0' value */
 
     i = STRLEN(val);
     R->env_display = (char *)rxvt_malloc((i + 9) * sizeof(char));
@@ -733,14 +733,14 @@ rxvt_init_env(pR)
     R->env_windowid = (char *)rxvt_malloc((i + 10) * sizeof(char));
 
     sprintf(R->env_windowid, "WINDOWID=%u",
-           (unsigned int)R->TermWin.parent[0]);
+            (unsigned int)R->TermWin.parent[0]);
 
 /* add entries to the environment:
  * @ DISPLAY:   in case we started with -display
  * @ WINDOWID:  X window id number of the window
  * @ COLORTERM: terminal sub-name and also indicates its color
  * @ TERM:      terminal name
- * @ TERMINFO: path to terminfo directory
+ * @ TERMINFO:  path to terminfo directory
  */
     putenv(R->env_display);
     putenv(R->env_windowid);
@@ -748,22 +748,22 @@ rxvt_init_env(pR)
     putenv("TERMINFO=" RXVT_TERMINFO);
 #endif
     if (XDEPTH <= 2)
-       putenv("COLORTERM=" COLORTERMENV "-mono");
+        putenv("COLORTERM=" COLORTERMENV "-mono");
     else
-       putenv("COLORTERM=" COLORTERMENVFULL);
+        putenv("COLORTERM=" COLORTERMENVFULL);
     if (R->rs[Rs_term_name] != NULL) {
-       R->env_term = (char *)rxvt_malloc((STRLEN(R->rs[Rs_term_name]) + 6) * sizeof(char));
-       sprintf(R->env_term, "TERM=%s", R->rs[Rs_term_name]);
-       putenv(R->env_term);
+        R->env_term = (char *)rxvt_malloc((STRLEN(R->rs[Rs_term_name]) + 6) * sizeof(char));
+        sprintf(R->env_term, "TERM=%s", R->rs[Rs_term_name]);
+        putenv(R->env_term);
     } else
-       putenv("TERM=" TERMENV);
+        putenv("TERM=" TERMENV);
 
 #ifdef HAVE_UNSETENV
 /* avoid passing old settings and confusing term size */
     unsetenv("LINES");
     unsetenv("COLUMNS");
-    unsetenv("TERMCAP");       /* terminfo should be okay */
-#endif                         /* HAVE_UNSETENV */
+    unsetenv("TERMCAP");        /* terminfo should be okay */
+#endif                          /* HAVE_UNSETENV */
 }
 
 /*----------------------------------------------------------------------*/
@@ -777,28 +777,28 @@ rxvt_init_xlocale(pR)
 {
 #ifdef USE_XIM
     if (R->locale == NULL)
-       rxvt_print_error("Setting locale failed.");
+        rxvt_print_error("Setting locale failed.");
     else {
-       Atom            wmlocale;
-
-       wmlocale = XInternAtom(R->Xdisplay, "WM_LOCALE_NAME", False);
-       XChangeProperty(R->Xdisplay, R->TermWin.parent[0], wmlocale,
-                       XA_STRING, 8, PropModeReplace,
-                       (unsigned char *)R->locale, STRLEN(R->locale));
-
-       if (XSupportsLocale() != True) {
-           rxvt_print_error("The locale is not supported by Xlib");
-           return;
-       }
-       rxvt_setTermFontSet(aR_ 0);
-
-       /* see if we can connect yet */
-       rxvt_IMInstantiateCallback(R->Xdisplay, NULL, NULL);
-
-       /* To avoid Segmentation Fault in C locale: Solaris only? */
-       if (STRCMP(R->locale, "C"))
-           XRegisterIMInstantiateCallback(R->Xdisplay, NULL, NULL, NULL,
-                                          rxvt_IMInstantiateCallback, NULL);
+        Atom            wmlocale;
+
+        wmlocale = XInternAtom(R->Xdisplay, "WM_LOCALE_NAME", False);
+        XChangeProperty(R->Xdisplay, R->TermWin.parent[0], wmlocale,
+                        XA_STRING, 8, PropModeReplace,
+                        (unsigned char *)R->locale, STRLEN(R->locale));
+
+        if (XSupportsLocale() != True) {
+            rxvt_print_error("The locale is not supported by Xlib");
+            return;
+        }
+        rxvt_setTermFontSet(aR_ 0);
+
+        /* see if we can connect yet */
+        rxvt_IMInstantiateCallback(R->Xdisplay, NULL, NULL);
+
+        /* To avoid Segmentation Fault in C locale: Solaris only? */
+        if (STRCMP(R->locale, "C"))
+            XRegisterIMInstantiateCallback(R->Xdisplay, NULL, NULL, NULL,
+                                           rxvt_IMInstantiateCallback, NULL);
     }
 #endif
 }
@@ -808,61 +808,66 @@ rxvt_init_xlocale(pR)
 void
 rxvt_init_command(pR_ const char *const *argv)
 {
-/*
- * Initialize the command connection.
- * This should be called after the X server connection is established.
- */
-    int             i;
+  /*
  * Initialize the command connection.
  * This should be called after the X server connection is established.
  */
+  int i;
 
-    for (i = 0; i < NUM_XA; i++)
-       R->xa[i] = XInternAtom(R->Xdisplay, xa_names[i], False);
+  for (i = 0; i < NUM_XA; i++)
+    R->xa[i] = XInternAtom(R->Xdisplay, xa_names[i], False);
 
 /* Enable delete window protocol */
-    XSetWMProtocols(R->Xdisplay, R->TermWin.parent[0],
-                   &(R->xa[XA_WMDELETEWINDOW]), 1);
+  XSetWMProtocols(R->Xdisplay, R->TermWin.parent[0],
+                  &(R->xa[XA_WMDELETEWINDOW]), 1);
 
 #ifdef USING_W11LIB
 /* enable W11 callbacks */
-    W11AddEventHandler(R->Xdisplay, rxvt_W11_process_x_event);
+  W11AddEventHandler(R->Xdisplay, rxvt_W11_process_x_event);
 #endif
 
 #ifdef META8_OPTION
-    R->meta_char = (R->Options & Opt_meta8 ? 0x80 : C0_ESC);
+  R->meta_char = (R->Options & Opt_meta8 ? 0x80 : C0_ESC);
 #endif
-    rxvt_get_ourmods(aR);
-    if (!(R->Options & Opt_scrollTtyOutput))
-       R->PrivateModes |= PrivMode_TtyOutputInh;
-    if (R->Options & Opt_scrollTtyKeypress)
-       R->PrivateModes |= PrivMode_Keypress;
-    if (!(R->Options & Opt_jumpScroll))
-       R->PrivateModes |= PrivMode_smoothScroll;
+
+  rxvt_get_ourmods(aR);
+
+  if (!(R->Options & Opt_scrollTtyOutput))
+    R->PrivateModes |= PrivMode_TtyOutputInh;
+  if (R->Options & Opt_scrollTtyKeypress)
+    R->PrivateModes |= PrivMode_Keypress;
+  if (!(R->Options & Opt_jumpScroll))
+    R->PrivateModes |= PrivMode_smoothScroll;
 #ifndef NO_BACKSPACE_KEY
-    if (STRCMP(R->key_backspace, "DEC") == 0)
-       R->PrivateModes |= PrivMode_HaveBackSpace;
+  if (STRCMP(R->key_backspace, "DEC") == 0)
+    R->PrivateModes |= PrivMode_HaveBackSpace;
 #endif
 /* add value for scrollBar */
-    if (scrollbar_visible(R)) {
-       R->PrivateModes |= PrivMode_scrollBar;
-       R->SavedModes |= PrivMode_scrollBar;
+  if (scrollbar_visible(R)) 
+    {
+      R->PrivateModes |= PrivMode_scrollBar;
+      R->SavedModes |= PrivMode_scrollBar;
     }
-    if (menubar_visible(R)) {
-       R->PrivateModes |= PrivMode_menuBar;
-       R->SavedModes |= PrivMode_menuBar;
+  if (menubar_visible(R))
+    {
+      R->PrivateModes |= PrivMode_menuBar;
+      R->SavedModes |= PrivMode_menuBar;
     }
 #ifdef GREEK_SUPPORT
-    greek_init();
+  greek_init();
 #endif
 
-    R->Xfd = XConnectionNumber(R->Xdisplay);
+  R->Xfd = XConnectionNumber (R->Xdisplay);
 
 #ifdef CURSOR_BLINK
-    if (R->Options & Opt_cursorBlink)
-       (void)gettimeofday(&R->lastcursorchange, NULL);
+  if (R->Options & Opt_cursorBlink)
+    (void)gettimeofday(&R->lastcursorchange, NULL);
 #endif
 
-    if ((R->cmd_fd = rxvt_run_command(aR_ argv)) < 0) {
-       rxvt_print_error("aborting");
-       exit(EXIT_FAILURE);
+  if ((R->cmd_fd = rxvt_run_command (aR_ argv)) < 0)
+    {
+      rxvt_print_error ("aborting");
+      exit (EXIT_FAILURE);
     }
 }
 
@@ -874,51 +879,51 @@ rxvt_Get_Colours(pR)
     int             i;
 
     for (i = 0; i < (XDEPTH <= 2 ? 2 : NRS_COLORS); i++) {
-       rxvt_color          xcol;
+        rxvt_color          xcol;
 
-       if (!R->rs[Rs_color + i])
-           continue;
+        if (!R->rs[Rs_color + i])
+            continue;
 
-       if (!rxvt_rXParseAllocColor(aR_ &xcol, R->rs[Rs_color + i])) {
+        if (!rxvt_rXParseAllocColor(aR_ &xcol, R->rs[Rs_color + i])) {
 #ifndef XTERM_REVERSE_VIDEO
-           if (i < 2 && (R->Options & Opt_reverseVideo)) {
-               R->rs[Rs_color + i] = def_colorName[!i];
-           } else
+            if (i < 2 && (R->Options & Opt_reverseVideo)) {
+                R->rs[Rs_color + i] = def_colorName[!i];
+            } else
 #endif
-               R->rs[Rs_color + i] = def_colorName[i];
-           if (!R->rs[Rs_color + i])
-               continue;
-           if (!rxvt_rXParseAllocColor(aR_ &xcol, R->rs[Rs_color + i])) {
-               switch (i) {
-               case Color_fg:
-               case Color_bg:
-                   /* fatal: need bg/fg color */
-                   rxvt_print_error("aborting");
-                   exit(EXIT_FAILURE);
-               /* NOTREACHED */
-                   break;
+                R->rs[Rs_color + i] = def_colorName[i];
+            if (!R->rs[Rs_color + i])
+                continue;
+            if (!rxvt_rXParseAllocColor(aR_ &xcol, R->rs[Rs_color + i])) {
+                switch (i) {
+                case Color_fg:
+                case Color_bg:
+                    /* fatal: need bg/fg color */
+                    rxvt_print_error("aborting");
+                    exit(EXIT_FAILURE);
+                /* NOTREACHED */
+                    break;
 #ifndef NO_CURSORCOLOR
-               case Color_cursor2:
-                   xcol = R->PixColors[Color_fg];
-                   break;
-#endif                         /* ! NO_CURSORCOLOR */
-               case Color_pointer:
-                   xcol = R->PixColors[Color_fg];
-                   break;
-               default:
-                   xcol = R->PixColors[Color_bg];      /* None */
-                   break;
-               }
-           }
-       }
-       R->PixColors[i] = xcol;
-       SET_PIXCOLOR(R, i);
+                case Color_cursor2:
+                    xcol = R->PixColors[Color_fg];
+                    break;
+#endif                          /* ! NO_CURSORCOLOR */
+                case Color_pointer:
+                    xcol = R->PixColors[Color_fg];
+                    break;
+                default:
+                    xcol = R->PixColors[Color_bg];      /* None */
+                    break;
+                }
+            }
+        }
+        R->PixColors[i] = xcol;
+        SET_PIXCOLOR(R, i);
     }
 
     if (XDEPTH <= 2 || !R->rs[Rs_color + Color_pointer])
-       R->PixColors[Color_pointer] = R->PixColors[Color_fg];
+        R->PixColors[Color_pointer] = R->PixColors[Color_fg];
     if (XDEPTH <= 2 || !R->rs[Rs_color + Color_border])
-       R->PixColors[Color_border] = R->PixColors[Color_fg];
+        R->PixColors[Color_border] = R->PixColors[Color_fg];
 
 /*
  * get scrollBar/menuBar shadow colors
@@ -927,17 +932,17 @@ rxvt_Get_Colours(pR)
  * from the fvwm window manager.
  */
 #ifdef KEEP_SCROLLCOLOR
-    if (XDEPTH <= 2) { /* Monochrome */
-       R->PixColors[Color_scroll] = R->PixColors[Color_fg];
-       R->PixColors[Color_topShadow] = R->PixColors[Color_bg];
-       R->PixColors[Color_bottomShadow] = R->PixColors[Color_bg];
+    if (XDEPTH <= 2) {  /* Monochrome */
+        R->PixColors[Color_scroll] = R->PixColors[Color_fg];
+        R->PixColors[Color_topShadow] = R->PixColors[Color_bg];
+        R->PixColors[Color_bottomShadow] = R->PixColors[Color_bg];
     } else {
-       rxvt_color          xcol[3];
-       /* xcol[0] == white
-        * xcol[1] == top shadow
-        * xcol[2] == bot shadow */
+        rxvt_color          xcol[3];
+        /* xcol[0] == white
+         * xcol[1] == top shadow
+         * xcol[2] == bot shadow */
 
-       xcol[1] = R->PixColors[Color_scroll];
+        xcol[1] = R->PixColors[Color_scroll];
 # ifdef PREFER_24BIT
         xcol[0].set (r, -1, -1, -1);
 /*        XFreeColors(R->Xdisplay, XCMAP, &(xcol[0].pixel), 1, ~0); */
@@ -950,22 +955,22 @@ rxvt_Get_Colours(pR)
         xcol[0].get (r, R0, G0, B0);
         xcol[1].get (r, R1, G1, B1);
 
-       /* bottomShadowColor */
+        /* bottomShadowColor */
         if (!xcol[2].set (aR_ R1 / 2, G1 / 2, B1 / 2))
-           xcol[2] = R->PixColors[Color_Black];
+            xcol[2] = R->PixColors[Color_Black];
 
-       R->PixColors[Color_bottomShadow] = xcol[2];
+        R->PixColors[Color_bottomShadow] = xcol[2];
 
-       /* topShadowColor */
+        /* topShadowColor */
         if (!xcol[1].set (aR_
                           min (R0, max (R0 / 5, R1) * 7 / 5),
                           min (G0, max (G0 / 5, G1) * 7 / 5),
                           min (B0, max (B0 / 5, B1) * 7 / 5)))
-           xcol[1] = R->PixColors[Color_White];
+            xcol[1] = R->PixColors[Color_White];
 
-       R->PixColors[Color_topShadow] = xcol[1];
+        R->PixColors[Color_topShadow] = xcol[1];
     }
-#endif                         /* KEEP_SCROLLCOLOR */
+#endif                          /* KEEP_SCROLLCOLOR */
 }
 
 /*----------------------------------------------------------------------*/
@@ -975,17 +980,17 @@ void
 rxvt_color_aliases(pR_ int idx)
 {
     if (R->rs[Rs_color + idx] && isdigit(*(R->rs[Rs_color + idx]))) {
-       int             i = atoi(R->rs[Rs_color + idx]);
+        int             i = atoi(R->rs[Rs_color + idx]);
 
-       if (i >= 8 && i <= 15) {        /* bright colors */
-           i -= 8;
+        if (i >= 8 && i <= 15) {        /* bright colors */
+            i -= 8;
 #ifndef NO_BRIGHTCOLOR
-           R->rs[Rs_color + idx] = R->rs[Rs_color + minBrightCOLOR + i];
-           return;
+            R->rs[Rs_color + idx] = R->rs[Rs_color + minBrightCOLOR + i];
+            return;
 #endif
-       }
-       if (i >= 0 && i <= 7)   /* normal colors */
-           R->rs[Rs_color + idx] = R->rs[Rs_color + minCOLOR + i];
+        }
+        if (i >= 0 && i <= 7)   /* normal colors */
+            R->rs[Rs_color + idx] = R->rs[Rs_color + minCOLOR + i];
     }
 }
 
@@ -1004,56 +1009,56 @@ rxvt_get_ourmods(pR)
     XModifierKeymap *map;
     KeyCode        *kc;
     const unsigned int modmasks[] =
-       { Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask };
+        { Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask };
 
     requestedmeta = realmeta = realalt = 0;
     rsmod = R->rs[Rs_modifier];
     if (rsmod
-       && STRCASECMP(rsmod, "mod1") >= 0 && STRCASECMP(rsmod, "mod5") <= 0)
-       requestedmeta = rsmod[3] - '0';
+        && STRCASECMP(rsmod, "mod1") >= 0 && STRCASECMP(rsmod, "mod5") <= 0)
+        requestedmeta = rsmod[3] - '0';
 
     map = XGetModifierMapping(R->Xdisplay);
     kc = map->modifiermap;
     for (i = 1; i < 6; i++) {
-       k = (i + 2) * map->max_keypermod;       /* skip shift/lock/control */
-       for (j = map->max_keypermod; j--; k++) {
-           if (kc[k] == 0)
-               break;
-           switch (XKeycodeToKeysym(R->Xdisplay, kc[k], 0)) {
-           case XK_Num_Lock:
-               R->ModNumLockMask = modmasks[i - 1];
-               /* FALLTHROUGH */
-           default:
-               continue;       /* for(;;) */
-           case XK_Meta_L:
-           case XK_Meta_R:
-               cm = "meta";
-               realmeta = i;
-               break;
-           case XK_Alt_L:
-           case XK_Alt_R:
-               cm = "alt";
-               realalt = i;
-               break;
-           case XK_Super_L:
-           case XK_Super_R:
-               cm = "super";
-               break;
-           case XK_Hyper_L:
-           case XK_Hyper_R:
-               cm = "hyper";
-               break;
-           }
-           if (rsmod && STRNCASECMP(rsmod, cm, STRLEN(cm)) == 0)
-               requestedmeta = i;
-       }
+        k = (i + 2) * map->max_keypermod;       /* skip shift/lock/control */
+        for (j = map->max_keypermod; j--; k++) {
+            if (kc[k] == 0)
+                break;
+            switch (XKeycodeToKeysym(R->Xdisplay, kc[k], 0)) {
+            case XK_Num_Lock:
+                R->ModNumLockMask = modmasks[i - 1];
+                /* FALLTHROUGH */
+            default:
+                continue;       /* for(;;) */
+            case XK_Meta_L:
+            case XK_Meta_R:
+                cm = "meta";
+                realmeta = i;
+                break;
+            case XK_Alt_L:
+            case XK_Alt_R:
+                cm = "alt";
+                realalt = i;
+                break;
+            case XK_Super_L:
+            case XK_Super_R:
+                cm = "super";
+                break;
+            case XK_Hyper_L:
+            case XK_Hyper_R:
+                cm = "hyper";
+                break;
+            }
+            if (rsmod && STRNCASECMP(rsmod, cm, STRLEN(cm)) == 0)
+                requestedmeta = i;
+        }
     }
     XFreeModifiermap(map);
     i = (requestedmeta ? requestedmeta
-                      : (realmeta ? realmeta
-                                  : (realalt ? realalt : 0)));
+                       : (realmeta ? realmeta
+                                   : (realalt ? realalt : 0)));
     if (i)
-       R->ModMetaMask = modmasks[i - 1];
+        R->ModMetaMask = modmasks[i - 1];
 }
 
 /*----------------------------------------------------------------------*/
@@ -1079,25 +1084,25 @@ rxvt_Create_Windows(pR_ int argc, const char *const *argv)
     blackcolour.set (r, 0, 0, 0);
 #endif
     if (R->Options & Opt_transparent) {
-       XGetWindowAttributes(R->Xdisplay, RootWindow(R->Xdisplay, Xscreen),
-                            &gattr);
-       XDEPTH = gattr.depth;
+        XGetWindowAttributes(R->Xdisplay, RootWindow(R->Xdisplay, Xscreen),
+                             &gattr);
+        XDEPTH = gattr.depth;
     } else {
-       XDEPTH = DefaultDepth(R->Xdisplay, Xscreen);
+        XDEPTH = DefaultDepth(R->Xdisplay, Xscreen);
 /*
  * If depth is not 24, look for a 24bit visual.
  */
-       if (XDEPTH != 24) {
-           XVisualInfo     vinfo;
-
-           if (XMatchVisualInfo(R->Xdisplay, Xscreen, 24, TrueColor, &vinfo)) {
-               XDEPTH = 24;
-               XVISUAL = vinfo.visual;
-               XCMAP = XCreateColormap(R->Xdisplay,
-                                       RootWindow(R->Xdisplay, Xscreen),
-                                       XVISUAL, AllocNone);
-           }
-       }
+        if (XDEPTH != 24) {
+            XVisualInfo     vinfo;
+
+            if (XMatchVisualInfo(R->Xdisplay, Xscreen, 24, TrueColor, &vinfo)) {
+                XDEPTH = 24;
+                XVISUAL = vinfo.visual;
+                XCMAP = XCreateColormap(R->Xdisplay,
+                                        RootWindow(R->Xdisplay, Xscreen),
+                                        XVISUAL, AllocNone);
+            }
+        }
     }
 #endif
 
@@ -1118,21 +1123,21 @@ rxvt_Create_Windows(pR_ int argc, const char *const *argv)
     attributes.border_pixel = R->PixColors[Color_border];
     attributes.colormap = XCMAP;
     R->TermWin.parent[0] = XCreateWindow(R->Xdisplay, Xroot,
-                                        R->szHint.x, R->szHint.y,
-                                        R->szHint.width, R->szHint.height,
-                                        R->TermWin.ext_bwidth,
-                                        XDEPTH, InputOutput,
-                                        XVISUAL,
-                                        CWBackPixel | CWBorderPixel
-                                        | CWColormap, &attributes);
+                                         R->szHint.x, R->szHint.y,
+                                         R->szHint.width, R->szHint.height,
+                                         R->TermWin.ext_bwidth,
+                                         XDEPTH, InputOutput,
+                                         XVISUAL,
+                                         CWBackPixel | CWBorderPixel
+                                         | CWColormap, &attributes);
 #else
     R->TermWin.parent[0] = XCreateSimpleWindow(R->Xdisplay, Xroot,
-                                              R->szHint.x, R->szHint.y,
-                                              R->szHint.width,
-                                              R->szHint.height,
-                                              R->TermWin.ext_bwidth,
-                                              R->PixColors[Color_border],
-                                              R->PixColors[Color_fg]);
+                                               R->szHint.x, R->szHint.y,
+                                               R->szHint.width,
+                                               R->szHint.height,
+                                               R->TermWin.ext_bwidth,
+                                               R->PixColors[Color_border],
+                                               R->PixColors[Color_fg]);
 #endif
     rxvt_xterm_seq(aR_ XTerm_title, R->rs[Rs_title], CHAR_ST);
     rxvt_xterm_seq(aR_ XTerm_iconName, R->rs[Rs_iconName], CHAR_ST);
@@ -1143,18 +1148,18 @@ rxvt_Create_Windows(pR_ int argc, const char *const *argv)
     wmHint.flags = (InputHint | StateHint | WindowGroupHint);
     wmHint.input = True;
     wmHint.initial_state = (R->Options & Opt_iconic ? IconicState
-                                                   : NormalState);
+                                                    : NormalState);
     wmHint.window_group = R->TermWin.parent[0];
 
     XSetWMProperties(R->Xdisplay, R->TermWin.parent[0], NULL, NULL,
-                    (char **)argv, argc, &R->szHint, &wmHint, &classHint);
+                     (char **)argv, argc, &R->szHint, &wmHint, &classHint);
     XSelectInput(R->Xdisplay, R->TermWin.parent[0],
-                (KeyPressMask
+                 (KeyPressMask
 #if defined(MOUSE_WHEEL) && defined(MOUSE_SLIP_WHEELING)
-                 | KeyReleaseMask
+                  | KeyReleaseMask
 #endif
-                 | FocusChangeMask | VisibilityChangeMask
-                 | StructureNotifyMask));
+                  | FocusChangeMask | VisibilityChangeMask
+                  | StructureNotifyMask));
 
 /* vt cursor: Black-on-White is standard, but this is more popular */
     R->TermWin_cursor = XCreateFontCursor(R->Xdisplay, XC_xterm);
@@ -1166,61 +1171,61 @@ rxvt_Create_Windows(pR_ int argc, const char *const *argv)
 
 #ifdef POINTER_BLANK
     R->pointer_blank = XCreateGlyphCursor(R->Xdisplay, R->TermWin.font->fid,
-                                            R->TermWin.font->fid, ' ', ' ',
-                                            &blackcolour, &blackcolour);
+                                             R->TermWin.font->fid, ' ', ' ',
+                                             &blackcolour, &blackcolour);
 #endif
 
 /* the vt window */
     R->TermWin.vt = XCreateSimpleWindow(R->Xdisplay, R->TermWin.parent[0],
-                                       R->window_vt_x, R->window_vt_y,
-                                       TermWin_TotalWidth(),
-                                       TermWin_TotalHeight(),
-                                       0,
-                                       R->PixColors[Color_fg],
-                                       R->PixColors[Color_bg]);
+                                        R->window_vt_x, R->window_vt_y,
+                                        TermWin_TotalWidth(),
+                                        TermWin_TotalHeight(),
+                                        0,
+                                        R->PixColors[Color_fg],
+                                        R->PixColors[Color_bg]);
 #ifdef DEBUG_X
     XStoreName(R->Xdisplay, R->TermWin.vt, "vt window");
 #endif
     rxvt_pointer_unblank(aR);
     vt_emask = (ExposureMask | ButtonPressMask | ButtonReleaseMask
-               | PropertyChangeMask);
+                | PropertyChangeMask);
 #ifdef POINTER_BLANK
     if ((R->Options & Opt_pointerBlank))
-       vt_emask |= PointerMotionMask;
+        vt_emask |= PointerMotionMask;
     else
 #endif
-       vt_emask |= (Button1MotionMask | Button3MotionMask);
+        vt_emask |= (Button1MotionMask | Button3MotionMask);
     XSelectInput(R->Xdisplay, R->TermWin.vt, vt_emask);
 
 #if defined(MENUBAR) && (MENUBAR_MAX > 1)
     if (menuBar_height()) {
-       R->menuBar.win = XCreateSimpleWindow(R->Xdisplay, R->TermWin.parent[0],
-                                            R->window_vt_x, 0,
-                                            TermWin_TotalWidth(),
-                                            menuBar_TotalHeight(),
-                                            0,
-                                            R->PixColors[Color_fg],
-                                            R->PixColors[Color_scroll]);
+        R->menuBar.win = XCreateSimpleWindow(R->Xdisplay, R->TermWin.parent[0],
+                                             R->window_vt_x, 0,
+                                             TermWin_TotalWidth(),
+                                             menuBar_TotalHeight(),
+                                             0,
+                                             R->PixColors[Color_fg],
+                                             R->PixColors[Color_scroll]);
 #ifdef DEBUG_X
     XStoreName(R->Xdisplay, R->menuBar.win, "menubar");
 #endif
-       XDefineCursor(R->Xdisplay, R->menuBar.win, R->pointer_leftptr);
-       XSelectInput(R->Xdisplay, R->menuBar.win,
-                    (ExposureMask | ButtonPressMask | ButtonReleaseMask
-                     | Button1MotionMask));
+        XDefineCursor(R->Xdisplay, R->menuBar.win, R->pointer_leftptr);
+        XSelectInput(R->Xdisplay, R->menuBar.win,
+                     (ExposureMask | ButtonPressMask | ButtonReleaseMask
+                      | Button1MotionMask));
     }
 #endif
 #ifdef XPM_BACKGROUND
     if (R->rs[Rs_backgroundPixmap] != NULL
-       && !(R->Options & Opt_transparent)) {
-       const char     *p = R->rs[Rs_backgroundPixmap];
-
-       if ((p = STRCHR(p, ';')) != NULL) {
-           p++;
-           rxvt_scale_pixmap(aR_ p);
-       }
-       rxvt_set_bgPixmap(aR_ R->rs[Rs_backgroundPixmap]);
-       rxvt_scr_touch(aR_ True);
+        && !(R->Options & Opt_transparent)) {
+        const char     *p = R->rs[Rs_backgroundPixmap];
+
+        if ((p = STRCHR(p, ';')) != NULL) {
+            p++;
+            rxvt_scale_pixmap(aR_ p);
+        }
+        rxvt_set_bgPixmap(aR_ R->rs[Rs_backgroundPixmap]);
+        rxvt_scr_touch(aR_ True);
     }
 #endif
 
@@ -1229,20 +1234,20 @@ rxvt_Create_Windows(pR_ int argc, const char *const *argv)
     gcvalue.background = R->PixColors[Color_bg];
     gcvalue.graphics_exposures = 1;
     R->TermWin.gc = XCreateGC(R->Xdisplay, R->TermWin.vt,
-                             GCForeground | GCBackground
-                             | GCGraphicsExposures, &gcvalue);
+                              GCForeground | GCBackground
+                              | GCGraphicsExposures, &gcvalue);
 
 #if defined(MENUBAR) || defined(RXVT_SCROLLBAR)
     gcvalue.foreground = R->PixColors[Color_topShadow];
     R->topShadowGC = XCreateGC(R->Xdisplay, R->TermWin.vt,
-                                 GCForeground, &gcvalue);
+                                  GCForeground, &gcvalue);
     gcvalue.foreground = R->PixColors[Color_bottomShadow];
     R->botShadowGC = XCreateGC(R->Xdisplay, R->TermWin.vt,
-                                 GCForeground, &gcvalue);
+                                  GCForeground, &gcvalue);
     gcvalue.foreground = R->PixColors[(XDEPTH <= 2 ? Color_fg
-                                                  : Color_scroll)];
+                                                   : Color_scroll)];
     R->scrollbarGC = XCreateGC(R->Xdisplay, R->TermWin.vt,
-                                 GCForeground, &gcvalue);
+                                  GCForeground, &gcvalue);
 #endif
 }
 
@@ -1260,37 +1265,37 @@ rxvt_run_command(pR_ const char *const *argv)
 
 /* get master (pty) */
     if ((cfd = rxvt_get_pty(&(R->tty_fd), &(R->ttydev))) < 0) {
-       rxvt_print_error("can't open pseudo-tty");
-       return -1;
+        rxvt_print_error("can't open pseudo-tty");
+        return -1;
     }
 #ifdef FD_SETSIZE
     if (R->Xfd > FD_SETSIZE || cfd > FD_SETSIZE) {
-       rxvt_print_error("fd too high: %d max", FD_SETSIZE);
-       rxvt_clean_exit();
-       exit(EXIT_FAILURE);
+        rxvt_print_error("fd too high: %d max", FD_SETSIZE);
+        rxvt_clean_exit();
+        exit(EXIT_FAILURE);
     }
 #endif
-    fcntl(cfd, F_SETFL, O_NDELAY);
+    fcntl (cfd, F_SETFL, O_NONBLOCK);
 
 /* get slave (tty) */
     if (R->tty_fd < 0) {
 #ifndef NO_SETOWNER_TTYDEV
-       rxvt_privileged_ttydev(aR_ SAVE);
+        rxvt_privileged_ttydev(aR_ SAVE);
 #endif
-       if ((R->tty_fd = rxvt_get_tty(R->ttydev)) < 0) {
-           close(cfd);
-           rxvt_print_error("can't open slave tty %s", R->ttydev);
-           return -1;
-       }
+        if ((R->tty_fd = rxvt_get_tty(R->ttydev)) < 0) {
+            close(cfd);
+            rxvt_print_error("can't open slave tty %s", R->ttydev);
+            return -1;
+        }
     }
 #ifndef NO_BACKSPACE_KEY
     if (R->key_backspace[0] && !R->key_backspace[1])
-       er = R->key_backspace[0];
+        er = R->key_backspace[0];
     else if (STRCMP(R->key_backspace, "DEC") == 0)
-       er = '\177';            /* the initial state anyway */
+        er = '\177';            /* the initial state anyway */
     else
 #endif
-       er = -1;
+        er = -1;
     rxvt_get_ttymode(&(R->tio), er);
 
 /* install exit handler for cleanup */
@@ -1298,7 +1303,7 @@ rxvt_run_command(pR_ const char *const *argv)
     atexit(rxvt_clean_exit);
 #else
 # ifdef HAVE_ON_EXIT
-    on_exit(rxvt_clean_exit, NULL);    /* non-ANSI exit handler */
+    on_exit(rxvt_clean_exit, NULL);     /* non-ANSI exit handler */
 # endif
 #endif
 
@@ -1317,58 +1322,58 @@ rxvt_run_command(pR_ const char *const *argv)
 /* spin off the command interpreter */
     switch (R->cmd_pid = fork()) {
     case -1:
-       rxvt_print_error("can't fork");
-       return -1;
+        rxvt_print_error("can't fork");
+        return -1;
     case 0:
-       close(cfd);             /* only keep R->tty_fd and STDERR open */
-       close(R->Xfd);
-       if (rxvt_control_tty(R->tty_fd, R->ttydev) < 0)
-           rxvt_print_error("could not obtain control of tty");
-       else {
-       /* Reopen stdin, stdout and stderr over the tty file descriptor */
-           dup2(R->tty_fd, STDIN_FILENO);
-           dup2(R->tty_fd, STDOUT_FILENO);
-           dup2(R->tty_fd, STDERR_FILENO);
-           if (R->tty_fd > 2)
-               close(R->tty_fd);
-           rxvt_run_child(aR_ argv);
-       }
-       exit(EXIT_FAILURE);
-       /* NOTREACHED */
+        close(cfd);             /* only keep R->tty_fd and STDERR open */
+        close(R->Xfd);
+        if (rxvt_control_tty(R->tty_fd, R->ttydev) < 0)
+            rxvt_print_error("could not obtain control of tty");
+        else {
+        /* Reopen stdin, stdout and stderr over the tty file descriptor */
+            dup2(R->tty_fd, STDIN_FILENO);
+            dup2(R->tty_fd, STDOUT_FILENO);
+            dup2(R->tty_fd, STDERR_FILENO);
+            if (R->tty_fd > 2)
+                close(R->tty_fd);
+            rxvt_run_child(aR_ argv);
+        }
+        exit(EXIT_FAILURE);
+        /* NOTREACHED */
     default:
-       {
+        {
 #if defined(HAVE_STRUCT_UTMP) && defined(HAVE_TTYSLOT)
-           int             fdstdin;
+            int             fdstdin;
 
-           fdstdin = dup(STDIN_FILENO);
-           dup2(R->tty_fd, STDIN_FILENO);
+            fdstdin = dup(STDIN_FILENO);
+            dup2(R->tty_fd, STDIN_FILENO);
 #endif
-           rxvt_privileged_utmp(aR_ SAVE);
+            rxvt_privileged_utmp(aR_ SAVE);
 #if defined(HAVE_STRUCT_UTMP) && defined(HAVE_TTYSLOT)
-           dup2(fdstdin, STDIN_FILENO);
-           close(fdstdin);
+            dup2(fdstdin, STDIN_FILENO);
+            close(fdstdin);
 #endif
-       }
-       close(R->tty_fd);       /* keep STDERR_FILENO, R->cmd_fd, R->Xfd open */
-       break;
+        }
+        close(R->tty_fd);       /* keep STDERR_FILENO, R->cmd_fd, R->Xfd open */
+        break;
     }
-#else                          /* __QNX__ uses qnxspawn() */
+#else                           /* __QNX__ uses qnxspawn() */
     fchmod(R->tty_fd, 0622);
     fcntl(R->tty_fd, F_SETFD, FD_CLOEXEC);
     fcntl(cfd, F_SETFD, FD_CLOEXEC);
 
     if (rxvt_run_child(aR_ argv) == -1)
-       exit(EXIT_FAILURE);
+        exit(EXIT_FAILURE);
 #endif
 /*
  * Reduce R->num_fds to what we use, so select() is more efficient
  */
     R->num_fds = max(STDERR_FILENO, cfd);
     MAX_IT(R->num_fds, R->Xfd);
-#ifdef __sgi                   /* Alex Coventry says we need 4 & 7 too */
+#ifdef __sgi                    /* Alex Coventry says we need 4 & 7 too */
     MAX_IT(R->num_fds, 7);
 #endif
-    R->num_fds++;              /* counts from 0 */
+    R->num_fds++;               /* counts from 0 */
 
     return cfd;
 }
@@ -1386,22 +1391,22 @@ rxvt_run_child(pR_ const char *const *argv)
 {
     char           *login;
 
-    SET_TTYMODE(STDIN_FILENO, &(R->tio));      /* init terminal attributes */
+    SET_TTYMODE(STDIN_FILENO, &(R->tio));       /* init terminal attributes */
 
-    if (R->Options & Opt_console) {    /* be virtual console, fail silently */
+    if (R->Options & Opt_console) {     /* be virtual console, fail silently */
 #ifdef TIOCCONS
-       unsigned int    on = 1;
+        unsigned int    on = 1;
 
-       ioctl(STDIN_FILENO, TIOCCONS, &on);
+        ioctl(STDIN_FILENO, TIOCCONS, &on);
 #elif defined (SRIOCSREDIR)
-       int             fd;
-
-       fd = open(CONSOLE, O_WRONLY, 0);
-       if (fd >= 0) {
-           if (ioctl(fd, SRIOCSREDIR, NULL) < 0)
-               close(fd);
-       }
-#endif                         /* SRIOCSREDIR */
+        int             fd;
+
+        fd = open(CONSOLE, O_WRONLY, 0);
+        if (fd >= 0) {
+            if (ioctl(fd, SRIOCSREDIR, NULL) < 0)
+                close(fd);
+        }
+#endif                          /* SRIOCSREDIR */
     }
 
 /* reset signals and spin off the command interpreter */
@@ -1416,7 +1421,7 @@ rxvt_run_child(pR_ const char *const *argv)
     signal(SIGTSTP, SIG_IGN);
     signal(SIGTTIN, SIG_IGN);
     signal(SIGTTOU, SIG_IGN);
-#endif                         /* SIGTSTP */
+#endif                          /* SIGTSTP */
 
     /* set window size */
     rxvt_tt_winsize(STDIN_FILENO, R->TermWin.ncol, R->TermWin.nrow, 0);
@@ -1425,70 +1430,70 @@ rxvt_run_child(pR_ const char *const *argv)
 /* command interpreter path */
     if (argv != NULL) {
 # ifdef DEBUG_CMD
-       int             i;
+        int             i;
 
-       for (i = 0; argv[i]; i++)
-           fprintf(stderr, "argv [%d] = \"%s\"\n", i, argv[i]);
+        for (i = 0; argv[i]; i++)
+            fprintf(stderr, "argv [%d] = \"%s\"\n", i, argv[i]);
 # endif
-       execvp(argv[0], (char *const *)argv);
-       /* no error message: STDERR is closed! */
+        execvp(argv[0], (char *const *)argv);
+        /* no error message: STDERR is closed! */
     } else {
-       const char     *argv0, *shell;
+        const char     *argv0, *shell;
 
-       if ((shell = getenv("SHELL")) == NULL || *shell == '\0')
-           shell = "/bin/sh";
+        if ((shell = getenv("SHELL")) == NULL || *shell == '\0')
+            shell = "/bin/sh";
 
-       argv0 = (const char *)rxvt_r_basename(shell);
-       if (R->Options & Opt_loginShell) {
-           login = (char *)rxvt_malloc((STRLEN(argv0) + 2) * sizeof(char));
+        argv0 = (const char *)rxvt_r_basename(shell);
+        if (R->Options & Opt_loginShell) {
+            login = (char *)rxvt_malloc((STRLEN(argv0) + 2) * sizeof(char));
 
-           login[0] = '-';
-           STRCPY(&login[1], argv0);
-           argv0 = login;
-       }
-       execlp(shell, argv0, NULL);
-       /* no error message: STDERR is closed! */
+            login[0] = '-';
+            STRCPY(&login[1], argv0);
+            argv0 = login;
+        }
+        execlp(shell, argv0, NULL);
+        /* no error message: STDERR is closed! */
     }
-#else                          /* __QNX__ uses qnxspawn() */
+#else                           /* __QNX__ uses qnxspawn() */
     {
-       char            iov_a[10] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };
-       char           *command = NULL, fullcommand[_MAX_PATH];
-       char          **arg_v, *arg_a[2] = { NULL, NULL };
-
-       if (argv != NULL) {
-           if (access(argv[0], X_OK) == -1) {
-               if (STRCHR(argv[0], '/') == NULL) {
-                   searchenv(argv[0], "PATH", fullcommand);
-                   if (fullcommand[0] != '\0')
-                       command = fullcommand;
-               }
-               if (access(command, X_OK) == -1)
-                   return -1;
-           } else
-               command = argv[0];
-           arg_v = argv;
-       } else {
-           if ((command = getenv("SHELL")) == NULL || *command == '\0')
-               command = "/bin/sh";
-
-           arg_a[0] = my_basename(command);
-           if (R->Options & Opt_loginShell) {
-               login = rxvt_malloc((STRLEN(arg_a[0]) + 2) * sizeof(char));
-
-               login[0] = '-';
-               STRCPY(&login[1], arg_a[0]);
-               arg_a[0] = login;
-           }
-           arg_v = arg_a;
-       }
-       iov_a[0] = iov_a[1] = iov_a[2] = R->tty_fd;
-       R->cmd_pid = qnx_spawn(0, 0, 0, -1, -1,
-                                 _SPAWN_SETSID | _SPAWN_TCSETPGRP,
-                                 command, arg_v, environ, iov_a, 0);
-       if (login)
-           free(login);
-       close(R->tty_fd);
-       return R->cmd_fd;
+        char            iov_a[10] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };
+        char           *command = NULL, fullcommand[_MAX_PATH];
+        char          **arg_v, *arg_a[2] = { NULL, NULL };
+
+        if (argv != NULL) {
+            if (access(argv[0], X_OK) == -1) {
+                if (STRCHR(argv[0], '/') == NULL) {
+                    searchenv(argv[0], "PATH", fullcommand);
+                    if (fullcommand[0] != '\0')
+                        command = fullcommand;
+                }
+                if (access(command, X_OK) == -1)
+                    return -1;
+            } else
+                command = argv[0];
+            arg_v = argv;
+        } else {
+            if ((command = getenv("SHELL")) == NULL || *command == '\0')
+                command = "/bin/sh";
+
+            arg_a[0] = my_basename(command);
+            if (R->Options & Opt_loginShell) {
+                login = rxvt_malloc((STRLEN(arg_a[0]) + 2) * sizeof(char));
+
+                login[0] = '-';
+                STRCPY(&login[1], arg_a[0]);
+                arg_a[0] = login;
+            }
+            arg_v = arg_a;
+        }
+        iov_a[0] = iov_a[1] = iov_a[2] = R->tty_fd;
+        R->cmd_pid = qnx_spawn(0, 0, 0, -1, -1,
+                                  _SPAWN_SETSID | _SPAWN_TCSETPGRP,
+                                  command, arg_v, environ, iov_a, 0);
+        if (login)
+            free(login);
+        close(R->tty_fd);
+        return R->cmd_fd;
     }
 #endif
     return -1;
@@ -1507,28 +1512,28 @@ rxvt_get_ttymode(ttymode_t *tio, int erase)
  * standard System V termios interface
  */
     if (GET_TERMIOS(STDIN_FILENO, tio) < 0) {
-       /* return error - use system defaults */
-       tio->c_cc[VINTR] = CINTR;
-       tio->c_cc[VQUIT] = CQUIT;
-       tio->c_cc[VERASE] = CERASE;
-       tio->c_cc[VKILL] = CKILL;
-       tio->c_cc[VSTART] = CSTART;
-       tio->c_cc[VSTOP] = CSTOP;
-       tio->c_cc[VSUSP] = CSUSP;
+        /* return error - use system defaults */
+        tio->c_cc[VINTR] = CINTR;
+        tio->c_cc[VQUIT] = CQUIT;
+        tio->c_cc[VERASE] = CERASE;
+        tio->c_cc[VKILL] = CKILL;
+        tio->c_cc[VSTART] = CSTART;
+        tio->c_cc[VSTOP] = CSTOP;
+        tio->c_cc[VSUSP] = CSUSP;
 # ifdef VDSUSP
-       tio->c_cc[VDSUSP] = CDSUSP;
+        tio->c_cc[VDSUSP] = CDSUSP;
 # endif
 # ifdef VREPRINT
-       tio->c_cc[VREPRINT] = CRPRNT;
+        tio->c_cc[VREPRINT] = CRPRNT;
 # endif
 # ifdef VDISCRD
-       tio->c_cc[VDISCRD] = CFLUSH;
+        tio->c_cc[VDISCRD] = CFLUSH;
 # endif
 # ifdef VWERSE
-       tio->c_cc[VWERSE] = CWERASE;
+        tio->c_cc[VWERSE] = CWERASE;
 # endif
 # ifdef VLNEXT
-       tio->c_cc[VLNEXT] = CLNEXT;
+        tio->c_cc[VLNEXT] = CLNEXT;
 # endif
     }
     tio->c_cc[VEOF] = CEOF;
@@ -1549,14 +1554,14 @@ rxvt_get_ttymode(ttymode_t *tio, int erase)
     tio->c_cc[VTIME] = 0;
 # endif
     if (erase != -1)
-       tio->c_cc[VERASE] = (char)erase;
+        tio->c_cc[VERASE] = (char)erase;
 
 /* input modes */
     tio->c_iflag = (BRKINT | IGNPAR | ICRNL
 # ifdef IMAXBEL
-                   | IMAXBEL
+                    | IMAXBEL
 # endif
-                   | IXON);
+                    | IXON);
 
 /* output modes */
     tio->c_oflag = (OPOST | ONLCR);
@@ -1567,10 +1572,10 @@ rxvt_get_ttymode(ttymode_t *tio, int erase)
 /* line discipline modes */
     tio->c_lflag = (ISIG | ICANON | IEXTEN | ECHO
 # if defined (ECHOCTL) && defined (ECHOKE)
-                   | ECHOCTL | ECHOKE
+                    | ECHOCTL | ECHOKE
 # endif
-                   | ECHOE | ECHOK);
-# else                         /* HAVE_TERMIOS_H */
+                    | ECHOE | ECHOK);
+# else                          /* HAVE_TERMIOS_H */
 
 /*
  * sgtty interface
@@ -1578,39 +1583,39 @@ rxvt_get_ttymode(ttymode_t *tio, int erase)
 
 /* get parameters -- gtty */
     if (ioctl(STDIN_FILENO, TIOCGETP, &(tio->sg)) < 0) {
-       tio->sg.sg_erase = CERASE;      /* ^H */
-       tio->sg.sg_kill = CKILL;        /* ^U */
+        tio->sg.sg_erase = CERASE;      /* ^H */
+        tio->sg.sg_kill = CKILL;        /* ^U */
     }
     if (erase != -1)
-       tio->sg.sg_erase = (char)erase;
+        tio->sg.sg_erase = (char)erase;
 
     tio->sg.sg_flags = (CRMOD | ECHO | EVENP | ODDP);
 
 /* get special characters */
     if (ioctl(STDIN_FILENO, TIOCGETC, &(tio->tc)) < 0) {
-       tio->tc.t_intrc = CINTR;        /* ^C */
-       tio->tc.t_quitc = CQUIT;        /* ^\ */
-       tio->tc.t_startc = CSTART;      /* ^Q */
-       tio->tc.t_stopc = CSTOP;        /* ^S */
-       tio->tc.t_eofc = CEOF;  /* ^D */
-       tio->tc.t_brkc = -1;
+        tio->tc.t_intrc = CINTR;        /* ^C */
+        tio->tc.t_quitc = CQUIT;        /* ^\ */
+        tio->tc.t_startc = CSTART;      /* ^Q */
+        tio->tc.t_stopc = CSTOP;        /* ^S */
+        tio->tc.t_eofc = CEOF;  /* ^D */
+        tio->tc.t_brkc = -1;
     }
 /* get local special chars */
     if (ioctl(STDIN_FILENO, TIOCGLTC, &(tio->lc)) < 0) {
-       tio->lc.t_suspc = CSUSP;        /* ^Z */
-       tio->lc.t_dsuspc = CDSUSP;      /* ^Y */
-       tio->lc.t_rprntc = CRPRNT;      /* ^R */
-       tio->lc.t_flushc = CFLUSH;      /* ^O */
-       tio->lc.t_werasc = CWERASE;     /* ^W */
-       tio->lc.t_lnextc = CLNEXT;      /* ^V */
+        tio->lc.t_suspc = CSUSP;        /* ^Z */
+        tio->lc.t_dsuspc = CDSUSP;      /* ^Y */
+        tio->lc.t_rprntc = CRPRNT;      /* ^R */
+        tio->lc.t_flushc = CFLUSH;      /* ^O */
+        tio->lc.t_werasc = CWERASE;     /* ^W */
+        tio->lc.t_lnextc = CLNEXT;      /* ^V */
     }
 /* get line discipline */
     ioctl(STDIN_FILENO, TIOCGETD, &(tio->line));
 # ifdef NTTYDISC
     tio->line = NTTYDISC;
-# endif                                /* NTTYDISC */
+# endif                         /* NTTYDISC */
     tio->local = (LCRTBS | LCRTERA | LCTLECH | LPASS8 | LCRTKIL);
-#endif                         /* HAVE_TERMIOS_H */
+#endif                          /* HAVE_TERMIOS_H */
 
 /*
  * Debugging
@@ -1621,9 +1626,9 @@ rxvt_get_ttymode(ttymode_t *tio, int erase)
     fprintf(stderr, "Input flags\n");
 
 /* cpp token stringize doesn't work on all machines <sigh> */
-# define FOO(flag,name)                        \
-    if ((tio->c_iflag) & flag)         \
-       fprintf (stderr, "%s ", name)
+# define FOO(flag,name)                 \
+    if ((tio->c_iflag) & flag)          \
+        fprintf (stderr, "%s ", name)
 
 /* c_iflag bits */
     FOO(IGNBRK, "IGNBRK");
@@ -1649,7 +1654,7 @@ rxvt_get_ttymode(ttymode_t *tio, int erase)
     fprintf(stderr, "\n");
 
 # undef FOO
-# define FOO(entry, name)                                      \
+# define FOO(entry, name)                                       \
     fprintf(stderr, "%-8s = %#04o\n", name, tio->c_cc [entry])
 
     FOO(VINTR, "VINTR");
@@ -1687,8 +1692,8 @@ rxvt_get_ttymode(ttymode_t *tio, int erase)
 # endif
     fprintf(stderr, "\n");
 # undef FOO
-# endif                                /* HAVE_TERMIOS_H */
-#endif                         /* DEBUG_TTYMODE */
+# endif                         /* HAVE_TERMIOS_H */
+#endif                          /* DEBUG_TTYMODE */
 }
 
 /*----------------------- end-of-file (C source) -----------------------*/
index e16bedd..45d9a94 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: init.h,v 1.2 2003-11-24 17:31:27 pcg Exp $
+ * $Id: init.h,v 1.3 2003-11-25 15:25:17 pcg Exp $
  */
 
 #ifndef _INIT_H_
 #ifndef O_NOCTTY
 # define O_NOCTTY      0
 #endif
-#ifndef O_NDELAY
-# define O_NDELAY      O_NONBLOCK      /* QNX, at least */
-#endif
 #ifndef ONLCR
 # define ONLCR         0               /* QNX, at least */
 #endif
index 5431d20..859ff9b 100644 (file)
--- a/src/iom.C
+++ b/src/iom.C
@@ -120,19 +120,19 @@ void io_manager::loop ()
       int fds = 0;
 
       for (io_watcher **w = iow.begin (); w < iow.end (); ++w)
-         {
-           if ((*w)->events & EVENT_READ ) FD_SET ((*w)->fd, &rfd);
-           if ((*w)->events & EVENT_WRITE) FD_SET ((*w)->fd, &wfd);
+        {
+          if ((*w)->events & EVENT_READ ) FD_SET ((*w)->fd, &rfd);
+          if ((*w)->events & EVENT_WRITE) FD_SET ((*w)->fd, &wfd);
 
-           if ((*w)->fd > fds) fds = (*w)->fd;
-         }
+          if ((*w)->fd > fds) fds = (*w)->fd;
+        }
 
       fds = select (fds + 1, &rfd, &wfd, 0, &to);
 
       set_now ();
 
       if (fds > 0)
-        for (io_watcher **w = iow.begin (); w < iow.end (); w++)
+        for (io_watcher **w = iow.begin (); w < iow.end (); ++w)
           {
             short revents = (*w)->events;
 
index f8e1f0a..e12fee6 100644 (file)
@@ -1,7 +1,7 @@
 /*--------------------------------*-C-*---------------------------------*
  * File:        main.c
  *----------------------------------------------------------------------*
- * $Id: main.C,v 1.3 2003-11-25 11:52:42 pcg Exp $
+ * $Id: main.C,v 1.4 2003-11-25 15:25:17 pcg Exp $
  *
  * All portions of code are copyright by their respective author/s.
  * Copyright (c) 1992      John Bovey, University of Kent at Canterbury <jdb@ukc.ac.uk>
 # include <termios.h>
 #endif
 
-rxvt_term::rxvt_term()
-: pty_ev(this, &rxvt_term::pty_cb),
-  x_ev  (this, &rxvt_term::x_cb)
-{
-  cmdbuf_ptr = cmdbuf_endp = cmdbuf_base;
-}
-
 void *
 rxvt_term::operator new (size_t s)
 {
@@ -66,89 +59,106 @@ rxvt_term::operator delete (void *p, size_t s)
   free (p);
 }
 
+rxvt_term::rxvt_term ()
+: pty_ev(this, &rxvt_term::pty_cb),
+  x_ev  (this, &rxvt_term::x_cb)
+{
+  cmdbuf_ptr = cmdbuf_endp = cmdbuf_base;
+}
+
+rxvt_term::~rxvt_term ()
+{
+  delete PixColors;
+}
+
 /*----------------------------------------------------------------------*/
 /* rxvt_init() */
 /* LIBPROTO */
 rxvt_t
 rxvt_init(int argc, const char *const *argv)
 {
-  const char    **cmd_argv;
-
   SET_R(new rxvt_term);
   dR;
 
-  if (rxvt_init_vars(aR) < 0)
+  if (!R->init_vars () || !R->init (argc, argv))
     {
-      free(R);
+      delete R;
       return NULL;
     }
 
-/*
- * Save and then give up any super-user privileges
- * If we need privileges in any area then we must specifically request it.
- * We should only need to be root in these cases:
- *  1.  write utmp entries on some systems
- *  2.  chown tty on some systems
- */
-    rxvt_privileges(aR_ SAVE);
-    rxvt_privileges(aR_ IGNORE);
+  return R;
+}
+
+bool
+rxvt_term::init (int argc, const char *const *argv)
+{
+  dR;//TODO (scrollbar, setidle)
 
-    rxvt_init_secondary(aR);
+  /*
+   * Save and then give up any super-user privileges
+   * If we need privileges in any area then we must specifically request it.
+   * We should only need to be root in these cases:
+   *  1.  write utmp entries on some systems
+   *  2.  chown tty on some systems
+   */
+  rxvt_privileges (this, SAVE);
+  rxvt_privileges (this, IGNORE);
 
-    cmd_argv = rxvt_init_resources(aR_ argc, argv);
+  rxvt_init_secondary (this);
 
-    R->x_ev.start (ConnectionNumber (R->Xdisplay), EVENT_READ);
+  const char **cmd_argv = rxvt_init_resources (this, argc, argv);
 
 #if (MENUBAR_MAX)
-    rxvt_menubar_read(aR_ R->rs[Rs_menu]);
+  rxvt_menubar_read (this, rs[Rs_menu]);
 #endif
 #ifdef HAVE_SCROLLBARS
-    if (R->Options & Opt_scrollBar)
-      scrollbar_setIdle();    /* set existence for size calculations */
+  if (Options & Opt_scrollBar)
+    scrollbar_setIdle ();    /* set existence for size calculations */
 #endif
 
-    rxvt_Create_Windows(aR_ argc, argv);
+  rxvt_Create_Windows (this, argc, argv);
 
-    rxvt_init_xlocale(aR);
+  rxvt_init_xlocale (this);
 
-    rxvt_scr_reset(aR);         /* initialize screen */
+  rxvt_scr_reset (this);         /* initialize screen */
 #ifdef RXVT_GRAPHICS
-    rxvt_Gr_reset(aR);          /* reset graphics */
+  rxvt_Gr_reset (this);          /* reset graphics */
 #endif
 
 #if 0
 #ifdef DEBUG_X
-    XSynchronize(R->Xdisplay, True);
-    XSetErrorHandler((XErrorHandler) abort);
+  XSynchronize(Xdisplay, True);
+  XSetErrorHandler((XErrorHandler) abort);
 #else
-    XSetErrorHandler((XErrorHandler) rxvt_xerror_handler);
+  XSetErrorHandler((XErrorHandler) rxvt_xerror_handler);
 #endif
 #endif
 
 #ifdef HAVE_SCROLLBARS
-    if (R->Options & Opt_scrollBar)
-      rxvt_Resize_scrollBar(aR);      /* create and map scrollbar */
+  if (Options & Opt_scrollBar)
+    rxvt_Resize_scrollBar (this);      /* create and map scrollbar */
 #endif
 #if (MENUBAR_MAX)
-    if (menubar_visible(r))
-      XMapWindow(R->Xdisplay, R->menuBar.win);
+  if (menubar_visible(r))
+    XMapWindow (Xdisplay, menuBar.win);
 #endif
 #ifdef TRANSPARENT
-    if (R->Options & Opt_transparent)
-      {
-        XSelectInput(R->Xdisplay, Xroot, PropertyChangeMask);
-        rxvt_check_our_parents(aR);
-      }
+  if (Options & Opt_transparent)
+    {
+      XSelectInput (Xdisplay, Xroot, PropertyChangeMask);
+      rxvt_check_our_parents (this);
+    }
 #endif
-    XMapWindow(R->Xdisplay, R->TermWin.vt);
-    XMapWindow(R->Xdisplay, R->TermWin.parent[0]);
+  XMapWindow (Xdisplay, TermWin.vt);
+  XMapWindow (Xdisplay, TermWin.parent[0]);
 
-    rxvt_init_env(aR);
-    rxvt_init_command(aR_ cmd_argv);
+  rxvt_init_env (this);
+  rxvt_init_command (this, cmd_argv);
 
-    R->pty_ev.start (R->cmd_fd, EVENT_READ);
+  x_ev.start (Xfd, EVENT_READ);
+  pty_ev.start (cmd_fd, EVENT_READ);
 
-    return R;
+  return true;
 }
 
 /* ------------------------------------------------------------------------- *
index ebe66bb..021940d 100644 (file)
@@ -1,7 +1,7 @@
 /*--------------------------------*-C-*---------------------------------*
  * File:       ptytty.c
  *----------------------------------------------------------------------*
- * $Id: ptytty.C,v 1.2 2003-11-24 17:31:27 pcg Exp $
+ * $Id: ptytty.C,v 1.3 2003-11-25 15:25:17 pcg Exp $
  *
  * All portions of code are copyright by their respective author/s.
  * Copyright (c) 1999-2001 Geoff Wing <gcw@pobox.com>
 int
 rxvt_get_pty(int *fd_tty, const char **ttydev)
 {
-    int             pfd;
+    int pfd;
 
 #ifdef PTYS_ARE_OPENPTY
-    char            tty_name[sizeof "/dev/pts/????\0"];
+    char tty_name[sizeof "/dev/pts/????\0"];
 
     if (openpty(&pfd, fd_tty, tty_name, NULL, NULL) != -1) {
        *ttydev = strdup(tty_name);
@@ -81,7 +81,7 @@ rxvt_get_pty(int *fd_tty, const char **ttydev)
 #endif
 
 #ifdef PTYS_ARE__GETPTY
-    *ttydev = _getpty(&pfd, O_RDWR | O_NDELAY | O_NOCTTY, 0622, 0);
+    *ttydev = _getpty(&pfd, O_RDWR | O_NONBLOCK | O_NOCTTY, 0622, 0);
     if (*ttydev != NULL)
        return pfd;
 #endif
index 9a06747..4cbb3a2 100644 (file)
@@ -7,10 +7,10 @@
 int
 main(int argc, const char *const *argv)
 {
-    if (rxvt_init(argc, argv) == NULL)
-       return EXIT_FAILURE;
+  if (!rxvt_init(argc, argv))
+    return EXIT_FAILURE;
 
-    iom.loop ();
+  iom.loop ();
 
-    return EXIT_SUCCESS;
+  return EXIT_SUCCESS;
 }
index f551f5d..6cc6c4a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: rxvt.h,v 1.3 2003-11-25 11:52:42 pcg Exp $
+ * $Id: rxvt.h,v 1.4 2003-11-25 15:25:17 pcg Exp $
  */
 
 #ifndef _RXVT_H_                /* include once only */
@@ -1116,9 +1116,17 @@ struct rxvt_term : rxvt_vars {
   void pty_cb (io_watcher &w, short revents); io_watcher pty_ev;
   void x_cb   (io_watcher &w, short revents); io_watcher x_ev;
 
+  void flush ();
+
   rxvt_term ();
   ~rxvt_term ();
 
+  bool init (int argc, const char *const *argv);
+  bool init_vars ();
+
+  uint32_t next_char ();
+
+  bool pty_fill (size_t count);
   void process_x_events ();
 
   void *operator new (size_t s);
index 1c3bf15..02b44f5 100644 (file)
@@ -1,7 +1,7 @@
 /*--------------------------------*-C-*--------------------------------------*
- * File:       screen.c
+ * File:        screen.c
  *---------------------------------------------------------------------------*
- * $Id: screen.C,v 1.3 2003-11-25 11:52:42 pcg Exp $
+ * $Id: screen.C,v 1.4 2003-11-25 15:25:17 pcg Exp $
  *
  * Copyright (c) 1997-2001 Geoff Wing <gcw@pobox.com>
  *
  * We handle _all_ screen updates and selections
  */
 
-#include "../config.h"         /* NECESSARY */
+#include "../config.h"          /* NECESSARY */
 #define INTERN_SCREEN
-#include "rxvt.h"              /* NECESSARY */
-#include "screen.intpro"       /* PROTOS for internal routines */
+#include "rxvt.h"               /* NECESSARY */
+#include "screen.intpro"        /* PROTOS for internal routines */
 
-#include <X11/Xmd.h>           /* get the typedef for CARD32 */
+#include <X11/Xmd.h>            /* get the typedef for CARD32 */
 
 #include <stdint.h>
 #include <wchar.h>
@@ -39,53 +39,53 @@ inline void fill_text (text_t *start, text_t value, int len)
     *start++ = value;
 }
 
-#define RESET_CHSTAT(H)                                \
-    if ((H)->chstat == WBYTE)                  \
-       (H)->chstat = SBYTE, (H)->lost_multi = 1
+#define RESET_CHSTAT(H)                         \
+    if ((H)->chstat == WBYTE)                   \
+        (H)->chstat = SBYTE, (H)->lost_multi = 1
 
 /* ------------------------------------------------------------------------- */
-#define PROP_SIZE              16384
-#define TABSIZE                        8       /* default tab size */
+#define PROP_SIZE               16384
+#define TABSIZE                 8       /* default tab size */
 
 /* ------------------------------------------------------------------------- *
  *             GENERAL SCREEN AND SELECTION UPDATE ROUTINES                  *
  * ------------------------------------------------------------------------- */
-#define ZERO_SCROLLBACK(R)                                             \
-    if (((R)->Options & Opt_scrollTtyOutput) == Opt_scrollTtyOutput)   \
-       (R)->TermWin.view_start = 0
-#define CLEAR_SELECTION(R)                                             \
-    (R)->selection.beg.row = (R)->selection.beg.col                    \
-       = (R)->selection.end.row = (R)->selection.end.col = 0
-#define CLEAR_ALL_SELECTION(R)                                         \
-    (R)->selection.beg.row = (R)->selection.beg.col                    \
-       = (R)->selection.mark.row = (R)->selection.mark.col             \
-       = (R)->selection.end.row = (R)->selection.end.col = 0
-
-#define ROW_AND_COL_IS_AFTER(A, B, C, D)                               \
+#define ZERO_SCROLLBACK(R)                                              \
+    if (((R)->Options & Opt_scrollTtyOutput) == Opt_scrollTtyOutput)    \
+        (R)->TermWin.view_start = 0
+#define CLEAR_SELECTION(R)                                              \
+    (R)->selection.beg.row = (R)->selection.beg.col                     \
+        = (R)->selection.end.row = (R)->selection.end.col = 0
+#define CLEAR_ALL_SELECTION(R)                                          \
+    (R)->selection.beg.row = (R)->selection.beg.col                     \
+        = (R)->selection.mark.row = (R)->selection.mark.col             \
+        = (R)->selection.end.row = (R)->selection.end.col = 0
+
+#define ROW_AND_COL_IS_AFTER(A, B, C, D)                                \
     (((A) > (C)) || (((A) == (C)) && ((B) > (D))))
-#define ROW_AND_COL_IS_BEFORE(A, B, C, D)                              \
+#define ROW_AND_COL_IS_BEFORE(A, B, C, D)                               \
     (((A) < (C)) || (((A) == (C)) && ((B) < (D))))
-#define ROW_AND_COL_IN_ROW_AFTER(A, B, C, D)                           \
+#define ROW_AND_COL_IN_ROW_AFTER(A, B, C, D)                            \
     (((A) == (C)) && ((B) > (D)))
-#define ROW_AND_COL_IN_ROW_AT_OR_AFTER(A, B, C, D)                     \
+#define ROW_AND_COL_IN_ROW_AT_OR_AFTER(A, B, C, D)                      \
     (((A) == (C)) && ((B) >= (D)))
-#define ROW_AND_COL_IN_ROW_BEFORE(A, B, C, D)                          \
+#define ROW_AND_COL_IN_ROW_BEFORE(A, B, C, D)                           \
     (((A) == (C)) && ((B) < (D)))
-#define ROW_AND_COL_IN_ROW_AT_OR_BEFORE(A, B, C, D)                    \
+#define ROW_AND_COL_IN_ROW_AT_OR_BEFORE(A, B, C, D)                     \
     (((A) == (C)) && ((B) <= (D)))
 
 /* these must be row_col_t */
-#define ROWCOL_IS_AFTER(X, Y)                                          \
+#define ROWCOL_IS_AFTER(X, Y)                                           \
     ROW_AND_COL_IS_AFTER((X).row, (X).col, (Y).row, (Y).col)
-#define ROWCOL_IS_BEFORE(X, Y)                                         \
+#define ROWCOL_IS_BEFORE(X, Y)                                          \
     ROW_AND_COL_IS_BEFORE((X).row, (X).col, (Y).row, (Y).col)
-#define ROWCOL_IN_ROW_AFTER(X, Y)                                      \
+#define ROWCOL_IN_ROW_AFTER(X, Y)                                       \
     ROW_AND_COL_IN_ROW_AFTER((X).row, (X).col, (Y).row, (Y).col)
-#define ROWCOL_IN_ROW_BEFORE(X, Y)                                     \
+#define ROWCOL_IN_ROW_BEFORE(X, Y)                                      \
     ROW_AND_COL_IN_ROW_BEFORE((X).row, (X).col, (Y).row, (Y).col)
-#define ROWCOL_IN_ROW_AT_OR_AFTER(X, Y)                                        \
+#define ROWCOL_IN_ROW_AT_OR_AFTER(X, Y)                                 \
     ROW_AND_COL_IN_ROW_AT_OR_AFTER((X).row, (X).col, (Y).row, (Y).col)
-#define ROWCOL_IN_ROW_AT_OR_BEFORE(X, Y)                               \
+#define ROWCOL_IN_ROW_AT_OR_BEFORE(X, Y)                                \
     ROW_AND_COL_IN_ROW_AT_OR_BEFORE((X).row, (X).col, (Y).row, (Y).col)
 
 /*
@@ -93,25 +93,25 @@ inline void fill_text (text_t *start, text_t value, int len)
  * CLEAR_CHARS: clear <num> chars starting from pixel position <x,y>
  * ERASE_ROWS : set <num> rows starting from row <row> to the foreground colour
  */
-#define drawBuffer     (R->TermWin.vt)
+#define drawBuffer      (R->TermWin.vt)
 
-#define CLEAR_ROWS(row, num)                                           \
-    if (R->TermWin.mapped)                                             \
-       XClearArea(R->Xdisplay, drawBuffer, R->TermWin.int_bwidth,      \
-                  Row2Pixel(row), (unsigned int)R->TermWin.width,      \
-                  (unsigned int)Height2Pixel(num), False)
+#define CLEAR_ROWS(row, num)                                            \
+    if (R->TermWin.mapped)                                              \
+        XClearArea(R->Xdisplay, drawBuffer, R->TermWin.int_bwidth,      \
+                   Row2Pixel(row), (unsigned int)R->TermWin.width,      \
+                   (unsigned int)Height2Pixel(num), False)
 
-#define CLEAR_CHARS(x, y, num)                                         \
-    if (R->TermWin.mapped)                                             \
-       XClearArea(R->Xdisplay, drawBuffer, x, y,                       \
-                  (unsigned int)Width2Pixel(num),                      \
-                  (unsigned int)Height2Pixel(1), False)
+#define CLEAR_CHARS(x, y, num)                                          \
+    if (R->TermWin.mapped)                                              \
+        XClearArea(R->Xdisplay, drawBuffer, x, y,                       \
+                   (unsigned int)Width2Pixel(num),                      \
+                   (unsigned int)Height2Pixel(1), False)
 
-#define ERASE_ROWS(row, num)                                           \
-    XFillRectangle(R->Xdisplay, drawBuffer, R->TermWin.gc,             \
-                  R->TermWin.int_bwidth, Row2Pixel(row),               \
-                  (unsigned int)R->TermWin.width,                      \
-                  (unsigned int)Height2Pixel(num))
+#define ERASE_ROWS(row, num)                                            \
+    XFillRectangle(R->Xdisplay, drawBuffer, R->TermWin.gc,              \
+                   R->TermWin.int_bwidth, Row2Pixel(row),               \
+                   (unsigned int)R->TermWin.width,                      \
+                   (unsigned int)Height2Pixel(num))
 
 /* ------------------------------------------------------------------------- *
  *                        SCREEN `COMMON' ROUTINES                           *
@@ -127,7 +127,7 @@ rxvt_blank_line(pR_ text_t *et, rend_t *er, unsigned int width, rend_t efs)
     while (width--)
       {
         *et++ = ' ';
-       *er++ = efs;
+        *er++ = efs;
       }
 }
 
@@ -144,8 +144,8 @@ rxvt_blank_screen_mem(pR_ text_t **tp, rend_t **rp, unsigned int row, rend_t efs
     assert((tp[row] && rp[row]) || (tp[row] == NULL && rp[row] == NULL));
 #endif
     if (tp[row] == NULL) {
-       tp[row] = (text_t *)rxvt_malloc(sizeof(text_t) * width);
-       rp[row] = (rend_t *)rxvt_malloc(sizeof(rend_t) * width);
+        tp[row] = (text_t *)rxvt_malloc(sizeof(text_t) * width);
+        rp[row] = (rend_t *)rxvt_malloc(sizeof(rend_t) * width);
     }
     rxvt_blank_line (aR_ tp[row], rp[row], width, efs);
 }
@@ -158,7 +158,7 @@ void
 rxvt_scr_reset(pR)
 {
     unsigned int    ncol, nrow, prev_ncol, prev_nrow,
-                   total_rows, prev_total_rows;
+                    total_rows, prev_total_rows;
     unsigned int    p, q;
     int             k;
     rend_t          setrstyle;
@@ -172,13 +172,13 @@ rxvt_scr_reset(pR)
     prev_ncol = R->prev_ncol;
     prev_nrow = R->prev_nrow;
     if (R->TermWin.ncol == 0)
-       R->TermWin.ncol = 80;
+        R->TermWin.ncol = 80;
     if (R->TermWin.nrow == 0)
-       R->TermWin.nrow = 24;
+        R->TermWin.nrow = 24;
     ncol = R->TermWin.ncol;
     nrow = R->TermWin.nrow;
     if (ncol == prev_ncol && nrow == prev_nrow)
-       return;
+        return;
 
     R->want_refresh = 1;
 
@@ -193,174 +193,174 @@ rxvt_scr_reset(pR)
  * A: first time called so just malloc everything : don't rely on realloc
  *    Note: this is still needed so that all the scrollback lines are NULL
  */
-       R->screen.text = (text_t **)rxvt_calloc(total_rows, sizeof(text_t *));
-       R->buf_text = (text_t **)rxvt_calloc(total_rows, sizeof(text_t *));
-       R->drawn_text = (text_t **)rxvt_calloc(nrow, sizeof(text_t *));
-       R->swap.text = (text_t **)rxvt_calloc(nrow, sizeof(text_t *));
-
-       R->screen.tlen = (int16_t *)rxvt_calloc(total_rows, sizeof(int16_t));
-       R->swap.tlen = (int16_t *)rxvt_calloc(nrow, sizeof(int16_t));
-
-       R->screen.rend = (rend_t **)rxvt_calloc(total_rows, sizeof(rend_t *));
-       R->buf_rend = (rend_t **)rxvt_calloc(total_rows, sizeof(rend_t *));
-       R->drawn_rend = (rend_t **)rxvt_calloc(nrow, sizeof(rend_t *));
-       R->swap.rend = (rend_t **)rxvt_calloc(nrow, sizeof(rend_t *));
-
-       for (p = 0; p < nrow; p++) {
-           q = p + R->TermWin.saveLines;
-           rxvt_blank_screen_mem(aR_ R->screen.text, R->screen.rend,
-                                 q, DEFAULT_RSTYLE);
-           rxvt_blank_screen_mem(aR_ R->swap.text, R->swap.rend,
-                                 p, DEFAULT_RSTYLE);
-           R->screen.tlen[q] = R->swap.tlen[p] = 0;
-           rxvt_blank_screen_mem(aR_ R->drawn_text, R->drawn_rend,
-                                 p, DEFAULT_RSTYLE);
-       }
-       MEMSET(R->charsets, 'B', sizeof(R->charsets));
-       R->TermWin.nscrolled = 0;       /* no saved lines */
-       R->rstyle = DEFAULT_RSTYLE;
-       R->screen.flags = Screen_DefaultFlags;
-       R->screen.cur.row = R->screen.cur.col = 0;
-       R->screen.charset = 0;
-       R->current_screen = PRIMARY;
-       rxvt_scr_cursor(aR_ SAVE);
+        R->screen.text = (text_t **)rxvt_calloc(total_rows, sizeof(text_t *));
+        R->buf_text = (text_t **)rxvt_calloc(total_rows, sizeof(text_t *));
+        R->drawn_text = (text_t **)rxvt_calloc(nrow, sizeof(text_t *));
+        R->swap.text = (text_t **)rxvt_calloc(nrow, sizeof(text_t *));
+
+        R->screen.tlen = (int16_t *)rxvt_calloc(total_rows, sizeof(int16_t));
+        R->swap.tlen = (int16_t *)rxvt_calloc(nrow, sizeof(int16_t));
+
+        R->screen.rend = (rend_t **)rxvt_calloc(total_rows, sizeof(rend_t *));
+        R->buf_rend = (rend_t **)rxvt_calloc(total_rows, sizeof(rend_t *));
+        R->drawn_rend = (rend_t **)rxvt_calloc(nrow, sizeof(rend_t *));
+        R->swap.rend = (rend_t **)rxvt_calloc(nrow, sizeof(rend_t *));
+
+        for (p = 0; p < nrow; p++) {
+            q = p + R->TermWin.saveLines;
+            rxvt_blank_screen_mem(aR_ R->screen.text, R->screen.rend,
+                                  q, DEFAULT_RSTYLE);
+            rxvt_blank_screen_mem(aR_ R->swap.text, R->swap.rend,
+                                  p, DEFAULT_RSTYLE);
+            R->screen.tlen[q] = R->swap.tlen[p] = 0;
+            rxvt_blank_screen_mem(aR_ R->drawn_text, R->drawn_rend,
+                                  p, DEFAULT_RSTYLE);
+        }
+        MEMSET(R->charsets, 'B', sizeof(R->charsets));
+        R->TermWin.nscrolled = 0;       /* no saved lines */
+        R->rstyle = DEFAULT_RSTYLE;
+        R->screen.flags = Screen_DefaultFlags;
+        R->screen.cur.row = R->screen.cur.col = 0;
+        R->screen.charset = 0;
+        R->current_screen = PRIMARY;
+        rxvt_scr_cursor(aR_ SAVE);
 #if NSCREENS
-       R->swap.flags = Screen_DefaultFlags;
-       R->swap.cur.row = R->swap.cur.col = 0;
-       R->swap.charset = 0;
-       R->current_screen = SECONDARY;
-       rxvt_scr_cursor(aR_ SAVE);
-       R->current_screen = PRIMARY;
-#endif
-       R->selection.text = NULL;
-       R->selection.len = 0;
-       R->selection.op = SELECTION_CLEAR;
-       R->selection.screen = PRIMARY;
-       R->selection.clicks = 0;
-       CLEAR_ALL_SELECTION(R);
-       R->rvideo = 0;
+        R->swap.flags = Screen_DefaultFlags;
+        R->swap.cur.row = R->swap.cur.col = 0;
+        R->swap.charset = 0;
+        R->current_screen = SECONDARY;
+        rxvt_scr_cursor(aR_ SAVE);
+        R->current_screen = PRIMARY;
+#endif
+        R->selection.text = NULL;
+        R->selection.len = 0;
+        R->selection.op = SELECTION_CLEAR;
+        R->selection.screen = PRIMARY;
+        R->selection.clicks = 0;
+        CLEAR_ALL_SELECTION(R);
+        R->rvideo = 0;
 
     } else {
 /*
  * B1: add or delete rows as appropriate
  */
-       setrstyle = DEFAULT_RSTYLE;
+        setrstyle = DEFAULT_RSTYLE;
 
-       if (nrow < prev_nrow) {
-           /* delete rows */
-           k = min(R->TermWin.nscrolled, prev_nrow - nrow);
-           rxvt_scroll_text(aR_ 0, (int)prev_nrow - 1, k, 1);
-           for (p = nrow; p < prev_nrow; p++) {
-               q = p + R->TermWin.saveLines;
-               if (R->screen.text[q]) {
+        if (nrow < prev_nrow) {
+            /* delete rows */
+            k = min(R->TermWin.nscrolled, prev_nrow - nrow);
+            rxvt_scroll_text(aR_ 0, (int)prev_nrow - 1, k, 1);
+            for (p = nrow; p < prev_nrow; p++) {
+                q = p + R->TermWin.saveLines;
+                if (R->screen.text[q]) {
 #ifdef DEBUG_STRICT
-                   assert(R->screen.rend[q]);
+                    assert(R->screen.rend[q]);
 #endif
-                   free(R->screen.text[q]);
-                   free(R->screen.rend[q]);
-               }
-               if (R->swap.text[p]) {
+                    free(R->screen.text[q]);
+                    free(R->screen.rend[q]);
+                }
+                if (R->swap.text[p]) {
 #ifdef DEBUG_STRICT
-                   assert(R->swap.rend[p]);
+                    assert(R->swap.rend[p]);
 #endif
-                   free(R->swap.text[p]);
-                   free(R->swap.rend[p]);
-               }
+                    free(R->swap.text[p]);
+                    free(R->swap.rend[p]);
+                }
 #ifdef DEBUG_STRICT
-               assert(R->drawn_text[p] && R->drawn_rend[p]);
-#endif
-               free(R->drawn_text[p]);
-               free(R->drawn_rend[p]);
-           }
-           /* we have fewer rows so fix up cursor position */
-           MIN_IT(R->screen.cur.row, (int32_t)nrow - 1);
-           MIN_IT(R->swap.cur.row, (int32_t)nrow - 1);
-
-           rxvt_scr_reset_realloc(aR); /* realloc _last_ */
-
-       } else if (nrow > prev_nrow) {
-           /* add rows */
-           rxvt_scr_reset_realloc(aR); /* realloc _first_ */
-
-           k = min(R->TermWin.nscrolled, nrow - prev_nrow);
-           for (p = prev_total_rows; p < total_rows; p++) {
-               R->screen.tlen[p] = 0;
-               R->screen.text[p] = NULL;
-               R->screen.rend[p] = NULL;
-           }
-           for (p = prev_total_rows; p < total_rows - k; p++)
-               rxvt_blank_screen_mem(aR_ R->screen.text, R->screen.rend,
-                                     p, setrstyle);
-           for (p = prev_nrow; p < nrow; p++) {
-               R->swap.tlen[p] = 0;
-               R->swap.text[p] = NULL;
-               R->swap.rend[p] = NULL;
-               R->drawn_text[p] = NULL;
-               R->drawn_rend[p] = NULL;
-               rxvt_blank_screen_mem(aR_ R->swap.text, R->swap.rend,
-                                     p, setrstyle);
-               rxvt_blank_screen_mem(aR_ R->drawn_text, R->drawn_rend,
-                                     p, setrstyle);
-           }
-           if (k > 0) {
-               rxvt_scroll_text(aR_ 0, (int)nrow - 1, -k, 1);
-               R->screen.cur.row += k;
-               R->screen.s_cur.row += k;
-               R->TermWin.nscrolled -= k;
-           }
+                assert(R->drawn_text[p] && R->drawn_rend[p]);
+#endif
+                free(R->drawn_text[p]);
+                free(R->drawn_rend[p]);
+            }
+            /* we have fewer rows so fix up cursor position */
+            MIN_IT(R->screen.cur.row, (int32_t)nrow - 1);
+            MIN_IT(R->swap.cur.row, (int32_t)nrow - 1);
+
+            rxvt_scr_reset_realloc(aR); /* realloc _last_ */
+
+        } else if (nrow > prev_nrow) {
+            /* add rows */
+            rxvt_scr_reset_realloc(aR); /* realloc _first_ */
+
+            k = min(R->TermWin.nscrolled, nrow - prev_nrow);
+            for (p = prev_total_rows; p < total_rows; p++) {
+                R->screen.tlen[p] = 0;
+                R->screen.text[p] = NULL;
+                R->screen.rend[p] = NULL;
+            }
+            for (p = prev_total_rows; p < total_rows - k; p++)
+                rxvt_blank_screen_mem(aR_ R->screen.text, R->screen.rend,
+                                      p, setrstyle);
+            for (p = prev_nrow; p < nrow; p++) {
+                R->swap.tlen[p] = 0;
+                R->swap.text[p] = NULL;
+                R->swap.rend[p] = NULL;
+                R->drawn_text[p] = NULL;
+                R->drawn_rend[p] = NULL;
+                rxvt_blank_screen_mem(aR_ R->swap.text, R->swap.rend,
+                                      p, setrstyle);
+                rxvt_blank_screen_mem(aR_ R->drawn_text, R->drawn_rend,
+                                      p, setrstyle);
+            }
+            if (k > 0) {
+                rxvt_scroll_text(aR_ 0, (int)nrow - 1, -k, 1);
+                R->screen.cur.row += k;
+                R->screen.s_cur.row += k;
+                R->TermWin.nscrolled -= k;
+            }
 #ifdef DEBUG_STRICT
-           assert(R->screen.cur.row < R->TermWin.nrow);
-           assert(R->swap.cur.row < R->TermWin.nrow);
-#else                          /* drive with your eyes closed */
-           MIN_IT(R->screen.cur.row, nrow - 1);
-           MIN_IT(R->swap.cur.row, nrow - 1);
+            assert(R->screen.cur.row < R->TermWin.nrow);
+            assert(R->swap.cur.row < R->TermWin.nrow);
+#else                           /* drive with your eyes closed */
+            MIN_IT(R->screen.cur.row, nrow - 1);
+            MIN_IT(R->swap.cur.row, nrow - 1);
 #endif
-       }
+        }
 /* B2: resize columns */
-       if (ncol != prev_ncol) {
-           for (p = 0; p < total_rows; p++) {
-               if (R->screen.text[p]) {
-                   R->screen.text[p] = (text_t *)rxvt_realloc(R->screen.text[p], ncol * sizeof(text_t));
-                   R->screen.rend[p] = (rend_t *)rxvt_realloc(R->screen.rend[p], ncol * sizeof(rend_t));
-                   MIN_IT(R->screen.tlen[p], (int16_t)ncol);
-                   if (ncol > prev_ncol)
-                       rxvt_blank_line(aR_
+        if (ncol != prev_ncol) {
+            for (p = 0; p < total_rows; p++) {
+                if (R->screen.text[p]) {
+                    R->screen.text[p] = (text_t *)rxvt_realloc(R->screen.text[p], ncol * sizeof(text_t));
+                    R->screen.rend[p] = (rend_t *)rxvt_realloc(R->screen.rend[p], ncol * sizeof(rend_t));
+                    MIN_IT(R->screen.tlen[p], (int16_t)ncol);
+                    if (ncol > prev_ncol)
+                        rxvt_blank_line(aR_
                                         &(R->screen.text[p][prev_ncol]),
-                                       &(R->screen.rend[p][prev_ncol]),
-                                       ncol - prev_ncol,
-                                       setrstyle);
-               }
-           }
-           for (p = 0; p < nrow; p++) {
-               R->drawn_text[p] = (text_t *)rxvt_realloc(R->drawn_text[p], ncol * sizeof(text_t));
-               R->drawn_rend[p] = (rend_t *)rxvt_realloc(R->drawn_rend[p], ncol * sizeof(rend_t));
-               if (R->swap.text[p]) {
-                   R->swap.text[p] = (text_t *)rxvt_realloc(R->swap.text[p], ncol * sizeof(text_t));
-                   R->swap.rend[p] = (rend_t *)rxvt_realloc(R->swap.rend[p], ncol * sizeof(rend_t));
-                   MIN_IT(R->swap.tlen[p], (int16_t)ncol);
-                   if (ncol > prev_ncol)
-                       rxvt_blank_line(aR_
+                                        &(R->screen.rend[p][prev_ncol]),
+                                        ncol - prev_ncol,
+                                        setrstyle);
+                }
+            }
+            for (p = 0; p < nrow; p++) {
+                R->drawn_text[p] = (text_t *)rxvt_realloc(R->drawn_text[p], ncol * sizeof(text_t));
+                R->drawn_rend[p] = (rend_t *)rxvt_realloc(R->drawn_rend[p], ncol * sizeof(rend_t));
+                if (R->swap.text[p]) {
+                    R->swap.text[p] = (text_t *)rxvt_realloc(R->swap.text[p], ncol * sizeof(text_t));
+                    R->swap.rend[p] = (rend_t *)rxvt_realloc(R->swap.rend[p], ncol * sizeof(rend_t));
+                    MIN_IT(R->swap.tlen[p], (int16_t)ncol);
+                    if (ncol > prev_ncol)
+                        rxvt_blank_line(aR_
                                         &(R->swap.text[p][prev_ncol]),
-                                       &(R->swap.rend[p][prev_ncol]),
-                                       ncol - prev_ncol, setrstyle);
-               }
-               if (ncol > prev_ncol)
-                   rxvt_blank_line(aR_
+                                        &(R->swap.rend[p][prev_ncol]),
+                                        ncol - prev_ncol, setrstyle);
+                }
+                if (ncol > prev_ncol)
+                    rxvt_blank_line(aR_
                                     &(R->drawn_text[p][prev_ncol]),
-                                   &(R->drawn_rend[p][prev_ncol]),
-                                   ncol - prev_ncol, setrstyle);
-           }
-           MIN_IT(R->screen.cur.col, (int16_t)ncol - 1);
-           MIN_IT(R->swap.cur.col, (int16_t)ncol - 1);
-       }
-       if (R->tabs)
-           free(R->tabs);
+                                    &(R->drawn_rend[p][prev_ncol]),
+                                    ncol - prev_ncol, setrstyle);
+            }
+            MIN_IT(R->screen.cur.col, (int16_t)ncol - 1);
+            MIN_IT(R->swap.cur.col, (int16_t)ncol - 1);
+        }
+        if (R->tabs)
+            free(R->tabs);
     }
 
     R->tabs = (char *)rxvt_malloc(ncol * sizeof(char));
 
     for (p = 0; p < ncol; p++)
-       R->tabs[p] = (p % TABSIZE == 0) ? 1 : 0;
+        R->tabs[p] = (p % TABSIZE == 0) ? 1 : 0;
 
     R->prev_nrow = nrow;
     R->prev_ncol = ncol;
@@ -405,19 +405,19 @@ rxvt_scr_release(pR)
 
     total_rows = R->TermWin.nrow + R->TermWin.saveLines;
     for (i = 0; i < total_rows; i++) {
-       if (R->screen.text[i]) {        /* then so is R->screen.rend[i] */
-           free(R->screen.text[i]);
+        if (R->screen.text[i]) {        /* then so is R->screen.rend[i] */
+            free(R->screen.text[i]);
 #ifdef DEBUG_STRICT
-           assert(R->screen.rend[i]);
+            assert(R->screen.rend[i]);
 #endif
-           free(R->screen.rend[i]);
-       }
+            free(R->screen.rend[i]);
+        }
     }
     for (i = 0; i < R->TermWin.nrow; i++) {
-       free(R->drawn_text[i]);
-       free(R->drawn_rend[i]);
-       free(R->swap.text[i]);
-       free(R->swap.rend[i]);
+        free(R->drawn_text[i]);
+        free(R->drawn_rend[i]);
+        free(R->swap.text[i]);
+        free(R->swap.rend[i]);
     }
     free(R->screen.text);
     free(R->screen.tlen);
@@ -479,28 +479,28 @@ rxvt_scr_cursor(pR_ int mode)
 
 #if NSCREENS && !defined(NO_SECONDARY_SCREEN_CURSOR)
     if (R->current_screen == SECONDARY)
-       s = &(R->swap);
+        s = &(R->swap);
     else
 #endif
-       s = &(R->screen);
+        s = &(R->screen);
     switch (mode) {
     case SAVE:
-       s->s_cur.row = s->cur.row;
-       s->s_cur.col = s->cur.col;
-       s->s_rstyle = R->rstyle;
-       s->s_charset = s->charset;
-       s->s_charset_char = R->charsets[s->charset];
-       break;
+        s->s_cur.row = s->cur.row;
+        s->s_cur.col = s->cur.col;
+        s->s_rstyle = R->rstyle;
+        s->s_charset = s->charset;
+        s->s_charset_char = R->charsets[s->charset];
+        break;
     case RESTORE:
-       R->want_refresh = 1;
-       s->cur.row = s->s_cur.row;
-       s->cur.col = s->s_cur.col;
-       s->flags &= ~Screen_WrapNext;
-       R->rstyle = s->s_rstyle;
-       s->charset = s->s_charset;
-       R->charsets[s->charset] = s->s_charset_char;
-       rxvt_set_font_style(aR);
-       break;
+        R->want_refresh = 1;
+        s->cur.row = s->s_cur.row;
+        s->cur.col = s->s_cur.col;
+        s->flags &= ~Screen_WrapNext;
+        R->rstyle = s->s_rstyle;
+        s->charset = s->s_charset;
+        R->charsets[s->charset] = s->s_charset_char;
+        rxvt_set_font_style(aR);
+        break;
     }
 /* boundary check in case screen size changed between SAVE and RESTORE */
     MIN_IT(s->cur.row, R->TermWin.nrow - 1);
@@ -508,7 +508,7 @@ rxvt_scr_cursor(pR_ int mode)
 #ifdef DEBUG_STRICT
     assert(s->cur.row >= 0);
     assert(s->cur.col >= 0);
-#else                          /* drive with your eyes closed */
+#else                           /* drive with your eyes closed */
     MAX_IT(s->cur.row, 0);
     MAX_IT(s->cur.col, 0);
 #endif
@@ -537,25 +537,25 @@ rxvt_scr_change_screen(pR_ int scrn)
     RESET_CHSTAT(R);
 
     if (R->current_screen == scrn)
-       return R->current_screen;
+        return R->current_screen;
 
-    rxvt_selection_check(aR_ 2);       /* check for boundary cross */
+    rxvt_selection_check(aR_ 2);        /* check for boundary cross */
 
     SWAP_IT(R->current_screen, scrn, int);
 #if NSCREENS
     R->num_scr = 0;
     offset = R->TermWin.saveLines;
     for (i = R->prev_nrow; i--;) {
-       SWAP_IT(R->screen.text[i + offset], R->swap.text[i], text_t *);
-       SWAP_IT(R->screen.tlen[i + offset], R->swap.tlen[i], int16_t);
-       SWAP_IT(R->screen.rend[i + offset], R->swap.rend[i], rend_t *);
+        SWAP_IT(R->screen.text[i + offset], R->swap.text[i], text_t *);
+        SWAP_IT(R->screen.tlen[i + offset], R->swap.tlen[i], int16_t);
+        SWAP_IT(R->screen.rend[i + offset], R->swap.rend[i], rend_t *);
     }
     SWAP_IT(R->screen.cur.row, R->swap.cur.row, int16_t);
     SWAP_IT(R->screen.cur.col, R->swap.cur.col, int16_t);
 # ifdef DEBUG_STRICT
     assert((R->screen.cur.row >= 0) && (R->screen.cur.row < R->prev_nrow));
     assert((R->screen.cur.col >= 0) && (R->screen.cur.col < R->prev_ncol));
-# else                         /* drive with your eyes closed */
+# else                          /* drive with your eyes closed */
     MAX_IT(R->screen.cur.row, 0);
     MIN_IT(R->screen.cur.row, (int32_t)R->prev_nrow - 1);
     MAX_IT(R->screen.cur.col, 0);
@@ -569,22 +569,22 @@ rxvt_scr_change_screen(pR_ int scrn)
 # ifdef RXVT_GRAPHICS
 
     if (rxvt_Gr_Displayed(aR)) {
-       rxvt_Gr_scroll(aR_ 0);
-       rxvt_Gr_ChangeScreen(aR);
+        rxvt_Gr_scroll(aR_ 0);
+        rxvt_Gr_ChangeScreen(aR);
     }
 # endif
 #else
 # ifdef SCROLL_ON_NO_SECONDARY
 #  ifdef RXVT_GRAPHICS
     if (rxvt_Gr_Displayed(aR))
-       rxvt_Gr_ClearScreen(aR);
+        rxvt_Gr_ClearScreen(aR);
 #  endif
     if (R->current_screen == PRIMARY
 #  ifdef RXVT_GRAPHICS
         && !rxvt_Gr_Displayed(aR)
 #  endif
         )
-       rxvt_scroll_text(aR_ 0, (R->prev_nrow - 1), R->prev_nrow, 0);
+        rxvt_scroll_text(aR_ 0, (R->prev_nrow - 1), R->prev_nrow, 0);
 # endif
 #endif
     return scrn;
@@ -600,9 +600,9 @@ rxvt_scr_color(pR_ unsigned int color, int fgbg)
 {
     color &= RS_fgMask;
     if (fgbg == Color_fg)
-       R->rstyle = SET_FGCOLOR(R->rstyle, color);
+        R->rstyle = SET_FGCOLOR(R->rstyle, color);
     else 
-       R->rstyle = SET_BGCOLOR(R->rstyle, color);
+        R->rstyle = SET_BGCOLOR(R->rstyle, color);
 }
 
 /* ------------------------------------------------------------------------- */
@@ -614,11 +614,11 @@ void
 rxvt_scr_rendition(pR_ int set, int style)
 {
     if (set)
-       R->rstyle |= style;
+        R->rstyle |= style;
     else if (style == ~RS_None)
-       R->rstyle = DEFAULT_RSTYLE;
+        R->rstyle = DEFAULT_RSTYLE;
     else
-       R->rstyle &= ~style;
+        R->rstyle &= ~style;
 }
 
 /* ------------------------------------------------------------------------- */
@@ -636,49 +636,49 @@ rxvt_scroll_text(pR_ int row1, int row2, int count, int spec)
     long            nscrolled;
 
     if (count == 0 || (row1 > row2))
-       return 0;
+        return 0;
 
     R->want_refresh = 1;
     D_SCREEN((stderr, "rxvt_scroll_text(%d,%d,%d,%d): %s", row1, row2, count, spec, (R->current_screen == PRIMARY) ? "Primary" : "Secondary"));
 
     if ((count > 0) && (row1 == 0) && (R->current_screen == PRIMARY)) {
-       nscrolled = (long)R->TermWin.nscrolled + (long)count;;
-       if (nscrolled > (long)R->TermWin.saveLines)
-           R->TermWin.nscrolled = R->TermWin.saveLines;
-       else
-           R->TermWin.nscrolled = (uint16_t)nscrolled;
-       if ((R->Options & Opt_scrollWithBuffer)
-           && R->TermWin.view_start != 0
-           && R->TermWin.view_start != R->TermWin.saveLines)
-           rxvt_scr_page(aR_ UP, count);
+        nscrolled = (long)R->TermWin.nscrolled + (long)count;;
+        if (nscrolled > (long)R->TermWin.saveLines)
+            R->TermWin.nscrolled = R->TermWin.saveLines;
+        else
+            R->TermWin.nscrolled = (uint16_t)nscrolled;
+        if ((R->Options & Opt_scrollWithBuffer)
+            && R->TermWin.view_start != 0
+            && R->TermWin.view_start != R->TermWin.saveLines)
+            rxvt_scr_page(aR_ UP, count);
     } else if (!spec)
-       row1 += R->TermWin.saveLines;
+        row1 += R->TermWin.saveLines;
     row2 += R->TermWin.saveLines;
 
     if (R->selection.op && R->current_screen == R->selection.screen) {
-       i = R->selection.beg.row + R->TermWin.saveLines;
-       j = R->selection.end.row + R->TermWin.saveLines;
-       if ((i < row1 && j > row1)
-           || (i < row2 && j > row2)
-           || (i - count < row1 && i >= row1)
-           || (i - count > row2 && i <= row2)
-           || (j - count < row1 && j >= row1)
-           || (j - count > row2 && j <= row2)) {
-           CLEAR_ALL_SELECTION(R);
-           R->selection.op = SELECTION_CLEAR;  /* XXX: too aggressive? */
-       } else if (j >= row1 && j <= row2) {
-           /* move selected region too */
-           R->selection.beg.row -= count;
-           R->selection.end.row -= count;
-           R->selection.mark.row -= count;
-       }
+        i = R->selection.beg.row + R->TermWin.saveLines;
+        j = R->selection.end.row + R->TermWin.saveLines;
+        if ((i < row1 && j > row1)
+            || (i < row2 && j > row2)
+            || (i - count < row1 && i >= row1)
+            || (i - count > row2 && i <= row2)
+            || (j - count < row1 && j >= row1)
+            || (j - count > row2 && j <= row2)) {
+            CLEAR_ALL_SELECTION(R);
+            R->selection.op = SELECTION_CLEAR;  /* XXX: too aggressive? */
+        } else if (j >= row1 && j <= row2) {
+            /* move selected region too */
+            R->selection.beg.row -= count;
+            R->selection.end.row -= count;
+            R->selection.mark.row -= count;
+        }
     }
-    rxvt_selection_check(aR_ 0);       /* _after_ R->TermWin.nscrolled update */
+    rxvt_selection_check(aR_ 0);        /* _after_ R->TermWin.nscrolled update */
 
     R->num_scr += count;
     j = count;
     if (count < 0)
-       count = -count;
+        count = -count;
     i = row2 - row1 + 1;
     MIN_IT(count, i);
 
@@ -686,48 +686,48 @@ rxvt_scroll_text(pR_ int row1, int row2, int count, int spec)
 /* A: scroll up */
 
 /* A1: Copy lines that will get clobbered by the rotation */
-       for (i = 0, j = row1; i < count; i++, j++) {
-           R->buf_text[i] = R->screen.text[j];
-           R->buf_rend[i] = R->screen.rend[j];
-       }
+        for (i = 0, j = row1; i < count; i++, j++) {
+            R->buf_text[i] = R->screen.text[j];
+            R->buf_rend[i] = R->screen.rend[j];
+        }
 /* A2: Rotate lines */
-       for (j = row1, i = j + count; i <= row2; i++, j++) {
-           R->screen.tlen[j] = R->screen.tlen[i];
-           R->screen.text[j] = R->screen.text[i];
-           R->screen.rend[j] = R->screen.rend[i];
-       }
-       j = row2 - count + 1, i = count;
+        for (j = row1, i = j + count; i <= row2; i++, j++) {
+            R->screen.tlen[j] = R->screen.tlen[i];
+            R->screen.text[j] = R->screen.text[i];
+            R->screen.rend[j] = R->screen.rend[i];
+        }
+        j = row2 - count + 1, i = count;
     } else /* if (j < 0) */ {
 /* B: scroll down */
 
 /* B1: Copy lines that will get clobbered by the rotation */
-       for (i = 0, j = row2; i < count; i++, j--) {
-           R->buf_text[i] = R->screen.text[j];
-           R->buf_rend[i] = R->screen.rend[j];
-       }
+        for (i = 0, j = row2; i < count; i++, j--) {
+            R->buf_text[i] = R->screen.text[j];
+            R->buf_rend[i] = R->screen.rend[j];
+        }
 /* B2: Rotate lines */
-       for (j = row2, i = j - count; i >= row1; i--, j--) {
-           R->screen.tlen[j] = R->screen.tlen[i];
-           R->screen.text[j] = R->screen.text[i];
-           R->screen.rend[j] = R->screen.rend[i];
-       }
-       j = row1, i = count;
-       count = -count;
+        for (j = row2, i = j - count; i >= row1; i--, j--) {
+            R->screen.tlen[j] = R->screen.tlen[i];
+            R->screen.text[j] = R->screen.text[i];
+            R->screen.rend[j] = R->screen.rend[i];
+        }
+        j = row1, i = count;
+        count = -count;
     }
 
 /* C: Resurrect lines */
     for (; i--; j++) {
-       R->screen.tlen[j] = 0;
-       R->screen.text[j] = R->buf_text[i];
-       R->screen.rend[j] = R->buf_rend[i];
-       if (!spec)              /* line length may not equal TermWin.ncol */
-           rxvt_blank_screen_mem(aR_ R->screen.text, R->screen.rend,
-                                 (unsigned int)j, R->rstyle);
+        R->screen.tlen[j] = 0;
+        R->screen.text[j] = R->buf_text[i];
+        R->screen.rend[j] = R->buf_rend[i];
+        if (!spec)              /* line length may not equal TermWin.ncol */
+            rxvt_blank_screen_mem(aR_ R->screen.text, R->screen.rend,
+                                  (unsigned int)j, R->rstyle);
     }
 
 #ifdef RXVT_GRAPHICS
     if (rxvt_Gr_Displayed(aR))
-       rxvt_Gr_scroll(aR_ count);
+        rxvt_Gr_scroll(aR_ count);
 #endif
     return count;
 }
@@ -746,8 +746,8 @@ rxvt_scr_add_lines(pR_ const uint32_t *str, int nlines, int len)
     text_t         *stp;
     rend_t         *srp;
 
-    if (len <= 0)              /* sanity */
-       return;
+    if (len <= 0)               /* sanity */
+        return;
 
     R->want_refresh = 1;
     last_col = R->TermWin.ncol;
@@ -755,21 +755,21 @@ rxvt_scr_add_lines(pR_ const uint32_t *str, int nlines, int len)
     D_SCREEN((stderr, "rxvt_scr_add_lines(%d,%d)", nlines, len));
     ZERO_SCROLLBACK(R);
     if (nlines > 0) {
-       nlines += (R->screen.cur.row - R->screen.bscroll);
-       if ((nlines > 0)
-           && (R->screen.tscroll == 0)
-           && (R->screen.bscroll == (R->TermWin.nrow - 1))) {
-           /* _at least_ this many lines need to be scrolled */
-           rxvt_scroll_text(aR_ R->screen.tscroll, R->screen.bscroll, nlines,
-                            0);
-           R->screen.cur.row -= nlines;
-       }
+        nlines += (R->screen.cur.row - R->screen.bscroll);
+        if ((nlines > 0)
+            && (R->screen.tscroll == 0)
+            && (R->screen.bscroll == (R->TermWin.nrow - 1))) {
+            /* _at least_ this many lines need to be scrolled */
+            rxvt_scroll_text(aR_ R->screen.tscroll, R->screen.bscroll, nlines,
+                             0);
+            R->screen.cur.row -= nlines;
+        }
     }
 #ifdef DEBUG_STRICT
     assert(R->screen.cur.col < last_col);
     assert((R->screen.cur.row < R->TermWin.nrow)
-          && (R->screen.cur.row >= -(int32_t)R->TermWin.nscrolled));
-#else                          /* drive with your eyes closed */
+           && (R->screen.cur.row >= -(int32_t)R->TermWin.nscrolled));
+#else                           /* drive with your eyes closed */
     MIN_IT(R->screen.cur.col, last_col - 1);
     MIN_IT(R->screen.cur.row, (int32_t)R->TermWin.nrow - 1);
     MAX_IT(R->screen.cur.row, -(int32_t)R->TermWin.nscrolled);
@@ -777,62 +777,62 @@ rxvt_scr_add_lines(pR_ const uint32_t *str, int nlines, int len)
     row = R->screen.cur.row + R->TermWin.saveLines;
 
     checksel = (R->selection.op
-               && R->current_screen == R->selection.screen) ? 1 : 0;
+                && R->current_screen == R->selection.screen) ? 1 : 0;
     clearsel = 0;
 
     stp = R->screen.text[row];
     srp = R->screen.rend[row];
 
     for (i = 0; i < len;) {
-       c = str[i++];
-       switch (c) {
-       case '\t':
-           rxvt_scr_tab(aR_ 1);
-           continue;
-       case '\n':
-           if (R->screen.tlen[row] != -1)      /* XXX: think about this */
-               MAX_IT(R->screen.tlen[row], R->screen.cur.col);
-           R->screen.flags &= ~Screen_WrapNext;
-           if (R->screen.cur.row == R->screen.bscroll)
-               rxvt_scroll_text(aR_ R->screen.tscroll, R->screen.bscroll, 1, 0);
-           else if (R->screen.cur.row < (R->TermWin.nrow - 1))
-               row = (++R->screen.cur.row) + R->TermWin.saveLines;
-           stp = R->screen.text[row];  /* _must_ refresh */
-           srp = R->screen.rend[row];  /* _must_ refresh */
-           RESET_CHSTAT(R);
-           continue;
-       case '\r':
-           if (R->screen.tlen[row] != -1)      /* XXX: think about this */
-               MAX_IT(R->screen.tlen[row], R->screen.cur.col);
-           R->screen.flags &= ~Screen_WrapNext;
-           R->screen.cur.col = 0;
-           RESET_CHSTAT(R);
-           continue;
-       default:
-           if (c == 127)
-               continue;       /* yummmm..... */
-           break;
-       }
-
-       if (checksel            /* see if we're writing within selection */
-           && !ROWCOL_IS_BEFORE(R->screen.cur, R->selection.beg)
-           && ROWCOL_IS_BEFORE(R->screen.cur, R->selection.end)) {
-           checksel = 0;
-           clearsel = 1;
-       }
-       if (R->screen.flags & Screen_WrapNext) {
-           R->screen.tlen[row] = -1;
-           if (R->screen.cur.row == R->screen.bscroll)
-               rxvt_scroll_text(aR_ R->screen.tscroll, R->screen.bscroll, 1, 0);
-           else if (R->screen.cur.row < (R->TermWin.nrow - 1))
-               row = (++R->screen.cur.row) + R->TermWin.saveLines;
-           stp = R->screen.text[row];  /* _must_ refresh */
-           srp = R->screen.rend[row];  /* _must_ refresh */
-           R->screen.cur.col = 0;
-           R->screen.flags &= ~Screen_WrapNext;
-       }
-       if (R->screen.flags & Screen_Insert)
-           rxvt_scr_insdel_chars(aR_ 1, INSERT);
+        c = str[i++];
+        switch (c) {
+        case '\t':
+            rxvt_scr_tab(aR_ 1);
+            continue;
+        case '\n':
+            if (R->screen.tlen[row] != -1)      /* XXX: think about this */
+                MAX_IT(R->screen.tlen[row], R->screen.cur.col);
+            R->screen.flags &= ~Screen_WrapNext;
+            if (R->screen.cur.row == R->screen.bscroll)
+                rxvt_scroll_text(aR_ R->screen.tscroll, R->screen.bscroll, 1, 0);
+            else if (R->screen.cur.row < (R->TermWin.nrow - 1))
+                row = (++R->screen.cur.row) + R->TermWin.saveLines;
+            stp = R->screen.text[row];  /* _must_ refresh */
+            srp = R->screen.rend[row];  /* _must_ refresh */
+            RESET_CHSTAT(R);
+            continue;
+        case '\r':
+            if (R->screen.tlen[row] != -1)      /* XXX: think about this */
+                MAX_IT(R->screen.tlen[row], R->screen.cur.col);
+            R->screen.flags &= ~Screen_WrapNext;
+            R->screen.cur.col = 0;
+            RESET_CHSTAT(R);
+            continue;
+        default:
+            if (c == 127)
+                continue;       /* yummmm..... */
+            break;
+        }
+
+        if (checksel            /* see if we're writing within selection */
+            && !ROWCOL_IS_BEFORE(R->screen.cur, R->selection.beg)
+            && ROWCOL_IS_BEFORE(R->screen.cur, R->selection.end)) {
+            checksel = 0;
+            clearsel = 1;
+        }
+        if (R->screen.flags & Screen_WrapNext) {
+            R->screen.tlen[row] = -1;
+            if (R->screen.cur.row == R->screen.bscroll)
+                rxvt_scroll_text(aR_ R->screen.tscroll, R->screen.bscroll, 1, 0);
+            else if (R->screen.cur.row < (R->TermWin.nrow - 1))
+                row = (++R->screen.cur.row) + R->TermWin.saveLines;
+            stp = R->screen.text[row];  /* _must_ refresh */
+            srp = R->screen.rend[row];  /* _must_ refresh */
+            R->screen.cur.col = 0;
+            R->screen.flags &= ~Screen_WrapNext;
+        }
+        if (R->screen.flags & Screen_Insert)
+            rxvt_scr_insdel_chars(aR_ 1, INSERT);
 
         if (R->charsets[R->screen.charset] == '0') // DEC SPECIAL
           switch (c)
@@ -852,8 +852,8 @@ rxvt_scr_add_lines(pR_ const uint32_t *str, int nlines, int len)
 
         rend_t rend = SET_FONT (R->rstyle, R->TermWin.fontset->find_font (c));
 
-       stp[R->screen.cur.col] = c;
-       srp[R->screen.cur.col] = rend;
+        stp[R->screen.cur.col] = c;
+        srp[R->screen.cur.col] = rend;
 
         if (c > 255)
           {
@@ -874,16 +874,16 @@ rxvt_scr_add_lines(pR_ const uint32_t *str, int nlines, int len)
               }
           }
 
-       if (R->screen.cur.col < last_col - 1)
-           R->screen.cur.col++;
-       else {
-           R->screen.tlen[row] = last_col;
-           if (R->screen.flags & Screen_Autowrap)
-               R->screen.flags |= Screen_WrapNext;
-       }
+        if (R->screen.cur.col < last_col - 1)
+            R->screen.cur.col++;
+        else {
+            R->screen.tlen[row] = last_col;
+            if (R->screen.flags & Screen_Autowrap)
+                R->screen.flags |= Screen_WrapNext;
+        }
     }
-    if (R->screen.tlen[row] != -1)     /* XXX: think about this */
-       MAX_IT(R->screen.tlen[row], R->screen.cur.col);
+    if (R->screen.tlen[row] != -1)      /* XXX: think about this */
+        MAX_IT(R->screen.tlen[row], R->screen.cur.col);
 
 /*
  * If we wrote anywhere in the selected area, kill the selection
@@ -891,11 +891,11 @@ rxvt_scr_add_lines(pR_ const uint32_t *str, int nlines, int len)
  *      should be a similar check.
  */
     if (clearsel)
-       CLEAR_SELECTION(R);
+        CLEAR_SELECTION(R);
 
 #ifdef DEBUG_STRICT
     assert(R->screen.cur.row >= 0);
-#else                          /* drive with your eyes closed */
+#else                           /* drive with your eyes closed */
     MAX_IT(R->screen.cur.row, 0);
 #endif
 }
@@ -912,15 +912,15 @@ rxvt_scr_backspace(pR)
     RESET_CHSTAT(R);
     R->want_refresh = 1;
     if (R->screen.cur.col == 0) {
-       if (R->screen.cur.row > 0) {
+        if (R->screen.cur.row > 0) {
 #ifdef TERMCAP_HAS_BW
-           R->screen.cur.col = R->TermWin.ncol - 1;
-           R->screen.cur.row--;
-           return;
+            R->screen.cur.col = R->TermWin.ncol - 1;
+            R->screen.cur.row--;
+            return;
 #endif
-       }
+        }
     } else if ((R->screen.flags & Screen_WrapNext) == 0)
-       rxvt_scr_gotorc(aR_ 0, -1, RELATIVE);
+        rxvt_scr_gotorc(aR_ 0, -1, RELATIVE);
     R->screen.flags &= ~Screen_WrapNext;
 }
 
@@ -941,28 +941,28 @@ rxvt_scr_tab(pR_ int count)
     RESET_CHSTAT(R);
     i = x = R->screen.cur.col;
     if (count == 0)
-       return;
+        return;
     else if (count > 0) {
-       for (; ++i < R->TermWin.ncol; )
-           if (R->tabs[i]) {
-               x = i;
-               if (!--count)
-                   break;
-           }
-       if (count)
-           x = R->TermWin.ncol - 1;
+        for (; ++i < R->TermWin.ncol; )
+            if (R->tabs[i]) {
+                x = i;
+                if (!--count)
+                    break;
+            }
+        if (count)
+            x = R->TermWin.ncol - 1;
     } else /* if (count < 0) */ {
-       for (; --i >= 0; )
-           if (R->tabs[i]) {
-               x = i;
-               if (!++count)
-                   break;
-           }
-       if (count)
-           x = 0;
+        for (; --i >= 0; )
+            if (R->tabs[i]) {
+                x = i;
+                if (!++count)
+                    break;
+            }
+        if (count)
+            x = 0;
     }
     if (x != R->screen.cur.col)
-       rxvt_scr_gotorc(aR_ 0, x, R_RELATIVE);
+        rxvt_scr_gotorc(aR_ 0, x, R_RELATIVE);
 }
 
 /* ------------------------------------------------------------------------- */
@@ -978,11 +978,11 @@ void
 rxvt_scr_backindex(pR)
 {
     if (R->screen.cur.col > 0)
-       rxvt_scr_gotorc(aR_ 0, -1, R_RELATIVE | C_RELATIVE);
+        rxvt_scr_gotorc(aR_ 0, -1, R_RELATIVE | C_RELATIVE);
     else {
-       if (R->screen.tlen[R->screen.cur.row + R->TermWin.saveLines] == 0)
-           return;             /* um, yeah? */
-       rxvt_scr_insdel_chars(aR_ 1, INSERT);
+        if (R->screen.tlen[R->screen.cur.row + R->TermWin.saveLines] == 0)
+            return;             /* um, yeah? */
+        rxvt_scr_insdel_chars(aR_ 1, INSERT);
     }
 }
 #endif
@@ -1001,16 +1001,16 @@ rxvt_scr_forwardindex(pR)
     int             row;
 
     if (R->screen.cur.col < R->TermWin.ncol - 1)
-       rxvt_scr_gotorc(aR_ 0, 1, R_RELATIVE | C_RELATIVE);
+        rxvt_scr_gotorc(aR_ 0, 1, R_RELATIVE | C_RELATIVE);
     else {
-       row = R->screen.cur.row + R->TermWin.saveLines;
-       if (R->screen.tlen[row] == 0)
-           return;             /* um, yeah? */
-       else if (R->screen.tlen[row] == -1)
-           R->screen.tlen[row] = R->TermWin.ncol;
-       rxvt_scr_gotorc(aR_ 0, 0, R_RELATIVE);
-       rxvt_scr_insdel_chars(aR_ 1, DELETE);
-       rxvt_scr_gotorc(aR_ 0, R->TermWin.ncol - 1, R_RELATIVE);
+        row = R->screen.cur.row + R->TermWin.saveLines;
+        if (R->screen.tlen[row] == 0)
+            return;             /* um, yeah? */
+        else if (R->screen.tlen[row] == -1)
+            R->screen.tlen[row] = R->TermWin.ncol;
+        rxvt_scr_gotorc(aR_ 0, 0, R_RELATIVE);
+        rxvt_scr_insdel_chars(aR_ 1, DELETE);
+        rxvt_scr_gotorc(aR_ 0, R->TermWin.ncol - 1, R_RELATIVE);
     }
 }
 #endif
@@ -1028,37 +1028,37 @@ rxvt_scr_gotorc(pR_ int row, int col, int relative)
     RESET_CHSTAT(R);
 #ifdef RXVT_GRAPHICS
     if (rxvt_Gr_Displayed(aR))
-       rxvt_Gr_scroll(aR_ 0);
+        rxvt_Gr_scroll(aR_ 0);
 #endif
 
     D_SCREEN((stderr, "rxvt_scr_gotorc(r:%s%d,c:%s%d): from (r:%d,c:%d)", (relative & R_RELATIVE ? "+" : ""), row, (relative & C_RELATIVE ? "+" : ""), col, R->screen.cur.row, R->screen.cur.col));
 
     R->screen.cur.col = ((relative & C_RELATIVE) ? (R->screen.cur.col + col)
-                                                : col);
+                                                 : col);
     MAX_IT(R->screen.cur.col, 0);
     MIN_IT(R->screen.cur.col, (int32_t)R->TermWin.ncol - 1);
 
     R->screen.flags &= ~Screen_WrapNext;
     if (relative & R_RELATIVE) {
-       if (row > 0) {
-           if (R->screen.cur.row <= R->screen.bscroll
-               && (R->screen.cur.row + row) > R->screen.bscroll)
-               R->screen.cur.row = R->screen.bscroll;
-           else
-               R->screen.cur.row += row;
-       } else if (row < 0) {
-           if (R->screen.cur.row >= R->screen.tscroll
-               && (R->screen.cur.row + row) < R->screen.tscroll)
-               R->screen.cur.row = R->screen.tscroll;
-           else
-               R->screen.cur.row += row;
-       }
+        if (row > 0) {
+            if (R->screen.cur.row <= R->screen.bscroll
+                && (R->screen.cur.row + row) > R->screen.bscroll)
+                R->screen.cur.row = R->screen.bscroll;
+            else
+                R->screen.cur.row += row;
+        } else if (row < 0) {
+            if (R->screen.cur.row >= R->screen.tscroll
+                && (R->screen.cur.row + row) < R->screen.tscroll)
+                R->screen.cur.row = R->screen.tscroll;
+            else
+                R->screen.cur.row += row;
+        }
     } else {
-       if (R->screen.flags & Screen_Relative) {        /* relative origin mode */
-           R->screen.cur.row = row + R->screen.tscroll;
-           MIN_IT(R->screen.cur.row, R->screen.bscroll);
-       } else
-           R->screen.cur.row = row;
+        if (R->screen.flags & Screen_Relative) {        /* relative origin mode */
+            R->screen.cur.row = row + R->screen.tscroll;
+            MIN_IT(R->screen.cur.row, R->screen.bscroll);
+        } else
+            R->screen.cur.row = row;
     }
     MAX_IT(R->screen.cur.row, 0);
     MIN_IT(R->screen.cur.row, (int32_t)R->TermWin.nrow - 1);
@@ -1083,15 +1083,15 @@ rxvt_scr_index(pR_ enum page_dirn direction)
 
 #ifdef RXVT_GRAPHICS
     if (rxvt_Gr_Displayed(aR))
-       rxvt_Gr_scroll(aR_ 0);
+        rxvt_Gr_scroll(aR_ 0);
 #endif
 
     R->screen.flags &= ~Screen_WrapNext;
     if ((R->screen.cur.row == R->screen.bscroll && direction == UP)
-       || (R->screen.cur.row == R->screen.tscroll && direction == DN))
-       rxvt_scroll_text(aR_ R->screen.tscroll, R->screen.bscroll, dirn, 0);
+        || (R->screen.cur.row == R->screen.tscroll && direction == DN))
+        rxvt_scroll_text(aR_ R->screen.tscroll, R->screen.bscroll, dirn, 0);
     else
-       R->screen.cur.row += dirn;
+        R->screen.cur.row += dirn;
     MAX_IT(R->screen.cur.row, 0);
     MIN_IT(R->screen.cur.row, (int32_t)R->TermWin.nrow - 1);
     rxvt_selection_check(aR_ 0);
@@ -1117,7 +1117,7 @@ rxvt_scr_erase_line(pR_ int mode)
 
 #ifdef RXVT_GRAPHICS
     if (rxvt_Gr_Displayed(aR))
-       rxvt_Gr_scroll(aR_ 0);
+        rxvt_Gr_scroll(aR_ 0);
 #endif
 
     rxvt_selection_check(aR_ 1);
@@ -1126,39 +1126,39 @@ rxvt_scr_erase_line(pR_ int mode)
 
     row = R->TermWin.saveLines + R->screen.cur.row;
     switch (mode) {
-    case 0:                    /* erase to end of line */
-       col = R->screen.cur.col;
-       num = R->TermWin.ncol - col;
-       MIN_IT(R->screen.tlen[row], (int16_t)col);
-       if (ROWCOL_IN_ROW_AT_OR_AFTER(R->selection.beg, R->screen.cur)
-           || ROWCOL_IN_ROW_AT_OR_AFTER(R->selection.end, R->screen.cur))
-           CLEAR_SELECTION(R);
-       break;
-    case 1:                    /* erase to beginning of line */
-       col = 0;
-       num = R->screen.cur.col + 1;
-       if (ROWCOL_IN_ROW_AT_OR_BEFORE(R->selection.beg, R->screen.cur)
-           || ROWCOL_IN_ROW_AT_OR_BEFORE(R->selection.end, R->screen.cur))
-           CLEAR_SELECTION(R);
-       break;
-    case 2:                    /* erase whole line */
-       col = 0;
-       num = R->TermWin.ncol;
-       R->screen.tlen[row] = 0;
-       if (R->selection.beg.row <= R->screen.cur.row
-           && R->selection.end.row >= R->screen.cur.row)
-           CLEAR_SELECTION(R);
-       break;
+    case 0:                     /* erase to end of line */
+        col = R->screen.cur.col;
+        num = R->TermWin.ncol - col;
+        MIN_IT(R->screen.tlen[row], (int16_t)col);
+        if (ROWCOL_IN_ROW_AT_OR_AFTER(R->selection.beg, R->screen.cur)
+            || ROWCOL_IN_ROW_AT_OR_AFTER(R->selection.end, R->screen.cur))
+            CLEAR_SELECTION(R);
+        break;
+    case 1:                     /* erase to beginning of line */
+        col = 0;
+        num = R->screen.cur.col + 1;
+        if (ROWCOL_IN_ROW_AT_OR_BEFORE(R->selection.beg, R->screen.cur)
+            || ROWCOL_IN_ROW_AT_OR_BEFORE(R->selection.end, R->screen.cur))
+            CLEAR_SELECTION(R);
+        break;
+    case 2:                     /* erase whole line */
+        col = 0;
+        num = R->TermWin.ncol;
+        R->screen.tlen[row] = 0;
+        if (R->selection.beg.row <= R->screen.cur.row
+            && R->selection.end.row >= R->screen.cur.row)
+            CLEAR_SELECTION(R);
+        break;
     default:
-       return;
+        return;
     }
     if (R->screen.text[row])
-       rxvt_blank_line(aR_
+        rxvt_blank_line(aR_
                         &(R->screen.text[row][col]),
-                       &(R->screen.rend[row][col]), num, R->rstyle);
+                        &(R->screen.rend[row][col]), num, R->rstyle);
     else
-       rxvt_blank_screen_mem(aR_ R->screen.text, R->screen.rend, row,
-                             R->rstyle);
+        rxvt_blank_screen_mem(aR_ R->screen.text, R->screen.rend, row,
+                              R->rstyle);
 }
 
 /* ------------------------------------------------------------------------- */
@@ -1184,58 +1184,58 @@ rxvt_scr_erase_screen(pR_ int mode)
     row_offset = (int32_t)R->TermWin.saveLines;
 
     switch (mode) {
-    case 0:                    /* erase to end of screen */
-       rxvt_selection_check(aR_ 1);
-       rxvt_scr_erase_line(aR_ 0);
-       row = R->screen.cur.row + 1;    /* possible OOB */
-       num = R->TermWin.nrow - row;
-       break;
-    case 1:                    /* erase to beginning of screen */
-       rxvt_selection_check(aR_ 3);
-       rxvt_scr_erase_line(aR_ 1);
-       row = 0;
-       num = R->screen.cur.row;
-       break;
-    case 2:                    /* erase whole screen */
-       rxvt_selection_check(aR_ 3);
+    case 0:                     /* erase to end of screen */
+        rxvt_selection_check(aR_ 1);
+        rxvt_scr_erase_line(aR_ 0);
+        row = R->screen.cur.row + 1;    /* possible OOB */
+        num = R->TermWin.nrow - row;
+        break;
+    case 1:                     /* erase to beginning of screen */
+        rxvt_selection_check(aR_ 3);
+        rxvt_scr_erase_line(aR_ 1);
+        row = 0;
+        num = R->screen.cur.row;
+        break;
+    case 2:                     /* erase whole screen */
+        rxvt_selection_check(aR_ 3);
 #ifdef RXVT_GRAPHICS
-       rxvt_Gr_ClearScreen(aR);
+        rxvt_Gr_ClearScreen(aR);
 #endif
-       row = 0;
-       num = R->TermWin.nrow;
-       break;
+        row = 0;
+        num = R->TermWin.nrow;
+        break;
     default:
-       return;
+        return;
     }
     R->refresh_type |= REFRESH_BOUNDS;
     if (R->selection.op && R->current_screen == R->selection.screen
-       && ((R->selection.beg.row >= row && R->selection.beg.row <= row + num)
-           || (R->selection.end.row >= row
-               && R->selection.end.row <= row + num)))
-       CLEAR_SELECTION(R);
-    if (row >= R->TermWin.nrow)        /* Out Of Bounds */
-       return;
+        && ((R->selection.beg.row >= row && R->selection.beg.row <= row + num)
+            || (R->selection.end.row >= row
+                && R->selection.end.row <= row + num)))
+        CLEAR_SELECTION(R);
+    if (row >= R->TermWin.nrow) /* Out Of Bounds */
+        return;
     MIN_IT(num, (R->TermWin.nrow - row));
     if (R->rstyle & (RS_RVid | RS_Uline))
-       ren = (rend_t) ~RS_None;
+        ren = (rend_t) ~RS_None;
     else if (GET_BASEBG(R->rstyle) == Color_bg) {
-       ren = DEFAULT_RSTYLE;
-       CLEAR_ROWS(row, num);
+        ren = DEFAULT_RSTYLE;
+        CLEAR_ROWS(row, num);
     } else {
-       ren = (R->rstyle & (RS_fgMask | RS_bgMask));
-       gcvalue.foreground = R->PixColors[GET_BGCOLOR(R->rstyle)];
-       XChangeGC(R->Xdisplay, R->TermWin.gc, GCForeground, &gcvalue);
-       ERASE_ROWS(row, num);
-       gcvalue.foreground = R->PixColors[Color_fg];
-       XChangeGC(R->Xdisplay, R->TermWin.gc, GCForeground, &gcvalue);
+        ren = (R->rstyle & (RS_fgMask | RS_bgMask));
+        gcvalue.foreground = R->PixColors[GET_BGCOLOR(R->rstyle)];
+        XChangeGC(R->Xdisplay, R->TermWin.gc, GCForeground, &gcvalue);
+        ERASE_ROWS(row, num);
+        gcvalue.foreground = R->PixColors[Color_fg];
+        XChangeGC(R->Xdisplay, R->TermWin.gc, GCForeground, &gcvalue);
     }
     for (; num--; row++) {
-       rxvt_blank_screen_mem(aR_ R->screen.text, R->screen.rend,
-                             (unsigned int)(row + row_offset), R->rstyle);
-       R->screen.tlen[row + row_offset] = 0;
-       rxvt_blank_line(aR_
+        rxvt_blank_screen_mem(aR_ R->screen.text, R->screen.rend,
+                              (unsigned int)(row + row_offset), R->rstyle);
+        R->screen.tlen[row + row_offset] = 0;
+        rxvt_blank_line(aR_
                         R->drawn_text[row], R->drawn_rend[row],
-                       (unsigned int)R->TermWin.ncol, ren);
+                        (unsigned int)R->TermWin.ncol, ren);
     }
 }
 
@@ -1259,10 +1259,10 @@ rxvt_scr_E(pR)
 
     fs = SET_FONT (R->rstyle, R->TermWin.fontset->find_font ('E'));
     for (k = R->TermWin.saveLines, i = R->TermWin.nrow; i--; k++) {
-       R->screen.tlen[k] = R->TermWin.ncol;    /* make the `E's selectable */
-       fill_text (R->screen.text[k], 'E', R->TermWin.ncol);
-       for (r1 = R->screen.rend[k], j = R->TermWin.ncol; j--; )
-           *r1++ = fs;
+        R->screen.tlen[k] = R->TermWin.ncol;    /* make the `E's selectable */
+        fill_text (R->screen.text[k], 'E', R->TermWin.ncol);
+        for (r1 = R->screen.rend[k], j = R->TermWin.ncol; j--; )
+            *r1++ = fs;
     }
 }
 
@@ -1281,25 +1281,25 @@ rxvt_scr_insdel_lines(pR_ int count, int insdel)
 
 #ifdef RXVT_GRAPHICS
     if (rxvt_Gr_Displayed(aR))
-       rxvt_Gr_scroll(aR_ 0);
+        rxvt_Gr_scroll(aR_ 0);
 #endif
 
     rxvt_selection_check(aR_ 1);
 
     if (R->screen.cur.row > R->screen.bscroll)
-       return;
+        return;
 
     end = R->screen.bscroll - R->screen.cur.row + 1;
     if (count > end) {
-       if (insdel == DELETE)
-           return;
-       else if (insdel == INSERT)
-           count = end;
+        if (insdel == DELETE)
+            return;
+        else if (insdel == INSERT)
+            count = end;
     }
     R->screen.flags &= ~Screen_WrapNext;
 
     rxvt_scroll_text(aR_ R->screen.cur.row, R->screen.bscroll, insdel * count,
-                    0);
+                     0);
 }
 
 /* ------------------------------------------------------------------------- */
@@ -1324,11 +1324,11 @@ rxvt_scr_insdel_chars(pR_ int count, int insdel)
 
 #ifdef RXVT_GRAPHICS
     if (rxvt_Gr_Displayed(aR))
-       rxvt_Gr_scroll(aR_ 0);
+        rxvt_Gr_scroll(aR_ 0);
 #endif
 
     if (count <= 0)
-       return;
+        return;
 
     rxvt_selection_check(aR_ 1);
     MIN_IT(count, (R->TermWin.ncol - R->screen.cur.col));
@@ -1341,65 +1341,65 @@ rxvt_scr_insdel_chars(pR_ int count, int insdel)
     slp = &(R->screen.tlen[row]);
     switch (insdel) {
     case INSERT:
-       for (col = R->TermWin.ncol - 1; (col - count) >= R->screen.cur.col;
-            col--) {
-           stp[col] = stp[col - count];
-           srp[col] = srp[col - count];
-       }
-       if (*slp != -1) {
-           *slp += count;
-           MIN_IT(*slp, R->TermWin.ncol);
-       }
-       if (R->selection.op && R->current_screen == R->selection.screen
-           && ROWCOL_IN_ROW_AT_OR_AFTER(R->selection.beg, R->screen.cur)) {
-           if (R->selection.end.row != R->screen.cur.row
-               || (R->selection.end.col + count >= R->TermWin.ncol))
-               CLEAR_SELECTION(R);
-           else {              /* shift selection */
-               R->selection.beg.col += count;
-               R->selection.mark.col += count; /* XXX: yes? */
-               R->selection.end.col += count;
-           }
-       }
-       rxvt_blank_line(aR_ &(stp[R->screen.cur.col]), &(srp[R->screen.cur.col]),
-                       (unsigned int)count, R->rstyle);
-       break;
+        for (col = R->TermWin.ncol - 1; (col - count) >= R->screen.cur.col;
+             col--) {
+            stp[col] = stp[col - count];
+            srp[col] = srp[col - count];
+        }
+        if (*slp != -1) {
+            *slp += count;
+            MIN_IT(*slp, R->TermWin.ncol);
+        }
+        if (R->selection.op && R->current_screen == R->selection.screen
+            && ROWCOL_IN_ROW_AT_OR_AFTER(R->selection.beg, R->screen.cur)) {
+            if (R->selection.end.row != R->screen.cur.row
+                || (R->selection.end.col + count >= R->TermWin.ncol))
+                CLEAR_SELECTION(R);
+            else {              /* shift selection */
+                R->selection.beg.col += count;
+                R->selection.mark.col += count; /* XXX: yes? */
+                R->selection.end.col += count;
+            }
+        }
+        rxvt_blank_line(aR_ &(stp[R->screen.cur.col]), &(srp[R->screen.cur.col]),
+                        (unsigned int)count, R->rstyle);
+        break;
     case ERASE:
-       R->screen.cur.col += count;     /* don't worry if > R->TermWin.ncol */
-       rxvt_selection_check(aR_ 1);
-       R->screen.cur.col -= count;
-       rxvt_blank_line(aR_ &(stp[R->screen.cur.col]), &(srp[R->screen.cur.col]),
-                       (unsigned int)count, R->rstyle);
-       break;
+        R->screen.cur.col += count;     /* don't worry if > R->TermWin.ncol */
+        rxvt_selection_check(aR_ 1);
+        R->screen.cur.col -= count;
+        rxvt_blank_line(aR_ &(stp[R->screen.cur.col]), &(srp[R->screen.cur.col]),
+                        (unsigned int)count, R->rstyle);
+        break;
     case DELETE:
-       tr = srp[R->TermWin.ncol - 1]
-            & (RS_fgMask | RS_bgMask | RS_baseattrMask);
-       for (col = R->screen.cur.col; (col + count) < R->TermWin.ncol; col++) {
-           stp[col] = stp[col + count];
-           srp[col] = srp[col + count];
-       }
-       rxvt_blank_line(aR_
+        tr = srp[R->TermWin.ncol - 1]
+             & (RS_fgMask | RS_bgMask | RS_baseattrMask);
+        for (col = R->screen.cur.col; (col + count) < R->TermWin.ncol; col++) {
+            stp[col] = stp[col + count];
+            srp[col] = srp[col + count];
+        }
+        rxvt_blank_line(aR_
                         &(stp[R->TermWin.ncol - count]),
-                       &(srp[R->TermWin.ncol - count]),
-                       (unsigned int)count, tr);
-       if (*slp == -1) /* break line continuation */
-           *slp = R->TermWin.ncol;
-       *slp -= count;
-       MAX_IT(*slp, 0);
-       if (R->selection.op && R->current_screen == R->selection.screen
-           && ROWCOL_IN_ROW_AT_OR_AFTER(R->selection.beg, R->screen.cur)) {
-           if (R->selection.end.row != R->screen.cur.row
-               || (R->screen.cur.col >= R->selection.beg.col - count)
-               || R->selection.end.col >= R->TermWin.ncol)
-               CLEAR_SELECTION(R);
-           else {
-               /* shift selection */
-               R->selection.beg.col -= count;
-               R->selection.mark.col -= count; /* XXX: yes? */
-               R->selection.end.col -= count;
-           }
-       }
-       break;
+                        &(srp[R->TermWin.ncol - count]),
+                        (unsigned int)count, tr);
+        if (*slp == -1) /* break line continuation */
+            *slp = R->TermWin.ncol;
+        *slp -= count;
+        MAX_IT(*slp, 0);
+        if (R->selection.op && R->current_screen == R->selection.screen
+            && ROWCOL_IN_ROW_AT_OR_AFTER(R->selection.beg, R->screen.cur)) {
+            if (R->selection.end.row != R->screen.cur.row
+                || (R->screen.cur.col >= R->selection.beg.col - count)
+                || R->selection.end.col >= R->TermWin.ncol)
+                CLEAR_SELECTION(R);
+            else {
+                /* shift selection */
+                R->selection.beg.col -= count;
+                R->selection.mark.col -= count; /* XXX: yes? */
+                R->selection.end.col -= count;
+            }
+        }
+        break;
     }
 }
 
@@ -1415,7 +1415,7 @@ rxvt_scr_scroll_region(pR_ int top, int bot)
     MAX_IT(top, 0);
     MIN_IT(bot, (int)R->TermWin.nrow - 1);
     if (top > bot)
-       return;
+        return;
     R->screen.tscroll = top;
     R->screen.bscroll = bot;
     rxvt_scr_gotorc(aR_ 0, 0, 0);
@@ -1433,9 +1433,9 @@ rxvt_scr_cursor_visible(pR_ int mode)
 {
     R->want_refresh = 1;
     if (mode)
-       R->screen.flags |= Screen_VisibleCursor;
+        R->screen.flags |= Screen_VisibleCursor;
     else
-       R->screen.flags &= ~Screen_VisibleCursor;
+        R->screen.flags &= ~Screen_VisibleCursor;
 }
 
 /* ------------------------------------------------------------------------- */
@@ -1449,9 +1449,9 @@ void
 rxvt_scr_autowrap(pR_ int mode)
 {
     if (mode)
-       R->screen.flags |= Screen_Autowrap;
+        R->screen.flags |= Screen_Autowrap;
     else
-       R->screen.flags &= ~(Screen_Autowrap | Screen_WrapNext);
+        R->screen.flags &= ~(Screen_Autowrap | Screen_WrapNext);
 }
 
 /* ------------------------------------------------------------------------- */
@@ -1469,9 +1469,9 @@ void
 rxvt_scr_relative_origin(pR_ int mode)
 {
     if (mode)
-       R->screen.flags |= Screen_Relative;
+        R->screen.flags |= Screen_Relative;
     else
-       R->screen.flags &= ~Screen_Relative;
+        R->screen.flags &= ~Screen_Relative;
     rxvt_scr_gotorc(aR_ 0, 0, 0);
 }
 
@@ -1486,9 +1486,9 @@ void
 rxvt_scr_insert_mode(pR_ int mode)
 {
     if (mode)
-       R->screen.flags |= Screen_Insert;
+        R->screen.flags |= Screen_Insert;
     else
-       R->screen.flags &= ~Screen_Insert;
+        R->screen.flags &= ~Screen_Insert;
 }
 
 /* ------------------------------------------------------------------------- */
@@ -1503,9 +1503,9 @@ void
 rxvt_scr_set_tab(pR_ int mode)
 {
     if (mode < 0)
-       MEMSET(R->tabs, 0, R->TermWin.ncol * sizeof(char));
+        MEMSET(R->tabs, 0, R->TermWin.ncol * sizeof(char));
     else if (R->screen.cur.col < R->TermWin.ncol)
-       R->tabs[R->screen.cur.col] = (mode ? 1 : 0);
+        R->tabs[R->screen.cur.col] = (mode ? 1 : 0);
 }
 
 /* ------------------------------------------------------------------------- */
@@ -1521,23 +1521,23 @@ rxvt_scr_rvideo_mode(pR_ int mode)
     XGCValues       gcvalue;
 
     if (R->rvideo != mode) {
-       R->rvideo = mode;
-       SWAP_IT(R->PixColors[Color_fg], R->PixColors[Color_bg], rxvt_color);
+        R->rvideo = mode;
+        SWAP_IT(R->PixColors[Color_fg], R->PixColors[Color_bg], rxvt_color);
 #if defined(XPM_BACKGROUND)
-       if (R->bgPixmap.pixmap == None)
+        if (R->bgPixmap.pixmap == None)
 #endif
 #if defined(TRANSPARENT)
-           if (!(R->Options & Opt_transparent) || R->am_transparent == 0)
+            if (!(R->Options & Opt_transparent) || R->am_transparent == 0)
 #endif
-           XSetWindowBackground(R->Xdisplay, R->TermWin.vt,
-                                R->PixColors[Color_bg]);
+            XSetWindowBackground(R->Xdisplay, R->TermWin.vt,
+                                 R->PixColors[Color_bg]);
 
-       gcvalue.foreground = R->PixColors[Color_fg];
-       gcvalue.background = R->PixColors[Color_bg];
-       XChangeGC(R->Xdisplay, R->TermWin.gc, GCBackground | GCForeground,
-                 &gcvalue);
-       rxvt_scr_clear(aR);
-       rxvt_scr_touch(aR_ True);
+        gcvalue.foreground = R->PixColors[Color_fg];
+        gcvalue.background = R->PixColors[Color_bg];
+        XChangeGC(R->Xdisplay, R->TermWin.gc, GCBackground | GCForeground,
+                  &gcvalue);
+        rxvt_scr_clear(aR);
+        rxvt_scr_touch(aR_ True);
     }
 }
 
@@ -1551,7 +1551,7 @@ void
 rxvt_scr_report_position(pR)
 {
     rxvt_tt_printf(aR_ "\033[%d;%dR", R->screen.cur.row + 1,
-                  R->screen.cur.col + 1);
+                   R->screen.cur.col + 1);
 }
 \f
 /* ------------------------------------------------------------------------- *
@@ -1566,20 +1566,20 @@ void
 rxvt_set_font_style(pR)
 {
     switch (R->charsets[R->screen.charset]) {
-    case '0':                  /* DEC Special Character & Line Drawing Set */
-       break;
-    case 'A':                  /* United Kingdom (UK) */
-       break;
-    case 'B':                  /* United States (USASCII) */
-       break;
-    case '<':                  /* Multinational character set */
-       break;
-    case '5':                  /* Finnish character set */
-       break;
-    case 'C':                  /* Finnish character set */
-       break;
-    case 'K':                  /* German character set */
-       break;
+    case '0':                   /* DEC Special Character & Line Drawing Set */
+        break;
+    case 'A':                   /* United Kingdom (UK) */
+        break;
+    case 'B':                   /* United States (USASCII) */
+        break;
+    case '<':                   /* Multinational character set */
+        break;
+    case '5':                   /* Finnish character set */
+        break;
+    case 'C':                   /* Finnish character set */
+        break;
+    case 'K':                   /* German character set */
+        break;
     }
 }
 
@@ -1658,8 +1658,8 @@ rxvt_scr_expose(pR_ int x, int y, int width, int height, Bool refresh)
     int             i;
     row_col_t       rc[RC_COUNT];
 
-    if (R->drawn_text == NULL) /* sanity check */
-       return;
+    if (R->drawn_text == NULL)  /* sanity check */
+        return;
 
 #ifdef DEBUG_STRICT
     x = max(x, (int)R->TermWin.int_bwidth);
@@ -1677,18 +1677,18 @@ rxvt_scr_expose(pR_ int x, int y, int width, int height, Bool refresh)
 
 /* sanity checks */
     for (i = PART_BEG; i < RC_COUNT; i++) {
-       MIN_IT(rc[i].col, R->TermWin.ncol - 1);
-       MIN_IT(rc[i].row, R->TermWin.nrow - 1);
+        MIN_IT(rc[i].col, R->TermWin.ncol - 1);
+        MIN_IT(rc[i].row, R->TermWin.nrow - 1);
     }
 
     D_SCREEN((stderr, "rxvt_scr_expose(x:%d, y:%d, w:%d, h:%d) area (c:%d,r:%d)-(c:%d,r:%d)", x, y, width, height, rc[PART_BEG].col, rc[PART_BEG].row, rc[PART_END].col, rc[PART_END].row));
 
     for (i = rc[PART_BEG].row; i <= rc[PART_END].row; i++)
-       fill_text (&(R->drawn_text[i][rc[PART_BEG].col]), 0,
-                  (rc[PART_END].col - rc[PART_BEG].col + 1));
+        fill_text (&(R->drawn_text[i][rc[PART_BEG].col]), 0,
+                   (rc[PART_END].col - rc[PART_BEG].col + 1));
 
     if (refresh)
-       rxvt_scr_refresh(aR_ SLOW_REFRESH | REFRESH_BOUNDS);
+        rxvt_scr_refresh(aR_ SLOW_REFRESH | REFRESH_BOUNDS);
 }
 
 /* ------------------------------------------------------------------------- */
@@ -1716,9 +1716,9 @@ rxvt_scr_move_to(pR_ int y, int len)
 
     oldviewstart = R->TermWin.view_start;
     if (y < len) {
-       p = (R->TermWin.nrow + R->TermWin.nscrolled) * (len - y) / len;
-       p -= (long)(R->TermWin.nrow - 1);
-       p = max(p, 0);
+        p = (R->TermWin.nrow + R->TermWin.nscrolled) * (len - y) / len;
+        p -= (long)(R->TermWin.nrow - 1);
+        p = max(p, 0);
     }
     R->TermWin.view_start = (uint16_t)min(p, R->TermWin.nscrolled);
     D_SCREEN((stderr, "rxvt_scr_move_to(%d, %d) view_start:%d", y, len, R->TermWin.view_start));
@@ -1744,11 +1744,11 @@ rxvt_scr_page(pR_ enum page_dirn direction, int nlines)
 #endif
     oldviewstart = R->TermWin.view_start;
     if (direction == UP) {
-       n = R->TermWin.view_start + nlines;
-       R->TermWin.view_start = min(n, R->TermWin.nscrolled);
+        n = R->TermWin.view_start + nlines;
+        R->TermWin.view_start = min(n, R->TermWin.nscrolled);
     } else {
-       n = R->TermWin.view_start - nlines;
-       R->TermWin.view_start = max(n, 0);
+        n = R->TermWin.view_start - nlines;
+        R->TermWin.view_start = max(n, 0);
     }
     return rxvt_scr_changeview(aR_ oldviewstart);
 }
@@ -1758,12 +1758,12 @@ int
 rxvt_scr_changeview(pR_ uint16_t oldviewstart)
 {
     if (R->TermWin.view_start != oldviewstart) {
-       R->want_refresh = 1;
+        R->want_refresh = 1;
 #ifdef RXVT_GRAPHICS
-       if (rxvt_Gr_Displayed(aR))
-           rxvt_Gr_scroll(aR_ 0);
+        if (rxvt_Gr_Displayed(aR))
+            rxvt_Gr_scroll(aR_ 0);
 #endif
-       R->num_scr -= (R->TermWin.view_start - oldviewstart);
+        R->num_scr -= (R->TermWin.view_start - oldviewstart);
     }
     return (int)(R->TermWin.view_start - oldviewstart);
 }
@@ -1778,13 +1778,13 @@ rxvt_scr_bell(pR)
 #  ifdef MAPALERT_OPTION
     if (R->Options & Opt_mapAlert)
 #  endif
-       XMapWindow(R->Xdisplay, R->TermWin.parent[0]);
+        XMapWindow(R->Xdisplay, R->TermWin.parent[0]);
 # endif
     if (R->Options & Opt_visualBell) {
-       rxvt_scr_rvideo_mode(aR_ !R->rvideo); /* refresh also done */
-       rxvt_scr_rvideo_mode(aR_ !R->rvideo); /* refresh also done */
+        rxvt_scr_rvideo_mode(aR_ !R->rvideo); /* refresh also done */
+        rxvt_scr_rvideo_mode(aR_ !R->rvideo); /* refresh also done */
     } else
-       XBell(R->Xdisplay, 0);
+        XBell(R->Xdisplay, 0);
 #endif
 }
 
@@ -1800,22 +1800,22 @@ rxvt_scr_printscreen(pR_ int fullhist)
     FILE           *fd;
 
     if ((fd = rxvt_popen_printer(aR)) == NULL)
-       return;
+        return;
     nrows = R->TermWin.nrow;
     row_offset = R->TermWin.saveLines;
     if (!fullhist)
-       row_offset -= R->TermWin.view_start;
+        row_offset -= R->TermWin.view_start;
     else {
-       nrows += R->TermWin.nscrolled;
-       row_offset -= R->TermWin.nscrolled;
+        nrows += R->TermWin.nscrolled;
+        row_offset -= R->TermWin.nscrolled;
     }
 
     for (r1 = 0; r1 < nrows; r1++) {
-       t = R->screen.text[r1 + row_offset];
-       for (i = R->TermWin.ncol - 1; i >= 0; i--)
-           if (!isspace(t[i]))
-               break;
-       fprintf(fd, "%.*s\n", (i + 1), t);
+        t = R->screen.text[r1 + row_offset];
+        for (i = R->TermWin.ncol - 1; i >= 0; i--)
+            if (!isspace(t[i]))
+                break;
+        fprintf(fd, "%.*s\n", (i + 1), t);
     }
     rxvt_pclose_printer(fd);
 #endif
@@ -1829,75 +1829,79 @@ rxvt_scr_printscreen(pR_ int fullhist)
  */
 
 #if defined (NO_BRIGHTCOLOR) || defined (VERYBOLD)
-# define MONO_BOLD(x)          ((x) & (RS_Bold|RS_Blink))
-# define MONO_BOLD_FG(x, fg)   MONO_BOLD(x)
+# define MONO_BOLD(x)           ((x) & (RS_Bold|RS_Blink))
+# define MONO_BOLD_FG(x, fg)    MONO_BOLD(x)
 #else
-# define MONO_BOLD(x)                                          \
+# define MONO_BOLD(x)                                           \
     (((x) & (RS_Bold | RS_fgMask)) == (RS_Bold | Color_fg))
-# define MONO_BOLD_FG(x, fg)   (((x) & RS_Bold) && (fg) == Color_fg)
+# define MONO_BOLD_FG(x, fg)    (((x) & RS_Bold) && (fg) == Color_fg)
 #endif
 
-#define FONT_WIDTH(X, Y)                                               \
+#define FONT_WIDTH(X, Y)                                                \
     (X)->per_char[(Y) - (X)->min_char_or_byte2].width
-#define FONT_RBEAR(X, Y)                                               \
+#define FONT_RBEAR(X, Y)                                                \
     (X)->per_char[(Y) - (X)->min_char_or_byte2].rbearing
-#define FONT_LBEAR(X, Y)                                               \
+#define FONT_LBEAR(X, Y)                                                \
     (X)->per_char[(Y) - (X)->min_char_or_byte2].lbearing
-#define IS_FONT_CHAR(X, Y)                                             \
+#define IS_FONT_CHAR(X, Y)                                              \
     ((Y) >= (X)->min_char_or_byte2 && (Y) <= (X)->max_char_or_byte2)
 
 /* EXTPROTO */
 void
 rxvt_scr_refresh(pR_ unsigned char refresh_type)
 {
-    unsigned char   clearfirst,        /* first character writes before cell        */
-                   clearlast,  /* last character writes beyond cell         */
-                   must_clear, /* use draw_string not draw_image_string     */
+    unsigned char   clearfirst, /* first character writes before cell        */
+                    clearlast,  /* last character writes beyond cell         */
+                    must_clear, /* use draw_string not draw_image_string     */
 #ifndef NO_BOLDFONT
-                   bfont,      /* we've changed font to bold font           */
-#endif
-                   rvid,       /* reverse video this position               */
-                   wbyte,      /* we're in multibyte                        */
-                   showcursor; /* show the cursor                           */
-    int             fore, back;        /* desired foreground/background             */
-    int16_t         col, row,  /* column/row we're processing               */
-                    ocrow;     /* old cursor row                            */
+                    bfont,      /* we've changed font to bold font           */
+#endif
+                    rvid,       /* reverse video this position               */
+                    wbyte,      /* we're in multibyte                        */
+                    showcursor; /* show the cursor                           */
+    int             fore, back; /* desired foreground/background             */
+    int16_t         col, row,   /* column/row we're processing               */
+                    ocrow;      /* old cursor row                            */
     int             cursorwidth;
-    int             i,         /* tmp                                       */
-                   row_offset; /* basic offset in screen structure          */
+    int             i,          /* tmp                                       */
+                    row_offset; /* basic offset in screen structure          */
 #ifndef NO_CURSORCOLOR
-    rend_t         cc1;        /* store colours at cursor position(s)       */
-    rend_t          cc2;       /* store colours at cursor position(s)       */
+    rend_t          cc1;        /* store colours at cursor position(s)       */
+    rend_t          cc2;        /* store colours at cursor position(s)       */
 #endif
-    rend_t         *drp, *srp; /* drawn-rend-pointer, screen-rend-pointer   */
-    text_t         *dtp, *stp; /* drawn-text-pointer, screen-text-pointer   */
-    char           *buffer;    /* local copy of R->buffer                */
+    rend_t         *drp, *srp;  /* drawn-rend-pointer, screen-rend-pointer   */
+    text_t         *dtp, *stp;  /* drawn-text-pointer, screen-text-pointer   */
+    char           *buffer;     /* local copy of R->buffer                */
 
     if (refresh_type == NO_REFRESH || !R->TermWin.mapped)
-       return;
+      return;
 
-/*
- * A: set up vars
- */
+    /*
    * A: set up vars
    */
     clearfirst = clearlast = must_clear = wbyte = 0;
 #ifndef NO_BOLDFONT
     bfont = 0;
 #endif
 
-    if (R->currmaxcol < R->TermWin.ncol) {
-       R->currmaxcol = R->TermWin.ncol;
-       R->buffer = (char *)rxvt_realloc (R->buffer,
+    if (R->currmaxcol < R->TermWin.ncol)
+      {
+        R->currmaxcol = R->TermWin.ncol;
+        R->buffer = (char *)rxvt_realloc (R->buffer,
                                           sizeof(char) * (R->currmaxcol + 1) * MB_CUR_MAX);
-    }
+      }
+
     buffer = R->buffer;
     R->refresh_count = 0;
 
     row_offset = R->TermWin.saveLines - R->TermWin.view_start;
 
-    if ((refresh_type & REFRESH_BOUNDS)) {
-       clearfirst = clearlast = 1;
-       R->refresh_type &= ~REFRESH_BOUNDS;
-    }
+    if ((refresh_type & REFRESH_BOUNDS))
+      {
+        clearfirst = clearlast = 1;
+        R->refresh_type &= ~REFRESH_BOUNDS;
+      }
+
 #if defined(XPM_BACKGROUND)
     must_clear |= (R->bgPixmap.pixmap != None);
 #endif
@@ -1915,80 +1919,80 @@ rxvt_scr_refresh(pR_ unsigned char refresh_type)
  * C: set the cursor character(s)
  */
     {
-       unsigned char   setoldcursor;
-       rend_t          ccol1,  /* Cursor colour       */
-                       ccol2;  /* Cursor colour2      */
+      unsigned char   setoldcursor;
+      rend_t          ccol1,  /* Cursor colour       */
+                      ccol2;  /* Cursor colour2      */
 
-       showcursor = (R->screen.flags & Screen_VisibleCursor);
-        cursorwidth = 0;
+      showcursor = (R->screen.flags & Screen_VisibleCursor);
+      cursorwidth = 0;
 #ifdef CURSOR_BLINK
-       if (R->hidden_cursor)
-           showcursor = 0;
+      if (R->hidden_cursor)
+          showcursor = 0;
 #endif
 
-        cursorwidth = 0;
+      cursorwidth = 0;
 
-        if (showcursor)
-          {
-            cursorwidth++;
+      if (showcursor)
+        {
+          cursorwidth++;
 
-            srp = &(R->screen.rend[R->screen.cur.row + R->TermWin.saveLines]
-                                  [R->screen.cur.col]);
+          srp = &(R->screen.rend[R->screen.cur.row + R->TermWin.saveLines]
+                                [R->screen.cur.col]);
 
-            if (showcursor && R->TermWin.focus)
-              {
-                *srp ^= RS_RVid;
+          if (showcursor && R->TermWin.focus)
+            {
+              *srp ^= RS_RVid;
 #ifndef NO_CURSORCOLOR
-                cc1 = *srp & (RS_fgMask | RS_bgMask);
-                if (XDEPTH > 2 && ISSET_PIXCOLOR(R, Color_cursor))
-                    ccol1 = Color_cursor;
-                else
+              cc1 = *srp & (RS_fgMask | RS_bgMask);
+              if (XDEPTH > 2 && ISSET_PIXCOLOR(R, Color_cursor))
+                  ccol1 = Color_cursor;
+              else
 #ifdef CURSOR_COLOR_IS_RENDITION_COLOR
-                    ccol1 = GET_FGCOLOR(R->rstyle);
+                  ccol1 = GET_FGCOLOR(R->rstyle);
 #else
-                    ccol1 = Color_fg;
+                  ccol1 = Color_fg;
 #endif
-                if (XDEPTH > 2 && ISSET_PIXCOLOR(R, Color_cursor2))
-                    ccol2 = Color_cursor2;
-                else
+              if (XDEPTH > 2 && ISSET_PIXCOLOR(R, Color_cursor2))
+                  ccol2 = Color_cursor2;
+              else
 #ifdef CURSOR_COLOR_IS_RENDITION_COLOR
-                    ccol2 = GET_BGCOLOR(R->rstyle);
+                  ccol2 = GET_BGCOLOR(R->rstyle);
 #else
-                    ccol2 = Color_bg;
+                  ccol2 = Color_bg;
 #endif
-                *srp = SET_FGCOLOR(*srp, ccol1);
-                *srp = SET_BGCOLOR(*srp, ccol2);
+              *srp = SET_FGCOLOR(*srp, ccol1);
+              *srp = SET_BGCOLOR(*srp, ccol2);
 #endif
-              }
+            }
 
-            while (IS_WIDE (*srp))
-              cursorwidth++, srp++;
+          while (IS_WIDE (*srp))
+            cursorwidth++, srp++;
+        }
+
+      /* make sure no outline cursor is left around */
+      setoldcursor = 0;
+      if (ocrow != -1) {
+          if (R->screen.cur.row + R->TermWin.view_start != ocrow
+              || R->screen.cur.col != R->oldcursor.col) {
+              if (ocrow < R->TermWin.nrow
+                  && R->oldcursor.col < R->TermWin.ncol) {
+                  R->drawn_rend[ocrow][R->oldcursor.col] ^= (RS_RVid | RS_Uline);
+              }
+              if (R->TermWin.focus || !showcursor)
+                  R->oldcursor.row = -1;
+              else
+                  setoldcursor = 1;
           }
-
-       /* make sure no outline cursor is left around */
-       setoldcursor = 0;
-       if (ocrow != -1) {
-           if (R->screen.cur.row + R->TermWin.view_start != ocrow
-               || R->screen.cur.col != R->oldcursor.col) {
-               if (ocrow < R->TermWin.nrow
-                   && R->oldcursor.col < R->TermWin.ncol) {
-                   R->drawn_rend[ocrow][R->oldcursor.col] ^= (RS_RVid | RS_Uline);
-               }
-               if (R->TermWin.focus || !showcursor)
-                   R->oldcursor.row = -1;
-               else
-                   setoldcursor = 1;
-           }
-       } else if (!R->TermWin.focus)
-           setoldcursor = 1;
-       if (setoldcursor) {
-           if (R->screen.cur.row + R->TermWin.view_start >= R->TermWin.nrow)
-               R->oldcursor.row = -1;
-           else {
-               R->oldcursor.row = R->screen.cur.row + R->TermWin.view_start;
-               R->oldcursor.col = R->screen.cur.col;
-           }
-       }
+      } else if (!R->TermWin.focus)
+          setoldcursor = 1;
+      if (setoldcursor) {
+          if (R->screen.cur.row + R->TermWin.view_start >= R->TermWin.nrow)
+              R->oldcursor.row = -1;
+          else {
+              R->oldcursor.row = R->screen.cur.row + R->TermWin.view_start;
+              R->oldcursor.col = R->screen.cur.col;
+          }
+      }
     }
 
 #ifndef NO_SLOW_LINK_SUPPORT
@@ -1998,53 +2002,64 @@ rxvt_scr_refresh(pR_ unsigned char refresh_type)
  */
     i = R->num_scr;
     if (refresh_type == FAST_REFRESH && R->num_scr_allow && i
-       && abs(i) < R->TermWin.nrow && !must_clear) {
-       int16_t         nits;
-       int             j;
-       rend_t         *drp2;
-       text_t         *dtp2;
+        && abs(i) < R->TermWin.nrow && !must_clear)
+      {
+        int16_t         nits;
+        int             j;
+        rend_t         *drp2;
+        text_t         *dtp2;
         int             len, wlen;
 
-       j = R->TermWin.nrow;
-       wlen = len = -1;
-       row = i > 0 ? 0 : j - 1;
-       for (; j-- >= 0; row += (i > 0 ? 1 : -1)) {
-           if (row + i >= 0 && row + i < R->TermWin.nrow && row + i != ocrow) {
-               stp = R->screen.text[row + row_offset];
-               srp = R->screen.rend[row + row_offset];
-               dtp = R->drawn_text[row];
-               dtp2 = R->drawn_text[row + i];
-               drp = R->drawn_rend[row];
-               drp2 = R->drawn_rend[row + i];
-               for (nits = 0, col = R->TermWin.ncol; col--; )
-                   if (stp[col] != dtp2[col] || srp[col] != drp2[col])
-                       nits--;
-                   else if (stp[col] != dtp[col] || srp[col] != drp[col])
-                       nits++;
-               if (nits > 8) { /* XXX: arbitrary choice */
-                   for (col = R->TermWin.ncol; col--; ) {
-                       *dtp++ = *dtp2++;
-                       *drp++ = *drp2++;
-                   }
-                   if (len == -1)
-                       len = row;
-                   wlen = row;
-                   continue;
-               }
-           }
-           if (len != -1) {
-               /* also comes here at end if needed because of >= above */
-               if (wlen < len)
-                   SWAP_IT(wlen, len, int);
-               D_SCREEN((stderr, "rxvt_scr_refresh(): XCopyArea: %d -> %d (height: %d)", len + i, len, wlen - len + 1));
-               XCopyArea(R->Xdisplay, R->TermWin.vt, R->TermWin.vt,
-                         R->TermWin.gc, 0, Row2Pixel(len + i),
-                         (unsigned int)TermWin_TotalWidth(),
-                         (unsigned int)Height2Pixel(wlen - len + 1),
-                         0, Row2Pixel(len));
-               len = -1;
-           }
-       }
+        j = R->TermWin.nrow;
+        wlen = len = -1;
+        row = i > 0 ? 0 : j - 1;
+        for (; j-- >= 0; row += (i > 0 ? 1 : -1))
+          {
+            if (row + i >= 0 && row + i < R->TermWin.nrow && row + i != ocrow)
+              {
+                stp = R->screen.text[row + row_offset];
+                srp = R->screen.rend[row + row_offset];
+                dtp = R->drawn_text[row];
+                dtp2 = R->drawn_text[row + i];
+                drp = R->drawn_rend[row];
+                drp2 = R->drawn_rend[row + i];
+
+                for (nits = 0, col = R->TermWin.ncol; col--; )
+                  if (stp[col] != dtp2[col] || srp[col] != drp2[col])
+                    nits--;
+                  else if (stp[col] != dtp[col] || srp[col] != drp[col])
+                    nits++;
+
+                if (nits > 8) /* XXX: arbitrary choice */
+                  {
+                    for (col = R->TermWin.ncol; col--; )
+                      {
+                        *dtp++ = *dtp2++;
+                        *drp++ = *drp2++;
+                      }
+
+                    if (len == -1)
+                      len = row;
+
+                    wlen = row;
+                    continue;
+                  }
+              }
+
+            if (len != -1)
+              {
+                /* also comes here at end if needed because of >= above */
+                if (wlen < len)
+                  SWAP_IT(wlen, len, int);
+                D_SCREEN((stderr, "rxvt_scr_refresh(): XCopyArea: %d -> %d (height: %d)", len + i, len, wlen - len + 1));
+                XCopyArea(R->Xdisplay, R->TermWin.vt, R->TermWin.vt,
+                          R->TermWin.gc, 0, Row2Pixel(len + i),
+                          (unsigned int)TermWin_TotalWidth(),
+                          (unsigned int)Height2Pixel(wlen - len + 1),
+                          0, Row2Pixel(len));
+                len = -1;
+              }
+          }
     }
 #endif
 
@@ -2061,30 +2076,31 @@ rxvt_scr_refresh(pR_ unsigned char refresh_type)
 /*
  * E2: OK, now the real pass
  */
-       int ypixel = (int)Row2Pixel(row);
+        int ypixel = (int)Row2Pixel(row);
 
-       for (col = 0; col < R->TermWin.ncol; col++) {
-           /* compare new text with old - if exactly the same then continue */
-           rend_t rend = srp[col];     /* screen rendition (target rendtion) */
+        for (col = 0; col < R->TermWin.ncol; col++)
+          {
+            /* compare new text with old - if exactly the same then continue */
+            rend_t rend = srp[col];     /* screen rendition (target rendtion) */
 
-           if (stp[col] == dtp[col]    /* Must match characters to skip. */
-               && (rend == drp[col]    /* Either rendition the same or   */
-                   || (stp[col] == ' ' /* space w/ no background change  */
-                       && GET_BGATTR(rend) == GET_BGATTR(drp[col]))))
-             continue;
+            if (stp[col] == dtp[col]    /* Must match characters to skip. */
+                && (rend == drp[col]    /* Either rendition the same or   */
+                    || (stp[col] == ' ' /* space w/ no background change  */
+                        && GET_BGATTR(rend) == GET_BGATTR(drp[col]))))
+              continue;
 
             text_t *text = stp + col;
             int count = 1;
 
-           /* redraw one or more characters */
+            /* redraw one or more characters */
 
             dtp[col] = stp[col];
-           drp[col] = rend;
+            drp[col] = rend;
 
             if (*text == NOCHAR) // never start redrawing at invisible characters. */
               continue;
 
-           int xpixel = Col2Pixel(col);
+            int xpixel = Col2Pixel(col);
 
             // this loop looks very messy, it can probably be optimized
             // and cleaned a bit by you?
@@ -2121,59 +2137,59 @@ rxvt_scr_refresh(pR_ unsigned char refresh_type)
                   break;
               }
 
-            col--;     /* went one too far.  move back */
-            count -= i;        /* dump any matching trailing chars */
+            col--;      /* went one too far.  move back */
+            count -= i; /* dump any matching trailing chars */
 
 /*
  * Determine the attributes for the string
  */
             int fid = GET_FONT(rend);
-           fore = GET_FGCOLOR(rend);
-           back = GET_BGCOLOR(rend);
-           rend = GET_ATTR(rend);
+            fore = GET_FGCOLOR(rend);
+            back = GET_BGCOLOR(rend);
+            rend = GET_ATTR(rend);
 
-           rvid = (rend & RS_RVid) ? 1 : 0;
+            rvid = (rend & RS_RVid) ? 1 : 0;
 #ifdef OPTION_HC
-           if (!rvid && (rend & RS_Blink))
+            if (!rvid && (rend & RS_Blink))
               {
-               if (XDEPTH > 2 && ISSET_PIXCOLOR(R, Color_HC))
-                 back = Color_HC;
-               else
-                 rvid = !rvid; /* fall back */
+                if (XDEPTH > 2 && ISSET_PIXCOLOR(R, Color_HC))
+                  back = Color_HC;
+                else
+                  rvid = !rvid; /* fall back */
               }
 #endif
-           if (rvid)
+            if (rvid)
               {
-               SWAP_IT(fore, back, int);
+                SWAP_IT(fore, back, int);
 
 #ifndef NO_BOLD_UNDERLINE_REVERSE
-               if (XDEPTH > 2 && ISSET_PIXCOLOR(R, Color_RV)
+                if (XDEPTH > 2 && ISSET_PIXCOLOR(R, Color_RV)
 # ifndef NO_CURSORCOLOR
-                   && !ISSET_PIXCOLOR(R, Color_cursor)
+                    && !ISSET_PIXCOLOR(R, Color_cursor)
 # endif
                     )
-                 back = Color_RV;
+                  back = Color_RV;
 #endif
-             }
+              }
 #ifndef NO_BOLD_UNDERLINE_REVERSE
-           else if (rend & RS_Bold)
+            else if (rend & RS_Bold)
               {
-               if (XDEPTH > 2 && ISSET_PIXCOLOR(R, Color_BD))
+                if (XDEPTH > 2 && ISSET_PIXCOLOR(R, Color_BD))
                   {
-                   fore = Color_BD;
+                    fore = Color_BD;
 # ifndef VERYBOLD
-                   rend &= ~RS_Bold;   /* we've taken care of it */
+                    rend &= ~RS_Bold;   /* we've taken care of it */
 # endif
                   }
-             }
+              }
             else if (rend & RS_Uline)
               {
-               if (XDEPTH > 2 && ISSET_PIXCOLOR(R, Color_UL))
+                if (XDEPTH > 2 && ISSET_PIXCOLOR(R, Color_UL))
                   {
-                   fore = Color_UL;
-                   rend &= ~RS_Uline;  /* we've taken care of it */
+                    fore = Color_UL;
+                    rend &= ~RS_Uline;  /* we've taken care of it */
                   }
-             }
+              }
 #endif
 
 /*
@@ -2183,53 +2199,56 @@ rxvt_scr_refresh(pR_ unsigned char refresh_type)
 
             if (back == Color_bg)
               {
-               if (must_clear)
+                if (must_clear)
                   {
-                    for (i = 0; i < count; i++)        /* don't draw empty strings */
-                        if (text[i] != ' ') {
-                            font->draw (xpixel, ypixel, text, count, fore, -1);
-                            goto nodraw;
+                    for (i = 0; i < count; i++) /* don't draw empty strings */
+                      if (text[i] != ' ')
+                        {
+                          font->draw (xpixel, ypixel, text, count, fore, -1);
+                          goto nodraw;
                         }
+
                     CLEAR_CHARS(xpixel, ypixel, count);
 nodraw: ;
                   }
                 else
                   font->draw (xpixel, ypixel, text, count, fore, Color_bg);
-           } else
-                font->draw (xpixel, ypixel, text, count, fore, back);
+              }
+            else
+              font->draw (xpixel, ypixel, text, count, fore, back);
 
-           if ((rend & RS_Uline) && (font->descent > 1))
-               XDrawLine(R->Xdisplay, drawBuffer, R->TermWin.gc,
-                         xpixel, ypixel + font->ascent + 1,
-                         xpixel + Width2Pixel(count) - 1, ypixel + font->ascent + 1);
-       }                       /* for (col....) */
-                             /* for (row....) */
+            if ((rend & RS_Uline) && (font->descent > 1))
+                XDrawLine(R->Xdisplay, drawBuffer, R->TermWin.gc,
+                          xpixel, ypixel + font->ascent + 1,
+                          xpixel + Width2Pixel(count) - 1, ypixel + font->ascent + 1);
+          }                     /* for (col....) */
+      }                         /* for (row....) */
 
 /*
  * G: cleanup cursor and display outline cursor if necessary
  */
     if (showcursor) {
-       if (R->TermWin.focus) {
-           srp = &(R->screen.rend[R->screen.cur.row + R->TermWin.saveLines]
-                                 [R->screen.cur.col]);
-           *srp ^= RS_RVid;
+        if (R->TermWin.focus) {
+            srp = &(R->screen.rend[R->screen.cur.row + R->TermWin.saveLines]
+                                  [R->screen.cur.col]);
+            *srp ^= RS_RVid;
 #ifndef NO_CURSORCOLOR
-           *srp = (*srp & ~(RS_fgMask | RS_bgMask)) | cc1;
+            *srp = (*srp & ~(RS_fgMask | RS_bgMask)) | cc1;
 #endif
-       } else if (R->oldcursor.row >= 0) {
+        } else if (R->oldcursor.row >= 0) {
 #ifndef NO_CURSORCOLOR
-           unsigned long   gcmask;     /* Graphics Context mask */
+            unsigned long   gcmask;     /* Graphics Context mask */
 
-           if (XDEPTH > 2 && ISSET_PIXCOLOR(R, Color_cursor)) {
+            if (XDEPTH > 2 && ISSET_PIXCOLOR(R, Color_cursor)) {
                 XSetForeground (R->Xdisplay, R->TermWin.gc, R->PixColors[Color_cursor]);
-           }
-#endif
-           XDrawRectangle(R->Xdisplay, drawBuffer, R->TermWin.gc,
-                          Col2Pixel(R->oldcursor.col),
-                          Row2Pixel(R->oldcursor.row),
-                          (unsigned int)(Width2Pixel(cursorwidth) - 1),
-                          (unsigned int)(Height2Pixel(1) - R->TermWin.lineSpace - 1));
-       }
+            }
+#endif
+            XDrawRectangle(R->Xdisplay, drawBuffer, R->TermWin.gc,
+                           Col2Pixel(R->oldcursor.col),
+                           Row2Pixel(R->oldcursor.row),
+                           (unsigned int)(Width2Pixel(cursorwidth) - 1),
+                           (unsigned int)(Height2Pixel(1) - R->TermWin.lineSpace - 1));
+        }
     }
 /*
  * H: cleanup selection
@@ -2240,28 +2259,28 @@ nodraw: ;
  * I: other general cleanup
  */
     if (clearfirst && R->TermWin.int_bwidth)
-       /* 
-        * clear the whole screen height, note that width == 0 is treated
-        * specially by XClearArea
-        */
-       XClearArea(R->Xdisplay, R->TermWin.vt, 0, 0,
-                  (unsigned int)R->TermWin.int_bwidth,
-                  (unsigned int)TermWin_TotalHeight(), False);
+        /* 
+         * clear the whole screen height, note that width == 0 is treated
+         * specially by XClearArea
+         */
+        XClearArea(R->Xdisplay, R->TermWin.vt, 0, 0,
+                   (unsigned int)R->TermWin.int_bwidth,
+                   (unsigned int)TermWin_TotalHeight(), False);
     if (clearlast && R->TermWin.int_bwidth)
-       /* 
-        * clear the whole screen height, note that width == 0 is treated
-        * specially by XClearArea
-        */
-       XClearArea(R->Xdisplay, R->TermWin.vt,
-                  R->TermWin.width + R->TermWin.int_bwidth, 0,
-                  (unsigned int)R->TermWin.int_bwidth,
-                  (unsigned int)TermWin_TotalHeight(), False);
+        /* 
+         * clear the whole screen height, note that width == 0 is treated
+         * specially by XClearArea
+         */
+        XClearArea(R->Xdisplay, R->TermWin.vt,
+                   R->TermWin.width + R->TermWin.int_bwidth, 0,
+                   (unsigned int)R->TermWin.int_bwidth,
+                   (unsigned int)TermWin_TotalHeight(), False);
     if (refresh_type & SMOOTH_REFRESH)
-       XSync(R->Xdisplay, False);
+        XSync(R->Xdisplay, False);
 
     R->num_scr = 0;
     R->num_scr_allow = 1;
-    R->want_refresh = 0;       /* screen is current */
+    R->want_refresh = 0;        /* screen is current */
 }
 /* ------------------------------------------------------------------------- */
 
@@ -2270,20 +2289,20 @@ void
 rxvt_scr_clear(pR)
 {
     if (!R->TermWin.mapped)
-       return;
+        return;
     R->num_scr_allow = 0;
     R->want_refresh = 1;
 #ifdef TRANSPARENT
     if ((R->Options & Opt_transparent) && (R->am_pixmap_trans == 0)) {
-       int             i;
-
-       if (!(R->Options & Opt_transparent_all))
-           i = 0;
-       else
-           i = (int)(sizeof(R->TermWin.parent) / sizeof(Window));
-       for (; i--;)
-           if (R->TermWin.parent[i] != None)
-               XClearWindow(R->Xdisplay, R->TermWin.parent[i]);
+        int             i;
+
+        if (!(R->Options & Opt_transparent_all))
+            i = 0;
+        else
+            i = (int)(sizeof(R->TermWin.parent) / sizeof(Window));
+        for (; i--;)
+            if (R->TermWin.parent[i] != None)
+                XClearWindow(R->Xdisplay, R->TermWin.parent[i]);
     }
 #endif
     XClearWindow(R->Xdisplay, R->TermWin.vt);
@@ -2298,29 +2317,29 @@ rxvt_scr_reverse_selection(pR)
     rend_t         *srp;
 
     if (R->selection.op && R->current_screen == R->selection.screen) {
-       end_row = R->TermWin.saveLines - R->TermWin.view_start;
-       i = R->selection.beg.row + R->TermWin.saveLines;
-       row = R->selection.end.row + R->TermWin.saveLines;
-       if (i >= end_row)
-           col = R->selection.beg.col;
-       else {
-           col = 0;
-           i = end_row;
-       }
-       end_row += R->TermWin.nrow;
-       for (; i < row && i < end_row; i++, col = 0)
-           for (srp = R->screen.rend[i]; col < R->TermWin.ncol; col++)
+        end_row = R->TermWin.saveLines - R->TermWin.view_start;
+        i = R->selection.beg.row + R->TermWin.saveLines;
+        row = R->selection.end.row + R->TermWin.saveLines;
+        if (i >= end_row)
+            col = R->selection.beg.col;
+        else {
+            col = 0;
+            i = end_row;
+        }
+        end_row += R->TermWin.nrow;
+        for (; i < row && i < end_row; i++, col = 0)
+            for (srp = R->screen.rend[i]; col < R->TermWin.ncol; col++)
 #ifndef OPTION_HC
-               srp[col] ^= RS_RVid;
+                srp[col] ^= RS_RVid;
 #else
-               srp[col] ^= RS_Blink;
+                srp[col] ^= RS_Blink;
 #endif
-       if (i == row && i < end_row)
-           for (srp = R->screen.rend[i]; col < R->selection.end.col; col++)
+        if (i == row && i < end_row)
+            for (srp = R->screen.rend[i]; col < R->selection.end.col; col++)
 #ifndef OPTION_HC
-               srp[col] ^= RS_RVid;
+                srp[col] ^= RS_RVid;
 #else
-               srp[col] ^= RS_Blink;
+                srp[col] ^= RS_Blink;
 #endif
     }
 }
@@ -2340,18 +2359,18 @@ rxvt_scr_dump(pR_ int fd)
     char            r1[] = "\n";
 
     for (row = R->TermWin.saveLines - R->TermWin.nscrolled;
-        row < R->TermWin.saveLines + R->TermWin.nrow - 1; row++) {
-       width = R->screen.tlen[row] >= 0 ? R->screen.tlen[row]
-                                        : R->TermWin.ncol;
-       for (towrite = width; towrite; towrite -= wrote) {
-           wrote = write(fd, &(R->screen.text[row][width - towrite]),
-                         towrite);
-           if (wrote < 0)
-               return;         /* XXX: death, no report */
-       }
-       if (R->screen.tlen[row] >= 0)
-           if (write(fd, r1, 1) <= 0)
-               return; /* XXX: death, no report */
+         row < R->TermWin.saveLines + R->TermWin.nrow - 1; row++) {
+        width = R->screen.tlen[row] >= 0 ? R->screen.tlen[row]
+                                         : R->TermWin.ncol;
+        for (towrite = width; towrite; towrite -= wrote) {
+            wrote = write(fd, &(R->screen.text[row][width - towrite]),
+                          towrite);
+            if (wrote < 0)
+                return;         /* XXX: death, no report */
+        }
+        if (R->screen.tlen[row] >= 0)
+            if (write(fd, r1, 1) <= 0)
+                return; /* XXX: death, no report */
     }
 }
 #endif
@@ -2370,28 +2389,28 @@ rxvt_selection_check(pR_ int check_more)
     row_col_t       pos;
 
     if (!R->selection.op)
-       return;
+        return;
 
     pos.row = pos.col = 0;
     if ((R->selection.beg.row < -(int32_t)R->TermWin.nscrolled)
-       || (R->selection.beg.row >= R->TermWin.nrow)
-       || (R->selection.mark.row < -(int32_t)R->TermWin.nscrolled)
-       || (R->selection.mark.row >= R->TermWin.nrow)
-       || (R->selection.end.row < -(int32_t)R->TermWin.nscrolled)
-       || (R->selection.end.row >= R->TermWin.nrow)
+        || (R->selection.beg.row >= R->TermWin.nrow)
+        || (R->selection.mark.row < -(int32_t)R->TermWin.nscrolled)
+        || (R->selection.mark.row >= R->TermWin.nrow)
+        || (R->selection.end.row < -(int32_t)R->TermWin.nscrolled)
+        || (R->selection.end.row >= R->TermWin.nrow)
         || (check_more == 1
-           && R->current_screen == R->selection.screen
-           && !ROWCOL_IS_BEFORE(R->screen.cur, R->selection.beg)
-           && ROWCOL_IS_BEFORE(R->screen.cur, R->selection.end))
-       || (check_more == 2
-           && ROWCOL_IS_BEFORE(R->selection.beg, pos)
-           && ROWCOL_IS_AFTER(R->selection.end, pos))
-       || (check_more == 3
-           && ROWCOL_IS_AFTER(R->selection.end, pos))
-       || (check_more == 4     /* screen width change */
-           && (R->selection.beg.row != R->selection.end.row
-               || R->selection.end.col > R->TermWin.ncol)))
-       CLEAR_SELECTION(R);
+            && R->current_screen == R->selection.screen
+            && !ROWCOL_IS_BEFORE(R->screen.cur, R->selection.beg)
+            && ROWCOL_IS_BEFORE(R->screen.cur, R->selection.end))
+        || (check_more == 2
+            && ROWCOL_IS_BEFORE(R->selection.beg, pos)
+            && ROWCOL_IS_AFTER(R->selection.end, pos))
+        || (check_more == 3
+            && ROWCOL_IS_AFTER(R->selection.end, pos))
+        || (check_more == 4     /* screen width change */
+            && (R->selection.beg.row != R->selection.end.row
+                || R->selection.end.col > R->TermWin.ncol)))
+        CLEAR_SELECTION(R);
 }
 
 /* ------------------------------------------------------------------------- */
@@ -2407,12 +2426,12 @@ rxvt_PasteIt(pR_ const unsigned char *data, unsigned int nitems)
     
 /* convert normal newline chars into common keyboard Return key sequence */
     for (i = 0; i < nitems; i += PROP_SIZE) {
-       n = min(nitems - i, PROP_SIZE);
-       MEMCPY(ds, data + i, n);
-       for (j = 0; j < n; j++)
-           if (ds[j] == '\n')
-               ds[j] = '\r';
-       rxvt_tt_write(aR_ ds, (int)n);
+        n = min(nitems - i, PROP_SIZE);
+        MEMCPY(ds, data + i, n);
+        for (j = 0; j < n; j++)
+            if (ds[j] == '\n')
+                ds[j] = '\r';
+        rxvt_tt_write(aR_ ds, (int)n);
     }
     free(ds);
 }
@@ -2436,63 +2455,63 @@ rxvt_selection_paste(pR_ Window win, Atom prop, Bool delete_prop)
 
     D_SELECT((stderr, "rxvt_selection_paste(%08lx, %lu, %d), wait=%2x", win, (unsigned long)prop, (int)delete_prop, R->selection_wait));
 
-    if (prop == None) {                /* check for failed XConvertSelection */
+    if (prop == None) {         /* check for failed XConvertSelection */
 #ifdef MULTICHAR_SET
-       if ((R->selection_type & Sel_CompoundText)) {
-           int             selnum = R->selection_type & Sel_whereMask;
+        if ((R->selection_type & Sel_CompoundText)) {
+            int             selnum = R->selection_type & Sel_whereMask;
 
-           R->selection_type = 0;
-           if (selnum != Sel_direct)
-               rxvt_selection_request_other(aR_ XA_STRING, selnum);
-       }
+            R->selection_type = 0;
+            if (selnum != Sel_direct)
+                rxvt_selection_request_other(aR_ XA_STRING, selnum);
+        }
 #endif
-       return 0;
+        return 0;
     }
     for (;;) {
-       if (XGetWindowProperty(R->Xdisplay, win, prop, (long)(nread / 4),
-                              (long)(PROP_SIZE / 4), delete_prop,
-                              AnyPropertyType, &ct.encoding, &ct.format,
-                              &ct.nitems, &bytes_after,
-                              &ct.value) != Success)
-           break;
-       if (ct.encoding == 0) {
-           D_SELECT((stderr, "rxvt_selection_paste: property didn't exist!"));
-           break;
-       }
-       if (ct.value == NULL) {
-           D_SELECT((stderr, "rxvt_selection_paste: property shooting blanks!"));
-           continue;
-       }
-       if (ct.nitems == 0) {
-           D_SELECT((stderr, "rxvt_selection_paste: property empty - also INCR end"));
-           if (R->selection_wait == Sel_normal && nread == 0) {
-           /*
-            * pass through again trying CUT_BUFFER0 if we've come from
-            * XConvertSelection() but nothing was presented
-            */
-               D_SELECT((stderr, "rxvt_selection_request: pasting CUT_BUFFER0"));
-               rxvt_selection_paste(aR_ Xroot, XA_CUT_BUFFER0, False);
-           }
-           nread = -1;         /* discount any previous stuff */
-           break;
-       }
-       nread += ct.nitems;
+        if (XGetWindowProperty(R->Xdisplay, win, prop, (long)(nread / 4),
+                               (long)(PROP_SIZE / 4), delete_prop,
+                               AnyPropertyType, &ct.encoding, &ct.format,
+                               &ct.nitems, &bytes_after,
+                               &ct.value) != Success)
+            break;
+        if (ct.encoding == 0) {
+            D_SELECT((stderr, "rxvt_selection_paste: property didn't exist!"));
+            break;
+        }
+        if (ct.value == NULL) {
+            D_SELECT((stderr, "rxvt_selection_paste: property shooting blanks!"));
+            continue;
+        }
+        if (ct.nitems == 0) {
+            D_SELECT((stderr, "rxvt_selection_paste: property empty - also INCR end"));
+            if (R->selection_wait == Sel_normal && nread == 0) {
+            /*
+             * pass through again trying CUT_BUFFER0 if we've come from
+             * XConvertSelection() but nothing was presented
+             */
+                D_SELECT((stderr, "rxvt_selection_request: pasting CUT_BUFFER0"));
+                rxvt_selection_paste(aR_ Xroot, XA_CUT_BUFFER0, False);
+            }
+            nread = -1;         /* discount any previous stuff */
+            break;
+        }
+        nread += ct.nitems;
 #ifdef MULTICHAR_SET
-       if (XmbTextPropertyToTextList(R->Xdisplay, &ct, &cl,
-                                     &dummy_count) == Success && cl) {
-           rxvt_PasteIt(aR_ cl[0], STRLEN(cl[0]));
-           XFreeStringList(cl);
-       } else
-#endif
-           rxvt_PasteIt(aR_ ct.value, (unsigned int)ct.nitems);
-       if (bytes_after == 0)
-           break;
-       XFree(ct.value);
+        if (XmbTextPropertyToTextList(R->Xdisplay, &ct, &cl,
+                                      &dummy_count) == Success && cl) {
+            rxvt_PasteIt(aR_ cl[0], STRLEN(cl[0]));
+            XFreeStringList(cl);
+        } else
+#endif
+            rxvt_PasteIt(aR_ ct.value, (unsigned int)ct.nitems);
+        if (bytes_after == 0)
+            break;
+        XFree(ct.value);
     }
     if (ct.value)
-       XFree(ct.value);
+        XFree(ct.value);
     if (R->selection_wait == Sel_normal)
-       R->selection_wait = Sel_none;
+        R->selection_wait = Sel_none;
     D_SELECT((stderr, "rxvt_selection_paste: bytes written: %ld", nread));
     return (int)nread;
 }
@@ -2507,41 +2526,41 @@ rxvt_selection_property(pR_ Window win, Atom prop)
     int             reget_time = 0;
 
     if (prop == None)
-       return;
+        return;
     D_SELECT((stderr, "rxvt_selection_property(%08lx, %lu)", win, (unsigned long)prop));
     if (R->selection_wait == Sel_normal) {
-       int             a, afmt;
-       Atom            atype;
-       unsigned long   bytes_after, nitems;
-       unsigned char  *s = NULL;
-
-       a = XGetWindowProperty(R->Xdisplay, win, prop, 0L, 1L, False,
-                              R->xa[XA_INCR], &atype, &afmt, &nitems,
-                              &bytes_after, &s);
-       if (s)
-           XFree(s);
-       if (a != Success)
-           return;
+        int             a, afmt;
+        Atom            atype;
+        unsigned long   bytes_after, nitems;
+        unsigned char  *s = NULL;
+
+        a = XGetWindowProperty(R->Xdisplay, win, prop, 0L, 1L, False,
+                               R->xa[XA_INCR], &atype, &afmt, &nitems,
+                               &bytes_after, &s);
+        if (s)
+            XFree(s);
+        if (a != Success)
+            return;
 #ifndef __CYGWIN32__
-       if (atype == R->xa[XA_INCR]) {  /* start an INCR transfer */
-           D_SELECT((stderr, "rxvt_selection_property: INCR: starting transfer"));
-           XDeleteProperty(R->Xdisplay, win, prop);
-           XFlush(R->Xdisplay);
-           reget_time = 1;
-           R->selection_wait = Sel_incr;
-       }
+        if (atype == R->xa[XA_INCR]) {  /* start an INCR transfer */
+            D_SELECT((stderr, "rxvt_selection_property: INCR: starting transfer"));
+            XDeleteProperty(R->Xdisplay, win, prop);
+            XFlush(R->Xdisplay);
+            reget_time = 1;
+            R->selection_wait = Sel_incr;
+        }
 #endif
     } else if (R->selection_wait == Sel_incr) {
-       reget_time = 1;
-       if (rxvt_selection_paste(aR_ win, prop, True) == -1) {
-           D_SELECT((stderr, "rxvt_selection_property: INCR: clean end"));
-           R->selection_wait = Sel_none;
-           R->timeout[TIMEOUT_INCR].tv_sec = 0;        /* turn off timer */
-       }
+        reget_time = 1;
+        if (rxvt_selection_paste(aR_ win, prop, True) == -1) {
+            D_SELECT((stderr, "rxvt_selection_property: INCR: clean end"));
+            R->selection_wait = Sel_none;
+            R->timeout[TIMEOUT_INCR].tv_sec = 0;        /* turn off timer */
+        }
     }
-    if (reget_time) {  /* received more data so reget time */
-       (void)gettimeofday(&(R->timeout[TIMEOUT_INCR]), NULL);
-       R->timeout[TIMEOUT_INCR].tv_sec += 10;  /* ten seconds wait */
+    if (reget_time) {   /* received more data so reget time */
+        (void)gettimeofday(&(R->timeout[TIMEOUT_INCR]), NULL);
+        R->timeout[TIMEOUT_INCR].tv_sec += 10;  /* ten seconds wait */
     }
 }
 /* ------------------------------------------------------------------------- */
@@ -2560,34 +2579,34 @@ rxvt_selection_request(pR_ Time tm, int x, int y)
 {
     D_SELECT((stderr, "rxvt_selection_request(%lu, %d, %d)", tm, x, y));
     if (x < 0 || x >= R->TermWin.width || y < 0 || y >= R->TermWin.height)
-       return;                 /* outside window */
+        return;                 /* outside window */
 
-    if (R->selection.text != NULL) {   /* internal selection */
-       D_SELECT((stderr, "rxvt_selection_request: pasting internal"));
-       rxvt_PasteIt(aR_ R->selection.text, R->selection.len);
-       return;
+    if (R->selection.text != NULL) {    /* internal selection */
+        D_SELECT((stderr, "rxvt_selection_request: pasting internal"));
+        rxvt_PasteIt(aR_ R->selection.text, R->selection.len);
+        return;
     } else {
-       int             i;
+        int             i;
 
-       R->selection_request_time = tm;
-       R->selection_wait = Sel_normal;
-       for (i = Sel_Primary; i <= Sel_Clipboard; i++) {
+        R->selection_request_time = tm;
+        R->selection_wait = Sel_normal;
+        for (i = Sel_Primary; i <= Sel_Clipboard; i++) {
 #ifdef MULTICHAR_SET
-           R->selection_type = Sel_CompoundText;
+            R->selection_type = Sel_CompoundText;
 #else
-           R->selection_type = 0;
+            R->selection_type = 0;
 #endif
-           if (rxvt_selection_request_other(aR_
+            if (rxvt_selection_request_other(aR_
 #ifdef MULTICHAR_SET
-                                            R->xa[XA_COMPOUND_TEXT],
+                                             R->xa[XA_COMPOUND_TEXT],
 #else
-                                            XA_STRING,
+                                             XA_STRING,
 #endif
-                                            i))
-               return;
-       }
+                                             i))
+                return;
+        }
     }
-    R->selection_wait = Sel_none;      /* don't loop in rxvt_selection_paste() */
+    R->selection_wait = Sel_none;       /* don't loop in rxvt_selection_paste() */
     D_SELECT((stderr, "rxvt_selection_request: pasting CUT_BUFFER0"));
     rxvt_selection_paste(aR_ Xroot, XA_CUT_BUFFER0, False);
 }
@@ -2603,16 +2622,16 @@ rxvt_selection_request_other(pR_ Atom target, int selnum)
 
     R->selection_type |= selnum;
     if (selnum == Sel_Primary)
-       sel = XA_PRIMARY;
+        sel = XA_PRIMARY;
     else if (selnum == Sel_Secondary)
-       sel = XA_SECONDARY;
+        sel = XA_SECONDARY;
     else
-       sel = R->xa[XA_CLIPBOARD];
+        sel = R->xa[XA_CLIPBOARD];
     if (XGetSelectionOwner(R->Xdisplay, sel) != None) {
-       D_SELECT((stderr, "rxvt_selection_request_other: pasting %s", debug_xa_names[selnum]));
-       XConvertSelection(R->Xdisplay, sel, target, R->xa[XA_VT_SELECTION],
-                         R->TermWin.vt, R->selection_request_time);
-       return 1;
+        D_SELECT((stderr, "rxvt_selection_request_other: pasting %s", debug_xa_names[selnum]));
+        XConvertSelection(R->Xdisplay, sel, target, R->xa[XA_VT_SELECTION],
+                          R->TermWin.vt, R->selection_request_time);
+        return 1;
     }
     return 0;
 }
@@ -2630,7 +2649,7 @@ rxvt_selection_clear(pR)
 
     R->want_refresh = 1;
     if (R->selection.text)
-       free(R->selection.text);
+        free(R->selection.text);
     R->selection.text = NULL;
     R->selection.len = 0;
     CLEAR_SELECTION(R);
@@ -2656,20 +2675,20 @@ rxvt_selection_make(pR_ Time tm)
     D_SELECT((stderr, "rxvt_selection_make(): R->selection.op=%d, R->selection.clicks=%d", R->selection.op, R->selection.clicks));
     switch (R->selection.op) {
     case SELECTION_CONT:
-       break;
+        break;
     case SELECTION_INIT:
-       CLEAR_SELECTION(R);
+        CLEAR_SELECTION(R);
     /* FALLTHROUGH */
     case SELECTION_BEGIN:
-       R->selection.op = SELECTION_DONE;
+        R->selection.op = SELECTION_DONE;
     /* FALLTHROUGH */
     default:
-       return;
+        return;
     }
     R->selection.op = SELECTION_DONE;
 
     if (R->selection.clicks == 4)
-       return;                 /* nothing selected, go away */
+        return;                 /* nothing selected, go away */
 
     i = (R->selection.end.row - R->selection.beg.row + 1) * (R->TermWin.ncol + 1) + 1;
     str = (char *)rxvt_malloc(i * MB_CUR_MAX + 1);
@@ -2683,17 +2702,17 @@ rxvt_selection_make(pR_ Time tm)
 
     for (; row <= end_row; row++, col = 0)
       {
-       t = &(R->screen.text[row][col]);
+        t = &(R->screen.text[row][col]);
 
         end_col = R->screen.tlen[row];
 
         if (end_col == -1)
-         end_col = R->TermWin.ncol;
+          end_col = R->TermWin.ncol;
 
         if (row == end_row)
           MIN_IT (end_col, R->selection.end.col);
 
-       for (; col < end_col; col++)
+        for (; col < end_col; col++)
           if (*t == NOCHAR)
             t++;
           else
@@ -2703,27 +2722,27 @@ rxvt_selection_make(pR_ Time tm)
                 str += len;
             }
 
-       if (R->screen.tlen[row] != -1 && row != end_row)
-           *str++ = '\n';
+        if (R->screen.tlen[row] != -1 && row != end_row)
+            *str++ = '\n';
       }
 
 #ifndef NO_OLD_SELECTION
     if (R->selection_style == OLD_SELECT)
-       if (end_col == R->TermWin.ncol)
-           *str++ = '\n';
+        if (end_col == R->TermWin.ncol)
+            *str++ = '\n';
 #endif
 #ifndef NO_NEW_SELECTION
     if (R->selection_style != OLD_SELECT)
-       if (end_col != R->selection.end.col)
-           *str++ = '\n';
+        if (end_col != R->selection.end.col)
+            *str++ = '\n';
 #endif
     *str = '\0';
 
     i = str - (char *)new_selection_text;
     if (i == 0)
       {
-       free (new_selection_text);
-       return;
+        free (new_selection_text);
+        return;
       }
 
     // due to MB_MAX_CUR, selection wastage is usually high
@@ -2732,15 +2751,15 @@ rxvt_selection_make(pR_ Time tm)
 
     R->selection.len = i;
     if (R->selection.text)
-       free (R->selection.text);
+        free (R->selection.text);
 
     R->selection.text = new_selection_text;
 
     XSetSelectionOwner(R->Xdisplay, XA_PRIMARY, R->TermWin.vt, tm);
     if (XGetSelectionOwner(R->Xdisplay, XA_PRIMARY) != R->TermWin.vt)
-       rxvt_print_error("can't get primary selection");
+        rxvt_print_error("can't get primary selection");
     XChangeProperty(R->Xdisplay, Xroot, XA_CUT_BUFFER0, XA_STRING, 8,
-                   PropModeReplace, R->selection.text, (int)R->selection.len);
+                    PropModeReplace, R->selection.text, (int)R->selection.len);
     R->selection_time = tm;
     D_SELECT((stderr, "rxvt_selection_make(): R->selection.len=%d", R->selection.len));
 }
@@ -2757,16 +2776,16 @@ rxvt_selection_click(pR_ int clicks, int x, int y)
     D_SELECT((stderr, "rxvt_selection_click(%d, %d, %d)", clicks, x, y));
 
     clicks = ((clicks - 1) % 3) + 1;
-    R->selection.clicks = clicks;      /* save clicks so extend will work */
+    R->selection.clicks = clicks;       /* save clicks so extend will work */
 
     rxvt_selection_start_colrow(aR_ Pixel2Col(x), Pixel2Row(y));
     if (clicks == 2 || clicks == 3)
-       rxvt_selection_extend_colrow(aR_ R->selection.mark.col,
-                                    R->selection.mark.row
-                                    + R->TermWin.view_start,
-                                    0, /* button 3     */
-                                    1, /* button press */
-                                    0);        /* click change */
+        rxvt_selection_extend_colrow(aR_ R->selection.mark.col,
+                                     R->selection.mark.row
+                                     + R->TermWin.view_start,
+                                     0, /* button 3     */
+                                     1, /* button press */
+                                     0);        /* click change */
 }
 
 /* ------------------------------------------------------------------------- */
@@ -2785,9 +2804,9 @@ rxvt_selection_start_colrow(pR_ int col, int row)
     MAX_IT(R->selection.mark.col, 0);
     MIN_IT(R->selection.mark.col, (int32_t)R->TermWin.ncol - 1);
 
-    if (R->selection.op) {     /* clear the old selection */
-       R->selection.beg.row = R->selection.end.row = R->selection.mark.row;
-       R->selection.beg.col = R->selection.end.col = R->selection.mark.col;
+    if (R->selection.op) {      /* clear the old selection */
+        R->selection.beg.row = R->selection.end.row = R->selection.mark.row;
+        R->selection.beg.col = R->selection.end.col = R->selection.mark.col;
     }
     R->selection.op = SELECTION_INIT;
     R->selection.screen = R->current_screen;
@@ -2803,9 +2822,9 @@ rxvt_selection_start_colrow(pR_ int col, int row)
 #define DELIMIT_TEXT(x) \
     (((x) == ' ' || (x) == '\t') ? 2 : (STRCHR(R->rs[Rs_cutchars], (x)) != NULL))
 #ifdef MULTICHAR_SET
-# define DELIMIT_REND(x)       (((x) & RS_multiMask) ? 1 : 0)
+# define DELIMIT_REND(x)        (((x) & RS_multiMask) ? 1 : 0)
 #else
-# define DELIMIT_REND(x)       1
+# define DELIMIT_REND(x)        1
 #endif
 
 /* INTPROTO */
@@ -2818,13 +2837,13 @@ rxvt_selection_delimit_word(pR_ enum page_dirn dirn, const row_col_t *mark, row_
     rend_t         *srp;
 
     if (dirn == UP) {
-       bound.row = R->TermWin.saveLines - R->TermWin.nscrolled - 1;
-       bound.col = 0;
-       dirnadd = -1;
+        bound.row = R->TermWin.saveLines - R->TermWin.nscrolled - 1;
+        bound.col = 0;
+        dirnadd = -1;
     } else {
-       bound.row = R->TermWin.saveLines + R->TermWin.nrow;
-       bound.col = R->TermWin.ncol - 1;
-       dirnadd = 1;
+        bound.row = R->TermWin.saveLines + R->TermWin.nrow;
+        bound.col = R->TermWin.ncol - 1;
+        dirnadd = 1;
     }
     row = mark->row + R->TermWin.saveLines;
     col = mark->col;
@@ -2834,48 +2853,48 @@ rxvt_selection_delimit_word(pR_ enum page_dirn dirn, const row_col_t *mark, row_
     w1 = DELIMIT_TEXT(*stp);
 
     if (R->selection_style != NEW_SELECT) {
-       if (w1 == 1) {
-           stp += dirnadd;
-           if (DELIMIT_TEXT(*stp) == 1)
-               goto Old_Word_Selection_You_Die;
-           col += dirnadd;
-       }
-       w1 = 0;
+        if (w1 == 1) {
+            stp += dirnadd;
+            if (DELIMIT_TEXT(*stp) == 1)
+                goto Old_Word_Selection_You_Die;
+            col += dirnadd;
+        }
+        w1 = 0;
     }
     srp = (&R->screen.rend[row][col]);
     w2 = DELIMIT_REND(*srp);
 
     for (;;) {
-       for (; col != bound.col; col += dirnadd) {
-           stp += dirnadd;
-           if (DELIMIT_TEXT(*stp) != w1)
-               break;
-           srp += dirnadd;
-           if (DELIMIT_REND(*srp) != w2)
-               break;
-       }
-       if ((col == bound.col) && (row != bound.row)) {
-           if (R->screen.tlen[(row - (dirn == UP ? 1 : 0))] == -1) {
-               trow = row + dirnadd;
-               tcol = dirn == UP ? R->TermWin.ncol - 1 : 0;
-               if (R->screen.text[trow] == NULL)
-                   break;
-               stp = &(R->screen.text[trow][tcol]);
-               srp = &(R->screen.rend[trow][tcol]);
-               if (DELIMIT_TEXT(*stp) != w1 || DELIMIT_REND(*srp) != w2)
-                   break;
-               row = trow;
-               col = tcol;
-               continue;
-           }
-       }
-       break;
+        for (; col != bound.col; col += dirnadd) {
+            stp += dirnadd;
+            if (DELIMIT_TEXT(*stp) != w1)
+                break;
+            srp += dirnadd;
+            if (DELIMIT_REND(*srp) != w2)
+                break;
+        }
+        if ((col == bound.col) && (row != bound.row)) {
+            if (R->screen.tlen[(row - (dirn == UP ? 1 : 0))] == -1) {
+                trow = row + dirnadd;
+                tcol = dirn == UP ? R->TermWin.ncol - 1 : 0;
+                if (R->screen.text[trow] == NULL)
+                    break;
+                stp = &(R->screen.text[trow][tcol]);
+                srp = &(R->screen.rend[trow][tcol]);
+                if (DELIMIT_TEXT(*stp) != w1 || DELIMIT_REND(*srp) != w2)
+                    break;
+                row = trow;
+                col = tcol;
+                continue;
+            }
+        }
+        break;
     }
   Old_Word_Selection_You_Die:
-    D_SELECT((stderr, "rxvt_selection_delimit_word(%s,...) @ (r:%3d, c:%3d) has boundary (r:%3d, c:%3d)", (dirn == UP ? "up    " : "down"), mark->row, mark->col, row - R->TermWin.saveLines, col));
+    D_SELECT((stderr, "rxvt_selection_delimit_word(%s,...) @ (r:%3d, c:%3d) has boundary (r:%3d, c:%3d)", (dirn == UP ? "up     " : "down"), mark->row, mark->col, row - R->TermWin.saveLines, col));
 
     if (dirn == DN)
-       col++;                  /* put us on one past the end */
+        col++;                  /* put us on one past the end */
 
 /* Poke the values back in */
     ret->row = row - R->TermWin.saveLines;
@@ -2910,24 +2929,24 @@ rxvt_selection_extend(pR_ int x, int y, int flag)
  * be _past_ a character for it to be selected.
  */
     if (R->selection_style != OLD_SELECT) {
-       if (((R->selection.clicks % 3) == 1) && !flag
-           && (col == R->selection.mark.col
-               && (row == R->selection.mark.row + R->TermWin.view_start))) {
-           /* select nothing */
-           R->selection.beg.row = R->selection.end.row = 0;
-           R->selection.beg.col = R->selection.end.col = 0;
-           R->selection.clicks = 4;
-           R->want_refresh = 1;
-           D_SELECT((stderr, "rxvt_selection_extend() R->selection.clicks = 4"));
-           return;
-       }
+        if (((R->selection.clicks % 3) == 1) && !flag
+            && (col == R->selection.mark.col
+                && (row == R->selection.mark.row + R->TermWin.view_start))) {
+            /* select nothing */
+            R->selection.beg.row = R->selection.end.row = 0;
+            R->selection.beg.col = R->selection.end.col = 0;
+            R->selection.clicks = 4;
+            R->want_refresh = 1;
+            D_SELECT((stderr, "rxvt_selection_extend() R->selection.clicks = 4"));
+            return;
+        }
     }
 #endif
     if (R->selection.clicks == 4)
-       R->selection.clicks = 1;
-    rxvt_selection_extend_colrow(aR_ col, row, !!flag, /* ? button 3      */
-                                flag == 1 ? 1 : 0,     /* ? button press  */
-                                0);    /* no click change */
+        R->selection.clicks = 1;
+    rxvt_selection_extend_colrow(aR_ col, row, !!flag,  /* ? button 3      */
+                                 flag == 1 ? 1 : 0,     /* ? button press  */
+                                 0);    /* no click change */
 }
 
 /* ------------------------------------------------------------------------- */
@@ -2942,7 +2961,7 @@ rxvt_selection_extend_colrow(pR_ int32_t col, int32_t row, int button3, int butt
     int             end_col;
     row_col_t       pos;
     enum {
-       LEFT, RIGHT
+        LEFT, RIGHT
     } closeto = RIGHT;
 
     D_SELECT((stderr, "rxvt_selection_extend_colrow(c:%d, r:%d, %d, %d) clicks:%d, op:%d", col, row, button3, buttonpress, R->selection.clicks, R->selection.op));
@@ -2951,38 +2970,38 @@ rxvt_selection_extend_colrow(pR_ int32_t col, int32_t row, int button3, int butt
     R->want_refresh = 1;
     switch (R->selection.op) {
     case SELECTION_INIT:
-       CLEAR_SELECTION(R);
-       R->selection.op = SELECTION_BEGIN;
+        CLEAR_SELECTION(R);
+        R->selection.op = SELECTION_BEGIN;
     /* FALLTHROUGH */
     case SELECTION_BEGIN:
-       if (row != R->selection.mark.row || col != R->selection.mark.col
-           || (!button3 && buttonpress))
-           R->selection.op = SELECTION_CONT;
-       break;
+        if (row != R->selection.mark.row || col != R->selection.mark.col
+            || (!button3 && buttonpress))
+            R->selection.op = SELECTION_CONT;
+        break;
     case SELECTION_DONE:
-       R->selection.op = SELECTION_CONT;
+        R->selection.op = SELECTION_CONT;
     /* FALLTHROUGH */
     case SELECTION_CONT:
-       break;
+        break;
     case SELECTION_CLEAR:
-       rxvt_selection_start_colrow(aR_ col, row);
+        rxvt_selection_start_colrow(aR_ col, row);
     /* FALLTHROUGH */
     default:
-       return;
+        return;
     }
     if (R->selection.beg.col == R->selection.end.col
-       && R->selection.beg.col != R->selection.mark.col
-       && R->selection.beg.row == R->selection.end.row
-       && R->selection.beg.row != R->selection.mark.row) {
-       R->selection.beg.col = R->selection.end.col = R->selection.mark.col;
-       R->selection.beg.row = R->selection.end.row = R->selection.mark.row;
-       D_SELECT((stderr, "rxvt_selection_extend_colrow() ENT2 b:(r:%d,c:%d) m:(r:%d,c:%d), e:(r:%d,c:%d)", R->selection.beg.row, R->selection.beg.col, R->selection.mark.row, R->selection.mark.col, R->selection.end.row, R->selection.end.col));
+        && R->selection.beg.col != R->selection.mark.col
+        && R->selection.beg.row == R->selection.end.row
+        && R->selection.beg.row != R->selection.mark.row) {
+        R->selection.beg.col = R->selection.end.col = R->selection.mark.col;
+        R->selection.beg.row = R->selection.end.row = R->selection.mark.row;
+        D_SELECT((stderr, "rxvt_selection_extend_colrow() ENT2 b:(r:%d,c:%d) m:(r:%d,c:%d), e:(r:%d,c:%d)", R->selection.beg.row, R->selection.beg.col, R->selection.mark.row, R->selection.mark.col, R->selection.end.row, R->selection.end.col));
     }
 
     pos.col = col;
     pos.row = row;
 
-    pos.row -= R->TermWin.view_start;  /* adjust for scroll */
+    pos.row -= R->TermWin.view_start;   /* adjust for scroll */
 
 #ifndef NO_OLD_SELECTION
 /*
@@ -2992,44 +3011,44 @@ rxvt_selection_extend_colrow(pR_ int32_t col, int32_t row, int button3, int butt
  * Selection always terminates (left or right as appropriate) at the mark.
  */
     if (R->selection_style == OLD_SELECT) {
-       if (R->selection.clicks == 1 || button3) {
-           if (R->hate_those_clicks) {
-               R->hate_those_clicks = 0;
-               if (R->selection.clicks == 1) {
-                   R->selection.beg.row = R->selection.mark.row;
-                   R->selection.beg.col = R->selection.mark.col;
-               } else {
-                   R->selection.mark.row = R->selection.beg.row;
-                   R->selection.mark.col = R->selection.beg.col;
-               }
-           }
-           if (ROWCOL_IS_BEFORE(pos, R->selection.mark)) {
-               R->selection.end.row = R->selection.mark.row;
-               R->selection.end.col = R->selection.mark.col + 1;
-               R->selection.beg.row = pos.row;
-               R->selection.beg.col = pos.col;
-           } else {
-               R->selection.beg.row = R->selection.mark.row;
-               R->selection.beg.col = R->selection.mark.col;
-               R->selection.end.row = pos.row;
-               R->selection.end.col = pos.col + 1;
-           }
-       } else if (R->selection.clicks == 2) {
-           rxvt_selection_delimit_word(aR_ UP, &(R->selection.mark),
-                                       &(R->selection.beg));
-           rxvt_selection_delimit_word(aR_ DN, &(R->selection.mark),
-                                       &(R->selection.end));
-           R->hate_those_clicks = 1;
-       } else if (R->selection.clicks == 3) {
-           R->selection.beg.row = R->selection.end.row = R->selection.mark.row;
-           R->selection.beg.col = 0;
-           R->selection.end.col = ncol;
-           R->hate_those_clicks = 1;
-       }
-       D_SELECT((stderr, "rxvt_selection_extend_colrow() EXIT b:(r:%d,c:%d) m:(r:%d,c:%d), e:(r:%d,c:%d)", R->selection.beg.row, R->selection.beg.col, R->selection.mark.row, R->selection.mark.col, R->selection.end.row, R->selection.end.col));
-       return;
+        if (R->selection.clicks == 1 || button3) {
+            if (R->hate_those_clicks) {
+                R->hate_those_clicks = 0;
+                if (R->selection.clicks == 1) {
+                    R->selection.beg.row = R->selection.mark.row;
+                    R->selection.beg.col = R->selection.mark.col;
+                } else {
+                    R->selection.mark.row = R->selection.beg.row;
+                    R->selection.mark.col = R->selection.beg.col;
+                }
+            }
+            if (ROWCOL_IS_BEFORE(pos, R->selection.mark)) {
+                R->selection.end.row = R->selection.mark.row;
+                R->selection.end.col = R->selection.mark.col + 1;
+                R->selection.beg.row = pos.row;
+                R->selection.beg.col = pos.col;
+            } else {
+                R->selection.beg.row = R->selection.mark.row;
+                R->selection.beg.col = R->selection.mark.col;
+                R->selection.end.row = pos.row;
+                R->selection.end.col = pos.col + 1;
+            }
+        } else if (R->selection.clicks == 2) {
+            rxvt_selection_delimit_word(aR_ UP, &(R->selection.mark),
+                                        &(R->selection.beg));
+            rxvt_selection_delimit_word(aR_ DN, &(R->selection.mark),
+                                        &(R->selection.end));
+            R->hate_those_clicks = 1;
+        } else if (R->selection.clicks == 3) {
+            R->selection.beg.row = R->selection.end.row = R->selection.mark.row;
+            R->selection.beg.col = 0;
+            R->selection.end.col = ncol;
+            R->hate_those_clicks = 1;
+        }
+        D_SELECT((stderr, "rxvt_selection_extend_colrow() EXIT b:(r:%d,c:%d) m:(r:%d,c:%d), e:(r:%d,c:%d)", R->selection.beg.row, R->selection.beg.col, R->selection.mark.row, R->selection.mark.col, R->selection.end.row, R->selection.end.col));
+        return;
     }
-#endif                         /* ! NO_OLD_SELECTION */
+#endif                          /* ! NO_OLD_SELECTION */
 #ifndef NO_NEW_SELECTION
 /* selection_style must not be OLD_SELECT to get here */
 /*
@@ -3045,111 +3064,111 @@ rxvt_selection_extend_colrow(pR_ int32_t col, int32_t row, int button3, int butt
  *     and it was decided by whichever point/word/line was `fixed' at the
  *     time of the most recent button3 press
  */
-    if (button3 && buttonpress) {      /* button3 press */
-       /*
-        * first determine which edge of the selection we are closest to
-        */
-       if (ROWCOL_IS_BEFORE(pos, R->selection.beg)
-           || (!ROWCOL_IS_AFTER(pos, R->selection.end)
-               && (((pos.col - R->selection.beg.col)
-                    + ((pos.row - R->selection.beg.row) * ncol))
-                   < ((R->selection.end.col - pos.col)
-                      + ((R->selection.end.row - pos.row) * ncol)))))
-            closeto = LEFT;
-       if (closeto == LEFT) {
-           R->selection.beg.row = pos.row;
-           R->selection.beg.col = pos.col;
-           R->selection.mark.row = R->selection.end.row;
-           R->selection.mark.col = R->selection.end.col
-                                   - (R->selection.clicks == 2);
-       } else {
-           R->selection.end.row = pos.row;
-           R->selection.end.col = pos.col;
-           R->selection.mark.row = R->selection.beg.row;
-           R->selection.mark.col = R->selection.beg.col;
-       }
-    } else {                   /* button1 drag or button3 drag */
-       if (ROWCOL_IS_AFTER(R->selection.mark, pos)) {
-           if ((R->selection.mark.row == R->selection.end.row)
-               && (R->selection.mark.col == R->selection.end.col)
-               && clickchange && R->selection.clicks == 2)
-               R->selection.mark.col--;
-           R->selection.beg.row = pos.row;
-           R->selection.beg.col = pos.col;
-           R->selection.end.row = R->selection.mark.row;
-           R->selection.end.col = R->selection.mark.col
-                                  + (R->selection.clicks == 2);
-       } else {
-           R->selection.beg.row = R->selection.mark.row;
-           R->selection.beg.col = R->selection.mark.col;
-           R->selection.end.row = pos.row;
-           R->selection.end.col = pos.col;
-       }
+    if (button3 && buttonpress) {       /* button3 press */
+        /*
+         * first determine which edge of the selection we are closest to
+         */
+        if (ROWCOL_IS_BEFORE(pos, R->selection.beg)
+            || (!ROWCOL_IS_AFTER(pos, R->selection.end)
+                && (((pos.col - R->selection.beg.col)
+                     + ((pos.row - R->selection.beg.row) * ncol))
+                    < ((R->selection.end.col - pos.col)
+                       + ((R->selection.end.row - pos.row) * ncol)))))
+             closeto = LEFT;
+        if (closeto == LEFT) {
+            R->selection.beg.row = pos.row;
+            R->selection.beg.col = pos.col;
+            R->selection.mark.row = R->selection.end.row;
+            R->selection.mark.col = R->selection.end.col
+                                    - (R->selection.clicks == 2);
+        } else {
+            R->selection.end.row = pos.row;
+            R->selection.end.col = pos.col;
+            R->selection.mark.row = R->selection.beg.row;
+            R->selection.mark.col = R->selection.beg.col;
+        }
+    } else {                    /* button1 drag or button3 drag */
+        if (ROWCOL_IS_AFTER(R->selection.mark, pos)) {
+            if ((R->selection.mark.row == R->selection.end.row)
+                && (R->selection.mark.col == R->selection.end.col)
+                && clickchange && R->selection.clicks == 2)
+                R->selection.mark.col--;
+            R->selection.beg.row = pos.row;
+            R->selection.beg.col = pos.col;
+            R->selection.end.row = R->selection.mark.row;
+            R->selection.end.col = R->selection.mark.col
+                                   + (R->selection.clicks == 2);
+        } else {
+            R->selection.beg.row = R->selection.mark.row;
+            R->selection.beg.col = R->selection.mark.col;
+            R->selection.end.row = pos.row;
+            R->selection.end.col = pos.col;
+        }
     }
 
     if (R->selection.clicks == 1) {
-       end_col = R->screen.tlen[R->selection.beg.row + R->TermWin.saveLines];
-       if (end_col != -1 && R->selection.beg.col > end_col) {
+        end_col = R->screen.tlen[R->selection.beg.row + R->TermWin.saveLines];
+        if (end_col != -1 && R->selection.beg.col > end_col) {
 #if 1
-           R->selection.beg.col = ncol;
+            R->selection.beg.col = ncol;
 #else
-           if (R->selection.beg.row != R->selection.end.row)
-               R->selection.beg.col = ncol;
-           else
-               R->selection.beg.col = R->selection.mark.col;
+            if (R->selection.beg.row != R->selection.end.row)
+                R->selection.beg.col = ncol;
+            else
+                R->selection.beg.col = R->selection.mark.col;
 #endif
-       }
-       end_col = R->screen.tlen[R->selection.end.row + R->TermWin.saveLines];
-       if (end_col != -1 && R->selection.end.col > end_col)
-           R->selection.end.col = ncol;
+        }
+        end_col = R->screen.tlen[R->selection.end.row + R->TermWin.saveLines];
+        if (end_col != -1 && R->selection.end.col > end_col)
+            R->selection.end.col = ncol;
 
     } else if (R->selection.clicks == 2) {
-       if (ROWCOL_IS_AFTER(R->selection.end, R->selection.beg))
-           R->selection.end.col--;
-       rxvt_selection_delimit_word(aR_ UP, &(R->selection.beg),
-                                   &(R->selection.beg));
-       rxvt_selection_delimit_word(aR_ DN, &(R->selection.end),
-                                   &(R->selection.end));
+        if (ROWCOL_IS_AFTER(R->selection.end, R->selection.beg))
+            R->selection.end.col--;
+        rxvt_selection_delimit_word(aR_ UP, &(R->selection.beg),
+                                    &(R->selection.beg));
+        rxvt_selection_delimit_word(aR_ DN, &(R->selection.end),
+                                    &(R->selection.end));
     } else if (R->selection.clicks == 3) {
 #ifndef NO_FRILLS
-       if ((R->Options & Opt_tripleclickwords)) {
-           int             end_row;
-
-           rxvt_selection_delimit_word(aR_ UP, &(R->selection.beg),
-                                       &(R->selection.beg));
-           end_row = R->screen.tlen[R->selection.mark.row
-                                    + R->TermWin.saveLines];
-           for (end_row = R->selection.mark.row; end_row < R->TermWin.nrow;
-                end_row++) {
-               end_col = R->screen.tlen[end_row + R->TermWin.saveLines];
-               if (end_col != -1) {
-                   R->selection.end.row = end_row;
-                   R->selection.end.col = end_col;
-                   rxvt_selection_remove_trailing_spaces(aR);
-                   break;
-               }
-           }
-       } else
-#endif
-       {
-           if (ROWCOL_IS_AFTER(R->selection.mark, R->selection.beg))
-               R->selection.mark.col++;
-           R->selection.beg.col = 0;
-           R->selection.end.col = ncol;
-       }
+        if ((R->Options & Opt_tripleclickwords)) {
+            int             end_row;
+
+            rxvt_selection_delimit_word(aR_ UP, &(R->selection.beg),
+                                        &(R->selection.beg));
+            end_row = R->screen.tlen[R->selection.mark.row
+                                     + R->TermWin.saveLines];
+            for (end_row = R->selection.mark.row; end_row < R->TermWin.nrow;
+                 end_row++) {
+                end_col = R->screen.tlen[end_row + R->TermWin.saveLines];
+                if (end_col != -1) {
+                    R->selection.end.row = end_row;
+                    R->selection.end.col = end_col;
+                    rxvt_selection_remove_trailing_spaces(aR);
+                    break;
+                }
+            }
+        } else
+#endif
+        {
+            if (ROWCOL_IS_AFTER(R->selection.mark, R->selection.beg))
+                R->selection.mark.col++;
+            R->selection.beg.col = 0;
+            R->selection.end.col = ncol;
+        }
     }
-    if (button3 && buttonpress) {      /* mark may need to be changed */
-       if (closeto == LEFT) {
-           R->selection.mark.row = R->selection.end.row;
-           R->selection.mark.col = R->selection.end.col
-                                   - (R->selection.clicks == 2);
-       } else {
-           R->selection.mark.row = R->selection.beg.row;
-           R->selection.mark.col = R->selection.beg.col;
-       }
+    if (button3 && buttonpress) {       /* mark may need to be changed */
+        if (closeto == LEFT) {
+            R->selection.mark.row = R->selection.end.row;
+            R->selection.mark.col = R->selection.end.col
+                                    - (R->selection.clicks == 2);
+        } else {
+            R->selection.mark.row = R->selection.beg.row;
+            R->selection.mark.col = R->selection.beg.col;
+        }
     }
     D_SELECT((stderr, "rxvt_selection_extend_colrow() EXIT b:(r:%d,c:%d) m:(r:%d,c:%d), e:(r:%d,c:%d)", R->selection.beg.row, R->selection.beg.col, R->selection.mark.row, R->selection.mark.col, R->selection.end.row, R->selection.end.col));
-#endif                         /* ! NO_NEW_SELECTION */
+#endif                          /* ! NO_NEW_SELECTION */
 }
 
 #ifndef NO_FRILLS
@@ -3163,26 +3182,26 @@ rxvt_selection_remove_trailing_spaces(pR)
     end_col = R->selection.end.col;
     end_row = R->selection.end.row;
     for ( ; end_row >= R->selection.beg.row; ) {
-       stp = R->screen.text[end_row + R->TermWin.saveLines];
-       while (--end_col >= 0) {
-           if (stp[end_col] != ' ' && stp[end_col] != '\t')
-               break;
-       }
-       if (end_col >= 0
-           || R->screen.tlen[end_row - 1 + R->TermWin.saveLines] != -1) {
-           R->selection.end.col = end_col + 1;
-           R->selection.end.row = end_row;
-           break;
-       }
-       end_row--;
-       end_col = R->TermWin.ncol;
+        stp = R->screen.text[end_row + R->TermWin.saveLines];
+        while (--end_col >= 0) {
+            if (stp[end_col] != ' ' && stp[end_col] != '\t')
+                break;
+        }
+        if (end_col >= 0
+            || R->screen.tlen[end_row - 1 + R->TermWin.saveLines] != -1) {
+            R->selection.end.col = end_col + 1;
+            R->selection.end.row = end_row;
+            break;
+        }
+        end_row--;
+        end_col = R->TermWin.ncol;
     }
     if (R->selection.mark.row > R->selection.end.row) {
-       R->selection.mark.row = R->selection.end.row;
-       R->selection.mark.col = R->selection.end.col;
+        R->selection.mark.row = R->selection.end.row;
+        R->selection.mark.col = R->selection.end.col;
     } else if (R->selection.mark.row == R->selection.end.row
-              && R->selection.mark.col > R->selection.end.col)
-       R->selection.mark.col = R->selection.end.col;
+               && R->selection.mark.col > R->selection.end.col)
+        R->selection.mark.col = R->selection.end.col;
 }
 #endif
 
@@ -3236,68 +3255,68 @@ rxvt_selection_send(pR_ const XSelectionRequestEvent *rq)
     ev.time = rq->time;
 
     if (rq->target == R->xa[XA_TARGETS]) {
-       target_list[0] = (Atom32) R->xa[XA_TARGETS];
-       target_list[1] = (Atom32) XA_STRING;
-       target_list[2] = (Atom32) R->xa[XA_TEXT];
+        target_list[0] = (Atom32) R->xa[XA_TARGETS];
+        target_list[1] = (Atom32) XA_STRING;
+        target_list[2] = (Atom32) R->xa[XA_TEXT];
 #ifdef USE_XIM
-       target_list[3] = (Atom32) R->xa[XA_COMPOUND_TEXT];
+        target_list[3] = (Atom32) R->xa[XA_COMPOUND_TEXT];
 #endif
-       XChangeProperty(R->Xdisplay, rq->requestor, rq->property, XA_ATOM,
-                       (8 * sizeof(target_list[0])), PropModeReplace,
-                       (unsigned char *)target_list,
-                       (sizeof(target_list) / sizeof(target_list[0])));
-       ev.property = rq->property;
+        XChangeProperty(R->Xdisplay, rq->requestor, rq->property, XA_ATOM,
+                        (8 * sizeof(target_list[0])), PropModeReplace,
+                        (unsigned char *)target_list,
+                        (sizeof(target_list) / sizeof(target_list[0])));
+        ev.property = rq->property;
     } else if (rq->target == R->xa[XA_MULTIPLE]) {
-       /* TODO: Handle MULTIPLE */
+        /* TODO: Handle MULTIPLE */
     } else if (rq->target == R->xa[XA_TIMESTAMP] && R->selection.text) {
-       XChangeProperty(R->Xdisplay, rq->requestor, rq->property, XA_INTEGER,
-                       (8 * sizeof(Time)), PropModeReplace,
-                       (unsigned char *)&R->selection_time, 1);
-       ev.property = rq->property;
+        XChangeProperty(R->Xdisplay, rq->requestor, rq->property, XA_INTEGER,
+                        (8 * sizeof(Time)), PropModeReplace,
+                        (unsigned char *)&R->selection_time, 1);
+        ev.property = rq->property;
     } else if (rq->target == XA_STRING
-              || rq->target == R->xa[XA_COMPOUND_TEXT]
-              || rq->target == R->xa[XA_TEXT]) {
+               || rq->target == R->xa[XA_COMPOUND_TEXT]
+               || rq->target == R->xa[XA_TEXT]) {
 #ifdef USE_XIM
-       short           freect = 0;
+        short           freect = 0;
 #endif
-       int             selectlen;
+        int             selectlen;
 
 #ifdef USE_XIM
-       if (rq->target != XA_STRING) {
-           target = R->xa[XA_COMPOUND_TEXT];
-           style = (rq->target == R->xa[XA_COMPOUND_TEXT])
-                   ? XCompoundTextStyle : XStdICCTextStyle;
-       } else
-#endif
-       {
-           target = XA_STRING;
-           style = XStringStyle;
-       }
-       if (R->selection.text) {
-           cl[0] = (char *)R->selection.text;
-           selectlen = R->selection.len;
-       } else {
-           cl[0] = dummy;
-           *dummy = '\0';
-           selectlen = 0;
-       }
+        if (rq->target != XA_STRING) {
+            target = R->xa[XA_COMPOUND_TEXT];
+            style = (rq->target == R->xa[XA_COMPOUND_TEXT])
+                    ? XCompoundTextStyle : XStdICCTextStyle;
+        } else
+#endif
+        {
+            target = XA_STRING;
+            style = XStringStyle;
+        }
+        if (R->selection.text) {
+            cl[0] = (char *)R->selection.text;
+            selectlen = R->selection.len;
+        } else {
+            cl[0] = dummy;
+            *dummy = '\0';
+            selectlen = 0;
+        }
 #ifdef USE_XIM
-       if (XmbTextListToTextProperty(R->Xdisplay, cl, 1, style, &ct)
-           == Success)         /* if we failed to convert then send it raw */
-           freect = 1;
-       else
-#endif
-       {
-           ct.value = (unsigned char *)cl[0];
-           ct.nitems = selectlen;
-       }
-       XChangeProperty(R->Xdisplay, rq->requestor, rq->property,
-                       target, 8, PropModeReplace,
-                       ct.value, (int)ct.nitems);
-       ev.property = rq->property;
+        if (XmbTextListToTextProperty(R->Xdisplay, cl, 1, style, &ct)
+            == Success)         /* if we failed to convert then send it raw */
+            freect = 1;
+        else
+#endif
+        {
+            ct.value = (unsigned char *)cl[0];
+            ct.nitems = selectlen;
+        }
+        XChangeProperty(R->Xdisplay, rq->requestor, rq->property,
+                        target, 8, PropModeReplace,
+                        ct.value, (int)ct.nitems);
+        ev.property = rq->property;
 #ifdef USE_XIM
-       if (freect)
-           XFree(ct.value);
+        if (freect)
+            XFree(ct.value);
 #endif
     }
     XSendEvent(R->Xdisplay, rq->requestor, False, 0L, (XEvent *)&ev);
@@ -3330,7 +3349,7 @@ rxvt_setPosition(pR_ XPoint *pos)
     XGetWindowAttributes(R->Xdisplay, R->TermWin.vt, &xwa);
     pos->x = Col2Pixel(R->screen.cur.col) + xwa.x;
     pos->y = Height2Pixel((R->screen.cur.row + 1)) + xwa.y
-            - R->TermWin.lineSpace;
+             - R->TermWin.lineSpace;
 }
 #endif
 /* ------------------------------------------------------------------------- */
@@ -3345,26 +3364,26 @@ rxvt_debug_colors(void)
 {
     int             color;
     const char     *name[] = {
-       "fg", "bg",
-       "black", "red", "green", "yellow", "blue", "magenta", "cyan", "white"
+        "fg", "bg",
+        "black", "red", "green", "yellow", "blue", "magenta", "cyan", "white"
     };
 
     fprintf(stderr, "Color ( ");
     if (R->rstyle & RS_RVid)
-       fprintf(stderr, "rvid ");
+        fprintf(stderr, "rvid ");
     if (R->rstyle & RS_Bold)
-       fprintf(stderr, "bold ");
+        fprintf(stderr, "bold ");
     if (R->rstyle & RS_Blink)
-       fprintf(stderr, "blink ");
+        fprintf(stderr, "blink ");
     if (R->rstyle & RS_Uline)
-       fprintf(stderr, "uline ");
+        fprintf(stderr, "uline ");
     fprintf(stderr, "): ");
 
     color = GET_FGCOLOR(R->rstyle);
 #ifndef NO_BRIGHTCOLOR
     if (color >= minBrightCOLOR && color <= maxBrightCOLOR) {
-       color -= (minBrightCOLOR - minCOLOR);
-       fprintf(stderr, "bright ");
+        color -= (minBrightCOLOR - minCOLOR);
+        fprintf(stderr, "bright ");
     }
 #endif
     fprintf(stderr, "%s on ", name[color]);
@@ -3372,8 +3391,8 @@ rxvt_debug_colors(void)
     color = GET_BGCOLOR(R->rstyle);
 #ifndef NO_BRIGHTCOLOR
     if (color >= minBrightCOLOR && color <= maxBrightCOLOR) {
-       color -= (minBrightCOLOR - minCOLOR);
-       fprintf(stderr, "bright ");
+        color -= (minBrightCOLOR - minCOLOR);
+        fprintf(stderr, "bright ");
     }
 #endif
     fprintf(stderr, "%s\n", name[color]);