From: Yuan Fu Date: Sat, 23 Dec 2023 23:49:32 +0000 (-0800) Subject: Fix python-ts-mode triple quote syntax (bug#67262) X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3016f942622bb1d9e58a344f79576a2233248014;p=emacs.git Fix python-ts-mode triple quote syntax (bug#67262) * lisp/progmodes/python.el (python--treesit-syntax-propertize): New function. (python-ts-mode): Activate python--treesit-syntax-propertize. (cherry picked from commit 2701da0eee54d85f79104c7a91610bf591159a51) --- diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 211969140ab..ff9402eaaaf 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -1238,6 +1238,21 @@ For NODE, OVERRIDE, START, END, and ARGS, see (treesit-node-start node) (treesit-node-end node) 'font-lock-variable-use-face override start end))) +(defun python--treesit-syntax-propertize (start end) + "Propertize triple-quote strings between START and END." + (save-excursion + (goto-char start) + (while (re-search-forward (rx (or "\"\"\"" "'''")) end t) + (let ((node (treesit-node-at (point)))) + ;; The triple quotes surround a non-empty string. + (when (equal (treesit-node-type node) "string_content") + (let ((start (treesit-node-start node)) + (end (treesit-node-end node))) + (put-text-property (1- start) start + 'syntax-table (string-to-syntax "|")) + (put-text-property end (min (1+ end) (point-max)) + 'syntax-table (string-to-syntax "|")))))))) + ;;; Indentation @@ -6854,6 +6869,8 @@ implementations: `python-mode' and `python-ts-mode'." #'python--treesit-defun-name) (treesit-major-mode-setup) + (setq-local syntax-propertize-function #'python--treesit-syntax-propertize) + (python-skeleton-add-menu-items) (when python-indent-guess-indent-offset