Make links to options actually links in Markdown output
authorGreg Hurrell <greg@hurrell.net>
Tue, 25 Dec 2018 17:19:50 +0000 (18:19 +0100)
committerGreg Hurrell <greg@hurrell.net>
Tue, 25 Dec 2018 17:19:50 +0000 (18:19 +0100)
lib/Text/Docvim/Printer/Markdown.hs
lib/Text/Docvim/Visitor/Symbol.hs
tests/fixtures/integration/ferret/golden/markdown.golden
tests/fixtures/integration/loupe/golden/markdown.golden

index 5443c7cf469294e753e0caee00eada4deb1ed8e7..de967ce36f51f6eb61c2598186d5dbe2cddbaa0d 100644 (file)
@@ -165,7 +165,6 @@ attributesString as = unwords (map attributeToString as)
 gitHubAnchor :: String -> String
 gitHubAnchor n = "#user-content-" ++ sanitizeAnchor n
 
--- TODO: make sure symbol table knows about option targets too
 option :: Node -> Env
 option (OptionAnnotation n t d) = do
   h <- h3 $ "`" ++ n ++ "` (" ++ t ++ ", default: " ++ def ++ ")"
index 81fd6ad98b878fc51efd792c6dbd522e678b1b7c..82a29dce914261820a5b1bf3c19bf22543862ca5 100644 (file)
@@ -33,6 +33,7 @@ getSymbols node = if length symbols == Set.size set
     gatherSymbols (PluginAnnotation name _) = [name, name ++ ".txt"]
     gatherSymbols (MappingAnnotation m)     = [m]
     gatherSymbols MappingsAnnotation        = genHeading "mappings"
+    gatherSymbols (OptionAnnotation o _ _)  = [o]
     gatherSymbols OptionsAnnotation         = genHeading "options"
     gatherSymbols _                         = []
     genHeading h                            = maybe [] (\x -> [sanitizeAnchor $ x ++ "-" ++ h]) (getPluginName node)
