]> git.madduck.net Git - etc/vim.git/commitdiff

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Merge branch 'pythonic_level1'
authorHiroshi Shirosaki <h.shirosaki@gmail.com>
Wed, 5 Jun 2019 05:18:08 +0000 (14:18 +0900)
committerHiroshi Shirosaki <h.shirosaki@gmail.com>
Wed, 5 Jun 2019 05:18:08 +0000 (14:18 +0900)
12 files changed:
.travis.yml
Makefile
README.md
after/ftplugin/markdown.vim
doc/vim-markdown.txt
ftdetect/markdown.vim
ftplugin/markdown.vim
indent/markdown.vim
syntax/markdown.vim
test/syntax.vader
test/toc.vader
test/vimrc

index 310e5034759d03d9deb8e14c022fe216fcfaae05..338161ca03d40c687b5f44c56cd7e62a53b88db7 100644 (file)
@@ -26,7 +26,6 @@ before_script: |
   fi
   if [ "$TRAVIS_OS_NAME" = "osx" ]; then
     curl https://bootstrap.pypa.io/get-pip.py | sudo python
-    sudo -H easy_install pip
   fi
   sudo -H pip install virtualenv
 
index c9d11550789e3b477c74e1fc1d291427a8b8d46b..0b287e2633c6f53a1a29c01fc0ce47216d6038e0 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -66,6 +66,12 @@ doc: build/html2vimdoc build/vim-tools
                    -e "s/^- '([^']{1,2})':.*/ \*vim-markdown-\1\*/" -e "# short command" \
                    -e ":a" -e "s/^(.{1,78})$$/ \1/" -e "ta" -e "# align right" \
                    -e "G" -e "# append the matched line after the command reference" \
+                   -e "}" \
+                   -e "/^- 'g:vim_markdown_[[:alnum:]_]*'$$/ {" \
+                   -e "h" -e "# save the matched line to the hold space" \
+                   -e "s/^- '([^']*)'$$/ \*\1\*/" -e "# make global variable reference" \
+                   -e ":g" -e "s/^(.{1,78})$$/ \1/" -e "tg" -e "# align right" \
+                   -e "G" -e "# append the matched line after the global variable reference" \
                    -e "}" > doc/vim-markdown.txt && rm -f doc/tmp.md
 
 .PHONY: doc
