diff --git a/docvim.cabal b/docvim.cabal
--- a/docvim.cabal
+++ b/docvim.cabal
@@ -1,5 +1,5 @@
 name: docvim
-version: 0.3.2.0
+version: 0.3.2.1
 cabal-version: >=1.10
 build-type: Simple
 license: MIT
@@ -35,6 +35,7 @@
     tests/fixtures/integration/loupe/golden/markdown.golden
     tests/fixtures/integration/loupe/golden/plaintext.golden
     tests/fixtures/integration/loupe/input/autoload/loupe/private.vim
+    tests/fixtures/integration/loupe/input/autoload/loupe.vim
     tests/fixtures/integration/loupe/input/plugin/loupe.vim
     tests/fixtures/integration/pinnacle/golden/ast.golden
     tests/fixtures/integration/pinnacle/golden/markdown.golden
@@ -173,7 +174,7 @@
 source-repository this
     type: git
     location: https://github.com/wincent/docvim.git
-    tag: 0.3.2.0
+    tag: 0.3.2.1
 
 library
     exposed-modules:
@@ -223,7 +224,7 @@
     main-is: Main.hs
     build-depends:
         base >=4.8.2.0 && <5,
-        docvim >=0.3.2.0
+        docvim >=0.3.2.1
     default-language: Haskell2010
     hs-source-dirs: src
     ghc-options: -W -Wall
@@ -247,7 +248,7 @@
         deepseq >=1.4.1.1,
         directory >=1.2.2.0,
         dlist >=0.7.1.2,
-        docvim >=0.3.2.0,
+        docvim >=0.3.2.1,
         filepath >=1.4.0.0,
         lens >=4.13,
         mtl >=2.2.1,
diff --git a/tests/fixtures/integration/loupe/golden/ast.golden b/tests/fixtures/integration/loupe/golden/ast.golden
--- a/tests/fixtures/integration/loupe/golden/ast.golden
+++ b/tests/fixtures/integration/loupe/golden/ast.golden
@@ -881,23 +881,23 @@
           , GenericStatement "endif"
           , GenericStatement "endif"
           , GenericStatement
-              "nnoremap <silent> <Plug>(LoupeClearHighlight) :nohlsearch<CR> :call loupe#private#clear_highlight()<CR>"
+              "nnoremap <silent> <Plug>(LoupeClearHighlight) :nohlsearch<bar> call loupe#private#clear_highlight()<CR>"
           , GenericStatement
-              "cabbrev <silent> <expr> noh (getcmdtype() == ':' && getcmdpos() == 4 ? 'noh <bar> call loupe#private#clear_highlight()<CR>' : 'noh')"
+              "cnoreabbrev <silent> <expr> noh (getcmdtype() == ':' && getcmdpos() == 4 ? 'noh <bar> call loupe#private#clear_highlight()' : 'noh')"
           , GenericStatement
-              "cabbrev <silent> <expr> nohl (getcmdtype() == ':' && getcmdpos() == 5 ? 'nohl <bar> call loupe#private#clear_highlight()<CR>' : 'nohl')"
+              "cnoreabbrev <silent> <expr> nohl (getcmdtype() == ':' && getcmdpos() == 5 ? 'nohl <bar> call loupe#private#clear_highlight()' : 'nohl')"
           , GenericStatement
-              "cabbrev <silent> <expr> nohls (getcmdtype() == ':' && getcmdpos() == 6 ? 'nohls <bar> call loupe#private#clear_highlight()<CR>' : 'nohls')"
+              "cnoreabbrev <silent> <expr> nohls (getcmdtype() == ':' && getcmdpos() == 6 ? 'nohls <bar> call loupe#private#clear_highlight()' : 'nohls')"
           , GenericStatement
-              "cabbrev <silent> <expr> nohlse (getcmdtype() == ':' && getcmdpos() == 7 ? 'nohlse <bar> call loupe#private#clear_highlight()<CR>' : 'nohlse')"
+              "cnoreabbrev <silent> <expr> nohlse (getcmdtype() == ':' && getcmdpos() == 7 ? 'nohlse <bar> call loupe#private#clear_highlight()' : 'nohlse')"
           , GenericStatement
-              "cabbrev <silent> <expr> nohlsea (getcmdtype() == ':' && getcmdpos() == 8 ? 'nohlsea <bar> call loupe#private#clear_highlight()<CR>' : 'nohlsea')"
+              "cnoreabbrev <silent> <expr> nohlsea (getcmdtype() == ':' && getcmdpos() == 8 ? 'nohlsea <bar> call loupe#private#clear_highlight()' : 'nohlsea')"
           , GenericStatement
