From eb653865c3a35af115360273fb5147b4943ba2ef Mon Sep 17 00:00:00 2001 From: Rahul Martim Juliato Date: Sat, 23 May 2026 09:18:40 -0300 Subject: [PATCH 1/3] markdown-ts-mode: Don't enable unconditionally by default * lisp/textmodes/markdown-ts-mode.el (markdown-ts-mode-maybe): New function. (auto-mode-alist): Bind ".md", ".markdown", and ".mdx" to 'markdown-ts-mode-maybe' instead of 'markdown-ts-mode'. * etc/NEWS: Update the 'markdown-ts-mode' entry. --- etc/NEWS | 17 +++++------------ lisp/textmodes/markdown-ts-mode.el | 24 +++++++++++++++++++----- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 083e6b50ea4..7fc998ff547 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -3938,19 +3938,12 @@ A major mode based on 'conf-mode' for editing ".npmrc" files. *** New major mode 'markdown-ts-mode'. A major mode based on the tree-sitter library for editing Markdown -files. This is now the default major mode for Markdown files. If you -don't have the necessary tree-sitter grammar libraries installed, or if -your Emacs was built without tree-sitter support, Emacs will now show a -warning to that effect when you visit a Markdown file. If you don't -want to use this mode and want to avoid these warnings, add the -following to your init file: +files. Markdown files are visited using this mode when the required +tree-sitter grammars ('markdown' and 'markdown-inline') are available, +or when the user has opted in via 'treesit-enabled-modes'. Otherwise, +Markdown files fall back to 'text-mode'. - (add-to-list 'auto-mode-alist '("\\.md\\'" . fundamental-mode)) - (add-to-list 'auto-mode-alist '("\\.markdown\\'" . fundamental-mode)) - (add-to-list 'auto-mode-alist '("\\.mdx\\'" . fundamental-mode)) - -This will cause Emacs to visit Markdown files in Fundamental mode, which -was the default before this mode was added to Emacs. +To install the grammars, use 'M-x markdown-ts-mode-install-parsers'. *** New major mode 'mhtml-ts-mode'. An optional major mode based on the tree-sitter library for editing HTML diff --git a/lisp/textmodes/markdown-ts-mode.el b/lisp/textmodes/markdown-ts-mode.el index be2247b870e..fed6ded192c 100644 --- a/lisp/textmodes/markdown-ts-mode.el +++ b/lisp/textmodes/markdown-ts-mode.el @@ -5401,14 +5401,14 @@ With a prefix argument, ARG, if needed, install parsers for `html', (cond ((treesit-ready-p '(markdown markdown-inline) t) (markdown-ts--set-up)) (t - (warn "markdown-ts-mode cannot be set up; using fundamental-mode. + (warn "markdown-ts-mode cannot be set up; using text-mode. %s." (if (treesit-available-p) "The tree-sitter parsers `markdown' and `markdown-inline' were not found. Use the command `markdown-ts-mode-install-parsers' to install them. With a prefix argument, it can also install optional parsers" "Emacs was built without Tree-sitter support, or could not load Tree-sitter")) - (fundamental-mode))))) + (text-mode))))) ;;;###autoload (define-derived-mode markdown-ts-mode text-mode "Markdown" @@ -5619,11 +5619,25 @@ If non-nil and `point' is in a table, enable (remove-hook 'post-command-hook #'markdown-ts--enable-in-table-mode 'local)))) +;;;###autoload +(defun markdown-ts-mode-maybe () + "Enable `markdown-ts-mode' when its grammars are available. +Also propose to install the grammars when `treesit-enabled-modes' +is t or contains the mode name." + (declare-function treesit-language-available-p "treesit.c") + (if (or (and (treesit-language-available-p 'markdown) + (treesit-language-available-p 'markdown-inline)) + (eq treesit-enabled-modes t) + (memq 'markdown-ts-mode treesit-enabled-modes)) + (markdown-ts-mode) + (text-mode))) + ;;;###autoload (when (boundp 'treesit-major-mode-remap-alist) - (add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-ts-mode)) - (add-to-list 'auto-mode-alist '("\\.markdown\\'" . markdown-ts-mode)) - (add-to-list 'auto-mode-alist '("\\.mdx\\'" . markdown-ts-mode)) + (add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-ts-mode-maybe)) + (add-to-list 'auto-mode-alist '("\\.markdown\\'" . markdown-ts-mode-maybe)) + (add-to-list 'auto-mode-alist '("\\.mdx\\'" . markdown-ts-mode-maybe)) + ;; To be able to toggle between an external package and core ts-mode: (add-to-list 'treesit-major-mode-remap-alist '(markdown-mode . markdown-ts-mode))) From dd42133315b9aea8ed8ce54191a5e85249417a0c Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Sat, 23 May 2026 16:53:36 +0100 Subject: [PATCH 2/3] vc-test--rename-file: Disable part of test for SCCS * test/lisp/vc/vc-tests/vc-tests.el (vc-test--rename-file): Disable part of test for SCCS. --- test/lisp/vc/vc-tests/vc-tests.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/lisp/vc/vc-tests/vc-tests.el b/test/lisp/vc/vc-tests/vc-tests.el index 1fb17842478..8e2ae2c4454 100644 --- a/test/lisp/vc/vc-tests/vc-tests.el +++ b/test/lisp/vc/vc-tests/vc-tests.el @@ -592,8 +592,8 @@ This checks also `vc-backend' and `vc-responsible-backend'." 'added)))) ;; Test OK-IF-ALREADY-EXISTS. - ;; RCS and SRC don't support `vc-delete-file'. - (unless (memq backend '(RCS SRC)) + ;; RCS, SRC and SCCS don't support `vc-delete-file'. + (unless (memq backend '(RCS SRC SCCS)) (let ((tmp-name (expand-file-name "qux" default-directory)) (new-name (expand-file-name "quuux" default-directory))) (write-region "qux" nil tmp-name nil 'nomessage) From 4f13f52a3aade6e43e42f14f9f94b0c43d6b4b12 Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Sat, 23 May 2026 17:25:07 +0100 Subject: [PATCH 3/3] * build-aux/git-hooks/commit-msg: Replace Markdown-style quotation. --- build-aux/git-hooks/commit-msg | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/build-aux/git-hooks/commit-msg b/build-aux/git-hooks/commit-msg index 159990b1406..ddde1b4e586 100755 --- a/build-aux/git-hooks/commit-msg +++ b/build-aux/git-hooks/commit-msg @@ -75,6 +75,7 @@ exec $awk \ } c_lower = "abcdefghijklmnopqrstuvwxyz" unsafe_gnu_url = "(http|ftp)://([" c_lower ".]*\\.)?(gnu|fsf)\\.org" + markdown_quotation = "(^|[^\\\\])`[^'\''`]+`" } { input[NR] = $0 } @@ -92,11 +93,6 @@ exec $awk \ status = 1 } - /(^|[^\\])`[^'\''`]+`/ { - print "Markdown-style quotes in commit message" - status = 1 - } - nlines == 0 && $0 !~ non_space { next } { nlines++ } @@ -141,7 +137,7 @@ exec $awk \ status = 1 } - $0 ~ unsafe_gnu_url { + $0 ~ unsafe_gnu_url || $0 ~ markdown_quotation { needs_rewriting = 1 } @@ -167,7 +163,13 @@ exec $awk \ suffix = substr(line, RSTART) line = prefix "https:" substr(suffix, 5 + (suffix ~ /^http:/)) } - print line >file + while (match(line, markdown_quotation)) { + prefix = substr(line, 1, RSTART) + within = substr(line, RSTART + 2, RLENGTH - 3) + suffix = substr(line, RSTART + RLENGTH) + line = prefix "'\''" within "'\''" suffix + } + print line >file } if (close(file) != 0) { print "Cannot rewrite: " file