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

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

Expand Messages
  • Bram Moolenaar
    ... 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 --
    Message 1 of 3 , Nov 1, 2010
      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
    • 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 2 of 3 , Nov 3, 2010
        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.