-              "cabbrev <silent> <expr> nohlsear (getcmdtype() == ':' && getcmdpos() == 9 ? 'nohlsear <bar> call loupe#private#clear_highlight()<CR>' : 'nohlsear')"
+              "cnoreabbrev <silent> <expr> nohlsear (getcmdtype() == ':' && getcmdpos() == 9 ? 'nohlsear <bar> call loupe#private#clear_highlight()' : 'nohlsear')"
           , GenericStatement
-              "cabbrev <silent> <expr> nohlsearc (getcmdtype() == ':' && getcmdpos() == 10 ? 'nohlsearc <bar> call loupe#private#clear_highlight()<CR>' : 'nohlsearc')"
+              "cnoreabbrev <silent> <expr> nohlsearc (getcmdtype() == ':' && getcmdpos() == 10 ? 'nohlsearc <bar> call loupe#private#clear_highlight()' : 'nohlsearc')"
           , GenericStatement
-              "cabbrev <silent> <expr> nohlsearch (getcmdtype() == ':' && getcmdpos() == 11 ? 'nohlsearch <bar> call loupe#private#clear_highlight()<CR>' : 'nohlsearch')"
+              "cnoreabbrev <silent> <expr> nohlsearch (getcmdtype() == ':' && getcmdpos() == 11 ? 'nohlsearch <bar> call loupe#private#clear_highlight()' : 'nohlsearch')"
           , FunctionDeclaration
               { functionBang = False
               , functionName = "s:MagicString"
@@ -2892,15 +2892,7 @@
           [ Plaintext "https://www.youtube.com/watch?v=aHm36-na4-4" ]
       ]
   , HeadingAnnotation "History"
