
On 04/08/2010 01:09 AM, Luke Palmer wrote:
On Wed, Apr 7, 2010 at 1:23 AM, Evan Laforge
wrote: Derive.PitchDeriver Derive/Derive.hs 98;" file:Cmd/Cmd.hs Derive.PitchDeriver Derive/Derive.hs 98;" file:Cmd/Play.hs Derive.PitchDeriver Derive/Derive.hs 98;" file:Cmd/ResponderSync.hs ... [ 20 more ] ...
The vim tag documentation says these are "static" tags, and implies they are meant to apply to symbols only valid within the same file, but this is clearly not the case. Actually, the vim doc implies that only "file:" is defined, and doesn't talk about "scoped tags" so I'm not sure what is going on. Anyway, whenever I go to a tag I have to first step through a message that says "1 of 25" or so. There's one for each reference in the tags file, even though those are references in other files.
Hmm odd, I don't get that behavior. Is that with the sorted annotation? What version of vim?
I get the correct behavior (no additional selection is needed). My vim version is 7.2.385. I did not use sorted annotation but I doubt it has anything to do with it.
What's going on? I even checked the current docs at vim.org and they don't mention a file:xyz form either.
I think I saw it documented *somewhere*, but now that I look again I can't find it anywhere. Maybe it was in a dream. I hope a newer version of vim didn't remove the support or something...
Even if it is not documented it makes sense. When "file:" is present then it limits the tag to the file which is the argument of "file:". If "file:" does not have any argument then the argument defaults to the file in which the tag is defined. That would mean that exported symbols should be generated without "file:", non-exported symbols should be generated with "file:" which does not have argument. In addition to this qualified symbols should be generated with the qualification and with "file:<fn>" where <fn> is the file name where the symbol is imported as qualified. Ghci's :ctags does not support qualified symbols :-/ Just to clarify it for myself. That would mean that the tags file should look like this: B.x b.hs /^x = 5 :: Int$/;" v file:a.hs B.x b.hs /^x = 5 :: Int$/;" v file:c.hs C.x c.hs /^x = B.x+1$/;" v file:a.hs localAct a.hs /^localAct = do$/;" v file: x b.hs /^x = 5 :: Int$/;" v x c.hs /^x = B.x+1$/;" v ... for these files: === file a.hs === module A () where import qualified B as B import qualified C as C localAct = do print B.x print C.x === file b.hs === module B (x) where x = 5 :: Int === file c.hs === module C (x) where import qualified B as B x = B.x+1