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

32818Bug in tag stack?

Expand Messages
  • Corinna Vinschen
    May 27, 2003
    • 0 Attachment
      Hi,

      I don't know if that counts as a bug, therefore I'm a bit wary. I can
      reproduce this situation with vim 6.1.300 as well as with 6.2f.

      Normally, when jumping through tags multiple times, it's possible to return
      to the previous file positions by <C-T>. This can be used as often as you
      want (well, at least very often), up to the point where you the first time
      pressed e.g. <C-]>.

      But I found a situation in which this doesn't work anymore.

      I'm using g<C-]> pretty often and I have a situation like this:

      I'm in a file called fhandler_socket.cc. I'm on a function call to a
      method fixup_before_fork_exec() which exists in two classes, defined in
      two different files, one of them fhandler_socket.cc itself. Now I press
      g<C-]> which shows me the list of possible matches:

      # pri kind tag file
      1 F C f fixup_before_fork_exec fhandler_socket.cc
      class:fhandler_socket
      fhandler_socket::fixup_before_fork_exec (DWORD win_proc_id)
      2 F f fixup_before_fork_exec fhandler.h
      class:fhandler_base
      virtual void fixup_before_fork_exec (DWORD) {}
      Enter nr of choice (<CR> to abort):

      I press 1<CR> which jumps to the tag'ed method in the same file:

      void
      fhandler_socket::fixup_before_fork_exec (DWORD win_proc_id)
      {
      [...]

      Now I go to the name of the method, right after the double colon
      and press g<C-]> again:

      # pri kind tag file
      1 F C f fixup_before_fork_exec fhandler_socket.cc
      class:fhandler_socket
      fhandler_socket::fixup_before_fork_exec (DWORD win_proc_id)
      2 F f fixup_before_fork_exec fhandler.h
      class:fhandler_base
      virtual void fixup_before_fork_exec (DWORD) {}
      Enter nr of choice (<CR> to abort):

      But this time I just press <CR> to abort. And now it happens. If I
      now press <C-T> to return to the original position I was coming from,
      I'm getting the following message in the last line:

      E92: Buffer 0 not found

      and it just stays where it is. For some reason the last known position
      in the tag stack is not available anymore. Note that the tag stack
      still looks ok after that:

      :tags
      # TO tag FROM line in file/text
      1 1 fixup_before_fork_exec 398 fhs->fixup_before_fork_exec (GetCurrentProcessId
      >

      However, let's say I return to the last known position by scrolling
      to it. Then I use g<C-]> again on the same method call, again I choose
      to go to the method in the same file. When I know look into the tag
      stack, something weird happened:

      :tags
      # TO tag FROM line in file/text
      1 1 fixup_before_fork_exec 398 fhs->fixup_before_fork_exec (GetCurrentProcessId
      3 1 fixup_before_fork_exec 398 fhs->fixup_before_fork_exec (GetCurrentProcessId

      You see the tag #? The tag # 2 is suddenly missing. This happens
      as often as I repeat the above. The even numbered tags just don't
      exist then.

      Am I expecting something which doesn't work for a good reason or is
      that perhaps actually a bug?

      Thanks in advance,
      Corinna

      --
      Corinna Vinschen
      Cygwin Developer
      Red Hat, Inc.
      mailto:vinschen@...
    • Show all 8 messages in this topic