index d4a75c40637268bc31f6a32f550f07cbdb80904c..1c217864cc779d33e757e1681685e2f8d93e9d3f 100644 (file)
@@ -76,7 +76,7 @@ Searches for {pattern} in all the files under the current directory (see <strong
 
 On newer versions of Vim (version 8 and above), the search process runs asynchronously in the background and does not block the UI.
 
-On older Vim versions (prior to version 8), if dispatch.vim is installed the search process will run asynchronously via the <strong>`:Make`</strong> command, otherwise it will be run synchronously via <strong>`:cexpr`</strong>. The <strong>`g:FerretDispatch`</strong> option can be used to prevent the use of dispatch.vim.
+On older Vim versions (prior to version 8), if dispatch.vim is installed the search process will run asynchronously via the <strong>`:Make`</strong> command, otherwise it will be run synchronously via <strong>`:cexpr`</strong>. The <strong>[`g:FerretDispatch`](#user-content-gferretdispatch)</strong> option can be used to prevent the use of dispatch.vim.
 
 Asynchronous searches are preferred because they do not block, despite the fact that Vim itself is single threaded.
 
@@ -98,7 +98,7 @@ As a convenience &lt;leader&gt;a is set-up (<strong>[`<Plug>(FerretAck)`](#user-
 
 ### `:Ack! {pattern} {options}`<a name="ferret-ack-pattern-options" href="#user-content-ferret-ack-pattern-options"></a>
 
-Like <strong>[`:Ack`](#user-content-ack)</strong>, but returns all results irrespective of the value of <strong>`g:FerretMaxResults`</strong>.
+Like <strong>[`:Ack`](#user-content-ack)</strong>, but returns all results irrespective of the value of <strong>[`g:FerretMaxResults`](#user-content-gferretmaxresults)</strong>.
 
 <p align="right"><a name="lack" href="#user-content-lack"><code>:Lack</code></a></p>
 
@@ -112,7 +112,7 @@ Note that <strong>[`:Lack`](#user-content-lack)</strong> always runs synchronous
 
 ### `:Lack! {pattern} {options}`<a name="ferret-lack-pattern-options" href="#user-content-ferret-lack-pattern-options"></a>
 
-Like <strong>[`:Lack`](#user-content-lack)</strong>, but returns all results irrespective of the value of <strong>`g:FerretMaxResults`</strong>.
+Like <strong>[`:Lack`](#user-content-lack)</strong>, but returns all results irrespective of the value of <strong>[`g:FerretMaxResults`](#user-content-gferretmaxresults)</strong>.
 
 <p align="right"><a name="back" href="#user-content-back"><code>:Back</code></a></p>
 
@@ -124,7 +124,7 @@ Like <strong>[`:Ack`](#user-content-ack)</strong>, but searches only listed buff
 
 ### `:Back! {pattern} {options}`<a name="ferret-back-pattern-options" href="#user-content-ferret-back-pattern-options"></a>
 
-Like <strong>[`:Back`](#user-content-back)</strong>, but returns all results irrespective of the value of <strong>`g:FerretMaxResults`</strong>.
+Like <strong>[`:Back`](#user-content-back)</strong>, but returns all results irrespective of the value of <strong>[`g:FerretMaxResults`](#user-content-gferretmaxresults)</strong>.
 
 <p align="right"><a name="black" href="#user-content-black"><code>:Black</code></a></p>
 
@@ -136,7 +136,7 @@ Like <strong>[`:Lack`](#user-content-lack)</strong>, but searches only listed bu
 
 ### `:Black! {pattern} {options}`<a name="ferret-black-pattern-options" href="#user-content-ferret-black-pattern-options"></a>
 
-Like <strong>[`:Black`](#user-content-black)</strong>, but returns all results irrespective of the value of <strong>`g:FerretMaxResults`</strong>.
+Like <strong>[`:Black`](#user-content-black)</strong>, but returns all results irrespective of the value of <strong>[`g:FerretMaxResults`](#user-content-gferretmaxresults)</strong>.
 
 <p align="right"><a name="acks" href="#user-content-acks"><code>:Acks</code></a></p>
 
@@ -169,12 +169,12 @@ Note that Ferret will not try to set up the &lt;leader&gt; mappings if any of th
 
 - A mapping for already exists.
 - An alternative mapping for the same functionality has already been set up from a <strong>`.vimrc`</strong>.
-- The mapping has been suppressed by setting <strong>`g:FerretMap`</strong> to 1 in your <strong>`.vimrc`</strong>.
+- The mapping has been suppressed by setting <strong>[`g:FerretMap`](#user-content-gferretmap)</strong> to 1 in your <strong>`.vimrc`</strong>.
 
 
 ### Mappings specific to the quickfix window<a name="ferret-mappings-specific-to-the-quickfix-window" href="#user-content-ferret-mappings-specific-to-the-quickfix-window"></a>
 
-Additionally, Ferret will set up special mappings in <strong>`quickfix`</strong> listings, unless prevented from doing so by <strong>`g:FerretQFMap`</strong>:
+Additionally, Ferret will set up special mappings in <strong>`quickfix`</strong> listings, unless prevented from doing so by <strong>[`g:FerretQFMap`](#user-content-gferretqfmap)</strong>:
 
 - `d` (<strong>`visual-mode`</strong>): delete visual selection
 - `dd` (<strong>`Normal-mode`</strong>): delete current line
@@ -233,13 +233,13 @@ Controls whether to use vim-dispatch (and specifically, <strong>`:Make`</strong>
 let g:FerretDispatch=0
 ```
 
-Note that on sufficiently recent versions of Vim with <strong>`+job`</strong> support, Ferret will first try to use <strong>`+job`</strong>, falling back to vim-dispatch and consulting <strong>`g:FerretDispatch`</strong> only if <strong>`g:FerretJob`</strong> is set to 0.
+Note that on sufficiently recent versions of Vim with <strong>`+job`</strong> support, Ferret will first try to use <strong>`+job`</strong>, falling back to vim-dispatch and consulting <strong>[`g:FerretDispatch`](#user-content-gferretdispatch)</strong> only if <strong>[`g:FerretJob`](#user-content-gferretjob)</strong> is set to 0.
 
 <p align="right"><a name="gferretjob" href="#user-content-gferretjob"><code>g:FerretJob</code></a></p>
 
 ### `g:FerretJob` (boolean, default: 1)<a name="ferret-gferretjob-boolean-default-1" href="#user-content-ferret-gferretjob-boolean-default-1"></a>
 
-Controls whether to use Vim's <strong>`+job`</strong> feature, when available, to run searches asynchronously. To prevent <strong>`+job`</strong> from being used, set to 0, in which case Ferret will fall back to vim-dispatch (see also: <strong>`g:FerretDispatch`</strong>):
+Controls whether to use Vim's <strong>`+job`</strong> feature, when available, to run searches asynchronously. To prevent <strong>`+job`</strong> from being used, set to 0, in which case Ferret will fall back to vim-dispatch (see also: <strong>[`g:FerretDispatch`](#user-content-gferretdispatch)</strong>):
 
 ```
 let g:FerretJob=0
@@ -249,7 +249,7 @@ let g:FerretJob=0
 
 ### `g:FerretHlsearch` (boolean, default: none)<a name="ferret-gferrethlsearch-boolean-default-none" href="#user-content-ferret-gferrethlsearch-boolean-default-none"></a>
 
-Controls whether Ferret should attempt to highlight the search pattern when running <strong>[`:Ack`](#user-content-ack)</strong> or <strong>[`:Lack`](#user-content-lack)</strong>. If left unset, Ferret will respect the current 'hlsearch' setting. To force highlighting on or off irrespective of 'hlsearch', set <strong>`g:FerretHlsearch`</strong> to 1 (on) or 0 (off):
+Controls whether Ferret should attempt to highlight the search pattern when running <strong>[`:Ack`](#user-content-ack)</strong> or <strong>[`:Lack`](#user-content-lack)</strong>. If left unset, Ferret will respect the current 'hlsearch' setting. To force highlighting on or off irrespective of 'hlsearch', set <strong>[`g:FerretHlsearch`](#user-content-gferrethlsearch)</strong> to 1 (on) or 0 (off):
 
 ```
 let g:FerretHlsearch=0
@@ -272,11 +272,11 @@ let g:FerretExecutable='ag,rg'
 
 ### `g:FerretMaxResults` (number, default: 100000)<a name="ferret-gferretmaxresults-number-default-100000" href="#user-content-ferret-gferretmaxresults-number-default-100000"></a>
 
-Controls the maximum number of results Ferret will attempt to gather before displaying the results. Note that this only applies when searching asynchronously; that is, on recent versions of Vim with <strong>`+job`</strong> support and when <strong>`g:FerretJob`</strong> is not set to 0.
+Controls the maximum number of results Ferret will attempt to gather before displaying the results. Note that this only applies when searching asynchronously; that is, on recent versions of Vim with <strong>`+job`</strong> support and when <strong>[`g:FerretJob`](#user-content-gferretjob)</strong> is not set to 0.
 
 The intent of this option is to prevent runaway search processes that produce huge volumes of output (for example, searching for a common string like &quot;test&quot; inside a <strong>`$HOME`</strong> directory containing millions of files) from locking up Vim.
 
-In the event that Ferret aborts a search that has hit the <strong>`g:FerretMaxResults`</strong> limit, a message will be printed prompting users to run the search again with <strong>[`:Ack!`](#user-content-ack)</strong> or <strong>[`:Lack!`](#user-content-lack)</strong> if they want to bypass the limit.
+In the event that Ferret aborts a search that has hit the <strong>[`g:FerretMaxResults`](#user-content-gferretmaxresults)</strong> limit, a message will be printed prompting users to run the search again with <strong>[`:Ack!`](#user-content-ack)</strong> or <strong>[`:Lack!`](#user-content-lack)</strong> if they want to bypass the limit.
 
 <p align="right"><a name="gferretqfoptions" href="#user-content-gferretqfoptions"><code>g:FerretQFOptions</code></a></p>
 
@@ -286,7 +286,7 @@ Controls whether to set up setting overrides for <strong>`quickfix`</strong> win
 
 A full list of overridden settings can be found in <strong>[`ferret-overrides`](#user-content-ferret-overrides)</strong>.
 
-To prevent the custom settings from being applied, set <strong>`g:FerretQFOptions`</strong> to 0:
+To prevent the custom settings from being applied, set <strong>[`g:FerretQFOptions`](#user-content-gferretqfoptions)</strong> to 0:
 
 ```
 let g:FerretQFOptions=0
@@ -312,7 +312,7 @@ let g:FerretQFMap=0
 
 ### `g:FerretLoaded` (any, default: none)<a name="ferret-gferretloaded-any-default-none" href="#user-content-ferret-gferretloaded-any-default-none"></a>
 
-To prevent Ferret from being loaded, set <strong>`g:FerretLoaded`</strong> to any value in your <strong>`.vimrc`</strong>. For example:
+To prevent Ferret from being loaded, set <strong>[`g:FerretLoaded`](#user-content-gferretloaded)</strong> to any value in your <strong>`.vimrc`</strong>. For example:
 
 ```
 let g:FerretLoaded=1
@@ -322,7 +322,7 @@ let g:FerretLoaded=1
 
 ### `g:FerretLazyInit` (boolean, default: 1)<a name="ferret-gferretlazyinit-boolean-default-1" href="#user-content-ferret-gferretlazyinit-boolean-default-1"></a>
 
-In order to minimize impact on Vim start-up time Ferret will initialize itself lazily on first use by default. If you wish to force immediate initialization (for example, to cause <strong>`'grepprg'`</strong> and <strong>`'grepformat'`</strong> to be set as soon as Vim launches), then set <strong>`g:FerretLazyInit`</strong> to 0 in your <strong>`.vimrc`</strong>:
+In order to minimize impact on Vim start-up time Ferret will initialize itself lazily on first use by default. If you wish to force immediate initialization (for example, to cause <strong>`'grepprg'`</strong> and <strong>`'grepformat'`</strong> to be set as soon as Vim launches), then set <strong>[`g:FerretLazyInit`](#user-content-gferretlazyinit)</strong> to 0 in your <strong>`.vimrc`</strong>:
 
 ```
 let g:FerrerLazyInit=0
@@ -409,7 +409,7 @@ Set to 0 because the <strong>`quickfix`</strong> listing is usually small by def
 
 Turned off to reduce visual clutter.
 
-To prevent any of these <strong>`quickfix`</strong>-specific overrides from being set up, you can set <strong>`g:FerretQFOptions`</strong> to 0 in your <strong>`.vimrc`</strong>:
+To prevent any of these <strong>`quickfix`</strong>-specific overrides from being set up, you can set <strong>[`g:FerretQFOptions`](#user-content-gferretqfoptions)</strong> to 0 in your <strong>`.vimrc`</strong>:
 
 ```
 let g:FerretQFOptions=0
@@ -562,9 +562,9 @@ Other contributors that have submitted patches include (in alphabetical order):
 ### master (not yet released)<a name="ferret-master-not-yet-released" href="#user-content-ferret-master-not-yet-released"></a>
 
 - Improvements to the handling of very large result sets (due to wide lines or many results).
-- Added <strong>`g:FerretLazyInit`</strong>.
-- Added missing documentation for <strong>`g:FerretJob`</strong>.
-- Added <strong>`g:FerretMaxResults`</strong>.
+- Added <strong>[`g:FerretLazyInit`](#user-content-gferretlazyinit)</strong>.
+- Added missing documentation for <strong>[`g:FerretJob`](#user-content-gferretjob)</strong>.
+- Added <strong>[`g:FerretMaxResults`](#user-content-gferretmaxresults)</strong>.
 - Added feature-detection for `rg` and `ag`, allowing Ferret to gracefully work with older versions of those tools that do not support all desired command-line switches.
 
 
@@ -585,7 +585,7 @@ Other contributors that have submitted patches include (in alphabetical order):
 
 ### 1.2a (16 May 2016)<a name="ferret-12a-16-may-2016" href="#user-content-ferret-12a-16-may-2016"></a>
 
-- Add optional support for running searches asynchronously using Vim's <strong>`+job`</strong> feature (enabled by default in sufficiently recent versions of Vim); see <strong>`g:FerretJob`</strong>, <strong>`:FerretCancelAsync`</strong> and <strong>`:FerretPullAsync`</strong>.
+- Add optional support for running searches asynchronously using Vim's <strong>`+job`</strong> feature (enabled by default in sufficiently recent versions of Vim); see <strong>[`g:FerretJob`](#user-content-gferretjob)</strong>, <strong>`:FerretCancelAsync`</strong> and <strong>`:FerretPullAsync`</strong>.
 
 
 ### 1.1.1 (7 March 2016)<a name="ferret-111-7-march-2016" href="#user-content-ferret-111-7-march-2016"></a>
@@ -605,7 +605,7 @@ Other contributors that have submitted patches include (in alphabetical order):
 
 - Fix broken <strong>[`:Qargs`](#user-content-qargs)</strong> command (patch from Daniel Silva).
 - Add <strong>`g:FerretQFHandler`</strong> and <strong>`g:FerretLLHandler`</strong> options (patch from Daniel Silva).
-- Make <strong>`<Plug>`</strong> mappings accessible even <strong>`g:FerretMap`</strong> is set to 0.
+- Make <strong>`<Plug>`</strong> mappings accessible even <strong>[`g:FerretMap`](#user-content-gferretmap)</strong> is set to 0.
 - Fix failure to report filename when using `ack` and explicitly scoping search to a single file (patch from Daniel Silva).
 - When using `ag`, report multiple matches per line instead of just the first (patch from Daniel Silva).
 - Improve content and display of error messages.
@@ -613,7 +613,7 @@ Other contributors that have submitted patches include (in alphabetical order):
 
 ### 0.3 (24 July 2015)<a name="ferret-03-24-july-2015" href="#user-content-ferret-03-24-july-2015"></a>
 
-- Added highlighting of search pattern and related <strong>`g:FerretHlsearch`</strong> option (patch from Nelo-Thara Wallus).
+- Added highlighting of search pattern and related <strong>[`g:FerretHlsearch`](#user-content-gferrethlsearch)</strong> option (patch from Nelo-Thara Wallus).
 - Add better error reporting for failed or incorrect searches.
 
 
index 6743652a19f12cf0db2597145bb1e5f4c15dc831..4962964b7788143e35698b651bfa2e92d26f2417 100644 (file)
@@ -75,7 +75,7 @@ Note that Loupe will not try to set up its &lt;leader&gt;n mapping if any of the
 
 - A mapping for &lt;leader&gt;n already exists.
 - An alternative mapping for <strong>[`<Plug>(LoupeClearHighlight)`](#user-content-plugloupeclearhighlight)</strong> has already been set up from a <strong>`.vimrc`</strong>.
-- The mapping has been suppressed by setting <strong>`g:LoupeClearHighlightMap`</strong> to 1 in your <strong>`.vimrc`</strong>.
+- The mapping has been suppressed by setting <strong>[`g:LoupeClearHighlightMap`](#user-content-gloupeclearhighlightmap)</strong> to 1 in your <strong>`.vimrc`</strong>.
 
 
 ### `<Plug>(LoupeOctothorpe)`<a name="loupe-plugloupeoctothorpe" href="#user-content-loupe-plugloupeoctothorpe"></a>
@@ -162,7 +162,7 @@ To prevent any special highlighting from being applied, set this option to &quot
 
 ### `g:LoupeLoaded` (any, default: none)<a name="loupe-gloupeloaded-any-default-none" href="#user-content-loupe-gloupeloaded-any-default-none"></a>
 
-To prevent Loupe from being loaded, set <strong>`g:LoupeLoaded`</strong> to any value in your <strong>`.vimrc`</strong>. For example:
+To prevent Loupe from being loaded, set <strong>[`g:LoupeLoaded`](#user-content-gloupeloaded)</strong> to any value in your <strong>`.vimrc`</strong>. For example:
 
 ```
 let g:LoupeLoaded=1
@@ -341,7 +341,7 @@ git archive -o loupe-$VERSION.zip HEAD -- .
 
 Loupe is written and maintained by Greg Hurrell &lt;greg@hurrell.net&gt;.
 
-The original idea for the <strong>`g:LoupeHighlightGroup`</strong> feature was taken from Damian Conway's Vim set-up:
+The original idea for the <strong>[`g:LoupeHighlightGroup`](#user-content-gloupehighlightgroup)</strong> feature was taken from Damian Conway's Vim set-up:
 
 - https://github.com/thoughtstream/Damian-Conway-s-Vim-Setup/blob/master/plugin/hlnext.vim