From 95414ac7b0d06bd1d7420d492ce8e18032dd7418 Mon Sep 17 00:00:00 2001 From: deathaxe Date: Fri, 9 Jan 2026 20:37:55 +0100 Subject: [PATCH 01/12] Fix dangling comma in json --- unittesting.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unittesting.json b/unittesting.json index 930000e2..4cd65642 100644 --- a/unittesting.json +++ b/unittesting.json @@ -2,5 +2,5 @@ "verbosity": 1, "capture_console": false, "failfast": false, - "reload_package_on_testing": false, + "reload_package_on_testing": false } From 1efd28626cf58c97d16845050885bb57d652b2e6 Mon Sep 17 00:00:00 2001 From: deathaxe Date: Sun, 1 Feb 2026 14:07:31 +0100 Subject: [PATCH 02/12] Syntax: Fix typo --- tests/syntax_test_markdown.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/syntax_test_markdown.md b/tests/syntax_test_markdown.md index eb6b65b0..efb88b94 100644 --- a/tests/syntax_test_markdown.md +++ b/tests/syntax_test_markdown.md @@ -9657,11 +9657,11 @@ paragraph --- - ::: indendet-code-block + ::: indented-code-block | <- markup.raw.block.markdown |^^^^^^^^^^^^^^^^^^^^^^^^^^^ markup.raw.block.markdown - ::: indendet-code-block + ::: indented-code-block code ::: |<- markup.raw.block.markdown From ef78a9a83e7fdde1d79ef8885a71e71d47adad7a Mon Sep 17 00:00:00 2001 From: deathaxe Date: Wed, 11 Feb 2026 18:45:29 +0100 Subject: [PATCH 03/12] Keymap: Insert new list items on enter only on empty selection Resolves #810 --- Default (Linux).sublime-keymap | 21 +++++++++++++++++++++ Default (OSX).sublime-keymap | 21 +++++++++++++++++++++ Default (Windows).sublime-keymap | 21 +++++++++++++++++++++ 3 files changed, 63 insertions(+) diff --git a/Default (Linux).sublime-keymap b/Default (Linux).sublime-keymap index 764d9e76..ea0ad74a 100644 --- a/Default (Linux).sublime-keymap +++ b/Default (Linux).sublime-keymap @@ -818,6 +818,7 @@ { "keys": ["shift+enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^\\s*((?:>\\s*)*)([-+*])(\\s+).*/\n$1 $3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true } ] @@ -825,6 +826,7 @@ { "keys": ["shift+keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^\\s*((?:>\\s*)*)([-+*])(\\s+).*/\n$1 $3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true } ] @@ -833,6 +835,7 @@ { "keys": ["shift+enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^\\s*((?:>\\s*)*)([-+*])(\\s+).*/\n$1 $3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*][ ]\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true } ] @@ -840,6 +843,7 @@ { "keys": ["shift+keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^\\s*((?:>\\s*)*)([-+*])(\\s+).*/\n$1 $3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*][ ]\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true } ] @@ -848,6 +852,7 @@ { "keys": ["enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)).*/\n$1$2$3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } @@ -856,6 +861,7 @@ { "keys": ["keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)).*/\n$1$2$3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } @@ -864,6 +870,7 @@ { "keys": ["enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)).*/\n$1$2$3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } @@ -872,6 +879,7 @@ { "keys": ["keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)).*/\n$1$2$3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } @@ -881,6 +889,7 @@ { "keys": ["enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)\\[[ xX]\\](\\s+)).*/\n$1$2$3[ ]$4/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } @@ -889,6 +898,7 @@ { "keys": ["keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)\\[[ xX]\\](\\s+)).*/\n$1$2$3[ ]$4/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } @@ -897,6 +907,7 @@ { "keys": ["enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)\\[[ xX]\\](\\s+)).*/\n$1$2$3[ ]$4/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } @@ -905,6 +916,7 @@ { "keys": ["keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)\\[[ xX]\\](\\s+)).*/\n$1$2$3[ ]$4/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } @@ -914,6 +926,7 @@ { "keys": ["enter"], "command": "mde_number_list", "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*\\d+[.)]", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } @@ -922,6 +935,7 @@ { "keys": ["keypad_enter"], "command": "mde_number_list", "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*\\d+[.)]", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } @@ -930,6 +944,7 @@ { "keys": ["enter"], "command": "mde_number_list", "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*\\d+[.)]", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } @@ -938,6 +953,7 @@ { "keys": ["keypad_enter"], "command": "mde_number_list", "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*\\d+[.)]", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } @@ -947,6 +963,7 @@ { "keys": ["enter"], "command": "run_macro_file", "args": {"file": "Packages/MarkdownEditing/macros/Delete Empty List Item.sublime-macro"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_match", "operand": "^[\\s>]*([-+*]|\\d+[.)])(?:\\s+\\[[ xX]\\])?\\s*$", "match_all": true }, { "key": "following_text", "operator": "regex_match", "operand": "^\\s*$", "match_all": true }, @@ -956,6 +973,7 @@ { "keys": ["keypad_enter"], "command": "run_macro_file", "args": {"file": "Packages/MarkdownEditing/macros/Delete Empty List Item.sublime-macro"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_match", "operand": "^[\\s>]*([-+*]|\\d+[.)])(?:\\s+\\[[ xX]\\])?\\s*$", "match_all": true }, { "key": "following_text", "operator": "regex_match", "operand": "^\\s*$", "match_all": true }, @@ -965,6 +983,7 @@ { "keys": ["enter"], "command": "run_macro_file", "args": {"file": "Packages/MarkdownEditing/macros/Delete Empty List Item.sublime-macro"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_match", "operand": "^[\\s>]*([-+*]|\\d+[.)])(?:\\s+\\[[ xX]\\])?\\s*$", "match_all": true }, { "key": "following_text", "operator": "regex_match", "operand": "^\\s*$", "match_all": true }, @@ -974,6 +993,7 @@ { "keys": ["keypad_enter"], "command": "run_macro_file", "args": {"file": "Packages/MarkdownEditing/macros/Delete Empty List Item.sublime-macro"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_match", "operand": "^[\\s>]*([-+*]|\\d+[.)])(?:\\s+\\[[ xX]\\])?\\s*$", "match_all": true }, { "key": "following_text", "operator": "regex_match", "operand": "^\\s*$", "match_all": true }, @@ -983,6 +1003,7 @@ { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/MarkdownEditing/macros/Delete Empty List Item.sublime-macro"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_match", "operand": "^[\\s>]*([-+*]|\\d+[.)])(?:\\s+\\[[ xX]\\])?\\s?$", "match_all": true }, { "key": "following_text", "operator": "regex_match", "operand": "^\\s*$", "match_all": true } diff --git a/Default (OSX).sublime-keymap b/Default (OSX).sublime-keymap index 01e6a1cd..582bbef3 100644 --- a/Default (OSX).sublime-keymap +++ b/Default (OSX).sublime-keymap @@ -818,6 +818,7 @@ { "keys": ["shift+enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^\\s*((?:>\\s*)*)([-+*])(\\s+).*/\n$1 $3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true } ] @@ -825,6 +826,7 @@ { "keys": ["shift+keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^\\s*((?:>\\s*)*)([-+*])(\\s+).*/\n$1 $3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true } ] @@ -833,6 +835,7 @@ { "keys": ["shift+enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^\\s*((?:>\\s*)*)([-+*])(\\s+).*/\n$1 $3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*][ ]\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true } ] @@ -840,6 +843,7 @@ { "keys": ["shift+keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^\\s*((?:>\\s*)*)([-+*])(\\s+).*/\n$1 $3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*][ ]\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true } ] @@ -848,6 +852,7 @@ { "keys": ["enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)).*/\n$1$2$3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } @@ -856,6 +861,7 @@ { "keys": ["keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)).*/\n$1$2$3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } @@ -864,6 +870,7 @@ { "keys": ["enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)).*/\n$1$2$3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } @@ -872,6 +879,7 @@ { "keys": ["keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)).*/\n$1$2$3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } @@ -881,6 +889,7 @@ { "keys": ["enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)\\[[ xX]\\](\\s+)).*/\n$1$2$3[ ]$4/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } @@ -889,6 +898,7 @@ { "keys": ["keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)\\[[ xX]\\](\\s+)).*/\n$1$2$3[ ]$4/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } @@ -897,6 +907,7 @@ { "keys": ["enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)\\[[ xX]\\](\\s+)).*/\n$1$2$3[ ]$4/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } @@ -905,6 +916,7 @@ { "keys": ["keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)\\[[ xX]\\](\\s+)).*/\n$1$2$3[ ]$4/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } @@ -914,6 +926,7 @@ { "keys": ["enter"], "command": "mde_number_list", "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*\\d+[.)]", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } @@ -922,6 +935,7 @@ { "keys": ["keypad_enter"], "command": "mde_number_list", "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*\\d+[.)]", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } @@ -930,6 +944,7 @@ { "keys": ["enter"], "command": "mde_number_list", "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*\\d+[.)]", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } @@ -938,6 +953,7 @@ { "keys": ["keypad_enter"], "command": "mde_number_list", "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*\\d+[.)]", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } @@ -947,6 +963,7 @@ { "keys": ["enter"], "command": "run_macro_file", "args": {"file": "Packages/MarkdownEditing/macros/Delete Empty List Item.sublime-macro"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_match", "operand": "^[\\s>]*([-+*]|\\d+[.)])(?:\\s+\\[[ xX]\\])?\\s*$", "match_all": true }, { "key": "following_text", "operator": "regex_match", "operand": "^\\s*$", "match_all": true }, @@ -956,6 +973,7 @@ { "keys": ["keypad_enter"], "command": "run_macro_file", "args": {"file": "Packages/MarkdownEditing/macros/Delete Empty List Item.sublime-macro"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_match", "operand": "^[\\s>]*([-+*]|\\d+[.)])(?:\\s+\\[[ xX]\\])?\\s*$", "match_all": true }, { "key": "following_text", "operator": "regex_match", "operand": "^\\s*$", "match_all": true }, @@ -965,6 +983,7 @@ { "keys": ["enter"], "command": "run_macro_file", "args": {"file": "Packages/MarkdownEditing/macros/Delete Empty List Item.sublime-macro"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_match", "operand": "^[\\s>]*([-+*]|\\d+[.)])(?:\\s+\\[[ xX]\\])?\\s*$", "match_all": true }, { "key": "following_text", "operator": "regex_match", "operand": "^\\s*$", "match_all": true }, @@ -974,6 +993,7 @@ { "keys": ["keypad_enter"], "command": "run_macro_file", "args": {"file": "Packages/MarkdownEditing/macros/Delete Empty List Item.sublime-macro"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_match", "operand": "^[\\s>]*([-+*]|\\d+[.)])(?:\\s+\\[[ xX]\\])?\\s*$", "match_all": true }, { "key": "following_text", "operator": "regex_match", "operand": "^\\s*$", "match_all": true }, @@ -983,6 +1003,7 @@ { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/MarkdownEditing/macros/Delete Empty List Item.sublime-macro"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_match", "operand": "^[\\s>]*([-+*]|\\d+[.)])(?:\\s+\\[[ xX]\\])?\\s?$", "match_all": true }, { "key": "following_text", "operator": "regex_match", "operand": "^\\s*$", "match_all": true } diff --git a/Default (Windows).sublime-keymap b/Default (Windows).sublime-keymap index 5e8bff77..e4a7c5a4 100644 --- a/Default (Windows).sublime-keymap +++ b/Default (Windows).sublime-keymap @@ -819,6 +819,7 @@ { "keys": ["shift+enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^\\s*((?:>\\s*)*)([-+*])(\\s+).*/\n$1 $3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true } ] @@ -826,6 +827,7 @@ { "keys": ["shift+keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^\\s*((?:>\\s*)*)([-+*])(\\s+).*/\n$1 $3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true } ] @@ -834,6 +836,7 @@ { "keys": ["shift+enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^\\s*((?:>\\s*)*)([-+*])(\\s+).*/\n$1 $3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*][ ]\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true } ] @@ -841,6 +844,7 @@ { "keys": ["shift+keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^\\s*((?:>\\s*)*)([-+*])(\\s+).*/\n$1 $3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*][ ]\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true } ] @@ -849,6 +853,7 @@ { "keys": ["enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)).*/\n$1$2$3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } @@ -857,6 +862,7 @@ { "keys": ["keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)).*/\n$1$2$3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } @@ -865,6 +871,7 @@ { "keys": ["enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)).*/\n$1$2$3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } @@ -873,6 +880,7 @@ { "keys": ["keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)).*/\n$1$2$3/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } @@ -882,6 +890,7 @@ { "keys": ["enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)\\[[ xX]\\](\\s+)).*/\n$1$2$3[ ]$4/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } @@ -890,6 +899,7 @@ { "keys": ["keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)\\[[ xX]\\](\\s+)).*/\n$1$2$3[ ]$4/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } @@ -898,6 +908,7 @@ { "keys": ["enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)\\[[ xX]\\](\\s+)).*/\n$1$2$3[ ]$4/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } @@ -906,6 +917,7 @@ { "keys": ["keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^(?:\\s*((?:>\\s*)*)([-+*])(\\s+)\\[[ xX]\\](\\s+)).*/\n$1$2$3[ ]$4/}"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } @@ -915,6 +927,7 @@ { "keys": ["enter"], "command": "mde_number_list", "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*\\d+[.)]", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } @@ -923,6 +936,7 @@ { "keys": ["keypad_enter"], "command": "mde_number_list", "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*\\d+[.)]", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } @@ -931,6 +945,7 @@ { "keys": ["enter"], "command": "mde_number_list", "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*\\d+[.)]", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } @@ -939,6 +954,7 @@ { "keys": ["keypad_enter"], "command": "mde_number_list", "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*\\d+[.)]", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } @@ -948,6 +964,7 @@ { "keys": ["enter"], "command": "run_macro_file", "args": {"file": "Packages/MarkdownEditing/macros/Delete Empty List Item.sublime-macro"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_match", "operand": "^[\\s>]*([-+*]|\\d+[.)])(?:\\s+\\[[ xX]\\])?\\s*$", "match_all": true }, { "key": "following_text", "operator": "regex_match", "operand": "^\\s*$", "match_all": true }, @@ -957,6 +974,7 @@ { "keys": ["keypad_enter"], "command": "run_macro_file", "args": {"file": "Packages/MarkdownEditing/macros/Delete Empty List Item.sublime-macro"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_match", "operand": "^[\\s>]*([-+*]|\\d+[.)])(?:\\s+\\[[ xX]\\])?\\s*$", "match_all": true }, { "key": "following_text", "operator": "regex_match", "operand": "^\\s*$", "match_all": true }, @@ -966,6 +984,7 @@ { "keys": ["enter"], "command": "run_macro_file", "args": {"file": "Packages/MarkdownEditing/macros/Delete Empty List Item.sublime-macro"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_match", "operand": "^[\\s>]*([-+*]|\\d+[.)])(?:\\s+\\[[ xX]\\])?\\s*$", "match_all": true }, { "key": "following_text", "operator": "regex_match", "operand": "^\\s*$", "match_all": true }, @@ -975,6 +994,7 @@ { "keys": ["keypad_enter"], "command": "run_macro_file", "args": {"file": "Packages/MarkdownEditing/macros/Delete Empty List Item.sublime-macro"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_match", "operand": "^[\\s>]*([-+*]|\\d+[.)])(?:\\s+\\[[ xX]\\])?\\s*$", "match_all": true }, { "key": "following_text", "operator": "regex_match", "operand": "^\\s*$", "match_all": true }, @@ -984,6 +1004,7 @@ { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/MarkdownEditing/macros/Delete Empty List Item.sublime-macro"}, "context": [ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, + { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, { "key": "preceding_text", "operator": "regex_match", "operand": "^[\\s>]*([-+*]|\\d+[.)])(?:\\s+\\[[ xX]\\])?\\s?$", "match_all": true }, { "key": "following_text", "operator": "regex_match", "operand": "^\\s*$", "match_all": true } From 93b690f9a89346f45c8f0fff3952515c4c9f431d Mon Sep 17 00:00:00 2001 From: deathaxe Date: Wed, 11 Feb 2026 19:32:50 +0100 Subject: [PATCH 04/12] Keymap: disable mde_show_fold_all_sections binding by default Resolves #807 This commit disables `ctrl+shift+tab` key binding by default, as it overrides default binding to switch tabs. Keep it otherwise unchanged, in case someone still wants to use it. --- Preferences.sublime-settings | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Preferences.sublime-settings b/Preferences.sublime-settings index db102948..7316da62 100644 --- a/Preferences.sublime-settings +++ b/Preferences.sublime-settings @@ -177,7 +177,7 @@ "mde.keymap_disable.fold_section": false, // Open a panel showing all functions related to folding // Default keys: (OSX/Linux/Win)ctrl+shift+tab - "mde.keymap_disable.show_fold_all_sections": false, + "mde.keymap_disable.show_fold_all_sections": true, // Jump to the next heading (any level/same or higher level) // Default keys: (OSX)super+ctrl/shift+pagedown (Linux/Win)ctrl+shift(+alt)+pagedown "mde.keymap_disable.goto_next_heading": false, From c84504e12a0065fa81522f1b3b1def939e4e66af Mon Sep 17 00:00:00 2001 From: deathaxe Date: Mon, 9 Mar 2026 18:45:19 +0100 Subject: [PATCH 05/12] Keymap: Fix "extend list" binding constraints Fixes #812 This commit fixes an issue, which caused `enter` key to duplicate content on current line instead of adding a new list item below. --- Default (Linux).sublime-keymap | 24 ++++++++++++------------ Default (OSX).sublime-keymap | 24 ++++++++++++------------ Default (Windows).sublime-keymap | 24 ++++++++++++------------ 3 files changed, 36 insertions(+), 36 deletions(-) diff --git a/Default (Linux).sublime-keymap b/Default (Linux).sublime-keymap index ea0ad74a..745f76b0 100644 --- a/Default (Linux).sublime-keymap +++ b/Default (Linux).sublime-keymap @@ -820,7 +820,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true } + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*]\\s+(?:\\S|$)", "match_all": true } ] }, { "keys": ["shift+keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^\\s*((?:>\\s*)*)([-+*])(\\s+).*/\n$1 $3/}"}, "context": @@ -828,7 +828,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true } + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*]\\s+(?:\\S|$)", "match_all": true } ] }, // Add line to current GFM task @@ -837,7 +837,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*][ ]\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true } + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*][ ]\\[[ xX]\\]\\s+(?:\\S|$)", "match_all": true } ] }, { "keys": ["shift+keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^\\s*((?:>\\s*)*)([-+*])(\\s+).*/\n$1 $3/}"}, "context": @@ -845,7 +845,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*][ ]\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true } + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*][ ]\\[[ xX]\\]\\s+(?:\\S|$)", "match_all": true } ] }, // Extend lists (also in block quotes) @@ -854,7 +854,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*]\\s+(?:\\S|$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, @@ -863,7 +863,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*]\\s+(?:\\S|$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, @@ -872,7 +872,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*]\\s+(?:\\S|$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } ] }, @@ -881,7 +881,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*]\\s+(?:\\S|$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } ] }, @@ -891,7 +891,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\]\\s+(?:\\S|$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, @@ -900,7 +900,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\]\\s+(?:\\S|$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, @@ -909,7 +909,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\]\\s+(?:\\S|$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } ] }, @@ -918,7 +918,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\]\\s+(?:\\S|$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } ] }, diff --git a/Default (OSX).sublime-keymap b/Default (OSX).sublime-keymap index 582bbef3..42e5fc14 100644 --- a/Default (OSX).sublime-keymap +++ b/Default (OSX).sublime-keymap @@ -820,7 +820,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true } + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*]\\s+(?:\\S|$)", "match_all": true } ] }, { "keys": ["shift+keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^\\s*((?:>\\s*)*)([-+*])(\\s+).*/\n$1 $3/}"}, "context": @@ -828,7 +828,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true } + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*]\\s+(?:\\S|$)", "match_all": true } ] }, // Add line to current GFM task @@ -837,7 +837,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*][ ]\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true } + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*][ ]\\[[ xX]\\]\\s+(?:\\S|$)", "match_all": true } ] }, { "keys": ["shift+keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^\\s*((?:>\\s*)*)([-+*])(\\s+).*/\n$1 $3/}"}, "context": @@ -845,7 +845,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*][ ]\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true } + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*][ ]\\[[ xX]\\]\\s+(?:\\S|$)", "match_all": true } ] }, // Extend lists (also in block quotes) @@ -854,7 +854,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*]\\s+(?:\\S|$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, @@ -863,7 +863,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*]\\s+(?:\\S|$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, @@ -872,7 +872,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*]\\s+(?:\\S|$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } ] }, @@ -881,7 +881,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*]\\s+(?:\\S|$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } ] }, @@ -891,7 +891,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\]\\s+(?:\\S|$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, @@ -900,7 +900,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\]\\s+(?:\\S|$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, @@ -909,7 +909,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\]\\s+(?:\\S|$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } ] }, @@ -918,7 +918,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\]\\s+(?:\\S|$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } ] }, diff --git a/Default (Windows).sublime-keymap b/Default (Windows).sublime-keymap index e4a7c5a4..ad85adab 100644 --- a/Default (Windows).sublime-keymap +++ b/Default (Windows).sublime-keymap @@ -821,7 +821,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true } + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*]\\s+(?:\\S|$)", "match_all": true } ] }, { "keys": ["shift+keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^\\s*((?:>\\s*)*)([-+*])(\\s+).*/\n$1 $3/}"}, "context": @@ -829,7 +829,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true } + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*]\\s+(?:\\S|$)", "match_all": true } ] }, // Add line to current GFM task @@ -838,7 +838,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*][ ]\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true } + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*][ ]\\[[ xX]\\]\\s+(?:\\S|$)", "match_all": true } ] }, { "keys": ["shift+keypad_enter"], "command": "insert_snippet", "args": {"contents": "${TM_CURRENT_LINE/^\\s*((?:>\\s*)*)([-+*])(\\s+).*/\n$1 $3/}"}, "context": @@ -846,7 +846,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*][ ]\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true } + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*][ ]\\[[ xX]\\]\\s+(?:\\S|$)", "match_all": true } ] }, // Extend lists (also in block quotes) @@ -855,7 +855,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*]\\s+(?:\\S|$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, @@ -864,7 +864,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*]\\s+(?:\\S|$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, @@ -873,7 +873,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*]\\s+(?:\\S|$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } ] }, @@ -882,7 +882,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^[\\s>]*[-+*]\\s+(?:\\S|$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } ] }, @@ -892,7 +892,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\]\\s+(?:\\S|$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, @@ -901,7 +901,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\]\\s+(?:\\S|$)", "match_all": true }, { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, @@ -910,7 +910,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\]\\s+(?:\\S|$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } ] }, @@ -919,7 +919,7 @@ { "key": "selector", "operator": "equal", "operand": "text.html.markdown - meta.frontmatter - meta.disable-markdown - markup.raw", "match_all": true }, { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }, { "key": "setting.mde.list_auto_bullets", "operator": "equal", "operand": true }, - { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\](?:\\s+\\S|\\s*$)", "match_all": true }, + { "key": "preceding_text", "operator": "regex_contains", "operand": "^([\\s>]*([-+*])\\s+)\\[[ xX]\\]\\s+(?:\\S|$)", "match_all": true }, { "key": "setting.auto_complete_commit_on_tab" } ] }, From 7be7e04fc867d7a4453ee19441343e6d9d8eddca Mon Sep 17 00:00:00 2001 From: deathaxe Date: Sat, 11 Apr 2026 19:25:16 +0200 Subject: [PATCH 06/12] Syntax: Fix code-spans in tables --- syntaxes/Markdown.sublime-syntax | 2 +- tests/syntax_test_markdown.md | 51 ++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/syntaxes/Markdown.sublime-syntax b/syntaxes/Markdown.sublime-syntax index 0bb9fa57..131b83cc 100644 --- a/syntaxes/Markdown.sublime-syntax +++ b/syntaxes/Markdown.sublime-syntax @@ -339,7 +339,7 @@ variables: table_codespan_content: |- (?x: [^`|] # first or only char must not be a backtick or pipe. - (?:[^|]*?[^`|])? # none must be a pipe, the last additionally must not be a backtick + (?:[^|]*?[^`|])?? # none must be a pipe, the last additionally must not be a backtick ) table_end: |- diff --git a/tests/syntax_test_markdown.md b/tests/syntax_test_markdown.md index efb88b94..620b623c 100644 --- a/tests/syntax_test_markdown.md +++ b/tests/syntax_test_markdown.md @@ -3244,6 +3244,57 @@ test > bar | <- markup.quote punctuation.definition.blockquote - meta.table +c1 | c2 +--------- | --------- +`Row 1` | `a`, `b`, `c` +|^^^^^^^^^^^^^^^^^^^^^^^^^ meta.table.markdown-gfm +|^^^^^^ markup.raw.inline.markdown +| ^ punctuation.definition.raw.end.markdown +| ^ punctuation.separator.table-cell.markdown +| ^^^ markup.raw.inline.markdown +| ^ punctuation.definition.raw.begin.markdown +| ^ punctuation.definition.raw.end.markdown +| ^^^ markup.raw.inline.markdown +| ^ punctuation.definition.raw.begin.markdown +| ^ punctuation.definition.raw.end.markdown +| ^^^ markup.raw.inline.markdown +| ^ punctuation.definition.raw.begin.markdown +| ^ punctuation.definition.raw.end.markdown + +c1 | c2 +--------- | --------- +`Row 2` | ``a``, ``b``, ``c`` +|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.table.markdown-gfm +|^^^^^^ markup.raw.inline.markdown +| ^ punctuation.definition.raw.end.markdown +| ^ punctuation.separator.table-cell.markdown +| ^^^^^ markup.raw.inline.markdown +| ^^ punctuation.definition.raw.begin.markdown +| ^^ punctuation.definition.raw.end.markdown +| ^^^^^ markup.raw.inline.markdown +| ^^ punctuation.definition.raw.begin.markdown +| ^^ punctuation.definition.raw.end.markdown +| ^^^^^ markup.raw.inline.markdown +| ^^ punctuation.definition.raw.begin.markdown +| ^^ punctuation.definition.raw.end.markdown + +c1 | c2 +--------- | --------- +`Row 3` | ```a```, ```b```, ```c``` +|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.table.markdown-gfm +|^^^^^^ markup.raw.inline.markdown +| ^ punctuation.definition.raw.end.markdown +| ^ punctuation.separator.table-cell.markdown +| ^^^^^^^ markup.raw.inline.markdown +| ^^^ punctuation.definition.raw.begin.markdown +| ^^^ punctuation.definition.raw.end.markdown +| ^^^^^^^ markup.raw.inline.markdown +| ^^^ punctuation.definition.raw.begin.markdown +| ^^^ punctuation.definition.raw.end.markdown +| ^^^^^^^ markup.raw.inline.markdown +| ^^^ punctuation.definition.raw.begin.markdown +| ^^^ punctuation.definition.raw.end.markdown + | c1 | c2 | c3 | c4 | c5 | c6 | c7 | --- | --- | --- | --- | --- | --- | --- | ` ` | ` me ` | `` ` `` | ` `` ` | ``foo`bar`` | ```foo`` | ``foo``` From 9c43ae3b45542d482aca59a852ecfdb92fc44bf7 Mon Sep 17 00:00:00 2001 From: Kirill Muravev <48129887+studokim@users.noreply.github.com> Date: Wed, 25 Feb 2026 11:17:52 +0300 Subject: [PATCH 07/12] Plugins: fix linter complaining on bash comments in code blocks --- messages/next.md | 15 +++++++++++++++ plugins/lint.py | 13 +++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 messages/next.md diff --git a/messages/next.md b/messages/next.md new file mode 100644 index 00000000..c184ca7d --- /dev/null +++ b/messages/next.md @@ -0,0 +1,15 @@ +# MarkdownEditing {version} Changelog + +Your _MarkdownEditing_ plugin is updated. Enjoy new version. For any type of +feedback you can use [GitHub issues][issues]. + +## Bug Fixes + +## New Features + +## Changes + +- embedded linter no longer complains on Bash- and Python-style comments in code blocks + (previously it triggered the `MD023` rule) + +[issues]: https://github.com/SublimeText-Markdown/MarkdownEditing/issues diff --git a/plugins/lint.py b/plugins/lint.py index 5d6a09ba..6cd3649f 100644 --- a/plugins/lint.py +++ b/plugins/lint.py @@ -591,7 +591,20 @@ class md023(mddef): locator = r"^( +)((?:-+|=+)|(?:#{1,6}(?!#).*))$" gid = 1 + def is_inside_code_block(self, text, s, e): + def calculate_intendation(text, position): + return position - text.rfind("\n", 0, position) - 1 + keyword = "```" + block_s = text.rfind(keyword, 0, s-1) + block_e = text.find(keyword, e) + block_s_intendation = calculate_intendation(text, block_s) + block_e_intendation = calculate_intendation(text, block_e) + assert block_s_intendation == block_e_intendation + return e - s >= block_s_intendation + def test(self, text, s, e): + if self.is_inside_code_block(text, s, e): + return {} return {s: "%d spaces found" % (e - s)} From 5c647b714b2bab05325888f06753cd2467b984d9 Mon Sep 17 00:00:00 2001 From: deathaxe Date: Sun, 12 Apr 2026 09:08:42 +0200 Subject: [PATCH 08/12] Update changelog --- messages/next.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/messages/next.md b/messages/next.md index c184ca7d..640008b5 100644 --- a/messages/next.md +++ b/messages/next.md @@ -5,6 +5,11 @@ feedback you can use [GitHub issues][issues]. ## Bug Fixes +- disable `mde_show_fold_all_sections` binding by default (fixes #807) +- Insert new list items on enter only on empty selection (fixes #810) +- fix "extend list" binding constraints (fixes #812) +- fix code-spans not properly terminated in tables + ## New Features ## Changes From e6b1ba4b16b86b731ac36174b7e8da3dce3030a3 Mon Sep 17 00:00:00 2001 From: deathaxe Date: Sun, 12 Apr 2026 09:18:33 +0200 Subject: [PATCH 09/12] Plugins: Fix python 3.14 compatibility This commit ensures global flags to be located at very first character of patterns, as it is what python 3.14 enforces. --- plugins/headings/level.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/headings/level.py b/plugins/headings/level.py index 80b4fc1a..eb74d115 100644 --- a/plugins/headings/level.py +++ b/plugins/headings/level.py @@ -78,8 +78,7 @@ def _set_level(self, edit, calc_level, select): view = self.view match_heading_hashes = view.settings().get("mde.match_heading_hashes") pattern = re.compile( - r""" - (?x) + r"""(?x) ^([ \t>]*) # block quotes (?: (\#+) # leading hashes From f58ecee51d4b02c74f481426406eeb156ab2fffc Mon Sep 17 00:00:00 2001 From: deathaxe Date: Sun, 12 Apr 2026 09:29:17 +0200 Subject: [PATCH 10/12] Prepare Release --- messages.json | 3 ++- messages/next.md | 20 -------------------- 2 files changed, 2 insertions(+), 21 deletions(-) delete mode 100644 messages/next.md diff --git a/messages.json b/messages.json index 4a05b93f..bd08d9ce 100644 --- a/messages.json +++ b/messages.json @@ -27,5 +27,6 @@ "3.3.0": "messages/3.3.0.md", "3.4.0": "messages/3.4.0.md", "3.5.0": "messages/3.5.0.md", - "3.6.0": "messages/3.6.0.md" + "3.6.0": "messages/3.6.0.md", + "3.6.1": "messages/3.6.1.md" } diff --git a/messages/next.md b/messages/next.md deleted file mode 100644 index 640008b5..00000000 --- a/messages/next.md +++ /dev/null @@ -1,20 +0,0 @@ -# MarkdownEditing {version} Changelog - -Your _MarkdownEditing_ plugin is updated. Enjoy new version. For any type of -feedback you can use [GitHub issues][issues]. - -## Bug Fixes - -- disable `mde_show_fold_all_sections` binding by default (fixes #807) -- Insert new list items on enter only on empty selection (fixes #810) -- fix "extend list" binding constraints (fixes #812) -- fix code-spans not properly terminated in tables - -## New Features - -## Changes - -- embedded linter no longer complains on Bash- and Python-style comments in code blocks - (previously it triggered the `MD023` rule) - -[issues]: https://github.com/SublimeText-Markdown/MarkdownEditing/issues From fd9c51dfe0ca2a218ac7156821b3df4b0725266c Mon Sep 17 00:00:00 2001 From: deathaxe Date: Sun, 12 Apr 2026 09:33:19 +0200 Subject: [PATCH 11/12] Satisfy linter --- plugins/lint.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/lint.py b/plugins/lint.py index 6cd3649f..96fa3bc8 100644 --- a/plugins/lint.py +++ b/plugins/lint.py @@ -594,8 +594,9 @@ class md023(mddef): def is_inside_code_block(self, text, s, e): def calculate_intendation(text, position): return position - text.rfind("\n", 0, position) - 1 + keyword = "```" - block_s = text.rfind(keyword, 0, s-1) + block_s = text.rfind(keyword, 0, s - 1) block_e = text.find(keyword, e) block_s_intendation = calculate_intendation(text, block_s) block_e_intendation = calculate_intendation(text, block_e) From 4091134f8d828ab63e144eeb8f8a757b8ba1997a Mon Sep 17 00:00:00 2001 From: deathaxe Date: Sun, 12 Apr 2026 09:35:49 +0200 Subject: [PATCH 12/12] CI: Bump actions --- .github/workflows/ci-lint.yml | 2 +- .github/workflows/ci-syntax-tests.yml | 2 +- .github/workflows/deploy-gh-pages.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-lint.yml b/.github/workflows/ci-lint.yml index e7815b82..08b1c10f 100644 --- a/.github/workflows/ci-lint.yml +++ b/.github/workflows/ci-lint.yml @@ -25,7 +25,7 @@ jobs: strategy: matrix: python: - - '3.13' + - '3.14' arch: - 'x64' steps: diff --git a/.github/workflows/ci-syntax-tests.yml b/.github/workflows/ci-syntax-tests.yml index 02406dbb..d77cced3 100644 --- a/.github/workflows/ci-syntax-tests.yml +++ b/.github/workflows/ci-syntax-tests.yml @@ -39,7 +39,7 @@ jobs: - build: latest default_packages: master steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - uses: SublimeText/syntax-test-action@v2 with: build: ${{ matrix.build }} diff --git a/.github/workflows/deploy-gh-pages.yml b/.github/workflows/deploy-gh-pages.yml index 68bde5ec..3e513dd2 100644 --- a/.github/workflows/deploy-gh-pages.yml +++ b/.github/workflows/deploy-gh-pages.yml @@ -20,7 +20,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v6 with: - python-version: '3.13' + python-version: '3.14' - name: Install MkDocs run: pip install -r docs/requirements.txt - name: Run MkDocs