Loading ...
Sorry, an error occurred while loading the content.

Re: [BUG] Control characters in 'statusline' produces weird results

Expand Messages
  • caio
    The patch below probably solves all the cases, I am wrong? diff -r df6b12c84b23 src/screen.c ... +++ b/src/screen.c Wed Nov 03 09:59:24 2010 -0200 @@ -6539,7
    Message 1 of 3 , Nov 3, 2010
    • 0 Attachment
      The patch below probably solves all the cases, I am wrong?

      diff -r df6b12c84b23 src/screen.c
      --- a/src/screen.c Wed Oct 27 18:36:36 2010 +0200
      +++ b/src/screen.c Wed Nov 03 09:59:24 2010 -0200
      @@ -6539,7 +6539,8 @@
            * Draw each snippet with the specified highlighting.
            */
           curattr = attr;
      -    p = buf;
      +    /* translate unprintable chars */
      +    p = transstr(buf);
           for (n = 0; hltab[n].start != NULL; n++)
           {
        len = (int)(hltab[n].start - p);

      Caio Ariede
      http://caioariede.com/


      On Mon, Nov 1, 2010 at 5:58 PM, Bram Moolenaar <Bram@...> wrote:

      ZyX wrote:

      > That is what I get if I launch vim-7.3.47 with
      >     vim -u NONE -c 'set laststatus=2' -c 'let &statusline="\t"'
      > : http://img-fotki.yandex.ru/get/5404/kp-pav.1/0_52506_b26e0c14_orig.png
      > +------------+
      > |#           |
      > |~           |
      > |~           |
      > |        ####|
      > |######      |
      > +------------+
      > (Here `#' means an empty space with white background.)
      >
      > There are also problems with other control characters (but these results are not
      > so weird):
      > 1. LF causes statusline to appear on the command line: in a 5x12 window it looks
      > like that:
      >     vim -u NONE -c 'set laststatus=2' -c 'let &statusline="a\nb"'
      > +------------+
      > |#           |
      > |~           |
      > |~           |
      > |a           |
      > |b########   |
      > +------------+
      > 2. C-o is omitted, but statusline misses two characters:
      >     vim -u NONE -c 'set laststatus=2' -c 'let &statusline="a\<C-o>b"'
      > +------------+
      > |#           |
      > |~           |
      > |~           |
      > |ab########  |
      > |            |
      > +------------+
      > 3. CR clears the line, but again some highlighting is missing:
      >     vim -u NONE -c 'set laststatus=2' -c 'let &statusline="ab\rc"'
      > +------------+
      > |#           |
      > |~           |
      > |~           |
      > |c########   |
      > |            |
      > +------------+

      I see it.  Looks like unprintable characters are not handled properly.

      --
      There can't be a crisis today, my schedule is already full.

       /// Bram Moolenaar -- Bram@... -- http://www.Moolenaar.net   \\\
      ///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
      \\\        download, build and distribute -- http://www.A-A-P.org        ///
       \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

      --
      You received this message from the "vim_dev" maillist.
      Do not top-post! Type your reply below the text you are replying to.
      For more information, visit http://www.vim.org/maillist.php

      --
      You received this message from the "vim_dev" maillist.
      Do not top-post! Type your reply below the text you are replying to.
      For more information, visit http://www.vim.org/maillist.php
    Your message has been successfully submitted and would be delivered to recipients shortly.