index 8c056ce0c6a273676e4b431e81dbf4bc05a9bc77..6695b06ac74f62d5d312f55bbb22083f22fe0e94 100644 (file)
--- a/README.md
+++ b/README.md
@@ -5,6 +5,7 @@
 Syntax highlighting, matching rules and mappings for [the original Markdown](http://daringfireball.net/projects/markdown/) and extensions.
 
 1. [Installation](#installation)
+1. [Basic usage](#basic-usage)
 1. [Options](#options)
 1. [Mappings](#mappings)
 1. [Commands](#commands)
@@ -13,7 +14,7 @@ Syntax highlighting, matching rules and mappings for [the original Markdown](htt
 
 ## Installation
 
-If you use [Vundle](https://github.com/gmarik/vundle), add the following line to your `~/.vimrc`:
+If you use [Vundle](https://github.com/gmarik/vundle), add the following lines to your `~/.vimrc`:
 
 ```vim
 Plugin 'godlygeek/tabular'
@@ -52,158 +53,187 @@ cd ~/.vim
 tar --strip=1 -zxf vim-markdown-master.tar.gz
 ```
 
+## Basic usage
+
+### Folding
+
+Folding is enabled for headers by default.
+
+The following commands are useful to open and close folds:
+
+- `zr`: reduces fold level throughout the buffer
+- `zR`: opens all folds
+- `zm`: increases fold level throughout the buffer
+- `zM`: folds everything all the way
+- `za`: open a fold your cursor is on
+- `zA`: open a fold your cursor is on recursively
+- `zc`: close a fold your cursor is on
+- `zC`: close a fold your cursor is on recursively
+
+[Options](#options) are available to disable folding or change folding style.
+
+Try `:help fold-expr` and `:help fold-commands` for details.
+
+### Concealing
+
+Concealing is set for some syntax such as bold, italic, code block and link.
+
+Concealing lets you conceal text with other text. The actual source text is not modified. If you put your cursor on the concealed line, the conceal goes away.
+
+[Options](#options) are available to disable or change concealing.
+
+Try `:help concealcursor` and `:help conceallevel` for details.
+
 ## Options
 
 ### Disable Folding
 
-Add the following line to your `.vimrc` to disable the folding configuration:
+-   `g:vim_markdown_folding_disabled`
 
-```vim
-let g:vim_markdown_folding_disabled = 1
-```
+    Add the following line to your `.vimrc` to disable the folding configuration:
 
-This option only controls Vim Markdown specific folding configuration.
+        let g:vim_markdown_folding_disabled = 1
 
-To enable/disable folding use Vim's standard folding configuration.
+    This option only controls Vim Markdown specific folding configuration.
 
-```vim
-set [no]foldenable
-```
+    To enable/disable folding use Vim's standard folding configuration.
+
+        set [no]foldenable
 
 ### Change fold style
 
-To fold in a style like [python-mode](https://github.com/klen/python-mode), add the following to your `.vimrc`:
+-   `g:vim_markdown_folding_style_pythonic`
 
-```vim
-let g:vim_markdown_folding_style_pythonic = 1
-```
+    To fold in a style like [python-mode](https://github.com/klen/python-mode), add the following to your `.vimrc`:
 
-Level 1 heading which is served as a document title is not folded.
-`g:vim_markdown_folding_level` setting is not active with this fold style.
+        let g:vim_markdown_folding_style_pythonic = 1
 
-To prevent foldtext from being set add the following to your `.vimrc`:
+    Level 1 heading which is served as a document title is not folded.
+    `g:vim_markdown_folding_level` setting is not active with this fold style.
 
-```vim
-let g:vim_markdown_override_foldtext = 0
-```
+-   `g:vim_markdown_override_foldtext`
+
+    To prevent foldtext from being set add the following to your `.vimrc`:
+
+        let g:vim_markdown_override_foldtext = 0
 
 ### Set header folding level
 
-Folding level is a number between 1 and 6. By default, if not specified, it is set to 1.
+-   `g:vim_markdown_folding_level`
 
-```vim
-let g:vim_markdown_folding_level = 6
-```
+    Folding level is a number between 1 and 6. By default, if not specified, it is set to 1.
 
-Tip: it can be changed on the fly with:
+        let g:vim_markdown_folding_level = 6
 
-```vim
-:let g:vim_markdown_folding_level = 1
-:edit
-```
+    Tip: it can be changed on the fly with:
+
+        :let g:vim_markdown_folding_level = 1
+        :edit
 
 ### Disable Default Key Mappings
 
-Add the following line to your `.vimrc` to disable default key mappings:
+-   `g:vim_markdown_no_default_key_mappings`
 
-```vim
-let g:vim_markdown_no_default_key_mappings = 1
-```
+    Add the following line to your `.vimrc` to disable default key mappings:
+
+        let g:vim_markdown_no_default_key_mappings = 1
 
-You can also map them by yourself with `<Plug>` mappings.
+    You can also map them by yourself with `<Plug>` mappings.
 
 ### Enable TOC window auto-fit
 
-Allow for the TOC window to auto-fit when it's possible for it to shrink.
-It never increases its default size (half screen), it only shrinks.
+-   `g:vim_markdown_toc_autofit`
 
-```vim
-let g:vim_markdown_toc_autofit = 1
-```
+    Allow for the TOC window to auto-fit when it's possible for it to shrink.
+    It never increases its default size (half screen), it only shrinks.
+
+        let g:vim_markdown_toc_autofit = 1
 
 ### Text emphasis restriction to single-lines
 
-By default text emphasis works across multiple lines until a closing token is found. However, it's possible to restrict text emphasis to a single line (i.e., for it to be applied a closing token must be found on the same line). To do so:
+-   `g:vim_markdown_emphasis_multiline`
 
-```vim
-let g:vim_markdown_emphasis_multiline = 0
-```
+    By default text emphasis works across multiple lines until a closing token is found. However, it's possible to restrict text emphasis to a single line (i.e., for it to be applied a closing token must be found on the same line). To do so:
+
+        let g:vim_markdown_emphasis_multiline = 0
 
 ### Syntax Concealing
 
-Concealing is set for some syntax.
+-   `g:vim_markdown_conceal`
 
-For example, conceal `[link text](link url)` as just `link text`.
-Also, `_italic_` and `*italic*` will conceal to just _italic_.
-Similarly `__bold__`, `**bold**`, `___italic bold___`, and `***italic bold***`
-will conceal to just __bold__, **bold**, ___italic bold___, and ***italic bold*** respectively.
+    Concealing is set for some syntax.
 
-To enable conceal use Vim's standard conceal configuration.
+    For example, conceal `[link text](link url)` as just `link text`.
+    Also, `_italic_` and `*italic*` will conceal to just _italic_.
+    Similarly `__bold__`, `**bold**`, `___italic bold___`, and `***italic bold***`
+    will conceal to just __bold__, **bold**, ___italic bold___, and ***italic bold*** respectively.
 
-```vim
-set conceallevel=2
-```
+    To enable conceal use Vim's standard conceal configuration.
 
-To disable conceal regardless of `conceallevel` setting, add the following to your `.vimrc`:
+        set conceallevel=2
 
-```vim
-let g:vim_markdown_conceal = 0
-```
+    To disable conceal regardless of `conceallevel` setting, add the following to your `.vimrc`:
 
-To disable math conceal with LaTeX math syntax enabled, add the following to your `.vimrc`:
+        let g:vim_markdown_conceal = 0
 
-```vim
-let g:tex_conceal = ""
-let g:vim_markdown_math = 1
-```
+    To disable math conceal with LaTeX math syntax enabled, add the following to your `.vimrc`:
+
+        let g:tex_conceal = ""
+        let g:vim_markdown_math = 1
+
+-   `g:vim_markdown_conceal_code_blocks`
+
+    Disabling conceal for code fences requires an additional setting:
+
+        let g:vim_markdown_conceal_code_blocks = 0
 
 ### Fenced code block languages
 
-You can use filetype name as fenced code block languages for syntax highlighting.
-If you want to use different name from filetype, you can add it in your `.vimrc` like so:
+-   `g:vim_markdown_fenced_languages`
 
-```vim
-let g:vim_markdown_fenced_languages = ['csharp=cs']
-```
+    You can use filetype name as fenced code block languages for syntax highlighting.
+    If you want to use different name from filetype, you can add it in your `.vimrc` like so:
+
+        let g:vim_markdown_fenced_languages = ['csharp=cs']
 
-This will cause the following to be highlighted using the `cs` filetype syntax.
+    This will cause the following to be highlighted using the `cs` filetype syntax.
 
-    ```csharp
-    ...
-    ```
+        ```csharp
+        ...
+        ```
 
-Default is `['c++=cpp', 'viml=vim', 'bash=sh', 'ini=dosini']`.
+    Default is `['c++=cpp', 'viml=vim', 'bash=sh', 'ini=dosini']`.
 
 ### Follow named anchors
 
-This feature allows the `ge` command to follow named anchors in links of the form
-`file#anchor` or just `#anchor`, where file may omit the `.md` extension as
-usual. Two variables control its operation:
+-   `g:vim_markdown_follow_anchor`
 
-```vim
-let g:vim_markdown_follow_anchor = 1
-```
+    This feature allows the `ge` command to follow named anchors in links of the form
+    `file#anchor` or just `#anchor`, where file may omit the `.md` extension as
+    usual. Two variables control its operation:
 
-This tells vim-markdown whether to attempt to follow a named anchor in a link or
-not. When it is 1, and only if a link can be split in two parts by the pattern
-'#', then the first part is interpreted as the file and the second one as the
-named anchor. This also includes urls of the form `#anchor`, for which the first
-part is considered empty, meaning that the target file is the current one. After
-the file is opened, the anchor will be searched.
+        let g:vim_markdown_follow_anchor = 1
 
-Default is `0`.
+    This tells vim-markdown whether to attempt to follow a named anchor in a link or
+    not. When it is 1, and only if a link can be split in two parts by the pattern
+    '#', then the first part is interpreted as the file and the second one as the
+    named anchor. This also includes urls of the form `#anchor`, for which the first
+    part is considered empty, meaning that the target file is the current one. After
+    the file is opened, the anchor will be searched.
 
-```vim
-let g:vim_markdown_anchorexpr = "'<<'.v:anchor.'>>'"
-```
+    Default is `0`.
 
-This expression will be evaluated substituting `v:anchor` with a quoted string
-that contains the anchor to visit. The result of the evaluation will become the
-real anchor to search in the target file. This is useful in order to convert
-anchors of the form, say, `my-section-title` to searches of the form `My Section
-Title` or `<<my-section-title>>`.
+-   `g:vim_markdown_anchorexpr`
 
-Default is `''`.
+        let g:vim_markdown_anchorexpr = "'<<'.v:anchor.'>>'"
+
+    This expression will be evaluated substituting `v:anchor` with a quoted string
+    that contains the anchor to visit. The result of the evaluation will become the
+    real anchor to search in the target file. This is useful in order to convert
+    anchors of the form, say, `my-section-title` to searches of the form `My Section
+    Title` or `<<my-section-title>>`.
+
+    Default is `''`.
 
 ### Syntax extensions
 
@@ -211,87 +241,114 @@ The following options control which syntax extensions will be turned on. They ar
 
 #### LaTeX math
 
-Used as `$x^2$`, `$$x^2$$`, escapable as `\$x\$` and `\$\$x\$\$`.
+-   `g:vim_markdown_math`
 
-```vim
-let g:vim_markdown_math = 1
-```
+    Used as `$x^2$`, `$$x^2$$`, escapable as `\$x\$` and `\$\$x\$\$`.
+
+        let g:vim_markdown_math = 1
 
 #### YAML Front Matter
 
-Highlight YAML front matter as used by Jekyll or [Hugo](https://gohugo.io/content/front-matter/).
+-   `g:vim_markdown_frontmatter`
 
-```vim
-let g:vim_markdown_frontmatter = 1
-```
+    Highlight YAML front matter as used by Jekyll or [Hugo](https://gohugo.io/content/front-matter/).
+
+        let g:vim_markdown_frontmatter = 1
 
 #### TOML Front Matter
 
-Highlight TOML front matter as used by [Hugo](https://gohugo.io/content/front-matter/).
+-   `g:vim_markdown_toml_frontmatter`
 
-TOML syntax highlight requires [vim-toml](https://github.com/cespare/vim-toml).
+    Highlight TOML front matter as used by [Hugo](https://gohugo.io/content/front-matter/).
 
-```vim
-let g:vim_markdown_toml_frontmatter = 1
-```
+    TOML syntax highlight requires [vim-toml](https://github.com/cespare/vim-toml).
+
+        let g:vim_markdown_toml_frontmatter = 1
 
 #### JSON Front Matter
 
-Highlight JSON front matter as used by [Hugo](https://gohugo.io/content/front-matter/).
+-   `g:vim_markdown_json_frontmatter`
 
-JSON syntax highlight requires [vim-json](https://github.com/elzr/vim-json).
+    Highlight JSON front matter as used by [Hugo](https://gohugo.io/content/front-matter/).
 
-```vim
-let g:vim_markdown_json_frontmatter = 1
-```
+    JSON syntax highlight requires [vim-json](https://github.com/elzr/vim-json).
+
+        let g:vim_markdown_json_frontmatter = 1
+
+#### Strikethrough
+
+-   `g:vim_markdown_strikethrough`
+
+    Strikethrough uses two tildes. `~~Scratch this.~~`
+
+        let g:vim_markdown_strikethrough = 1
 
 ### Adjust new list item indent
 
-You can adjust a new list indent. For example, you insert a single line like below:
+-   `g:vim_markdown_new_list_item_indent`
 
-```
-* item1
-```
+    You can adjust a new list indent. For example, you insert a single line like below:
 
-Then if you type `o` to insert new line in vim and type `* item2`, the result will be:
+        * item1
 
-```
-* item1
-    * item2
-```
+    Then if you type `o` to insert new line in vim and type `* item2`, the result will be:
 
-vim-markdown automatically insert the indent. By default, the number of spaces of indent is 4. If you'd like to change the number as 2, just write:
+        * item1
+            * item2
 
-```vim
-let g:vim_markdown_new_list_item_indent = 2
-```
+    vim-markdown automatically insert the indent. By default, the number of spaces of indent is 4. If you'd like to change the number as 2, just write:
+
+        let g:vim_markdown_new_list_item_indent = 2
 
 ### Do not require .md extensions for Markdown links
 
-If you want to have a link like this `[link text](link-url)` and follow it for editing in vim using the `ge` command, but have it open the file "link-url.md" instead of the file "link-url", then use this option:
+-   `g:vim_markdown_no_extensions_in_markdown`
 
-```vim
-let g:vim_markdown_no_extensions_in_markdown = 1
-```
-This is super useful for GitLab and GitHub wiki repositories.
+    If you want to have a link like this `[link text](link-url)` and follow it for editing in vim using the `ge` command, but have it open the file "link-url.md" instead of the file "link-url", then use this option:
 
-Normal behaviour would be that vim-markup required you to do this `[link text](link-url.md)`, but this is not how the Gitlab and GitHub wiki repositories work. So this option adds some consistency between the two. 
+        let g:vim_markdown_no_extensions_in_markdown = 1
+
+    This is super useful for GitLab and GitHub wiki repositories.
+
+    Normal behaviour would be that vim-markup required you to do this `[link text](link-url.md)`, but this is not how the Gitlab and GitHub wiki repositories work. So this option adds some consistency between the two.
 
 ### Auto-write when following link
 
-If you follow a link like this `[link text](link-url)` using the `ge` shortcut, this option will automatically save any edits you made before moving you:
+-   `g:vim_markdown_autowrite`
 
-```vim
-let g:vim_markdown_autowrite = 1
-```
+    If you follow a link like this `[link text](link-url)` using the `ge` shortcut, this option will automatically save any edits you made before moving you:
+
+        let g:vim_markdown_autowrite = 1
 
 ### Change default file extension
 
-If you would like to use a file extension other than `.md` you may do so using the `vim_markdown_auto_extension_ext` variable:
+-   `g:vim_markdown_auto_extension_ext`
 
-```vim
-let g:vim_markdown_auto_extension_ext = 'txt'
-```
+    If you would like to use a file extension other than `.md` you may do so using the `vim_markdown_auto_extension_ext` variable:
+
+        let g:vim_markdown_auto_extension_ext = 'txt'
+
+### Do not automatically insert bulletpoints
+
+-   `g:vim_markdown_auto_insert_bullets`
+
+    Automatically inserting bulletpoints can lead to problems when wrapping text
+    (see issue #232 for details), so it can be disabled:
+
+        let g:vim_markdown_auto_insert_bullets = 0
+
+    In that case, you probably also want to set the new list item indent to 0 as
+    well, or you will have to remove an indent each time you add a new list item:
+
+        let g:vim_markdown_new_list_item_indent = 0
+
+### Change how to open new files
+
+-   `g:vim_markdown_edit_url_in`
+
+    By default when following a link the target file will be opened in your current buffer.  This behavior can change if you prefer using splits or tabs by using the `vim_markdown_edit_url_in` variable.  Possible values are `tab`, `vsplit`, `hsplit`, `current` opening in a new tab, vertical split, horizontal split, and current buffer respectively.  Defaults to current buffer if not set:
+
+        let g:vim_markdown_edit_url_in = 'tab'
 
 ## Mappings
 
index 91139ce98f27945187a40d1017b8e280f5ae4465..9eee3c34eb11c473be23015ca57558a68372d435 100644 (file)
@@ -170,10 +170,20 @@ let b:fenced_block = 0
 let b:front_matter = 0
 let s:vim_markdown_folding_level = get(g:, "vim_markdown_folding_level", 1)
 
-if !get(g:, "vim_markdown_folding_disabled", 0)
-    setlocal foldexpr=Foldexpr_markdown(v:lnum)
-    setlocal foldmethod=expr
-    if get(g:, "vim_markdown_folding_style_pythonic", 0) && get(g:, "vim_markdown_override_foldtext", 1)
-        setlocal foldtext=Foldtext_markdown()
-    endif
-endif
+function! s:MarkdownSetupFolding()
+  if !get(g:, "vim_markdown_folding_disabled", 0)
+      setlocal foldexpr=Foldexpr_markdown(v:lnum)
+      setlocal foldmethod=expr
+      if get(g:, "vim_markdown_folding_style_pythonic", 0) && get(g:, "vim_markdown_override_foldtext", 1)
+          setlocal foldtext=Foldtext_markdown()
+      endif
+  endif
+endfunction
+call s:MarkdownSetupFolding()
+augroup Mkd
+    " These autocmds need to be kept in sync with the autocmds calling
+    " s:MarkdownRefreshSyntax in ftplugin/markdown.vim.
+    autocmd BufWinEnter,BufWritePost <buffer> call s:MarkdownSetupFolding()
+    autocmd InsertEnter,InsertLeave <buffer> call s:MarkdownSetupFolding()
+    autocmd CursorHold,CursorHoldI <buffer> call s:MarkdownSetupFolding()
+augroup END
index 714d3a957e2ba503fd63695332994e50f8ffa4b3..95f8f409e1385452ea80b81ef85aa37c953fad24 100644 (file)
@@ -5,7 +5,10 @@ Contents ~
 
  1. Introduction                                    |vim-markdown-introduction|
  2. Installation                                    |vim-markdown-installation|
- 3. Options                                              |vim-markdown-options|
+ 3. Basic usage                                      |vim-markdown-basic-usage|
+  1. Folding                                             |vim-markdown-folding|
+  2. Concealing                                       |vim-markdown-concealing|
+ 4. Options                                              |vim-markdown-options|
   1. Disable Folding                             |vim-markdown-disable-folding|
   2. Change fold style                         |vim-markdown-change-fold-style|
   3. Set header folding level           |vim-markdown-set-header-folding-level|
@@ -21,17 +24,22 @@ Contents ~
    2. YAML Front Matter                        |vim-markdown-yaml-front-matter|
    3. TOML Front Matter                        |vim-markdown-toml-front-matter|
    4. JSON Front Matter                        |vim-markdown-json-front-matter|
+   5. Strikethrough                                |vim-markdown-strikethrough|
   11. Adjust new list item indent    |vim-markdown-adjust-new-list-item-indent|
   12. Do not require .md extensions for Markdown links
                 |vim-markdown-do-not-require-.md-extensions-for-markdown-links|
   13. Auto-write when following link
                                   |vim-markdown-auto-write-when-following-link|
-  14. Change default file extension           |vim-markdown-auto-extension-ext|
- 4. Mappings                                            |vim-markdown-mappings|
- 5. Commands                                            |vim-markdown-commands|
- 6. Credits                                              |vim-markdown-credits|
- 7. License                                              |vim-markdown-license|
- 8. References                                        |vim-markdown-references|
+  14. Change default file extension
+                                   |vim-markdown-change-default-file-extension|
+  15. Do not automatically insert bulletpoints
+                        |vim-markdown-do-not-automatically-insert-bulletpoints|
+  16. Change how to open new files  |vim-markdown-change-how-to-open-new-files|
+ 5. Mappings                                            |vim-markdown-mappings|
+ 6. Commands                                            |vim-markdown-commands|
+ 7. Credits                                              |vim-markdown-credits|
+ 8. License                                              |vim-markdown-license|
+ 9. References                                        |vim-markdown-references|
 
 ===============================================================================
                                                     *vim-markdown-introduction*
@@ -44,7 +52,7 @@ and extensions.
                                                     *vim-markdown-installation*
 Installation ~
 
-If you use Vundle [2], add the following line to your '~/.vimrc':
+If you use Vundle [2], add the following lines to your '~/.vimrc':
 >
   Plugin 'godlygeek/tabular'
   Plugin 'plasticboy/vim-markdown'
@@ -73,6 +81,52 @@ If you are not using any package manager, download the tarball [5] and do this:
   cd ~/.vim
   tar --strip=1 -zxf vim-markdown-master.tar.gz
 <
+===============================================================================
+                                                     *vim-markdown-basic-usage*
+Basic usage ~
+
+-------------------------------------------------------------------------------
+                                                         *vim-markdown-folding*
+Folding ~
+
+Folding is enabled for headers by default.
+
+The following commands are useful to open and close folds:
+
+                                                              *vim-markdown-zr*
+- 'zr': reduces fold level throughout the buffer
+                                                              *vim-markdown-zR*
+- 'zR': opens all folds
+                                                              *vim-markdown-zm*
+- 'zm': increases fold level throughout the buffer
+                                                              *vim-markdown-zM*
+- 'zM': folds everything all the way
+                                                              *vim-markdown-za*
+- 'za': open a fold your cursor is on
+                                                              *vim-markdown-zA*
+- 'zA': open a fold your cursor is on recursively
+                                                              *vim-markdown-zc*
+- 'zc': close a fold your cursor is on
+                                                              *vim-markdown-zC*
+- 'zC': close a fold your cursor is on recursively
+
+Options are available to disable folding or change folding style.
+
+Try ':help fold-expr' and ':help fold-commands' for details.
+
+-------------------------------------------------------------------------------
+                                                      *vim-markdown-concealing*
+Concealing ~
+
+Concealing is set for some syntax such as bold, italic, code block and link.
+
+Concealing lets you conceal text with other text. The actual source text is not
+modified. If you put your cursor on the concealed line, the conceal goes away.
+
+Options are available to disable or change concealing.
+
+Try ':help concealcursor' and ':help conceallevel' for details.
+
 ===============================================================================
                                                          *vim-markdown-options*
 Options ~
@@ -81,13 +135,17 @@ Options ~
                                                  *vim-markdown-disable-folding*
 Disable Folding ~
 
-Add the following line to your '.vimrc' to disable the folding configuration:
+                                              *g:vim_markdown_folding_disabled*
+- 'g:vim_markdown_folding_disabled'
+
+  Add the following line to your '.vimrc' to disable the folding
+  configuration:
 >
   let g:vim_markdown_folding_disabled = 1
 <
-This option only controls Vim Markdown specific folding configuration.
+  This option only controls Vim Markdown specific folding configuration.
 
-To enable/disable folding use Vim's standard folding configuration.
+  To enable/disable folding use Vim's standard folding configuration.
 >
   set [no]foldenable
 <
@@ -95,14 +153,21 @@ To enable/disable folding use Vim's standard folding configuration.
                                                *vim-markdown-change-fold-style*
 Change fold style ~
 
-To fold in a style like python-mode [6], add the following to your '.vimrc':
+                                        *g:vim_markdown_folding_style_pythonic*
+- 'g:vim_markdown_folding_style_pythonic'
+
+  To fold in a style like python-mode [6], add the following to your
+  '.vimrc':
 >
   let g:vim_markdown_folding_style_pythonic = 1
 <
-Level 1 heading which is served as a document title is not folded.
-'g:vim_markdown_folding_level' setting is not active with this fold style.
+  Level 1 heading which is served as a document title is not folded.
+  'g:vim_markdown_folding_level' setting is not active with this fold style.
+
+                                             *g:vim_markdown_override_foldtext*
+- 'g:vim_markdown_override_foldtext'
 
-To prevent foldtext from being set add the following to your '.vimrc':
+  To prevent foldtext from being set add the following to your '.vimrc':
 >
   let g:vim_markdown_override_foldtext = 0
 <
@@ -110,12 +175,15 @@ To prevent foldtext from being set add the following to your '.vimrc':
                                         *vim-markdown-set-header-folding-level*
 Set header folding level ~
 
-Folding level is a number between 1 and 6. By default, if not specified, it is
-set to 1.
+                                                 *g:vim_markdown_folding_level*
+- 'g:vim_markdown_folding_level'
+
+  Folding level is a number between 1 and 6. By default, if not specified, it
+  is set to 1.
 >
   let g:vim_markdown_folding_level = 6
 <
-Tip: it can be changed on the fly with:
+  Tip: it can be changed on the fly with:
 >
   :let g:vim_markdown_folding_level = 1
   :edit
@@ -124,18 +192,24 @@ Tip: it can be changed on the fly with:
                                     *vim-markdown-disable-default-key-mappings*
 Disable Default Key Mappings ~
 
-Add the following line to your '.vimrc' to disable default key mappings:
+                                       *g:vim_markdown_no_default_key_mappings*
+- 'g:vim_markdown_no_default_key_mappings'
+
+  Add the following line to your '.vimrc' to disable default key mappings:
 >
   let g:vim_markdown_no_default_key_mappings = 1
 <
-You can also map them by yourself with '<Plug>' mappings.
+  You can also map them by yourself with '<Plug>' mappings.
 
 -------------------------------------------------------------------------------
                                       *vim-markdown-enable-toc-window-auto-fit*
 Enable TOC window auto-fit ~
 
-Allow for the TOC window to auto-fit when it's possible for it to shrink. It
-never increases its default size (half screen), it only shrinks.
+                                                   *g:vim_markdown_toc_autofit*
+- 'g:vim_markdown_toc_autofit'
+
+  Allow for the TOC window to auto-fit when it's possible for it to shrink.
+  It never increases its default size (half screen), it only shrinks.
 >
   let g:vim_markdown_toc_autofit = 1
 <
@@ -143,9 +217,13 @@ never increases its default size (half screen), it only shrinks.
                        *vim-markdown-text-emphasis-restriction-to-single-lines*
 Text emphasis restriction to single-lines ~
 
-By default text emphasis works across multiple lines until a closing token is
-found. However, it's possible to restrict text emphasis to a single line (ie,
-for it to be applied a closing token must be found on the same line). To do so:
+                                            *g:vim_markdown_emphasis_multiline*
+- 'g:vim_markdown_emphasis_multiline'
+
+  By default text emphasis works across multiple lines until a closing token
+  is found. However, it's possible to restrict text emphasis to a single line
+  (i.e., for it to be applied a closing token must be found on the same
+  line). To do so:
 >
   let g:vim_markdown_emphasis_multiline = 0
 <
@@ -153,74 +231,96 @@ for it to be applied a closing token must be found on the same line). To do so:
                                                *vim-markdown-syntax-concealing*
 Syntax Concealing ~
 
-Concealing is set for some syntax.
+                                                       *g:vim_markdown_conceal*
+- 'g:vim_markdown_conceal'
+
+  Concealing is set for some syntax.
 
-For example, conceal '[link text](link url)' as just 'link text'. Also,
-'_italic_' and '*italic*' will conceal to just _italic_. Similarly '__bold__',
-'**bold**', '___italic bold___', and '***italic bold***' will conceal to just
-**bold**, **bold**, **_italic bold_**, and **_italic bold_** respectively.
+  For example, conceal '[link text](link url)' as just 'link text'. Also,
+  '_italic_' and '*italic*' will conceal to just _italic_. Similarly
+  '__bold__', '**bold**', '___italic bold___', and '***italic bold***' will
+  conceal to just **bold**, **bold**, **_italic bold_**, and **_italic
+  bold_** respectively.
 
-To enable conceal use Vim's standard conceal configuration.
+  To enable conceal use Vim's standard conceal configuration.
 >
   set conceallevel=2
 <
-To disable conceal regardless of 'conceallevel' setting, add the following to
-your '.vimrc':
+  To disable conceal regardless of 'conceallevel' setting, add the following
+  to your '.vimrc':
 >
   let g:vim_markdown_conceal = 0
 <
-To disable math conceal with LaTeX math syntax enabled, add the following to
-your '.vimrc':
+  To disable math conceal with LaTeX math syntax enabled, add the following
+  to your '.vimrc':
 >
   let g:tex_conceal = ""
   let g:vim_markdown_math = 1
+<
+                                           *g:vim_markdown_conceal_code_blocks*
+- 'g:vim_markdown_conceal_code_blocks'
+
+  Disabling conceal for code fences requires an additional setting:
+>
+  let g:vim_markdown_conceal_code_blocks = 0
 <
 -------------------------------------------------------------------------------
                                      *vim-markdown-fenced-code-block-languages*
 Fenced code block languages ~
 
-You can use filetype name as fenced code block languages for syntax
-highlighting. If you want to use different name from filetype, you can add it
-in your '.vimrc' like so:
+                                              *g:vim_markdown_fenced_languages*
+- 'g:vim_markdown_fenced_languages'
+
+  You can use filetype name as fenced code block languages for syntax
+  highlighting. If you want to use different name from filetype, you can add
+  it in your '.vimrc' like so:
 >
   let g:vim_markdown_fenced_languages = ['csharp=cs']
 <
-This will cause the following to be highlighted using the 'cs' filetype syntax.
+  This will cause the following to be highlighted using the 'cs' filetype
+  syntax.
 >
   ```csharp
   ...
   ```
 <
-Default is "['c++=cpp', 'viml=vim', 'bash=sh', 'ini=dosini']".
+  Default is "['c++=cpp', 'viml=vim', 'bash=sh', 'ini=dosini']".
 
 -------------------------------------------------------------------------------
                                             *vim-markdown-follow-named-anchors*
 Follow named anchors ~
 
-This feature allows ge to follow named anchors in links of the form
-'file#anchor' or just '#anchor', where file may omit the '.md' extension as
-usual. Two variables control its operation:
+                                                 *g:vim_markdown_follow_anchor*
+- 'g:vim_markdown_follow_anchor'
+
+  This feature allows the 'ge' command to follow named anchors in links of
+  the form 'file#anchor' or just '#anchor', where file may omit the '.md'
+  extension as usual. Two variables control its operation:
 >
   let g:vim_markdown_follow_anchor = 1
 <
-This tells vim-markdown whether to attempt to follow a named anchor in a link
-or not. When it is 1, and only if a link can be split in two parts by the
-pattern '#', then the first part is interpreted as the file and the second one
-as the named anchor. This also includes urls of the form '#anchor', for which
-the first part is considered empty, meaning that the target file is the current
-one. After the file is opened, the anchor will be searched.
+  This tells vim-markdown whether to attempt to follow a named anchor in a
+  link or not. When it is 1, and only if a link can be split in two parts by
+  the pattern '#', then the first part is interpreted as the file and the
+  second one as the named anchor. This also includes urls of the form
+  '#anchor', for which the first part is considered empty, meaning that the
+  target file is the current one. After the file is opened, the anchor will
+  be searched.
+
+  Default is '0'.
 
-Default is '0'.
+                                                    *g:vim_markdown_anchorexpr*
+- 'g:vim_markdown_anchorexpr'
 >
   let g:vim_markdown_anchorexpr = "'<<'.v:anchor.'>>'"
 <
-This expression will be evaluated substituting 'v:anchor' with a quoted string
-that contains the anchor to visit. The result of the evaluation will become the
-real anchor to search in the target file. This is useful in order to convert
-anchors of the form, say, 'my-section-title' to searches of the form 'My
-Section Title' or '<<my-section-title>>'.
+  This expression will be evaluated substituting 'v:anchor' with a quoted
+  string that contains the anchor to visit. The result of the evaluation will
+  become the real anchor to search in the target file. This is useful in
+  order to convert anchors of the form, say, 'my-section-title' to searches
+  of the form 'My Section Title' or '<<my-section-title>>'.
 
-Default is "''".
+  Default is "''".
 
 -------------------------------------------------------------------------------
                                                *vim-markdown-syntax-extensions*
@@ -233,7 +333,10 @@ are off by default.
                                                       *vim-markdown-latex-math*
 LaTeX math ~
 
-Used as '$x^2$', '$$x^2$$', escapable as '\$x\$' and '\$\$x\$\$'.
+                                                          *g:vim_markdown_math*
+- 'g:vim_markdown_math'
+
+  Used as '$x^2$', '$$x^2$$', escapable as '\$x\$' and '\$\$x\$\$'.
 >
   let g:vim_markdown_math = 1
 <
@@ -241,7 +344,10 @@ Used as '$x^2$', '$$x^2$$', escapable as '\$x\$' and '\$\$x\$\$'.
                                                *vim-markdown-yaml-front-matter*
 YAML Front Matter ~
 
-Highlight YAML front matter as used by Jekyll or Hugo [7].
+                                                   *g:vim_markdown_frontmatter*
+- 'g:vim_markdown_frontmatter'
+
+  Highlight YAML front matter as used by Jekyll or Hugo [7].
 >
   let g:vim_markdown_frontmatter = 1
 <
@@ -249,9 +355,12 @@ Highlight YAML front matter as used by Jekyll or Hugo [7].
                                                *vim-markdown-toml-front-matter*
 TOML Front Matter ~
 
-Highlight TOML front matter as used by Hugo [7].
+                                              *g:vim_markdown_toml_frontmatter*
+- 'g:vim_markdown_toml_frontmatter'
+
+  Highlight TOML front matter as used by Hugo [7].
 
-TOML syntax highlight requires vim-toml [8].
+  TOML syntax highlight requires vim-toml [8].
 >
   let g:vim_markdown_toml_frontmatter = 1
 <
@@ -259,29 +368,46 @@ TOML syntax highlight requires vim-toml [8].
                                                *vim-markdown-json-front-matter*
 JSON Front Matter ~
 
-Highlight JSON front matter as used by Hugo [7].
+                                              *g:vim_markdown_json_frontmatter*
+- 'g:vim_markdown_json_frontmatter'
+
+  Highlight JSON front matter as used by Hugo [7].
 
-JSON syntax highlight requires vim-json [9].
+  JSON syntax highlight requires vim-json [9].
 >
   let g:vim_markdown_json_frontmatter = 1
 <
+-------------------------------------------------------------------------------
+                                                   *vim-markdown-strikethrough*
+Strikethrough ~
+
+                                                 *g:vim_markdown_strikethrough*
+- 'g:vim_markdown_strikethrough'
+
+  Strikethrough uses two tildes. '~~Scratch this.~~'
+>
+  let g:vim_markdown_strikethrough = 1
+<
 -------------------------------------------------------------------------------
                                      *vim-markdown-adjust-new-list-item-indent*
 Adjust new list item indent ~
 
-You can adjust a new list indent. For example, you insert a single line like
-below:
+                                          *g:vim_markdown_new_list_item_indent*
+- 'g:vim_markdown_new_list_item_indent'
+
+  You can adjust a new list indent. For example, you insert a single line
+  like below:
 >
   * item1
 <
-Then if you type 'o' to insert new line in vim and type '* item2', the result
-will be:
+  Then if you type 'o' to insert new line in vim and type '* item2', the
+  result will be:
 >
   * item1
       * item2
 <
-vim-markdown automatically insert the indent. By default, the number of spaces
-of indent is 4. If you'd like to change the number as 2, just write:
+  vim-markdown automatically insert the indent. By default, the number of
+  spaces of indent is 4. If you'd like to change the number as 2, just write:
 >
   let g:vim_markdown_new_list_item_indent = 2
 <
@@ -289,36 +415,80 @@ of indent is 4. If you'd like to change the number as 2, just write:
                 *vim-markdown-do-not-require-.md-extensions-for-markdown-links*
 Do not require .md extensions for Markdown links ~
 
-If you want to have a link like this '[link text](link-url)' and follow it for
-editing in vim using the 'ge' command, but have it open the file "link-url.md"
-instead of the file "link-url", then use this option:
+                                     *g:vim_markdown_no_extensions_in_markdown*
+- 'g:vim_markdown_no_extensions_in_markdown'
+
+  If you want to have a link like this '[link text](link-url)' and follow it
+  for editing in vim using the 'ge' command, but have it open the file "link-
+  url.md" instead of the file "link-url", then use this option:
 >
   let g:vim_markdown_no_extensions_in_markdown = 1
 <
-This is super useful for GitLab and GitHub wiki repositories.
+  This is super useful for GitLab and GitHub wiki repositories.
 
-Normal behaviour would be that vim-markup required you to do this '[link text
-](link-url.md)', but this is not how the Gitlab and GitHub wiki repositories
-work. So this option adds some consistency between the two.
+  Normal behaviour would be that vim-markup required you to do this '[link
+  text](link-url.md)', but this is not how the Gitlab and GitHub wiki
+  repositories work. So this option adds some consistency between the two.
 
 -------------------------------------------------------------------------------
                                   *vim-markdown-auto-write-when-following-link*
 Auto-write when following link ~
 
-If you follow a link like this '[link text](link-url)' using the 'ge' shortcut,
-this option will automatically save any edits you made before moving you:
+                                                     *g:vim_markdown_autowrite*
+- 'g:vim_markdown_autowrite'
+
+  If you follow a link like this '[link text](link-url)' using the 'ge'
+  shortcut, this option will automatically save any edits you made before
+  moving you:
 >
   let g:vim_markdown_autowrite = 1
 <
 -------------------------------------------------------------------------------
-                                              *vim-markdown-auto-extension-ext*
+                                   *vim-markdown-change-default-file-extension*
 Change default file extension ~
 
-If you would like to use a file extension other than '.md' you may do so using
-the 'vim_markdown_auto_extension_ext' variable:
+                                            *g:vim_markdown_auto_extension_ext*
+- 'g:vim_markdown_auto_extension_ext'
+
+  If you would like to use a file extension other than '.md' you may do so
+  using the 'vim_markdown_auto_extension_ext' variable:
 >
   let g:vim_markdown_auto_extension_ext = 'txt'
 <
+-------------------------------------------------------------------------------
+                        *vim-markdown-do-not-automatically-insert-bulletpoints*
+Do not automatically insert bulletpoints ~
+
+                                           *g:vim_markdown_auto_insert_bullets*
+- 'g:vim_markdown_auto_insert_bullets'
+
+  Automatically inserting bulletpoints can lead to problems when wrapping
+  text (see issue #232 for details), so it can be disabled:
+>
+  let g:vim_markdown_auto_insert_bullets = 0
+<
+  In that case, you probably also want to set the new list item indent to 0
+  as well, or you will have to remove an indent each time you add a new list
+  item:
+>
+  let g:vim_markdown_new_list_item_indent = 0
+<
+-------------------------------------------------------------------------------
+                                    *vim-markdown-change-how-to-open-new-files*
+Change how to open new files ~
+
+                                                   *g:vim_markdown_edit_url_in*
+- 'g:vim_markdown_edit_url_in'
+
+  By default when following a link the target file will be opened in your
+  current buffer. This behavior can change if you prefer using splits or tabs
+  by using the 'vim_markdown_edit_url_in' variable. Possible values are
+  'tab', 'vsplit', 'hsplit', 'current' opening in a new tab, vertical split,
+  horizontal split, and current buffer respectively. Defaults to current
+  buffer if not set:
+>
+  let g:vim_markdown_edit_url_in = 'tab'
+<
 ===============================================================================
                                                         *vim-markdown-mappings*
 Mappings ~
index 611ecaa0d0cf8331ea4c6b8047f62657bb04a20a..07682da4cd5da623e60725215198c89f5bda7411 100644 (file)
@@ -1,3 +1,8 @@
+if !has('patch-7.4.480')
+    " Before this patch, vim used modula2 for .md.
+    au! filetypedetect BufRead,BufNewFile *.md
+endif
+
 " markdown filetype file
-au BufRead,BufNewFile *.{md,mdown,mkd,mkdn,markdown,mdwn} set filetype=markdown
-au BufRead,BufNewFile *.{md,mdown,mkd,mkdn,markdown,mdwn}.{des3,des,bf,bfa,aes,idea,cast,rc2,rc4,rc5,desx} set filetype=markdown
+au BufRead,BufNewFile *.{md,mdown,mkd,mkdn,markdown,mdwn} setfiletype markdown
+au BufRead,BufNewFile *.{md,mdown,mkd,mkdn,markdown,mdwn}.{des3,des,bf,bfa,aes,idea,cast,rc2,rc4,rc5,desx} setfiletype markdown
index 1aa3494fd9c5f8cf7426a777e61d8a562f0056f3..200293e840bbc2bb1181900e727cd0270fe00407 100644 (file)
@@ -609,7 +609,23 @@ if !exists('*s:EditUrlUnderCursor')
                     endif
                 endif
                 let l:url = fnameescape(fnamemodify(expand('%:h').'/'.l:url.l:ext, ':.'))
-                execute 'edit' l:url
+                let l:editmethod = ''
+                " determine how to open the linked file (split, tab, etc)
+                if exists('g:vim_markdown_edit_url_in')
+                  if g:vim_markdown_edit_url_in == 'tab'
+                    let l:editmethod = 'tabnew'
+                  elseif g:vim_markdown_edit_url_in == 'vsplit'
+                    let l:editmethod = 'vsp'
+                  elseif g:vim_markdown_edit_url_in == 'hsplit'
+                    let l:editmethod = 'sp'
+                  else
+                    let l:editmethod = 'edit'
+                  endif
+                else
+                  " default to current buffer
+                  let l:editmethod = 'edit'
+                endif
+                execute l:editmethod l:url
             endif
             if l:anchor != ''
                 silent! execute '/'.l:anchor
@@ -718,7 +734,7 @@ function! s:MarkdownHighlightSources(force)
                 let include = '@' . toupper(filetype)
             endif
             let command = 'syntax region %s matchgroup=%s start="^\s*```\s*%s$" matchgroup=%s end="\s*```$" keepend contains=%s%s'
-            execute printf(command, group, startgroup, ft, endgroup, include, has('conceal') && get(g:, 'vim_markdown_conceal', 1) ? ' concealends' : '')
+            execute printf(command, group, startgroup, ft, endgroup, include, has('conceal') && get(g:, 'vim_markdown_conceal', 1) && get(g:, 'vim_markdown_conceal_code_blocks', 1) ? ' concealends' : '')
             execute printf('syntax cluster mkdNonListItem add=%s', group)
 
             let b:mkd_known_filetypes[ft] = 1
@@ -752,18 +768,20 @@ endfunction
 
 
 function! s:MarkdownRefreshSyntax(force)
-    if &filetype == 'markdown' && line('$') > 1
+    if &filetype =~ 'markdown' && line('$') > 1
         call s:MarkdownHighlightSources(a:force)
     endif
 endfunction
 
 function! s:MarkdownClearSyntaxVariables()
-    if &filetype == 'markdown'
+    if &filetype =~ 'markdown'
         unlet! b:mkd_included_filetypes
     endif
 endfunction
 
 augroup Mkd
+    " These autocmd calling s:MarkdownRefreshSyntax need to be kept in sync with
+    " the autocmds calling s:MarkdownSetupFolding in after/ftplugin/markdown.vim.
     autocmd! * <buffer>
     autocmd BufWinEnter <buffer> call s:MarkdownRefreshSyntax(1)
     autocmd BufUnload <buffer> call s:MarkdownClearSyntaxVariables()
index 103e160f92fd848427ec321543562fe64094758d..2fa4cda8f7686fb9dd43a76286ea0e6088688080 100755 (executable)
@@ -5,15 +5,15 @@ setlocal indentexpr=GetMarkdownIndent()
 setlocal nolisp
 setlocal autoindent
 
-" Automatically insert bullets
-setlocal formatoptions+=r
-" Do not automatically insert bullets when auto-wrapping with text-width
-setlocal formatoptions-=c
-" Accept various markers as bullets
-setlocal comments=b:*,b:+,b:-
-
 " Automatically continue blockquote on line break
-setlocal comments+=b:>
+setlocal formatoptions+=r
+setlocal comments=b:>
+if get(g:, "vim_markdown_auto_insert_bullets", 1)
+    " Do not automatically insert bullets when auto-wrapping with text-width
+    setlocal formatoptions-=c
+    " Accept various markers as bullets
+    setlocal comments+=b:*,b:+,b:-
+endif
 
 " Only define the function once
 if exists("*GetMarkdownIndent") | finish | endif
index 008a6d83d5e27dbcd69e88bad65b57a495e37d43..d8d34ea181866b0c20a077d2fb09479e0864a4c9 100644 (file)
@@ -36,10 +36,14 @@ syn sync linebreaks=1
 
 let s:conceal = ''
 let s:concealends = ''
+let s:concealcode = ''
 if has('conceal') && get(g:, 'vim_markdown_conceal', 1)
   let s:conceal = ' conceal'
   let s:concealends = ' concealends'
 endif
+if has('conceal') && get(g:, 'vim_markdown_conceal_code_blocks', 1)
+  let s:concealcode = ' concealends'
+endif
 
 " additions to HTML groups
 if get(g:, 'vim_markdown_emphasis_multiline', 1)
@@ -82,25 +86,25 @@ syn region mkdLinkTitle matchgroup=mkdDelimiter start=+'+     end=+'+  contained
 syn region mkdLinkTitle matchgroup=mkdDelimiter start=+(+     end=+)+  contained
 
 "HTML headings
-syn region htmlH1       start="^\s*#"                   end="$" contains=mkdLink,mkdInlineURL,@Spell
-syn region htmlH2       start="^\s*##"                  end="$" contains=mkdLink,mkdInlineURL,@Spell
-syn region htmlH3       start="^\s*###"                 end="$" contains=mkdLink,mkdInlineURL,@Spell
-syn region htmlH4       start="^\s*####"                end="$" contains=mkdLink,mkdInlineURL,@Spell
-syn region htmlH5       start="^\s*#####"               end="$" contains=mkdLink,mkdInlineURL,@Spell
-syn region htmlH6       start="^\s*######"              end="$" contains=mkdLink,mkdInlineURL,@Spell
+syn region htmlH1       matchgroup=mkdHeading     start="^\s*#"                   end="$" contains=mkdLink,mkdInlineURL,@Spell
+syn region htmlH2       matchgroup=mkdHeading     start="^\s*##"                  end="$" contains=mkdLink,mkdInlineURL,@Spell
+syn region htmlH3       matchgroup=mkdHeading     start="^\s*###"                 end="$" contains=mkdLink,mkdInlineURL,@Spell
+syn region htmlH4       matchgroup=mkdHeading     start="^\s*####"                end="$" contains=mkdLink,mkdInlineURL,@Spell
+syn region htmlH5       matchgroup=mkdHeading     start="^\s*#####"               end="$" contains=mkdLink,mkdInlineURL,@Spell
+syn region htmlH6       matchgroup=mkdHeading     start="^\s*######"              end="$" contains=mkdLink,mkdInlineURL,@Spell
 syn match  htmlH1       /^.\+\n=\+$/ contains=mkdLink,mkdInlineURL,@Spell
 syn match  htmlH2       /^.\+\n-\+$/ contains=mkdLink,mkdInlineURL,@Spell
 
 "define Markdown groups
 syn match  mkdLineBreak    /  \+$/
 syn region mkdBlockquote   start=/^\s*>/                   end=/$/ contains=mkdLink,mkdInlineURL,mkdLineBreak,@Spell
-syn region mkdCode         start=/\(\([^\\]\|^\)\\\)\@<!`/ end=/\(\([^\\]\|^\)\\\)\@<!`/
-syn region mkdCode         start=/\s*``[^`]*/              end=/[^`]*``\s*/
-syn region mkdCode         start=/^\s*\z(`\{3,}\)[^`]*$/   end=/^\s*\z1`*\s*$/
-syn region mkdCode         start=/\s*\~\~[^\~]*/           end=/[^\~]*\~\~\s*/
-syn region mkdCode         start=/^\s*\z(\~\{3,}\)\s*[0-9A-Za-z_+-]*\s*$/         end=/^\s*\z1\~*\s*$/
-syn region mkdCode         start="<pre[^>]*\\\@<!>"        end="</pre>"
-syn region mkdCode         start="<code[^>]*\\\@<!>"       end="</code>"
+execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!`/                     end=/`/'  . s:concealcode
+execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!``/ skip=/[^`]`[^`]/   end=/``/' . s:concealcode
+execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/^\s*\z(`\{3,}\)[^`]*$/                       end=/^\s*\z1`*\s*$/'            . s:concealcode
+execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/\(\([^\\]\|^\)\\\)\@<!\~\~/  end=/\(\([^\\]\|^\)\\\)\@<!\~\~/'               . s:concealcode
+execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start=/^\s*\z(\~\{3,}\)\s*[0-9A-Za-z_+-]*\s*$/      end=/^\s*\z1\~*\s*$/'           . s:concealcode
+execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start="<pre[^>]*\\\@<!>"                            end="</pre>"'                   . s:concealcode
+execute 'syn region mkdCode matchgroup=mkdCodeDelimiter start="<code[^>]*\\\@<!>"                           end="</code>"'                  . s:concealcode
 syn region mkdFootnote     start="\[^"                     end="\]"
 syn match  mkdCode         /^\s*\n\(\(\s\{8,}[^ ]\|\t\t\+[^\t]\).*\n\)\+/
 syn match  mkdCode         /\%^\(\(\s\{4,}[^ ]\|\t\+[^\t]\).*\n\)\+/
@@ -115,7 +119,7 @@ syn match  mkdRule         /^\s*_\s\{0,1}_\s\{0,1}_\(_\|\s\)*$/
 " YAML frontmatter
 if get(g:, 'vim_markdown_frontmatter', 0)
   syn include @yamlTop syntax/yaml.vim
-  syn region Comment matchgroup=mkdDelimiter start="\%^---$" end="^---$" contains=@yamlTop keepend
+  syn region Comment matchgroup=mkdDelimiter start="\%^---$" end="^\(---\|\.\.\.\)$" contains=@yamlTop keepend
   unlet! b:current_syntax
 endif
 
@@ -145,11 +149,18 @@ if get(g:, 'vim_markdown_math', 0)
   syn region mkdMath start="\\\@<!\$\$" end="\$\$" skip="\\\$" contains=@tex keepend
 endif
 
-syn cluster mkdNonListItem contains=@htmlTop,htmlItalic,htmlBold,htmlBoldItalic,mkdFootnotes,mkdInlineURL,mkdLink,mkdLinkDef,mkdLineBreak,mkdBlockquote,mkdCode,mkdRule,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6,mkdMath
+" Strike through
+if get(g:, 'vim_markdown_strikethrough', 0)
+    syn region mkdStrike matchgroup=mkdStrike start="\%(\~\~\)"    end="\%(\~\~\)"
+    HtmlHiLink mkdStrike        htmlStrike
+endif
+
+syn cluster mkdNonListItem contains=@htmlTop,htmlItalic,htmlBold,htmlBoldItalic,mkdFootnotes,mkdInlineURL,mkdLink,mkdLinkDef,mkdLineBreak,mkdBlockquote,mkdCode,mkdRule,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6,mkdMath,htmlStrike
 
 "highlighting for Markdown groups
 HtmlHiLink mkdString        String
 HtmlHiLink mkdCode          String
+HtmlHiLink mkdCodeDelimiter String
 HtmlHiLink mkdCodeStart     String
 HtmlHiLink mkdCodeEnd       String
 HtmlHiLink mkdFootnote      Comment
index 0adae58a586e5a19801e5ba868a0e7086e666456..5ce94fc2ee99e2f24f9c2c8b4ac0bd6d6463231b 100644 (file)
@@ -882,6 +882,32 @@ a
 Execute (not code block in escaped code tag):
   AssertNotEqual SyntaxOf('a'), 'mkdCode'
 
+# Code quotes
+
+Given markdown;
+`a`
+
+Execute (code in code quotes):
+  AssertEqual SyntaxOf('a'), 'mkdCode'
+
+Given markdown;
+`a\` b `c\` d
+
+Execute (code quotes not escaped ending with backslash):
+  AssertEqual SyntaxOf('a\'), 'mkdCode'
+  AssertNotEqual SyntaxOf('b'), 'mkdCode'
+  AssertEqual SyntaxOf('c\'), 'mkdCode'
+  AssertNotEqual SyntaxOf('d'), 'mkdCode'
+
+Given markdown;
+``a\`` b ``c`\`1`` d
+
+Execute (double code quotes not escaped ending with backslash):
+  AssertEqual SyntaxOf('a\'), 'mkdCode'
+  AssertNotEqual SyntaxOf('b'), 'mkdCode'
+  AssertEqual SyntaxOf('c`\\`1'), 'mkdCode'
+  AssertNotEqual SyntaxOf('d'), 'mkdCode'
+
 # Math
 
 Given markdown;
@@ -1139,19 +1165,19 @@ Given markdown;
 ###### h6
 
 Execute (atx headers):
-  AssertEqual SyntaxOf('# h1 space'), 'htmlH1'
-  AssertEqual SyntaxOf('#h1 nospace'), 'htmlH1'
-  AssertEqual SyntaxOf('#  h1 2 spaces'), 'htmlH1'
-  AssertEqual SyntaxOf('# h1 trailing hash #'), 'htmlH1'
-  AssertEqual SyntaxOf('## h2 space'), 'htmlH2'
-  AssertEqual SyntaxOf('##h2 nospace'), 'htmlH2'
-  AssertEqual SyntaxOf('## h2 trailing hash ##'), 'htmlH2'
-  AssertEqual SyntaxOf('### h3 space'), 'htmlH3'
-  AssertEqual SyntaxOf('###h3 nospace'), 'htmlH3'
-  AssertEqual SyntaxOf('### h3 trailing hash ###'), 'htmlH3'
-  AssertEqual SyntaxOf('#### h4'), 'htmlH4'
-  AssertEqual SyntaxOf('##### h5'), 'htmlH5'
-  AssertEqual SyntaxOf('###### h6'), 'htmlH6'
+  AssertEqual SyntaxOf(' h1 space'), 'htmlH1'
+  AssertEqual SyntaxOf('h1 nospace'), 'htmlH1'
+  AssertEqual SyntaxOf('  h1 2 spaces'), 'htmlH1'
+  AssertEqual SyntaxOf(' h1 trailing hash '), 'htmlH1'
+  AssertEqual SyntaxOf(' h2 space'), 'htmlH2'
+  AssertEqual SyntaxOf('h2 nospace'), 'htmlH2'
+  AssertEqual SyntaxOf(' h2 trailing hash '), 'htmlH2'
+  AssertEqual SyntaxOf(' h3 space'), 'htmlH3'
+  AssertEqual SyntaxOf('h3 nospace'), 'htmlH3'
+  AssertEqual SyntaxOf(' h3 trailing hash '), 'htmlH3'
+  AssertEqual SyntaxOf(' h4'), 'htmlH4'
+  AssertEqual SyntaxOf(' h5'), 'htmlH5'
+  AssertEqual SyntaxOf(' h6'), 'htmlH6'
 
 Given markdown;
 # h1 before h2
@@ -1161,9 +1187,9 @@ Given markdown;
 # h1 after h2
 
 Execute (atx headers relative positions):
-  AssertEqual SyntaxOf('# h1 before h2'), 'htmlH1'
-  AssertEqual SyntaxOf('## h2 between h1s'), 'htmlH2'
-  AssertEqual SyntaxOf('# h1 after h2'), 'htmlH1'
+  AssertEqual SyntaxOf(' h1 before h2'), 'htmlH1'
+  AssertEqual SyntaxOf(' h2 between h1s'), 'htmlH2'
+  AssertEqual SyntaxOf(' h1 after h2'), 'htmlH1'
 
 Given markdown;
 setex h1
@@ -1214,9 +1240,9 @@ setex h2
 Execute (mixed atx and setex headers):
   AssertEqual SyntaxOf('setex h1 before atx'), 'htmlH1'
   AssertEqual SyntaxOf('==================='), 'htmlH1'
-  AssertEqual SyntaxOf('## atx h2'), 'htmlH2'
-  AssertEqual SyntaxOf('### atx h3'), 'htmlH3'
-  AssertEqual SyntaxOf('# atx h1'), 'htmlH1'
+  AssertEqual SyntaxOf(' atx h2'), 'htmlH2'
+  AssertEqual SyntaxOf(' atx h3'), 'htmlH3'
+  AssertEqual SyntaxOf(' atx h1'), 'htmlH1'
   AssertEqual SyntaxOf('setex h2'), 'htmlH2'
   AssertEqual SyntaxOf('------------------'), 'htmlH2'
 
index 2510edc76256a711bb7a599c89b97f96d6167ca1..512695267f0957fa22a20c4fbe22d876c02bf136 100644 (file)
@@ -175,10 +175,6 @@ Given markdown;
 ### header 3
 
 Execute (Toc cursor on the current header):
-  normal! 4G
-  :Toc
-  AssertEqual line('.'), 2
-  :lclose
   normal! G
   :Toc
   AssertEqual line('.'), 3
index 463cbd8f552f0c056304f3b56ba91e8ddf40a44a..638ab3f76be5ab9347e16d327099f2269e7c737f 100644 (file)
@@ -4,6 +4,8 @@ set rtp+=../build/tabular/
 set rtp+=../build/vim-toml/
 set rtp+=../build/vim-json/
 set rtp+=../build/vader.vim/
+set rtp-=~/.vim
+set rtp-=~/.vim/after
 let $LANG='en_US'
 filetype on
 filetype plugin on
@@ -11,14 +13,14 @@ filetype indent on
 syntax on
 
 function! Markdown_GetScriptID(fname) abort
-    let a:snlist = ''
-    redir => a:snlist
+    let l:snlist = ''
+    redir => l:snlist
     silent! scriptnames
     redir END
-    let a:mx = '^\s*\(\d\+\):\s*\(.*\)$'
-    for a:line in split(a:snlist, "\n")
-        if stridx(substitute(a:line, '\\', '/', 'g'), a:fname) >= 0
-            return substitute(a:line, a:mx, '\1', '')
+    let l:mx = '^\s*\(\d\+\):\s*\(.*\)$'
+    for l:line in split(l:snlist, "\n")
+        if stridx(substitute(l:line, '\\', '/', 'g'), a:fname) >= 0
+            return substitute(l:line, l:mx, '\1', '')
         endif
     endfor
 endfunction