-  , Paragraph
-      [ Plaintext "1.1"
-      , Whitespace
-      , Plaintext "(15"
-      , Whitespace
-      , Plaintext "June"
-      , Whitespace
-      , Plaintext "2016)"
-      ]
+  , SubheadingAnnotation "1.1 (15 June 2016)"
   , List
       [ ListItem
           [ Plaintext "Make"
diff --git a/tests/fixtures/integration/loupe/golden/markdown.golden b/tests/fixtures/integration/loupe/golden/markdown.golden
--- a/tests/fixtures/integration/loupe/golden/markdown.golden
+++ b/tests/fixtures/integration/loupe/golden/markdown.golden
@@ -319,7 +319,7 @@
 
 ## History<a name="loupe-history" href="#user-content-loupe-history"></a>
 
-1.1 (15 June 2016)
+### 1.1 (15 June 2016)<a name="loupe-11-15-june-2016" href="#user-content-loupe-11-15-june-2016"></a>
 
 - Make compatible with older versions of Vim that do not have <strong>`v:hlsearch`</strong>.
 - Add support for special delimiters with <strong>`:substitute`</strong> command.
diff --git a/tests/fixtures/integration/loupe/golden/plaintext.golden b/tests/fixtures/integration/loupe/golden/plaintext.golden
--- a/tests/fixtures/integration/loupe/golden/plaintext.golden
+++ b/tests/fixtures/integration/loupe/golden/plaintext.golden
@@ -370,7 +370,7 @@
 
 HISTORY                                                          *loupe-history*
 
-1.1 (15 June 2016)
+1.1 (15 June 2016) ~
 
 - Make compatible with older versions of Vim that do not have |v:hlsearch|.
 - Add support for special delimiters with |:substitute| command.
diff --git a/tests/fixtures/integration/loupe/input/autoload/loupe.vim b/tests/fixtures/integration/loupe/input/autoload/loupe.vim
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/integration/loupe/input/autoload/loupe.vim
@@ -0,0 +1,43 @@
+" Copyright 2015-present Greg Hurrell. All rights reserved.
+" Licensed under the terms of the BSD 2-clause license.
+
+""
+" @function loupe#hlmatch
+"
+" Apply highlighting to the current search match.
+"
+function! loupe#hlmatch() abort
+  ""
+  " @option g:LoupeHighlightGroup string IncSearch
+  " Specifies the |:highlight| group used to emphasize the match currently under
+  " the cursor for the current search pattern. Defaults to "IncSearch" (ie.
+  " |hl-IncSearch|). For example:
+  "
+  " ```
+  " let g:LoupeHighlightGroup='Error'
+  " ```
+  "
+  " To prevent any special highlighting from being applied, set this option to
+  " "" (ie. the empty string).
+  let l:highlight=get(g:, 'LoupeHighlightGroup', 'IncSearch')
+  if empty(l:highlight)
+    return
+  endif
+
+  if has('autocmd')
+    augroup LoupeHightlightMatch
+      autocmd!
+    augroup END
+  endif
+
+  call loupe#private#clear_highlight()
+
+  " \c case insensitive
+  " \%# current cursor position
+  " @/ current search pattern
+  let l:pattern='\c\%#' . @/
+
+  if exists('*matchadd')
+    let w:loupe_hlmatch=matchadd(l:highlight, l:pattern)
+  endif
+endfunction
diff --git a/tests/fixtures/integration/loupe/input/plugin/loupe.vim b/tests/fixtures/integration/loupe/input/plugin/loupe.vim
--- a/tests/fixtures/integration/loupe/input/plugin/loupe.vim
+++ b/tests/fixtures/integration/loupe/input/plugin/loupe.vim
@@ -243,7 +243,7 @@
 "
 " # History
 "
-" 1.1 (15 June 2016)
+" ## 1.1 (15 June 2016)
 "
 " - Make compatible with older versions of Vim that do not have |v:hlsearch|.
 " - Add support for special delimiters with |:substitute| command.
@@ -325,18 +325,18 @@
 " - The mapping has been suppressed by setting |g:LoupeClearHighlightMap| to 1
 "   in your |.vimrc|.
 nnoremap <silent> <Plug>(LoupeClearHighlight)
-      \ :nohlsearch<CR>
-      \ :call loupe#private#clear_highlight()<CR>
+      \ :nohlsearch<bar>
+      \ call loupe#private#clear_highlight()<CR>
 
 " Make `:nohlsearch` behave like <Plug>(LoupeClearHighlight).
-cabbrev <silent> <expr> noh (getcmdtype() == ':' && getcmdpos() == 4 ? 'noh <bar> call loupe#private#clear_highlight()<CR>' : 'noh')
-cabbrev <silent> <expr> nohl (getcmdtype() == ':' && getcmdpos() == 5 ? 'nohl <bar> call loupe#private#clear_highlight()<CR>' : 'nohl')
-cabbrev <silent> <expr> nohls (getcmdtype() == ':' && getcmdpos() == 6 ? 'nohls <bar> call loupe#private#clear_highlight()<CR>' : 'nohls')
-cabbrev <silent> <expr> nohlse (getcmdtype() == ':' && getcmdpos() == 7 ? 'nohlse <bar> call loupe#private#clear_highlight()<CR>' : 'nohlse')
-cabbrev <silent> <expr> nohlsea (getcmdtype() == ':' && getcmdpos() == 8 ? 'nohlsea <bar> call loupe#private#clear_highlight()<CR>' : 'nohlsea')
-cabbrev <silent> <expr> nohlsear (getcmdtype() == ':' && getcmdpos() == 9 ? 'nohlsear <bar> call loupe#private#clear_highlight()<CR>' : 'nohlsear')
-cabbrev <silent> <expr> nohlsearc (getcmdtype() == ':' && getcmdpos() == 10 ? 'nohlsearc <bar> call loupe#private#clear_highlight()<CR>' : 'nohlsearc')
-cabbrev <silent> <expr> nohlsearch (getcmdtype() == ':' && getcmdpos() == 11 ? 'nohlsearch <bar> call loupe#private#clear_highlight()<CR>' : 'nohlsearch')
+cnoreabbrev <silent> <expr> noh (getcmdtype() == ':' && getcmdpos() == 4 ? 'noh <bar> call loupe#private#clear_highlight()' : 'noh')
+cnoreabbrev <silent> <expr> nohl (getcmdtype() == ':' && getcmdpos() == 5 ? 'nohl <bar> call loupe#private#clear_highlight()' : 'nohl')
+cnoreabbrev <silent> <expr> nohls (getcmdtype() == ':' && getcmdpos() == 6 ? 'nohls <bar> call loupe#private#clear_highlight()' : 'nohls')
+cnoreabbrev <silent> <expr> nohlse (getcmdtype() == ':' && getcmdpos() == 7 ? 'nohlse <bar> call loupe#private#clear_highlight()' : 'nohlse')
+cnoreabbrev <silent> <expr> nohlsea (getcmdtype() == ':' && getcmdpos() == 8 ? 'nohlsea <bar> call loupe#private#clear_highlight()' : 'nohlsea')
+cnoreabbrev <silent> <expr> nohlsear (getcmdtype() == ':' && getcmdpos() == 9 ? 'nohlsear <bar> call loupe#private#clear_highlight()' : 'nohlsear')
+cnoreabbrev <silent> <expr> nohlsearc (getcmdtype() == ':' && getcmdpos() == 10 ? 'nohlsearc <bar> call loupe#private#clear_highlight()' : 'nohlsearc')
+cnoreabbrev <silent> <expr> nohlsearch (getcmdtype() == ':' && getcmdpos() == 11 ? 'nohlsearch <bar> call loupe#private#clear_highlight()' : 'nohlsearch')
 
 ""
 " @option g:LoupeVeryMagic boolean 1
