File tree 1 file changed +13
-2
lines changed
commonmark/src/Commonmark
1 file changed +13
-2
lines changed Original file line number Diff line number Diff line change @@ -126,19 +126,30 @@ prettyRange (SourceRange xs) = go "" xs
126
126
go _ [] = " "
127
127
go curname ((p1,p2): rest)
128
128
= (if sourceName p1 /= curname
129
- then sourceName p1 ++ " @"
129
+ then escapeSourceName ( sourceName p1) ++ " @"
130
130
else " " ) ++
131
131
show (sourceLine p1) ++ " :" ++
132
132
show (sourceColumn p1) ++ " -" ++
133
133
(if sourceName p2 /= sourceName p1
134
- then sourceName p2 ++ " @"
134
+ then escapeSourceName ( sourceName p2) ++ " @"
135
135
else " " ) ++
136
136
show (sourceLine p2) ++
137
137
" :" ++ show (sourceColumn p2) ++
138
138
if null rest
139
139
then " "
140
140
else " ;" ++ go (sourceName p2) rest
141
141
142
+ -- if the source name contains special characters it can lead to ambiguity when
143
+ -- a filename exactly matches a fragment of syntax of the range
144
+ escapeSourceName :: String -> String
145
+ escapeSourceName = concatMap escapeChar
146
+ where
147
+ escapeChar ' -' = " %-"
148
+ escapeChar ' %' = " %%"
149
+ escapeChar ' :' = " %:"
150
+ escapeChar ' ;' = " %;"
151
+ escapeChar x = [x]
152
+
142
153
type Attribute = (Text , Text )
143
154
144
155
type Attributes = [Attribute ]
You can’t perform that action at this time.
0 commit comments