@@ -147,14 +147,17 @@ extension syn ns rules =
147147 ruleGroup _ _ = False
148148
149149 extensionSymbol :: SSymbol -> IdrisParser (Maybe (Name, SynMatch))
150− extensionSymbol (Keyword n) = do reserved (show n); return Nothing
150+ extensionSymbol (Keyword n) = do fc <- reservedFC (show n)
151+ highlightP fc AnnKeyword
152+ return Nothing
151153 extensionSymbol (Expr n) = do tm <- expr syn
152154 return $ Just (n, SynTm tm)
153155 extensionSymbol (SimpleExpr n) = do tm <- simpleExpr syn
154156 return $ Just (n, SynTm tm)
155157 extensionSymbol (Binding n) = do b <- fst <$> name
156158 return $ Just (n, SynBind b)
157− extensionSymbol (Symbol s) = do symbol s
159+ extensionSymbol (Symbol s) = do fc <- symbolFC s
160+ highlightP fc AnnKeyword
158161 return Nothing
159162 dropn :: Name -> [(Name, a)] -> [(Name, a)]
160163 dropn n [] = []
@@ -645,14 +648,19 @@ constraintArg syn = do symbol "@{"
645648
646649-}
647650quasiquote :: SyntaxInfo -> IdrisParser PTerm
648−quasiquote syn = do symbol "`("
651+quasiquote syn = do startFC <- symbolFC "`("
649652 e <- expr syn { syn_in_quasiquote = (syn_in_quasiquote syn) + 1 ,
650653 inPattern = False }
651− g <- optional $ do
652− symbol ":"
653− expr syn { inPattern = False } -- don't allow antiquotes
654− symbol ")"
655− return $ PQuasiquote e g
654+ g <- optional $
655+ do fc <- symbolFC ":"
656+ ty <- expr syn { inPattern = False } -- don't allow antiquotes
657+ return (ty, fc)
658+ endFC <- symbolFC ")"
659+ mapM_ (uncurry highlightP) [(startFC, AnnKeyword), (endFC, AnnKeyword), (spanFC startFC endFC, AnnQuasiquote)]
660+ case g of
661+ Just (_, fc) -> highlightP fc AnnKeyword
662+ _ -> return ()
663+ return $ PQuasiquote e (fst <$> g)
656664 <?> "quasiquotation"
657665
658666{-| Parses an unquoting inside a quasiquotation (for building reflected terms using the elaborator)
@@ -662,8 +670,11 @@ quasiquote syn = do symbol "`("
662670-}
663671unquote :: SyntaxInfo -> IdrisParser PTerm
664672unquote syn = do guard (syn_in_quasiquote syn > 0)
665− symbol "~"
673+ startFC <- symbolFC "~"
666674 e <- simpleExpr syn { syn_in_quasiquote = syn_in_quasiquote syn - 1 }
675+ endFC <- getFC
676+ highlightP startFC AnnKeyword
677+ highlightP (spanFC startFC endFC) AnnAntiquote
667678 return $ PUnquote e
668679 <?> "unquotation"
669680