diff --git a/plugins/view.py b/plugins/view.py
index 74dc097f..0b5ff18f 100644
--- a/plugins/view.py
+++ b/plugins/view.py
@@ -95,7 +95,7 @@ class MdeCenteredLineKeeper(MdeViewEventListener):
def on_modified(self):
sel = self.view.sel()
- if sel and len(sel) != 1:
+ if not sel or len(sel) != 1:
return
settings = self.view.settings()
diff --git a/syntaxes/Code Block Syntaxes.sublime-completions b/syntaxes/Code Block Syntaxes.sublime-completions
index a5439ff7..6c78dd32 100644
--- a/syntaxes/Code Block Syntaxes.sublime-completions
+++ b/syntaxes/Code Block Syntaxes.sublime-completions
@@ -664,6 +664,20 @@
"details": "Specifies SQL
code highlighting"
},
+ // WASM
+ {
+ "trigger": "wast",
+ "annotation": "WAST",
+ "kind": ["markup", "s", "Syntax"],
+ "details": "Specifies WebAssembly Text
code highlighting"
+ },
+ {
+ "trigger": "wit",
+ "annotation": "WIT",
+ "kind": ["markup", "s", "Syntax"],
+ "details": "Specifies WabAssembly Interface Type
code highlighting"
+ },
+
// XML
{
"trigger": "atom",
diff --git a/syntaxes/Markdown.sublime-syntax b/syntaxes/Markdown.sublime-syntax
index f64cb4ac..05b76d66 100644
--- a/syntaxes/Markdown.sublime-syntax
+++ b/syntaxes/Markdown.sublime-syntax
@@ -50,55 +50,58 @@ variables:
backticks: |-
(?x:
- (`{4})(?![\s`])(?:[^`]+(?=`)|(?!`{4})`+(?!`))+(`{4})(?!`) # 4 backticks, followed by at least one non whitespace, non backtick character, followed by (less than 4 backticks, or at least one non backtick character) at least once, followed by exactly 4 backticks
- | (`{3})(?![\s`])(?:[^`]+(?=`)|(?!`{3})`+(?!`))+(`{3})(?!`) # 3 backticks, followed by at least one non whitespace, non backtick character, followed by (less than 3 backticks, or at least one non backtick character) at least once, followed by exactly 3 backticks
- | (`{2})(?![\s`])(?:[^`]+(?=`)|(?!`{2})`+(?!`))+(`{2})(?!`) # 2 backticks, followed by at least one non whitespace, non backtick character, followed by (less than 2 backticks, or at least one non backtick character) at least once, followed by exactly 2 backticks
- | (`{1})(?![\s`])(?:[^`]+(?=`)|(?!`{1})`+(?!`))+(`{1})(?!`) # 1 backtick, followed by at least one non whitespace, non backtick character, followed by ( at least one non backtick character) at least once, followed by exactly 1 backtick
+ (`{4})[^`](?:[^`]|(?!`{4})`+[^`])*(`{4})(?!`) # 4 backticks, followed by at least one non backtick character, followed by (less than 4 backticks, or at least one non backtick character) at least once, followed by exactly 4 backticks
+ | (`{3})[^`](?:[^`]|(?!`{3})`+[^`])*(`{3})(?!`) # 3 backticks, followed by at least one non backtick character, followed by (less than 3 backticks, or at least one non backtick character) at least once, followed by exactly 3 backticks
+ | (`{2})[^`](?:[^`]|(?!`{2})`+[^`])*(`{2})(?!`) # 2 backticks, followed by at least one non backtick character, followed by (less than 2 backticks, or at least one non backtick character) at least once, followed by exactly 2 backticks
+ | (`{1})[^`](?:[^`]|(?!`{1})`+[^`])*(`{1})(?!`) # 1 backtick, followed by at least one non backtick character, followed by ( at least one non backtick character) at least once, followed by exactly 1 backtick
)
escapes: \\[-+*/!"#$%&'(),.:;<=>?@\[\\\]^_`{|}~]
balance_square_brackets: |-
(?x:
(?:
- (?:{{escapes}})+ # escape characters
- | [^\[\]`\\]+(?=[\[\]`\\]|$) # anything that isn't a square bracket or a backtick or the start of an escape character
+ \\. # maybe escaped character (be lazy)
+ | [^\[\]`] # anything that isn't a square bracket or backtick
| {{backticks}} # inline code
- | \[(?: # nested square brackets (one level deep)
- [^\[\]`]+(?=[\[\]`]) # anything that isn't a square bracket or a backtick
- {{backticks}}? # balanced backticks
- )*\] # closing square bracket
+ | \[ (?: # nested square brackets (one level deep)
+ \\. # maybe escaped character (be lazy)
+ | [^\[\]`] # anything that isn't a square bracket or backtick
+ | {{backticks}} # inline code
+ )* \] # closing square bracket
)+
)
balance_square_brackets_and_emphasis: |-
(?x:
(?:
- (?:{{escapes}})+ # escape characters
- | [^\[\]`\\_*]+(?=[\[\]`\\_*]|$) # anything that isn't a square bracket, a backtick, the start of an escape character, or an emphasis character
+ \\. # maybe escaped character (be lazy)
+ | [^\[\]`_*] # anything that isn't a square bracket, backtick or emphasis
| {{backticks}} # inline code
- | \[(?: # nested square brackets (one level deep)
- [^\[\]`]+(?=[\[\]`]) # anything that isn't a square bracket or a backtick
- {{backticks}}? # balanced backticks
- )*\] # closing square bracket
+ | \[ (?: # nested square brackets (one level deep)
+ \\. # maybe escaped character (be lazy)
+ | [^\[\]`_*] # anything that isn't a square bracket, backtick or emphasis
+ | {{backticks}} # inline code
+ )* \] # closing square bracket
)+ # at least one character
)
balance_square_brackets_pipes_and_emphasis: |-
(?x:
(?:
- (?:{{escapes}})+ # escape characters
- | [^\[\]`\\_*|]+(?=[\[\]`\\_*|]|$) # anything that isn't a square bracket, a backtick, the start of an escape character, or an emphasis character
+ \\. # maybe escaped character (be lazy)
+ | [^\[\]`_*|] # anything that isn't a square bracket, backtick or emphasis or table cell separator
| {{backticks}} # inline code
- | \[(?: # nested square brackets (one level deep)
- [^\[\]`]+(?=[\[\]`]) # anything that isn't a square bracket or a backtick
- {{backticks}}? # balanced backticks
- )*\] # closing square bracket
+ | \[ (?: # nested square brackets (one level deep)
+ \\. # maybe escaped character (be lazy)
+ | [^\[\]`_*|] # anything that isn't a square bracket, backtick or emphasis or table cell separator
+ | {{backticks}} # inline code
+ )* \] # closing square bracket
)+ # at least one character
)
balanced_emphasis: |-
(?x:
- \* (?!\*){{balance_square_brackets_and_emphasis}}+\* (?!\*)
- | \*\* {{balance_square_brackets_and_emphasis}}+\*\*
- | _ (?!_) {{balance_square_brackets_and_emphasis}}+_ (?!_)
- | __ {{balance_square_brackets_and_emphasis}}+__
+ \* (?!\*){{balance_square_brackets_and_emphasis}}\* (?!\*)
+ | \*\* {{balance_square_brackets_and_emphasis}}\*\*
+ | _ (?!_) {{balance_square_brackets_and_emphasis}}_ (?!_)
+ | __ {{balance_square_brackets_and_emphasis}}__
)
table_cell: |-
@@ -1182,6 +1185,8 @@ contexts:
- include: fenced-twee
- include: fenced-twig
- include: fenced-verilog
+ - include: fenced-wast
+ - include: fenced-wit
- include: fenced-xonsh
fenced-actionscript:
@@ -2858,6 +2863,50 @@ contexts:
1: punctuation.definition.raw.code-fence.end.markdown
2: meta.fold.code-fence.end.markdown
+ fenced-wast:
+ - match: |-
+ (?x)
+ {{fenced_code_block_start}}
+ (?i:\s*(wast))
+ {{fenced_code_block_trailing_infostring_characters}}
+ captures:
+ 0: meta.code-fence.definition.begin.wast.markdown-gfm
+ 2: punctuation.definition.raw.code-fence.begin.markdown
+ 5: constant.other.language-name.markdown
+ 6: comment.line.infostring.markdown
+ 7: meta.fold.code-fence.begin.markdown
+ embed: scope:source.wast
+ embed_scope:
+ markup.raw.code-fence.wast.markdown-gfm
+ source.wast
+ escape: '{{fenced_code_block_escape}}'
+ escape_captures:
+ 0: meta.code-fence.definition.end.wast.markdown-gfm
+ 1: punctuation.definition.raw.code-fence.end.markdown
+ 2: meta.fold.code-fence.end.markdown
+
+ fenced-wit:
+ - match: |-
+ (?x)
+ {{fenced_code_block_start}}
+ (?i:\s*(wit))
+ {{fenced_code_block_trailing_infostring_characters}}
+ captures:
+ 0: meta.code-fence.definition.begin.wit.markdown-gfm
+ 2: punctuation.definition.raw.code-fence.begin.markdown
+ 5: constant.other.language-name.markdown
+ 6: comment.line.infostring.markdown
+ 7: meta.fold.code-fence.begin.markdown
+ embed: scope:source.wit
+ embed_scope:
+ markup.raw.code-fence.wit.markdown-gfm
+ source.wit
+ escape: '{{fenced_code_block_escape}}'
+ escape_captures:
+ 0: meta.code-fence.definition.end.wit.markdown-gfm
+ 1: punctuation.definition.raw.code-fence.end.markdown
+ 2: meta.fold.code-fence.end.markdown
+
fenced-xonsh:
- match: |-
(?x)
diff --git a/tests/syntax_test_markdown.md b/tests/syntax_test_markdown.md
index 4619ae89..f7153ea8 100644
--- a/tests/syntax_test_markdown.md
+++ b/tests/syntax_test_markdown.md
@@ -2043,9 +2043,9 @@ unclosed_paren = (
| ^ meta.code-fence.definition.begin meta.fold.code-fence.begin - merkup
function foo () {
-| <- markup.raw.code-fence.shell.markdown-gfm meta.function.shell keyword.declaration.function.shell
+| <- markup.raw.code-fence.shell.markdown-gfm meta.function keyword.declaration.function.shell
}
-| <- markup.raw.code-fence.shell.markdown-gfm meta.function.shell punctuation.section
+| <- markup.raw.code-fence.shell.markdown-gfm meta.function punctuation.section
$ ls ~
| <- markup.raw.code-fence.shell.markdown-gfm source.shell.interactive comment.other.shell
@@ -2394,7 +2394,7 @@ okay