]> 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:

Add 'g:vim_markdown_fenced_languages' option
authorHiroshi Shirosaki <h.shirosaki@gmail.com>
Fri, 19 Feb 2016 01:45:26 +0000 (10:45 +0900)
committerHiroshi Shirosaki <h.shirosaki@gmail.com>
Fri, 19 Feb 2016 01:49:16 +0000 (10:49 +0900)
Users can set filetype map in `.vimrc` for fenced code block
syntax highlighting.
Based on the patch by @citizenmatt.
Fix #250

README.md
doc/vim-markdown.txt
ftplugin/markdown.vim
test/syntax.vader

index 014c54ea0326bb2f0302ff1179a98cc12e766faa..c265d5bf7b4a93f622d81c666ddc33d914d080b5 100644 (file)
--- a/README.md
+++ b/README.md
@@ -139,6 +139,23 @@ To disable conceal regardless of `conceallevel` setting, add the following to yo
 let g:vim_markdown_conceal = 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:
+
+```vim
+let g:vim_markdown_fenced_languages = ['csharp=cs']
+```
+
+This will cause the following to be highlighted using the `cs` filetype syntax.
+
+    ```csharp
+    ...
+    ```
+
+Default is `['c++=cpp', 'viml=vim', 'bash=sh', 'ini=dosini']`.
+
 ### Syntax extensions
 
 The following options control which syntax extensions will be turned on. They are off by default.
index d1922b70c1e76187e49f71e5d9be3eb4bcce9da4..6e486deb6e35b976399b43ba9cf0930faaa70605 100644 (file)
@@ -14,7 +14,8 @@ Contents ~
   6. Text emphasis restriction to single-lines
                        |vim-markdown-text-emphasis-restriction-to-single-lines|
   7. Syntax Concealing                         |vim-markdown-syntax-concealing|
-  8. Syntax extensions                         |vim-markdown-syntax-extensions|
+  8. Fenced code block languages     |vim-markdown-fenced-code-block-languages|
+  9. Syntax extensions                         |vim-markdown-syntax-extensions|
    1. LaTeX math                                      |vim-markdown-latex-math|
    2. YAML Front Matter                        |vim-markdown-yaml-front-matter|
    3. TOML Front Matter                        |vim-markdown-toml-front-matter|
@@ -151,6 +152,24 @@ your '.vimrc':
 >
   let g:vim_markdown_conceal = 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:
+>
+  let g:vim_markdown_fenced_languages = ['csharp=cs']
+<
+This will cause the following to be highlighted using the 'cs' filetype syntax.
+>
+  ```csharp
+  ...
+  ```
+<
+Default is "['c++=cpp', 'viml=vim', 'bash=sh', 'ini=dosini']".
+
 -------------------------------------------------------------------------------
                                                *vim-markdown-syntax-extensions*
 Syntax extensions ~
index c7832d75d010d8761d4a6bee3558eaea9c06cc9b..e189ec4fce262bfa439d1c5a2272f03ad5fd58f7 100644 (file)
@@ -614,12 +614,21 @@ command! -buffer Tocv call s:Toc('vertical')
 command! -buffer Toct call s:Toc('tab')
 
 " Heavily based on vim-notes - http://peterodding.com/code/vim/notes/
-let s:filetype_dict = {
-    \ 'c++': 'cpp',
-    \ 'viml': 'vim',
-    \ 'bash': 'sh',
-    \ 'ini': 'dosini'
-\ }
+if exists('g:vim_markdown_fenced_languages')
+    let s:filetype_dict = {}
+    for s:filetype in g:vim_markdown_fenced_languages
+        let key = matchstr(s:filetype, "[^=]*")
+        let val = matchstr(s:filetype, "[^=]*$")
+        let s:filetype_dict[key] = val
+    endfor
+else
+    let s:filetype_dict = {
+        \ 'c++': 'cpp',
+        \ 'viml': 'vim',
+        \ 'bash': 'sh',
+        \ 'ini': 'dosini'
+    \ }
+endif
 
 function! s:MarkdownHighlightSources(force)
     " Syntax highlight source code embedded in notes.
index d2dbb13cf2714a391baa82e40b97d20732e85033..98548a0562ceef7e26ad8aab09c2ff3d0f34149c 100644 (file)
@@ -424,6 +424,19 @@ Execute (fenced code block syntax with alias language specifier):
   AssertEqual SyntaxOf('g:a'), 'vimVar'
   AssertEqual SyntaxOf('g:b'), 'vimVar'
 
+Given markdown;
+```csharp
+var s = "foo";
+```
+
+Execute (fenced code block languages setting):
+  let g:vim_markdown_fenced_languages = ['csharp=cs']
+  source ../ftplugin/markdown.vim
+  let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
+  call b:func(0)
+  AssertEqual SyntaxOf('foo'), 'csString'
+  unlet g:vim_markdown_fenced_languages
+
 Given markdown;
 ```a+b-
 code