diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,7 +1,11 @@
+1.2.1
+
+* Minor updates to cabal file, comments, etc.
+
 1.2
 
 * Speedup thanks to <https://github.com/elaforge/fast-tags/pull/22>.
-Also many tags previously incorrectly marked as 'p' Pattern are not
+Also many tags previously incorrectly marked as 'p' Pattern are now
 correctly 'f' Function.
 
 1.1.2:
diff --git a/dist/build/Lexer.hs b/dist/build/Lexer.hs
--- a/dist/build/Lexer.hs
+++ b/dist/build/Lexer.hs
@@ -4,8 +4,7 @@
 -- alex doesn't quite produce warning-free code.
 {-# OPTIONS_GHC -fno-warn-missing-signatures -fno-warn-tabs
     -fno-warn-unused-binds -fno-warn-unused-matches
-    -fno-warn-unused-imports
-#-}
+    -fno-warn-unused-imports #-}
 {-# LANGUAGE FlexibleContexts    #-}
 {-# LANGUAGE MultiWayIf          #-}
 {-# LANGUAGE NamedFieldPuns      #-}
@@ -56,7 +55,7 @@
 alex_deflt = AlexA# "\xff\xff\x48\x00\x57\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x15\x00\x15\x00\xff\xff\x1e\x00\x1e\x00\x24\x00\x24\x00\x25\x00\x25\x00\x27\x00\x27\x00\x29\x00\x29\x00\xff\xff\x31\x00\x31\x00\x05\x00\xff\xff\xff\xff\x05\x00\x05\x00\x36\x00\x36\x00\x3a\x00\x3a\x00\x3d\x00\x3d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\x57\x00\x57\x00\xff\xff\x4e\x00\x4e\x00\x4e\x00\x4e\x00\xff\xff\x48\x00\x48\x00\x48\x00\x42\x00\x42\x00\x42\x00\xff\xff\xff\xff\xff\xff\xff\xff\x42\x00\x42\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
 
 alex_accept = listArray (0::Int,220) [AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccSkip,AlexAccSkip,AlexAcc (alex_action_1),AlexAccSkip,AlexAccSkipPred  (alexRightContext 62)(AlexAcc (alex_action_66)),AlexAcc (alex_action_4),AlexAcc (alex_action_5),AlexAccSkip,AlexAccSkip,AlexAccSkip,AlexAcc (alex_action_7),AlexAcc (alex_action_8),AlexAcc (alex_action_9),AlexAccSkip,AlexAccSkip,AlexAccSkip,AlexAccSkip,AlexAccSkip,AlexAcc (alex_action_17),AlexAcc (alex_action_17),AlexAcc (alex_action_18),AlexAcc (alex_action_19),AlexAcc (alex_action_20),AlexAccSkip,AlexAccSkip,AlexAccSkip,AlexAcc (alex_action_22),AlexAcc (alex_action_23),AlexAcc (alex_action_24),AlexAcc (alex_action_25),AlexAcc (alex_action_26),AlexAcc (alex_action_27),AlexAcc (alex_action_28),AlexAcc (alex_action_29),AlexAcc (alex_action_30),AlexAcc (alex_action_31),AlexAcc (alex_action_31),AlexAcc (alex_action_32),AlexAcc (alex_action_33),AlexAcc (alex_action_34),AlexAcc (alex_action_35),AlexAcc (alex_action_36),AlexAcc (alex_action_37),AlexAcc (alex_action_38),AlexAcc (alex_action_39),AlexAcc (alex_action_40),AlexAcc (alex_action_41),AlexAcc (alex_action_42),AlexAcc (alex_action_43),AlexAcc (alex_action_44),AlexAcc (alex_action_45),AlexAcc (alex_action_46),AlexAcc (alex_action_47),AlexAcc (alex_action_48),AlexAcc (alex_action_48),AlexAcc (alex_action_49),AlexAcc (alex_action_50),AlexAcc (alex_action_51),AlexAcc (alex_action_52),AlexAcc (alex_action_53),AlexAcc (alex_action_53),AlexAcc (alex_action_54),AlexAcc (alex_action_55),AlexAcc (alex_action_56),AlexAcc (alex_action_56),AlexAcc (alex_action_57),AlexAcc (alex_action_58),AlexAcc (alex_action_59),AlexAcc (alex_action_60),AlexAcc (alex_action_61),AlexAcc (alex_action_62),AlexAcc (alex_action_63),AlexAcc (alex_action_64),AlexAccSkip,AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66),AlexAcc (alex_action_66)]
-{-# LINE 172 "src/Lexer.x" #-}
+{-# LINE 171 "src/Lexer.x" #-}
 
 
 type AlexAction m = AlexInput -> Int -> m TokenVal
diff --git a/fast-tags.cabal b/fast-tags.cabal
--- a/fast-tags.cabal
+++ b/fast-tags.cabal
@@ -1,5 +1,5 @@
 name: fast-tags
-version: 1.2
+version: 1.2.1
 cabal-version: >= 1.8
 build-type: Simple
 synopsis: Fast incremental vi and emacs tags.
@@ -46,7 +46,8 @@
 
 library
     build-depends:
-        base >= 3 && < 5, mtl >=2.1, containers, cpphs >1.18, filepath, directory,
+        base >= 3 && < 5, mtl >=2.1, containers, cpphs >1.18, filepath,
+        directory,
         -- text 0.11.1.12 has a bug.
         text (> 0.11.1.12 || < 0.11.1.12),
         async,
@@ -54,6 +55,7 @@
         deepseq,
         array,
         utf8-string
+    build-tools: alex
     exposed-modules: Control.Monad.EitherK
                      FastTags
                      Lexer
@@ -88,7 +90,8 @@
     type: exitcode-stdio-1.0
     main-is: MainTest.hs
     hs-source-dirs: tests
-    ghc-options: -Wall -fno-warn-name-shadowing -fno-warn-type-defaults -main-is MainTest
+    ghc-options: -Wall -fno-warn-name-shadowing -fno-warn-type-defaults
+        -main-is MainTest
     ghc-prof-options: -main-is MainTest
     build-depends:
         base >= 3 && < 5, containers, filepath, directory,
diff --git a/src/FastTags.hs b/src/FastTags.hs
--- a/src/FastTags.hs
+++ b/src/FastTags.hs
@@ -55,8 +55,8 @@
 -- * types
 
 data TagVal = TagVal
-    !Text -- ^ name
-    !Type -- ^ tag type
+    !Text --  name
+    !Type --  tag type
     deriving (Show, Eq, Ord)
 
 instance NFData TagVal where
diff --git a/src/Lexer.x b/src/Lexer.x
--- a/src/Lexer.x
+++ b/src/Lexer.x
@@ -2,8 +2,7 @@
 -- alex doesn't quite produce warning-free code.
 {-# OPTIONS_GHC -fno-warn-missing-signatures -fno-warn-tabs
     -fno-warn-unused-binds -fno-warn-unused-matches
-    -fno-warn-unused-imports
-#-}
+    -fno-warn-unused-imports #-}
 {-# LANGUAGE FlexibleContexts    #-}
 {-# LANGUAGE MultiWayIf          #-}
 {-# LANGUAGE NamedFieldPuns      #-}
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -210,11 +210,19 @@
        "In case no filenames provided on commandline, fast-tags expects " ++
        "list of files separated by newlines in stdin."
 
--- | Documented in vim :h tags-file-format.
--- This tells vim that the file is sorted (but not case folded) so that
--- it can do a bsearch and never needs to fall back to linear search.
+-- | This line is to tell vim that the file is sorted, so it can use binary
+-- search when looking for tags. This must come first in the tags file, and the
+-- format is documented in :h tags-file-format as:
+--
+--   !_TAG_FILE_SORTED<Tab>1<Tab>{anything}
+--
+-- However, simply leaving {anything} part empty or putting something random
+-- like ~ doesn't work when we want to extend the tags file with some tags from
+-- C files using ctags. ctags requires //, with optional comments in between two
+-- slashes. More about ctags' file format can be seen here:
+-- http://ctags.sourceforge.net/FORMAT.
 vimMagicLine :: Text
-vimMagicLine = "!_TAG_FILE_SORTED\t1\t~"
+vimMagicLine = "!_TAG_FILE_SORTED\t1\t//"
 
 isNewTag :: Set Text -> Text -> Bool
 isNewTag textFns line = Set.member fn textFns
diff --git a/src/Token.hs b/src/Token.hs
--- a/src/Token.hs
+++ b/src/Token.hs
@@ -93,7 +93,7 @@
     -- | Actual character not tracked since it's irrelevant.
     | QuasiquoterStart
     | QuasiquoterEnd
-    | SpliceStart -- $(
+    | SpliceStart -- \$(
     | EOF
     deriving (Show, Eq, Ord)
 
