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

RE: Using internal-variables in regexp

Expand Messages
  • Dave Silvia
    BTW, any variable already is a regular expression. A regular expression is simply a literal string or a pattern string. let regex= I like apples Can be used
    Message 1 of 19 , Oct 2, 2004
      BTW, any variable already is a regular expression. A regular expression is
      simply a literal string or a pattern string.

      let regex='I like apples'

      Can be used in any command/function that uses regular expressions to match
      for the literal string "I like apples".

      :execute '/'.regex

      will search the current file for the literal string.

      While

      let regex='\w\+'

      can be used in any command/function that uses regular expressions to match
      for one or more occurrences of 'word characters', these are letters, decimal
      digits, and the underscore.

      thx,
      Dave S.

      *** -----Original Message-----
      *** From: V.Chandrasekaran [mailto:chandrasekaran_v@...]
      *** Sent: Saturday, October 02, 2004 7:21 PM
      *** To: vim@...
      *** Subject: Using internal-variables in regexp
      ***
      ***
      *** Hi all,
      *** 1. Can I use internal-variables in regular expression? For eg.,
      *** If I do something like, let thisline=getline(".")
      ***
      *** How can I use the internal-variable "thisline" in a regular
      *** expression ?
      ***
      *** 2. Is there a way to set the current cursor position for a file to
      *** a value given by an internal-variable?
      ***
      *** Thanks a lot.
      *** chandra.
    • Dave Silvia
      *** -----Original Message----- *** From: V.Chandrasekaran [mailto:chandrasekaran_v@hotmail.com] *** Sent: Saturday, October 02, 2004 7:21 PM *** To:
      Message 2 of 19 , Oct 2, 2004
        *** -----Original Message-----
        *** From: V.Chandrasekaran [mailto:chandrasekaran_v@...]
        *** Sent: Saturday, October 02, 2004 7:21 PM
        *** To: vim@...
        *** Subject: Using internal-variables in regexp
        ***
        ***
        *** Hi all,
        ***
        [...]
        *** 2. Is there a way to set the current cursor position for a file to
        *** a value given by an internal-variable?
        ***
        *** Thanks a lot.
        *** chandra.

        :h cursor(
      • V.Chandrasekaran
        Hi Dave, Here is what I am trying to do. This basically came to my mind after reading tip#769 http://www.vim.org/tips/tip.php?tip_id=769 . I wanted to
        Message 3 of 19 , Oct 2, 2004
          Hi Dave,
          Here is what I am trying to do. This basically came to my mind after
          reading
          tip#769 http://www.vim.org/tips/tip.php?tip_id=769 . I wanted to highlight a
          line and keep it highlighted for reference till I voluntarily turn it off or
          choose
          some other line for highlighting. That tip suggests usage of \%# which
          changes
          with every cursor movement and so doesn't serve this purpose (If I had
          understood
          that tip correctly). So I was thinking if we fixed the syntax match pattern
          to the output
          of getline (".") and apply a highlight group to it, it will remain
          highlighted till we changed
          it.
          To that effect, I was planning to try the following,

          :hi MyPattern guifg=red gui=bold
          :let thisline=getline(".")
          :match MyPattern ?????? (not sure what ?????? would have to be)

          Would appreciate your thoughts on this.

          Thanks,
          chandra.


          ----- Original Message -----
          From: "Dave Silvia" <dsilvia@...>
          To: "V.Chandrasekaran" <chandrasekaran_v@...>; <vim@...>
          Sent: Saturday, October 02, 2004 6:04 PM
          Subject: RE: Using internal-variables in regexp


          > The mechanics for using variables in execution are pretty much the same
          for
          > all commands:
          >
          > :execute '<cmd-name> '.<variable-arg>
          >
          > Your basic example would use:
          >
          > :execute '/'.thisline
          >
          > If you're doing searches and substitutes, use the functions, e.g.:
          >
          > let lnum=search(thisline)
          > call substitute(someline,thisline,thatline,'')
          >
          > See
          > :h search(
          > :h substitute(
          >
          > HTH:
          >
          > Also, if you want to experiment with regular expressions, give
          VimRegEx.vim
          > (beta) a try.
          >
          > http://www.vim.org/account/profile.php?user_id=5397 VimRegEx.vim and
          > vsutil.vim
          >
          > thx,
          > Dave S.
          >
          > P.S. I'm beginning to see a picture form out of your postings. Why not
          > just formulate a description of the task you're trying to perform and the
          > stumbling blocks you're having and post that? You may find it less time
          > (and bandwidth) consuming and discover many tools out there that exist to
          > help you accomplish your task. It's also easier to correctly and more
          > precisely answer your questions if we have the big picture.
          >
          > Just a thought,
          > Dave S.
          >
          > *** -----Original Message-----
          > *** From: V.Chandrasekaran [mailto:chandrasekaran_v@...]
          > *** Sent: Saturday, October 02, 2004 7:21 PM
          > *** To: vim@...
          > *** Subject: Using internal-variables in regexp
          > ***
          > ***
          > *** Hi all,
          > *** 1. Can I use internal-variables in regular expression? For eg.,
          > *** If I do something like, let thisline=getline(".")
          > ***
          > *** How can I use the internal-variable "thisline" in a regular
          > *** expression ?
          > ***
          > *** 2. Is there a way to set the current cursor position for a file to
          > *** a value given by an internal-variable?
          > ***
          > *** Thanks a lot.
          > *** chandra.
          >
          >
        • Dave Silvia
          Look at the function s:patHilite()in VimRegEx.vim (http://www.vim.org/account/profile.php?user_id=5397). It does exactly what you re speaking of for the top
          Message 4 of 19 , Oct 2, 2004
            Look at the function s:patHilite()in VimRegEx.vim
            (http://www.vim.org/account/profile.php?user_id=5397). It does exactly what
            you're speaking of for the top window generated by the Vimrex command.

            function! s:patHilite(pat,grp)
            let thePat='\%('.escape(a:pat[0],'\[^*$~"').'\)'
            let idx=1
            let lidx=strlen(a:pat)
            while idx < lidx
            let theGrp='\%('.escape(a:pat[idx],'\[^*$~"').'\)'
            let thePat=thePat.theGrp.'\@='.theGrp
            let idx=idx+1
            endwhile
            execute 'syntax match '.a:grp.' "'.thePat.'"'
            syntax sync fromstart
            endfunction

            It takes _any_ sequence of characters, regardless of what they may be, and
            sets them to a syntax match for a group. Search through the file for
            when/how it's called. That should supply you with tools for what you want
            to do. It makes a rather involved regex, but it's necessary to allow _any_
            sequence to be syntax match'd. Try out the Vimrex command to see how it
            works. It basically highlights the current pattern being executed/analyzed
            (in the top window) until a different pattern is selected and
            executed/analyzed (in the top window).

            HTH:

            thx,
            Dave S.

            *** -----Original Message-----
            *** From: V.Chandrasekaran [mailto:chandrasekaran_v@...]
            *** Sent: Saturday, October 02, 2004 10:12 PM
            *** To: Dave Silvia; vim@...
            *** Subject: Re: Using internal-variables in regexp
            ***
            ***
            *** Hi Dave,
            *** Here is what I am trying to do. This basically came to my mind after
            *** reading
            *** tip#769 http://www.vim.org/tips/tip.php?tip_id=769 . I wanted
            *** to highlight a
            *** line and keep it highlighted for reference till I voluntarily
            *** turn it off or
            *** choose
            *** some other line for highlighting. That tip suggests usage of \%# which
            *** changes
            *** with every cursor movement and so doesn't serve this purpose (If I had
            *** understood
            *** that tip correctly). So I was thinking if we fixed the syntax
            *** match pattern
            *** to the output
            *** of getline (".") and apply a highlight group to it, it will remain
            *** highlighted till we changed
            *** it.
            *** To that effect, I was planning to try the following,
            ***
            *** :hi MyPattern guifg=red gui=bold
            *** :let thisline=getline(".")
            *** :match MyPattern ?????? (not sure what ?????? would have to be)
            ***
            *** Would appreciate your thoughts on this.
            ***
            *** Thanks,
            *** chandra.
            ***
            ***
            *** ----- Original Message -----
            *** From: "Dave Silvia" <dsilvia@...>
            *** To: "V.Chandrasekaran" <chandrasekaran_v@...>; <vim@...>
            *** Sent: Saturday, October 02, 2004 6:04 PM
            *** Subject: RE: Using internal-variables in regexp
            ***
            ***
            *** > The mechanics for using variables in execution are pretty
            *** much the same
            *** for
            *** > all commands:
            *** >
            *** > :execute '<cmd-name> '.<variable-arg>
            *** >
            *** > Your basic example would use:
            *** >
            *** > :execute '/'.thisline
            *** >
            *** > If you're doing searches and substitutes, use the functions, e.g.:
            *** >
            *** > let lnum=search(thisline)
            *** > call substitute(someline,thisline,thatline,'')
            *** >
            *** > See
            *** > :h search(
            *** > :h substitute(
            *** >
            *** > HTH:
            *** >
            *** > Also, if you want to experiment with regular expressions, give
            *** VimRegEx.vim
            *** > (beta) a try.
            *** >
            *** > http://www.vim.org/account/profile.php?user_id=5397 VimRegEx.vim and
            *** > vsutil.vim
            *** >
            *** > thx,
            *** > Dave S.
            *** >
            *** > P.S. I'm beginning to see a picture form out of your
            *** postings. Why not
            *** > just formulate a description of the task you're trying to
            *** perform and the
            *** > stumbling blocks you're having and post that? You may find
            *** it less time
            *** > (and bandwidth) consuming and discover many tools out there
            *** that exist to
            *** > help you accomplish your task. It's also easier to correctly and more
            *** > precisely answer your questions if we have the big picture.
            *** >
            *** > Just a thought,
            *** > Dave S.
            *** >
            *** > *** -----Original Message-----
            *** > *** From: V.Chandrasekaran [mailto:chandrasekaran_v@...]
            *** > *** Sent: Saturday, October 02, 2004 7:21 PM
            *** > *** To: vim@...
            *** > *** Subject: Using internal-variables in regexp
            *** > ***
            *** > ***
            *** > *** Hi all,
            *** > *** 1. Can I use internal-variables in regular expression? For eg.,
            *** > *** If I do something like, let thisline=getline(".")
            *** > ***
            *** > *** How can I use the internal-variable "thisline" in a regular
            *** > *** expression ?
            *** > ***
            *** > *** 2. Is there a way to set the current cursor position for a file to
            *** > *** a value given by an internal-variable?
            *** > ***
            *** > *** Thanks a lot.
            *** > *** chandra.
            *** >
            *** >
          • V.Chandrasekaran
            Hi Dave, I will explore your function and try to put it to my use. However, ... Is the above method completely useless, then? thanks, chandra. ... From: Dave
            Message 5 of 19 , Oct 2, 2004
              Hi Dave,
              I will explore your function and try to put it to my use. However,

              :hi MyPattern guifg=red gui=bold
              :let thisline=getline(".")
              :match MyPattern ?????? (not sure what ?????? would have to be)

              Is the above method completely useless, then?

              thanks,
              chandra.

              ----- Original Message -----
              From: "Dave Silvia" <dsilvia@...>
              To: "V.Chandrasekaran" <chandrasekaran_v@...>; <vim@...>
              Sent: Saturday, October 02, 2004 8:30 PM
              Subject: RE: Using internal-variables in regexp


              > Look at the function s:patHilite()in VimRegEx.vim
              > (http://www.vim.org/account/profile.php?user_id=5397). It does exactly
              what
              > you're speaking of for the top window generated by the Vimrex command.
              >
              > function! s:patHilite(pat,grp)
              > let thePat='\%('.escape(a:pat[0],'\[^*$~"').'\)'
              > let idx=1
              > let lidx=strlen(a:pat)
              > while idx < lidx
              > let theGrp='\%('.escape(a:pat[idx],'\[^*$~"').'\)'
              > let thePat=thePat.theGrp.'\@='.theGrp
              > let idx=idx+1
              > endwhile
              > execute 'syntax match '.a:grp.' "'.thePat.'"'
              > syntax sync fromstart
              > endfunction
              >
              > It takes _any_ sequence of characters, regardless of what they may be, and
              > sets them to a syntax match for a group. Search through the file for
              > when/how it's called. That should supply you with tools for what you want
              > to do. It makes a rather involved regex, but it's necessary to allow
              _any_
              > sequence to be syntax match'd. Try out the Vimrex command to see how it
              > works. It basically highlights the current pattern being
              executed/analyzed
              > (in the top window) until a different pattern is selected and
              > executed/analyzed (in the top window).
              >
              > HTH:
              >
              > thx,
              > Dave S.
              >
              > *** -----Original Message-----
              > *** From: V.Chandrasekaran [mailto:chandrasekaran_v@...]
              > *** Sent: Saturday, October 02, 2004 10:12 PM
              > *** To: Dave Silvia; vim@...
              > *** Subject: Re: Using internal-variables in regexp
              > ***
              > ***
              > *** Hi Dave,
              > *** Here is what I am trying to do. This basically came to my mind
              after
              > *** reading
              > *** tip#769 http://www.vim.org/tips/tip.php?tip_id=769 . I wanted
              > *** to highlight a
              > *** line and keep it highlighted for reference till I voluntarily
              > *** turn it off or
              > *** choose
              > *** some other line for highlighting. That tip suggests usage of \%# which
              > *** changes
              > *** with every cursor movement and so doesn't serve this purpose (If I had
              > *** understood
              > *** that tip correctly). So I was thinking if we fixed the syntax
              > *** match pattern
              > *** to the output
              > *** of getline (".") and apply a highlight group to it, it will remain
              > *** highlighted till we changed
              > *** it.
              > *** To that effect, I was planning to try the following,
              > ***
              > *** :hi MyPattern guifg=red gui=bold
              > *** :let thisline=getline(".")
              > *** :match MyPattern ?????? (not sure what ?????? would have to be)
              > ***
              > *** Would appreciate your thoughts on this.
              > ***
              > *** Thanks,
              > *** chandra.
              > ***
              > ***
              > *** ----- Original Message -----
              > *** From: "Dave Silvia" <dsilvia@...>
              > *** To: "V.Chandrasekaran" <chandrasekaran_v@...>; <vim@...>
              > *** Sent: Saturday, October 02, 2004 6:04 PM
              > *** Subject: RE: Using internal-variables in regexp
              > ***
              > ***
              > *** > The mechanics for using variables in execution are pretty
              > *** much the same
              > *** for
              > *** > all commands:
              > *** >
              > *** > :execute '<cmd-name> '.<variable-arg>
              > *** >
              > *** > Your basic example would use:
              > *** >
              > *** > :execute '/'.thisline
              > *** >
              > *** > If you're doing searches and substitutes, use the functions, e.g.:
              > *** >
              > *** > let lnum=search(thisline)
              > *** > call substitute(someline,thisline,thatline,'')
              > *** >
              > *** > See
              > *** > :h search(
              > *** > :h substitute(
              > *** >
              > *** > HTH:
              > *** >
              > *** > Also, if you want to experiment with regular expressions, give
              > *** VimRegEx.vim
              > *** > (beta) a try.
              > *** >
              > *** > http://www.vim.org/account/profile.php?user_id=5397 VimRegEx.vim and
              > *** > vsutil.vim
              > *** >
              > *** > thx,
              > *** > Dave S.
              > *** >
              > *** > P.S. I'm beginning to see a picture form out of your
              > *** postings. Why not
              > *** > just formulate a description of the task you're trying to
              > *** perform and the
              > *** > stumbling blocks you're having and post that? You may find
              > *** it less time
              > *** > (and bandwidth) consuming and discover many tools out there
              > *** that exist to
              > *** > help you accomplish your task. It's also easier to correctly and
              more
              > *** > precisely answer your questions if we have the big picture.
              > *** >
              > *** > Just a thought,
              > *** > Dave S.
              > *** >
              > *** > *** -----Original Message-----
              > *** > *** From: V.Chandrasekaran [mailto:chandrasekaran_v@...]
              > *** > *** Sent: Saturday, October 02, 2004 7:21 PM
              > *** > *** To: vim@...
              > *** > *** Subject: Using internal-variables in regexp
              > *** > ***
              > *** > ***
              > *** > *** Hi all,
              > *** > *** 1. Can I use internal-variables in regular expression? For eg.,
              > *** > *** If I do something like, let thisline=getline(".")
              > *** > ***
              > *** > *** How can I use the internal-variable "thisline" in a regular
              > *** > *** expression ?
              > *** > ***
              > *** > *** 2. Is there a way to set the current cursor position for a file
              to
              > *** > *** a value given by an internal-variable?
              > *** > ***
              > *** > *** Thanks a lot.
              > *** > *** chandra.
              > *** >
              > *** >
              >
              >
            • Dave Silvia
              No, it s not completely useless. It s exactly what you need to do. If you use s:patHilite, rename it to say PatHilite, what you d do is call call
              Message 6 of 19 , Oct 2, 2004
                No, it's not completely useless. It's exactly what you need to do. If you
                use s:patHilite, rename it to say PatHilite, what you'd do is call

                call PatHilite(thisline,'MyPattern')

                And the line would be highlighted to whatever you set in

                highlight MyPattern

                Your exact sequence would be

                highlight MyPattern guifg=red gui=bold
                call PatHilite(getline('.'),'MyPattern')

                Boom! Your line is all highlighted in bold red!;)

                This is exactly what happens in VimRegEx.vim. Take a look, it'll only take
                a minute.

                HTH:

                thx,
                Dave S.

                *** -----Original Message-----
                *** From: V.Chandrasekaran [mailto:chandrasekaran_v@...]
                *** Sent: Saturday, October 02, 2004 11:08 PM
                *** To: Dave Silvia; vim@...
                *** Subject: Re: Using internal-variables in regexp
                ***
                ***
                *** Hi Dave,
                *** I will explore your function and try to put it to my use. However,
                ***
                *** :hi MyPattern guifg=red gui=bold
                *** :let thisline=getline(".")
                *** :match MyPattern ?????? (not sure what ?????? would have to be)
                ***
                *** Is the above method completely useless, then?
                ***
                *** thanks,
                *** chandra.
                ***
                *** ----- Original Message -----
                *** From: "Dave Silvia" <dsilvia@...>
                *** To: "V.Chandrasekaran" <chandrasekaran_v@...>; <vim@...>
                *** Sent: Saturday, October 02, 2004 8:30 PM
                *** Subject: RE: Using internal-variables in regexp
                ***
                ***
                *** > Look at the function s:patHilite()in VimRegEx.vim
                *** > (http://www.vim.org/account/profile.php?user_id=5397). It
                *** does exactly
                *** what
                *** > you're speaking of for the top window generated by the Vimrex command.
                *** >
                *** > function! s:patHilite(pat,grp)
                *** > let thePat='\%('.escape(a:pat[0],'\[^*$~"').'\)'
                *** > let idx=1
                *** > let lidx=strlen(a:pat)
                *** > while idx < lidx
                *** > let theGrp='\%('.escape(a:pat[idx],'\[^*$~"').'\)'
                *** > let thePat=thePat.theGrp.'\@='.theGrp
                *** > let idx=idx+1
                *** > endwhile
                *** > execute 'syntax match '.a:grp.' "'.thePat.'"'
                *** > syntax sync fromstart
                *** > endfunction
                *** >
                *** > It takes _any_ sequence of characters, regardless of what
                *** they may be, and
                *** > sets them to a syntax match for a group. Search through the file for
                *** > when/how it's called. That should supply you with tools for
                *** what you want
                *** > to do. It makes a rather involved regex, but it's necessary to allow
                *** _any_
                *** > sequence to be syntax match'd. Try out the Vimrex command to
                *** see how it
                *** > works. It basically highlights the current pattern being
                *** executed/analyzed
                *** > (in the top window) until a different pattern is selected and
                *** > executed/analyzed (in the top window).
                *** >
                *** > HTH:
                *** >
                *** > thx,
                *** > Dave S.
                *** >
                *** > *** -----Original Message-----
                *** > *** From: V.Chandrasekaran [mailto:chandrasekaran_v@...]
                *** > *** Sent: Saturday, October 02, 2004 10:12 PM
                *** > *** To: Dave Silvia; vim@...
                *** > *** Subject: Re: Using internal-variables in regexp
                *** > ***
                *** > ***
                *** > *** Hi Dave,
                *** > *** Here is what I am trying to do. This basically came to my mind
                *** after
                *** > *** reading
                *** > *** tip#769 http://www.vim.org/tips/tip.php?tip_id=769 . I wanted
                *** > *** to highlight a
                *** > *** line and keep it highlighted for reference till I voluntarily
                *** > *** turn it off or
                *** > *** choose
                *** > *** some other line for highlighting. That tip suggests usage
                *** of \%# which
                *** > *** changes
                *** > *** with every cursor movement and so doesn't serve this
                *** purpose (If I had
                *** > *** understood
                *** > *** that tip correctly). So I was thinking if we fixed the syntax
                *** > *** match pattern
                *** > *** to the output
                *** > *** of getline (".") and apply a highlight group to it, it will remain
                *** > *** highlighted till we changed
                *** > *** it.
                *** > *** To that effect, I was planning to try the following,
                *** > ***
                *** > *** :hi MyPattern guifg=red gui=bold
                *** > *** :let thisline=getline(".")
                *** > *** :match MyPattern ?????? (not sure what ?????? would have to be)
                *** > ***
                *** > *** Would appreciate your thoughts on this.
                *** > ***
                *** > *** Thanks,
                *** > *** chandra.
                *** > ***
                *** > ***
                *** > *** ----- Original Message -----
                *** > *** From: "Dave Silvia" <dsilvia@...>
                *** > *** To: "V.Chandrasekaran" <chandrasekaran_v@...>;
                *** <vim@...>
                *** > *** Sent: Saturday, October 02, 2004 6:04 PM
                *** > *** Subject: RE: Using internal-variables in regexp
                *** > ***
                *** > ***
                *** > *** > The mechanics for using variables in execution are pretty
                *** > *** much the same
                *** > *** for
                *** > *** > all commands:
                *** > *** >
                *** > *** > :execute '<cmd-name> '.<variable-arg>
                *** > *** >
                *** > *** > Your basic example would use:
                *** > *** >
                *** > *** > :execute '/'.thisline
                *** > *** >
                *** > *** > If you're doing searches and substitutes, use the
                *** functions, e.g.:
                *** > *** >
                *** > *** > let lnum=search(thisline)
                *** > *** > call substitute(someline,thisline,thatline,'')
                *** > *** >
                *** > *** > See
                *** > *** > :h search(
                *** > *** > :h substitute(
                *** > *** >
                *** > *** > HTH:
                *** > *** >
                *** > *** > Also, if you want to experiment with regular expressions, give
                *** > *** VimRegEx.vim
                *** > *** > (beta) a try.
                *** > *** >
                *** > *** > http://www.vim.org/account/profile.php?user_id=5397
                *** VimRegEx.vim and
                *** > *** > vsutil.vim
                *** > *** >
                *** > *** > thx,
                *** > *** > Dave S.
                *** > *** >
                *** > *** > P.S. I'm beginning to see a picture form out of your
                *** > *** postings. Why not
                *** > *** > just formulate a description of the task you're trying to
                *** > *** perform and the
                *** > *** > stumbling blocks you're having and post that? You may find
                *** > *** it less time
                *** > *** > (and bandwidth) consuming and discover many tools out there
                *** > *** that exist to
                *** > *** > help you accomplish your task. It's also easier to
                *** correctly and
                *** more
                *** > *** > precisely answer your questions if we have the big picture.
                *** > *** >
                *** > *** > Just a thought,
                *** > *** > Dave S.
                *** > *** >
                *** > *** > *** -----Original Message-----
                *** > *** > *** From: V.Chandrasekaran [mailto:chandrasekaran_v@...]
                *** > *** > *** Sent: Saturday, October 02, 2004 7:21 PM
                *** > *** > *** To: vim@...
                *** > *** > *** Subject: Using internal-variables in regexp
                *** > *** > ***
                *** > *** > ***
                *** > *** > *** Hi all,
                *** > *** > *** 1. Can I use internal-variables in regular
                *** expression? For eg.,
                *** > *** > *** If I do something like, let thisline=getline(".")
                *** > *** > ***
                *** > *** > *** How can I use the internal-variable "thisline"
                *** in a regular
                *** > *** > *** expression ?
                *** > *** > ***
                *** > *** > *** 2. Is there a way to set the current cursor
                *** position for a file
                *** to
                *** > *** > *** a value given by an internal-variable?
                *** > *** > ***
                *** > *** > *** Thanks a lot.
                *** > *** > *** chandra.
                *** > *** >
                *** > *** >
                *** >
                *** >
              • Mikolaj Machowski
                ... Look one item lower in docs. Get number of line and highlight line with % l It should be faster and NULL problems with escaping special characters.
                Message 7 of 19 , Oct 3, 2004
                  Dnia niedziela, 3 października 2004 05:11, V.Chandrasekaran napisał:
                  > Hi Dave,
                  > Here is what I am trying to do. This basically came to my mind after
                  > reading
                  > tip#769 http://www.vim.org/tips/tip.php?tip_id=769 . I wanted to
                  > highlight a line and keep it highlighted for reference till I
                  > voluntarily turn it off or choose
                  > some other line for highlighting. That tip suggests usage of \%# which
                  > changes
                  > with every cursor movement and so doesn't serve this purpose (If I had
                  > understood
                  > that tip correctly). So I was thinking if we fixed the syntax match
                  > pattern to the output

                  Look one item lower in docs.

                  Get number of line and highlight line with \%<number>l
                  It should be faster and NULL problems with escaping special characters.

                  :let thisline=line(".")
                  :exe 'match MyLine /\%'.thisline.'l.*/'

                  m.

                  --
                  LaTeX + Vim = http://vim-latex.sourceforge.net/
                  Vim-list(s) Users Map: (last change 17 Sep)
                  http://skawina.eu.org/mikolaj/vimlist
                  CLEWN - http://clewn.sf.net
                • Dave Silvia
                  The problem is still the same: highlighting changes with the search and you re constrained to Search highlight coloring. The OP is looking to highlight the
                  Message 8 of 19 , Oct 3, 2004
                    The problem is still the same: highlighting changes with the search and
                    you're constrained to 'Search' highlight coloring. The OP is looking to
                    highlight the line independent of any other searching that is taking place
                    and in a specific color. With PatHilite() you can pretty much isolate the
                    exact line an keep it highlighted the way you want until you specifically
                    decide to turn it off. Of course, if there are 2 or more lines that are
                    exactly the same, all are highlighted, but c'est la vie!;)

                    thx,
                    Dave S.

                    *** -----Original Message-----
                    *** From: Mikolaj Machowski [mailto:mikmach@...]
                    *** Sent: Sunday, October 03, 2004 5:04 AM
                    *** To: vim@...
                    *** Subject: Re: Using internal-variables in regexp
                    ***
                    ***
                    *** Dnia niedziela, 3 października 2004 05:11, V.Chandrasekaran napisał:
                    *** > Hi Dave,
                    *** > Here is what I am trying to do. This basically came to my
                    *** mind after
                    *** > reading
                    *** > tip#769 http://www.vim.org/tips/tip.php?tip_id=769 . I wanted to
                    *** > highlight a line and keep it highlighted for reference till I
                    *** > voluntarily turn it off or choose
                    *** > some other line for highlighting. That tip suggests usage of \%# which
                    *** > changes
                    *** > with every cursor movement and so doesn't serve this purpose (If I had
                    *** > understood
                    *** > that tip correctly). So I was thinking if we fixed the syntax match
                    *** > pattern to the output
                    ***
                    *** Look one item lower in docs.
                    ***
                    *** Get number of line and highlight line with \%<number>l
                    *** It should be faster and NULL problems with escaping special characters.
                    ***
                    *** :let thisline=line(".")
                    *** :exe 'match MyLine /\%'.thisline.'l.*/'
                    ***
                    *** m.
                    ***
                    *** --
                    *** LaTeX + Vim = http://vim-latex.sourceforge.net/
                    *** Vim-list(s) Users Map: (last change 17 Sep)
                    *** http://skawina.eu.org/mikolaj/vimlist
                    *** CLEWN - http://clewn.sf.net
                    ***
                    ***
                    ***
                  • Dave Silvia
                    My apologies! I see what you mean. Yes, this works as wanted. Best description I found was ... However, you still have to be mindful of special characters
                    Message 9 of 19 , Oct 3, 2004
                      My apologies! I see what you mean. Yes, this works as wanted. Best
                      description I found was

                      :h CursorHold-example

                      However, you still have to be mindful of special characters

                      :h :match

                      I appreciate the info!;)

                      thx,
                      Dave S.

                      *** -----Original Message-----
                      *** From: Mikolaj Machowski [mailto:mikmach@...]
                      *** Sent: Sunday, October 03, 2004 5:04 AM
                      *** To: vim@...
                      *** Subject: Re: Using internal-variables in regexp
                      ***
                      ***
                      *** Dnia niedziela, 3 października 2004 05:11, V.Chandrasekaran napisał:
                      *** > Hi Dave,
                      *** > Here is what I am trying to do. This basically came to my
                      *** mind after
                      *** > reading
                      *** > tip#769 http://www.vim.org/tips/tip.php?tip_id=769 . I wanted to
                      *** > highlight a line and keep it highlighted for reference till I
                      *** > voluntarily turn it off or choose
                      *** > some other line for highlighting. That tip suggests usage of \%# which
                      *** > changes
                      *** > with every cursor movement and so doesn't serve this purpose (If I had
                      *** > understood
                      *** > that tip correctly). So I was thinking if we fixed the syntax match
                      *** > pattern to the output
                      ***
                      *** Look one item lower in docs.
                      ***
                      *** Get number of line and highlight line with \%<number>l
                      *** It should be faster and NULL problems with escaping special characters.
                      ***
                      *** :let thisline=line(".")
                      *** :exe 'match MyLine /\%'.thisline.'l.*/'
                      ***
                      *** m.
                      ***
                      *** --
                      *** LaTeX + Vim = http://vim-latex.sourceforge.net/
                      *** Vim-list(s) Users Map: (last change 17 Sep)
                      *** http://skawina.eu.org/mikolaj/vimlist
                      *** CLEWN - http://clewn.sf.net
                      ***
                      ***
                      ***
                    • V.Chandrasekaran
                      This works great. Thanks. However, if the line number changes due to edits above this highlighted line, the highlighted line changes too. But this is ok.
                      Message 10 of 19 , Oct 3, 2004
                        This works great. Thanks. However, if the line number changes due to edits
                        above this highlighted line, the highlighted line changes too. But this is
                        ok.

                        thanks,
                        -chandra.

                        #>>>>>>>>>>>>
                        #Look one item lower in docs.
                        #
                        #Get number of line and highlight line with \%<number>l
                        #It should be faster and NULL problems with escaping special #characters.
                        #
                        #:let thisline=line(".")
                        #:exe 'match MyLine /\%'.thisline.'l.*/'
                        #
                        #m.
                        #>>>>>>>>>>>
                      • Dave Silvia
                        With PatHilite() the highlighting stays with the text, not the line number. FYI, Dave S. *** -----Original Message----- *** From: V.Chandrasekaran
                        Message 11 of 19 , Oct 3, 2004
                          With PatHilite() the highlighting stays with the text, not the line number.

                          FYI,
                          Dave S.

                          *** -----Original Message-----
                          *** From: V.Chandrasekaran [mailto:chandrasekaran_v@...]
                          *** Sent: Sunday, October 03, 2004 1:25 PM
                          *** To: vim@...
                          *** Subject: Re: Using internal-variables in regexp
                          ***
                          ***
                          *** This works great. Thanks. However, if the line number changes
                          *** due to edits
                          *** above this highlighted line, the highlighted line changes too.
                          *** But this is
                          *** ok.
                          ***
                          *** thanks,
                          *** -chandra.
                          ***
                          *** #>>>>>>>>>>>>
                          *** #Look one item lower in docs.
                          *** #
                          *** #Get number of line and highlight line with \%<number>l
                          *** #It should be faster and NULL problems with escaping special
                          *** #characters.
                          *** #
                          *** #:let thisline=line(".")
                          *** #:exe 'match MyLine /\%'.thisline.'l.*/'
                          *** #
                          *** #m.
                          *** #>>>>>>>>>>>
                        • V.Chandrasekaran
                          Yes. I realised that. I should give that a try as well. thanks for the help. chandra. ... From: Dave Silvia To: V.Chandrasekaran
                          Message 12 of 19 , Oct 3, 2004
                            Yes. I realised that. I should give that a try as well.

                            thanks for the help.
                            chandra.

                            ----- Original Message -----
                            From: "Dave Silvia" <dsilvia@...>
                            To: "V.Chandrasekaran" <chandrasekaran_v@...>; <vim@...>
                            Sent: Sunday, October 03, 2004 4:08 PM
                            Subject: RE: Using internal-variables in regexp


                            > With PatHilite() the highlighting stays with the text, not the line
                            number.
                            >
                            > FYI,
                            > Dave S.
                            >
                            > *** -----Original Message-----
                            > *** From: V.Chandrasekaran [mailto:chandrasekaran_v@...]
                            > *** Sent: Sunday, October 03, 2004 1:25 PM
                            > *** To: vim@...
                            > *** Subject: Re: Using internal-variables in regexp
                            > ***
                            > ***
                            > *** This works great. Thanks. However, if the line number changes
                            > *** due to edits
                            > *** above this highlighted line, the highlighted line changes too.
                            > *** But this is
                            > *** ok.
                            > ***
                            > *** thanks,
                            > *** -chandra.
                            > ***
                            > *** #>>>>>>>>>>>>
                            > *** #Look one item lower in docs.
                            > *** #
                            > *** #Get number of line and highlight line with \%<number>l
                            > *** #It should be faster and NULL problems with escaping special
                            > *** #characters.
                            > *** #
                            > *** #:let thisline=line(".")
                            > *** #:exe 'match MyLine /\%'.thisline.'l.*/'
                            > *** #
                            > *** #m.
                            > *** #>>>>>>>>>>>
                            >
                          • Antoine J. Mechelynck
                            ... You might want to use a mark then (see :help mark-motions ). ( The implementation details are left as an exercise to the reader. ) Regards, Tony.
                            Message 13 of 19 , Oct 3, 2004
                              V.Chandrasekaran <chandrasekaran_v@...> wrote:
                              > This works great. Thanks. However, if the line number changes due to
                              > edits above this highlighted line, the highlighted line changes too.
                              > But this is ok.
                              >
                              > thanks,
                              > -chandra.

                              You might want to use a mark then (see ":help mark-motions"). ("The
                              implementation details are left as an exercise to the reader.")

                              Regards,
                              Tony.
                            • Dave Silvia
                              That s quite an exercise for the reader. I looked in motion.txt, windows.txt, and pattern.txt for clues as well as VimgrepHelp on mark , but cannot seem to
                              Message 14 of 19 , Oct 4, 2004
                                That's quite an exercise for the reader. I looked in motion.txt,
                                windows.txt, and pattern.txt for clues as well as VimgrepHelp on 'mark', but
                                cannot seem to find anything that mentions relating a mark to a
                                match/highlight/syntax. If you're thinking of:

                                :execute 'match grp "\%'.line("'Z").'l.*"'

                                the line is translated only at the time of execution, so the highlighting
                                stays with the original line number. So, I'm stumped!(

                                Can I get a hint?)

                                thx,
                                Dave S.

                                *** -----Original Message-----
                                *** From: Antoine J. Mechelynck [mailto:antoine.mechelynck@...]
                                *** Sent: Monday, October 04, 2004 1:20 AM
                                *** To: V.Chandrasekaran; vim@...
                                *** Subject: Re: Using internal-variables in regexp
                                ***
                                ***
                                *** V.Chandrasekaran <chandrasekaran_v@...> wrote:
                                *** > This works great. Thanks. However, if the line number changes due to
                                *** > edits above this highlighted line, the highlighted line changes too.
                                *** > But this is ok.
                                *** >
                                *** > thanks,
                                *** > -chandra.
                                ***
                                *** You might want to use a mark then (see ":help mark-motions"). ("The
                                *** implementation details are left as an exercise to the reader.")
                                ***
                                *** Regards,
                                *** Tony.
                                ***
                                ***
                              • Antoine J. Mechelynck
                                ... I was just to lazy to figure it out. Maybe it doesn t work after all. But if you say your function keeps the highlight with the text, no need trying to
                                Message 15 of 19 , Oct 4, 2004
                                  Dave Silvia <dsilvia@...> wrote:
                                  > That's quite an exercise for the reader. I looked in motion.txt,
                                  > windows.txt, and pattern.txt for clues as well as VimgrepHelp on
                                  > 'mark', but cannot seem to find anything that mentions relating a
                                  > mark to a match/highlight/syntax. If you're thinking of:
                                  >
                                  > > execute 'match grp "\%'.line("'Z").'l.*"'
                                  >
                                  > the line is translated only at the time of execution, so the
                                  > highlighting stays with the original line number. So, I'm stumped!(
                                  >
                                  > Can I get a hint?)
                                  >
                                  > thx,
                                  > Dave S.

                                  I was just to lazy to figure it out. Maybe it doesn't work after all. But if
                                  you say your function keeps the highlight with the text, no need trying to
                                  figure out some fancier way of doing the same.

                                  Best regards,
                                  Tony.
                                • Antony Scriven
                                  ... Perhaps the shomarks.vim script will help here. ... I presume that if the text changes then you ll lose the highlight. Or if the line occurs elsewhere then
                                  Message 16 of 19 , Oct 4, 2004
                                    Antoine J. Mechelynck wrote:

                                    > Dave Silvia <dsilvia@...> wrote:
                                    > > That's quite an exercise for the reader. I looked in
                                    > > motion.txt, windows.txt, and pattern.txt for clues as
                                    > > well as VimgrepHelp on 'mark', but cannot seem to find
                                    > > anything that mentions relating a mark to a
                                    > > match/highlight/syntax. If you're thinking of:
                                    > >
                                    > > > execute 'match grp "\%'.line("'Z").'l.*"'
                                    > >
                                    > > the line is translated only at the time of execution,
                                    > > so the highlighting stays with the original line
                                    > > number. So, I'm stumped!(
                                    > >
                                    > > Can I get a hint?) [...]
                                    >
                                    > I was just to lazy to figure it out. Maybe it doesn't
                                    > work after all.

                                    Perhaps the shomarks.vim script will help here.

                                    > But if you say your function keeps the highlight with the
                                    > text, no need trying to figure out some fancier way of
                                    > doing the same.

                                    I presume that if the text changes then you'll lose the
                                    highlight. Or if the line occurs elsewhere then you'll have
                                    duplicatde highlighting. But I think this is preferable to
                                    highlighting the line by its number.

                                    Antony
                                  • Dave Silvia
                                    You presume correctly!;) thx, Dave S. *** -----Original Message----- *** From: Antony Scriven [mailto:adscriven@fastmail.fm] *** Sent: Monday, October 04, 2004
                                    Message 17 of 19 , Oct 4, 2004
                                      You presume correctly!;)

                                      thx,
                                      Dave S.

                                      *** -----Original Message-----
                                      *** From: Antony Scriven [mailto:adscriven@...]
                                      *** Sent: Monday, October 04, 2004 4:35 AM
                                      *** To: vim users' list
                                      *** Subject: Re: Using internal-variables in regexp
                                      ***
                                      ***
                                      *** Antoine J. Mechelynck wrote:
                                      ***
                                      *** > Dave Silvia <dsilvia@...> wrote:
                                      *** > > That's quite an exercise for the reader. I looked in
                                      *** > > motion.txt, windows.txt, and pattern.txt for clues as
                                      *** > > well as VimgrepHelp on 'mark', but cannot seem to find
                                      *** > > anything that mentions relating a mark to a
                                      *** > > match/highlight/syntax. If you're thinking of:
                                      *** > >
                                      *** > > > execute 'match grp "\%'.line("'Z").'l.*"'
                                      *** > >
                                      *** > > the line is translated only at the time of execution,
                                      *** > > so the highlighting stays with the original line
                                      *** > > number. So, I'm stumped!(
                                      *** > >
                                      *** > > Can I get a hint?) [...]
                                      *** >
                                      *** > I was just to lazy to figure it out. Maybe it doesn't
                                      *** > work after all.
                                      ***
                                      *** Perhaps the shomarks.vim script will help here.
                                      ***
                                      *** > But if you say your function keeps the highlight with the
                                      *** > text, no need trying to figure out some fancier way of
                                      *** > doing the same.
                                      ***
                                      *** I presume that if the text changes then you'll lose the
                                      *** highlight. Or if the line occurs elsewhere then you'll have
                                      *** duplicatde highlighting. But I think this is preferable to
                                      *** highlighting the line by its number.
                                      ***
                                      *** Antony
                                    Your message has been successfully submitted and would be delivered to recipients shortly.