hasktags

Haskell 用のタグファイルを作ってくれる hasktags なるものが GHC についてるので試してみる。-R オプションが無いのがちょっと不便。vim でジャンプしようとすると、

E432: Tags file not sorted: tags

なんじゃこりゃー
うう…投げやりな感じでソートするようにしてみた。

--- HaskTags.hs.orig    2006-12-20 22:21:59.000000000 +0900
+++ HaskTags.hs 2006-12-20 22:58:25.000000000 +0900
@@ -92,12 +92,16 @@
 data Token = Token String Pos
        deriving Show
 
+sortFoundThings = sortBy comp
+  where
+    comp x y = compare (getName x) (getName y) 
+    getName (FoundThing name _) = name
 
 -- stuff for dealing with ctags output format
 
 writectagsfile :: Handle -> [FileData] -> IO ()
 writectagsfile ctagsfile filedata = do
-       let things = concat $ map getfoundthings filedata
+       let things = sortFoundThings $ concat $ map getfoundthings filedata
        mapM_ (\x -> hPutStrLn ctagsfile $ dumpthing x) things
 
 getfoundthings :: FileData -> [FoundThing]

っていうか sort コマンド使えば終わりだよね。そう思ったんだが、出力するファイル名が "tags" 決め打ちだったので結局ソースにあたることに。で、どうせならこっちでソートするようにしてみた。後で -R オプションや -f オプションも付けてみたい。