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

Re: Highlight non ASCII char

Expand Messages
  • Hiroshi Iwatani
    ... And panic has come. All the trailing spaces, spaces in blank lines, and TAB are glaringly magenta. I don t need those plenty of
    Message 1 of 16 , Feb 1 2:35 AM
    • 0 Attachment
      <self-quote>
      > hi SpecialKey guibg=Magenta
      >
      > Now background color of ^@, ^A etc is magenta!
      > Sudden solution has come.
      </self-quote>

      And panic has come.
      All the trailing spaces, spaces in blank lines, and TAB
      are glaringly magenta.

      I don't need those plenty of magenta!
      How could I highlight 0x00-0x1f0x80-0xff only?

      --
      Hiroshi Iwatani

      *stop cruelty* Annual number of institutionally euthanized cats and dogs
      including kittens and puppies: US 5 million, JP 500 thousand. How about your
      country? *for our better karma*
      ---------------------
    • Yakov Lerner
      ... Indeed range [^Vx00-^Vx1f] didnt work for me. But this does work for me: highlight EvilChars guibg=Magenta match EvilChars /[^Vx00^Vx01-^Vx1f^Vx80-^Vxff]/
      Message 2 of 16 , Feb 1 5:14 AM
      • 0 Attachment
        Hiroshi Iwatani wrote:
        > Thanks but ...
        >
        > Tony's ?solution? doesn't work.
        > And Steve's function is not what I need.
        >
        > Then MY ?solution? also doesn't work:
        >
        > highlight EvilChars guibg=Magenta
        > match EvilChars /[00-1f80-ff]/ <-- input via Ctrl-V,

        Indeed range [^Vx00-^Vx1f] didnt work for me.
        But this does work for me:

        highlight EvilChars guibg=Magenta
        match EvilChars /[^Vx00^Vx01-^Vx1f^Vx80-^Vxff]/

        I suspect is has to do with special treatment of ^@ (null char) in vim

        --
        Jacob Lerner
      • Yakov Lerner
        ... Some more about the [^Vx00-^Vx1f] range. Is doesn t work as expected. It actually works only as as [^Vx0b-^Vx1f] (probably because ^@ is internally
        Message 3 of 16 , Feb 1 5:34 AM
        • 0 Attachment
          Yakov Lerner wrote:
          > Hiroshi Iwatani wrote:
          > > Then MY ?solution? also doesn't work:
          > > highlight EvilChars guibg=Magenta
          > > match EvilChars /[00-1f80-ff]/ <-- input via Ctrl-V,
          >
          > Indeed range [^Vx00-^Vx1f] didnt work for me.
          > But this does work for me:
          >
          > highlight EvilChars guibg=Magenta
          > match EvilChars /[^Vx00^Vx01-^Vx1f^Vx80-^Vxff]/
          > I suspect is has to do with special treatment of ^@ (null char) in vim


          Some more about the [^Vx00-^Vx1f] range. Is doesn't work as expected.
          It actually works only as as [^Vx0b-^Vx1f] (probably because
          ^@ is internally replaced by \n). The range [^Vx00^Vx01-^Vx1f]
          does work though.


          --
          Jacob Lerner
        • Antoine J. Mechelynck
          ... Apparently I gave a wrong highlight group. Try going back to a slightly modified version of what I gave set isprint=32-126 highlight SpecialChar
          Message 4 of 16 , Feb 1 8:23 AM
          • 0 Attachment
            Hiroshi Iwatani <HGA03630@...> wrote:
            > <self-quote>
            > > hi SpecialKey guibg=Magenta
            > >
            > > Now background color of ^@, ^A etc is magenta!
            > > Sudden solution has come.
            > </self-quote>
            >
            > And panic has come.
            > All the trailing spaces, spaces in blank lines, and TAB
            > are glaringly magenta.
            >
            > I don't need those plenty of magenta!
            > How could I highlight 0x00-0x1f0x80-0xff only?
            >
            > --
            > Hiroshi Iwatani
            >
            > *stop cruelty* Annual number of institutionally euthanized cats and
            > dogs including kittens and puppies: US 5 million, JP 500 thousand.
            > How about your country? *for our better karma*
            > ---------------------

            Apparently I gave a wrong highlight group. Try going back to a slightly
            modified version of what I gave

            set isprint=32-126
            highlight SpecialChar guibg=Magenta

            AND READ THE F... MANUAL

            :halp 'highlight'
            :help :highlight

            and also what comes after those, and what they resend to.

            Good reading,
            Tony.
          • Hiroshi Iwatani
            ... Doesn t work. ... Doesn t work. Really does it work as a new group separate from SpecialKey on Yakov s machine? OK, I think I have finally stumbled accross
            Message 5 of 16 , Feb 1 8:12 PM
            • 0 Attachment
              Antoine J. Mechelynck wrote:
              > set isprint=32-126
              > highlight SpecialChar guibg=Magenta
              Doesn't work.

              Yakov Lerner wrote:
              > But this does work for me:
              >
              > highlight EvilChars guibg=Magenta
              > match EvilChars /[^Vx00^Vx01-^Vx1f^Vx80-^Vxff]/
              Doesn't work. Really does it work as a new group separate from
              SpecialKey on Yakov's machine?

              OK, I think I have finally stumbled accross the real problem:

              (0)The range 0x00-0x1f and 0x80-0xff are members of predefined SpecialKey
              group.

              (1)User can't redefine the SpecialKey group's member:
              [can't do this]
              hi SpecialKey guibg=Magenta
              match SpecialKey /[0x00-0x1f0x80-0xff]/ <-- Ctrl-V input

              (2)User can't create a new separate group whose member is SpecialKey
              subset:
              [can't do this]
              hi EvilChars guibg=Maganta
              match EvilChars /[0x00-0x1f0x80-0xff]/ <-- Ctrl-V input

              * When you had a moment where above seemed work, it was really
              the SpecialKey that's working.

              The above new group is ineffective because, it seems, SpecialKey
              overrides it.

              So, my question 1 is:
              How could I do the following or its equivalence via some workaround?:

              highlight SpecialKey guifg=white guibg=NONE
              highlight EvilChars guibg=Maganta
              match EvilChars /[0x00-0x1f0x80-0xff]/

              And question 2 is:
              When we should give in to the above (0)-(2) situation without any
              workaround, how could we achieve the following or its equivalence?:

              nmap <F9> :% s/\s\+$//g<CR> <-- This is OK
              imap <F9> <C-O>:% s/\s\+$//g<CR> <-- This is OK
              nmap <S-F9> :% s/[0x00-0x1f0x80-0xff]/ /g<CR> <-- This doesn't work
              imap <S-F9> <C-O>:% s/[0x00-0x1f0x80-0xff]/ /g<CR> <-- This doesn't work

              In other word, trailing spaces, spaces in blank lines, and TABs shoud be
              simply white while those harmfull byte values should have the most garish
              color!

              Thanks in advance again!!!

              --
              Hiroshi Iwatani

              *stop cruelty* Annual number of institutionally euthanized cats and dogs
              including kittens and puppies: US 5 million, JP 500 thousand. How about your
              country? *for our better karma*
              ---------------------
            • Antoine J. Mechelynck
              ... Let s try another variant ... see ... and don t forget to scroll ... 32-126 are always printable regardless of isprint non-printable characters
              Message 6 of 16 , Feb 2 4:41 AM
              • 0 Attachment
                Hiroshi Iwatani <HGA03630@...> wrote:
                > Antoine J. Mechelynck wrote:
                > > set isprint=32-126
                > > highlight SpecialChar guibg=Magenta
                > Doesn't work.

                Let's try another variant

                :set isprint=
                :highlight SpecialChar ctermbg=Magenta guibg=Magenta
                :highlight NonText ctermbg=Magenta guibg=Magenta

                If it still doesn't work, try in addition:
                :set display+=uhex

                see
                :help 'highlight'
                " and don't forget to scroll
                :help 'isprint'
                " 32-126 are always "printable" regardless of 'isprint'
                " non-printable characters are highlighten in NonText

                Please be more specific: if it "doesn't work", what does it show? (Also for
                other proposals). And did you read the help and try to invent other things
                for yourself?

                -- What 'encoding' are you using? From :help 'isprint' (paraphrased):
                Multibyte characters 256 and above are always regarded as "printable",
                except for intrinsically "unprintable" or "zero-width" Unicode characters.

                HTH,
                Tony.
              • Gary Johnson
                ... I think I found the problem. I did a :helpgrep unprintable c and found this at line 1370 of $VIMRUNTIME/doc/todo.txt: 7 SpecialKey highlighting
                Message 7 of 16 , Feb 2 9:04 AM
                • 0 Attachment
                  On 2004-02-02, "Antoine J. Mechelynck" <antoine.mechelynck@...> wrote:
                  > Hiroshi Iwatani <HGA03630@...> wrote:
                  > > Antoine J. Mechelynck wrote:
                  > > > set isprint=32-126
                  > > > highlight SpecialChar guibg=Magenta
                  > > Doesn't work.
                  >
                  > Let's try another variant
                  >
                  > :set isprint=
                  > :highlight SpecialChar ctermbg=Magenta guibg=Magenta
                  > :highlight NonText ctermbg=Magenta guibg=Magenta
                  >
                  > If it still doesn't work, try in addition:
                  > :set display+=uhex
                  >
                  > see
                  > :help 'highlight'
                  > " and don't forget to scroll
                  > :help 'isprint'
                  > " 32-126 are always "printable" regardless of 'isprint'
                  > " non-printable characters are highlighten in NonText
                  >
                  > Please be more specific: if it "doesn't work", what does it show? (Also for
                  > other proposals). And did you read the help and try to invent other things
                  > for yourself?
                  >
                  > -- What 'encoding' are you using? From :help 'isprint' (paraphrased):
                  > Multibyte characters 256 and above are always regarded as "printable",
                  > except for intrinsically "unprintable" or "zero-width" Unicode characters.

                  I think I found the problem. I did a ":helpgrep unprintable\c" and
                  found this at line 1370 of $VIMRUNTIME/doc/todo.txt:

                  7 SpecialKey highlighting overrules syntax highlighting. Can't give an
                  unprintable char another color. Would be useful for ^M at end of line.

                  and this at line 327 of $VIMRUNTIME/doc/version6.txt:

                  Use "SpecialKey" highlighting for unprintable characters instead of "NonText".
                  The idea is that unprintable text or any text that's displayed differently
                  from the characters in the file is using "SpecialKey", and "NonText" is used
                  for text that doesn't really exist in the file.

                  I think some of the help files have not been updated to reflect the
                  latter change. So I think the answer for now is that there is no
                  way to get the highlighting the OP wants.

                  Gary

                  --
                  Gary Johnson | Agilent Technologies
                  garyjohn@... | Wireless Division
                  | Spokane, Washington, USA
                • Hiroshi Iwatani
                  Gary, Thanks a lot fot the *definitive* information about the SpecialKey group. It s a *definitively* sad news for us though. ;-) ... -- Hiroshi Iwatani *stop
                  Message 8 of 16 , Feb 2 4:09 PM
                  • 0 Attachment
                    Gary,
                    Thanks a lot fot the *definitive* information about the SpecialKey
                    group. It's a *definitively* sad news for us though. ;-)

                    Gary Johnson wrote:
                    > On 2004-02-02, "Antoine J. Mechelynck" <antoine.mechelynck@...> wrote:
                    >
                    >>Hiroshi Iwatani <HGA03630@...> wrote:
                    >>
                    >>>Antoine J. Mechelynck wrote:
                    >>>
                    >>>> set isprint=32-126
                    >>>> highlight SpecialChar guibg=Magenta
                    >>>
                    >>>Doesn't work.
                    >>
                    >>Let's try another variant
                    >>
                    >> :set isprint=
                    >> :highlight SpecialChar ctermbg=Magenta guibg=Magenta
                    >> :highlight NonText ctermbg=Magenta guibg=Magenta
                    >>
                    >>If it still doesn't work, try in addition:
                    >> :set display+=uhex
                    >>
                    >>see
                    >> :help 'highlight'
                    >> " and don't forget to scroll
                    >> :help 'isprint'
                    >> " 32-126 are always "printable" regardless of 'isprint'
                    >> " non-printable characters are highlighten in NonText
                    >>
                    >>Please be more specific: if it "doesn't work", what does it show? (Also for
                    >>other proposals). And did you read the help and try to invent other things
                    >>for yourself?
                    >>
                    >>-- What 'encoding' are you using? From :help 'isprint' (paraphrased):
                    >>Multibyte characters 256 and above are always regarded as "printable",
                    >>except for intrinsically "unprintable" or "zero-width" Unicode characters.
                    >
                    >
                    > I think I found the problem. I did a ":helpgrep unprintable\c" and
                    > found this at line 1370 of $VIMRUNTIME/doc/todo.txt:
                    >
                    > 7 SpecialKey highlighting overrules syntax highlighting. Can't give an
                    > unprintable char another color. Would be useful for ^M at end of line.
                    >
                    > and this at line 327 of $VIMRUNTIME/doc/version6.txt:
                    >
                    > Use "SpecialKey" highlighting for unprintable characters instead of "NonText".
                    > The idea is that unprintable text or any text that's displayed differently
                    > from the characters in the file is using "SpecialKey", and "NonText" is used
                    > for text that doesn't really exist in the file.
                    >
                    > I think some of the help files have not been updated to reflect the
                    > latter change. So I think the answer for now is that there is no
                    > way to get the highlighting the OP wants.
                    >
                    > Gary
                    >

                    --
                    Hiroshi Iwatani

                    *stop cruelty* Annual number of institutionally euthanized cats and dogs
                    including kittens and puppies: US 5 million, JP 500 thousand. How about your
                    country? *for our better karma*
                    ---------------------
                  • Antoine J. Mechelynck
                    ... So it _is_ SpecialKey after all! But what about setting isprint to the empty string? That would make all characters [under 256] other than 32-126
                    Message 9 of 16 , Feb 2 7:47 PM
                    • 0 Attachment
                      Gary Johnson <garyjohn@...> wrote:
                      > On 2004-02-02, "Antoine J. Mechelynck"
                      > <antoine.mechelynck@...> wrote:
                      > > Hiroshi Iwatani <HGA03630@...> wrote:
                      > > > Antoine J. Mechelynck wrote:
                      > > > > set isprint=32-126
                      > > > > highlight SpecialChar guibg=Magenta
                      > > > Doesn't work.
                      > >
                      > > Let's try another variant
                      > >
                      > > :set isprint=
                      > > :highlight SpecialChar ctermbg=Magenta guibg=Magenta
                      > > :highlight NonText ctermbg=Magenta guibg=Magenta
                      > >
                      > > If it still doesn't work, try in addition:
                      > > :set display+=uhex
                      > >
                      > > see
                      > > :help 'highlight'
                      > > " and don't forget to scroll
                      > > :help 'isprint'
                      > > " 32-126 are always "printable" regardless of 'isprint'
                      > > " non-printable characters are highlighten in NonText
                      > >
                      > > Please be more specific: if it "doesn't work", what does it show?
                      > > (Also for other proposals). And did you read the help and try to
                      > > invent other things
                      > > for yourself?
                      > >
                      > > -- What 'encoding' are you using? From :help 'isprint'
                      > > (paraphrased):
                      > > Multibyte characters 256 and above are always regarded as
                      > > "printable",
                      > > except for intrinsically "unprintable" or "zero-width" Unicode
                      > > characters.
                      >
                      > I think I found the problem. I did a ":helpgrep unprintable\c" and
                      > found this at line 1370 of $VIMRUNTIME/doc/todo.txt:
                      >
                      > 7 SpecialKey highlighting overrules syntax highlighting. Can't
                      > give an unprintable char another color. Would be useful for
                      > ^M at end of line.
                      >
                      > and this at line 327 of $VIMRUNTIME/doc/version6.txt:
                      >
                      > Use "SpecialKey" highlighting for unprintable characters instead
                      > of "NonText". The idea is that unprintable text or any text
                      > that's displayed differently from the characters in the file is
                      > using "SpecialKey", and "NonText" is used for text that doesn't
                      > really exist in the file.
                      >
                      > I think some of the help files have not been updated to reflect the
                      > latter change. So I think the answer for now is that there is no
                      > way to get the highlighting the OP wants.
                      >
                      > Gary
                      >
                      > --
                      > Gary Johnson | Agilent Technologies
                      > garyjohn@... | Wireless Division
                      > | Spokane, Washington, USA

                      So it _is_ SpecialKey after all! But what about setting 'isprint' to the
                      empty string? That would make all characters [under 256] other than 32-126
                      "unprintable", wouldn't it? Then they would fall under the SpecialKey
                      highlight wouldn't they? (and be represented as ^C for 0x03, ~D for 0x84, /F
                      for 0xD6 etc., unless 'display' uncludes "uhex" in which case they would be
                      <xx> where xx = hex value) Then why couldn't we set the latter's background
                      to magenta [or its background and foreground to any garish colors we would
                      want, for that matter] with a ":highlight" command?

                      see
                      :help 'isprint'

                      Regards,
                      Tony.
                    • Gary Johnson
                      ... Yes, that does seem to work, at least for me. (I finally created a file containing characters 0x00 through 0xff and played with isprint for a while.)
                      Message 10 of 16 , Feb 2 11:36 PM
                      • 0 Attachment
                        On 2004-02-03, "Antoine J. Mechelynck" <antoine.mechelynck@...> wrote:
                        > Gary Johnson <garyjohn@...> wrote:
                        > > On 2004-02-02, "Antoine J. Mechelynck"
                        > > <antoine.mechelynck@...> wrote:
                        > > > Hiroshi Iwatani <HGA03630@...> wrote:
                        > > > > Antoine J. Mechelynck wrote:
                        > > > > > set isprint=32-126
                        > > > > > highlight SpecialChar guibg=Magenta
                        > > > > Doesn't work.
                        > > >
                        > > > Let's try another variant
                        > > >
                        > > > :set isprint=
                        > > > :highlight SpecialChar ctermbg=Magenta guibg=Magenta
                        > > > :highlight NonText ctermbg=Magenta guibg=Magenta
                        > > >
                        > > > If it still doesn't work, try in addition:
                        > > > :set display+=uhex
                        > > >
                        > > > see
                        > > > :help 'highlight'
                        > > > " and don't forget to scroll
                        > > > :help 'isprint'
                        > > > " 32-126 are always "printable" regardless of 'isprint'
                        > > > " non-printable characters are highlighten in NonText
                        > > >
                        > > > Please be more specific: if it "doesn't work", what does it show?
                        > > > (Also for other proposals). And did you read the help and try to
                        > > > invent other things
                        > > > for yourself?
                        > > >
                        > > > -- What 'encoding' are you using? From :help 'isprint'
                        > > > (paraphrased):
                        > > > Multibyte characters 256 and above are always regarded as
                        > > > "printable",
                        > > > except for intrinsically "unprintable" or "zero-width" Unicode
                        > > > characters.
                        > >
                        > > I think I found the problem. I did a ":helpgrep unprintable\c" and
                        > > found this at line 1370 of $VIMRUNTIME/doc/todo.txt:
                        > >
                        > > 7 SpecialKey highlighting overrules syntax highlighting. Can't
                        > > give an unprintable char another color. Would be useful for
                        > > ^M at end of line.
                        > >
                        > > and this at line 327 of $VIMRUNTIME/doc/version6.txt:
                        > >
                        > > Use "SpecialKey" highlighting for unprintable characters instead
                        > > of "NonText". The idea is that unprintable text or any text
                        > > that's displayed differently from the characters in the file is
                        > > using "SpecialKey", and "NonText" is used for text that doesn't
                        > > really exist in the file.
                        > >
                        > > I think some of the help files have not been updated to reflect the
                        > > latter change. So I think the answer for now is that there is no
                        > > way to get the highlighting the OP wants.
                        > >
                        > > Gary
                        > >
                        > > --
                        > > Gary Johnson | Agilent Technologies
                        > > garyjohn@... | Wireless Division
                        > > | Spokane, Washington, USA
                        >
                        > So it _is_ SpecialKey after all! But what about setting 'isprint' to the
                        > empty string? That would make all characters [under 256] other than 32-126
                        > "unprintable", wouldn't it? Then they would fall under the SpecialKey
                        > highlight wouldn't they? (and be represented as ^C for 0x03, ~D for 0x84, /F
                        > for 0xD6 etc., unless 'display' uncludes "uhex" in which case they would be
                        > <xx> where xx = hex value) Then why couldn't we set the latter's background
                        > to magenta [or its background and foreground to any garish colors we would
                        > want, for that matter] with a ":highlight" command?
                        >
                        > see
                        > :help 'isprint'

                        Yes, that does seem to work, at least for me. (I finally created a
                        file containing characters 0x00 through 0xff and played with
                        'isprint' for a while.)

                        Gary

                        --
                        Gary Johnson | Agilent Technologies
                        garyjohn@... | Wireless Division
                        | Spokane, Washington, USA
                      Your message has been successfully submitted and would be delivered to recipients shortly.