@@ -1099,7 +1099,7 @@ linkOrImage = explicitOrImageLink
1099explicitOrImageLink :: OrgParser (F Inlines)
1099explicitOrImageLink :: OrgParser (F Inlines)
1100explicitOrImageLink = try $ do
1100explicitOrImageLink = try $ do
1101 char '['
1101 char '['
1102− srcF <- applyCustomLinkFormat =<< linkTarget
1102+ srcF <- applyCustomLinkFormat =<< possiblyEmptyLinkTarget
1103 title <- enclosedRaw (char '[') (char ']')
1103 title <- enclosedRaw (char '[') (char ']')
1104 title' <- parseFromString (mconcat <$> many inline) title
1104 title' <- parseFromString (mconcat <$> many inline) title
1105 char ']'
1105 char ']'
@@ -1132,6 +1132,9 @@ selfTarget = try $ char '[' *> linkTarget <* char ']'
1132linkTarget :: OrgParser String
1132linkTarget :: OrgParser String
1133linkTarget = enclosedByPair '[' ']' (noneOf "\n\r[]")
1133linkTarget = enclosedByPair '[' ']' (noneOf "\n\r[]")
1135+possiblyEmptyLinkTarget :: OrgParser String
1136+possiblyEmptyLinkTarget = try linkTarget <|> ("" <$ string "[]")
1135applyCustomLinkFormat :: String -> OrgParser (F String)
1138applyCustomLinkFormat :: String -> OrgParser (F String)
1136applyCustomLinkFormat link = do
1139applyCustomLinkFormat link = do
1137 let (linkType, rest) = break (== ':') link
1140 let (linkType, rest) = break (== ':') link
@@ -1142,6 +1145,7 @@ applyCustomLinkFormat link = do
1142linkToInlinesF :: String -> Inlines -> F Inlines
1145linkToInlinesF :: String -> Inlines -> F Inlines
1143linkToInlinesF s =
1146linkToInlinesF s =
1144 case s of
1147 case s of
1148+ "" -> pure . B.link "" ""
1145 ('#':_) -> pure . B.link s ""
1149 ('#':_) -> pure . B.link s ""
1146 _ | isImageFilename s -> const . pure $ B.image s "" ""
1150 _ | isImageFilename s -> const . pure $ B.image s "" ""
1147 _ | isUri s -> pure . B.link s ""
1151 _ | isUri s -> pure . B.link s ""