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

Re: Fixing cweb.vim

Expand Messages
  • Ilya
    ... From :help synID Example (echoes the name of the syntax item under the cursor):
    Message 1 of 8 , Aug 31, 2006
      David Brown wrote:
      > I'm trying to get cweb.vim to work better, and am not sure how to go
      > about this.
      >
      > Most of a cweb file is regular TeX (or LaTeX), with some occasional
      > regions
      > that are C code. The way it is implemented now, works with simple
      > constructs.
      >
      > However, tex.vim frequently will enclose large sections of the document
      > within a region and the cweb.vim which the webCRegion is not part of.
      >
      > I think I can fix this by adding an appropriate containedin=... field to
      > the definition of webCRegion.
      >
      > What I'm having difficulty with is figuring out what to put there. Is
      > there a way of finding out what region a given part of the buffer is in?
      From :help synID

      Example (echoes the name of the syntax item under the cursor): >
      :echo synIDattr(synID(line("."), col("."), 1), "name")
      >
      > Thanks,
      > David Brown
      >
      >
      >
    • Benji Fisher
      ... [...] ... IIUC, synIDattr() always returns a syn-match or syn-keyword group. It does not tell you whether you are in a syn-region. HTH --Benji Fisher
      Message 2 of 8 , Sep 1, 2006
        On Fri, Sep 01, 2006 at 09:36:55AM +0300, Ilya wrote:
        > David Brown wrote:
        [...]
        > >However, tex.vim frequently will enclose large sections of the document
        > >within a region and the cweb.vim which the webCRegion is not part of.
        > >
        > >I think I can fix this by adding an appropriate containedin=... field to
        > >the definition of webCRegion.
        > >
        > >What I'm having difficulty with is figuring out what to put there. Is
        > >there a way of finding out what region a given part of the buffer is in?
        > From :help synID
        >
        > Example (echoes the name of the syntax item under the cursor): >
        > :echo synIDattr(synID(line("."), col("."), 1), "name")

        IIUC, synIDattr() always returns a syn-match or syn-keyword group.
        It does not tell you whether you are in a syn-region.

        HTH --Benji Fisher
      • Ilya
        ... It does return region names for me.
        Message 3 of 8 , Sep 1, 2006
          Benji Fisher wrote:
          > On Fri, Sep 01, 2006 at 09:36:55AM +0300, Ilya wrote:
          >
          >> David Brown wrote:
          >>
          > [...]
          >
          >>> However, tex.vim frequently will enclose large sections of the document
          >>> within a region and the cweb.vim which the webCRegion is not part of.
          >>>
          >>> I think I can fix this by adding an appropriate containedin=... field to
          >>> the definition of webCRegion.
          >>>
          >>> What I'm having difficulty with is figuring out what to put there. Is
          >>> there a way of finding out what region a given part of the buffer is in?
          >>>
          >> From :help synID
          >>
          >> Example (echoes the name of the syntax item under the cursor): >
          >> :echo synIDattr(synID(line("."), col("."), 1), "name")
          >>
          >
          > IIUC, synIDattr() always returns a syn-match or syn-keyword group.
          > It does not tell you whether you are in a syn-region.
          >
          > HTH --Benji Fisher
          >
          It does return region names for me.
        • Benji Fisher
          ... So it does, but only if there is no active match nor keyword at the cursor. What I should have said is that synIDattr() (or maybe I should say synID())
          Message 4 of 8 , Sep 2, 2006
            On Sat, Sep 02, 2006 at 01:36:06AM +0300, Ilya wrote:
            > Benji Fisher wrote:
            > >On Fri, Sep 01, 2006 at 09:36:55AM +0300, Ilya wrote:
            > >
            > >>David Brown wrote:
            > >>
            > >[...]
            > >
            > >>>However, tex.vim frequently will enclose large sections of the document
            > >>>within a region and the cweb.vim which the webCRegion is not part of.
            > >>>
            > >>>I think I can fix this by adding an appropriate containedin=... field to
            > >>>the definition of webCRegion.
            > >>>
            > >>>What I'm having difficulty with is figuring out what to put there. Is
            > >>>there a way of finding out what region a given part of the buffer is in?
            > >>>
            > >>From :help synID
            > >>
            > >> Example (echoes the name of the syntax item under the cursor): >
            > >> :echo synIDattr(synID(line("."), col("."), 1), "name")
            > >>
            > >
            > > IIUC, synIDattr() always returns a syn-match or syn-keyword group.
            > >It does not tell you whether you are in a syn-region.
            > >
            > >HTH --Benji Fisher
            > >
            > It does return region names for me.

            So it does, but only if there is no active match nor keyword at the
            cursor. What I should have said is that synIDattr() (or maybe I should
            say synID()) reports only the "innermost" syntax item at the cursor.
            For example,

            :help r
            :normal 6j0
            :echo synIDattr(synID(line("."), col("."), 1), "name")

            reports helpLesdBlank but does not mention that this syn-match (defined
            with "contained") is inside a helpExample syn-region. (Verify this by
            moving the cursor to the first non-blank on the lins.)

            In brief, synID() *sometimes* reports the current syn-region, and I
            do not think this is good enough for David Brown's purposes.

            HTH --Benji Fisher
          Your message has been successfully submitted and would be delivered to recipients shortly.