Hello All, I'm trying to implement here doc syntax highlighting. I've reviewed the implementations in shell-script-mode and hcl-mode but I don't really understand what is happening. I've read the documentation for syntax-propertize-function ( https://www.gnu.org/software/emacs/manual/html_node/elisp/Syntax-Properties.html) but that didn't help me understand what's going on. Could someone help explain the following code: (defun hcl--syntax-propertize-heredoc (end) (let ((ppss (syntax-ppss))) (when (eq t (nth 3 ppss)) (let ((key (get-text-property (nth 8 ppss) 'hcl-here-doc-marker)) (case-fold-search nil)) (when (re-search-forward (concat "^\\(?:[ \t]*\\)" (regexp-quote key) "\\(\n\\)") end 'move) (let ((eol (match-beginning 1))) (put-text-property eol (1+ eol) 'syntax-table (string-to-syntax "|")))))))) (defun hcl--font-lock-open-heredoc (start string eol) (unless (or (memq (char-before start) '(?< ?>)) (save-excursion (goto-char start) (hcl--in-string-or-comment-p))) (let ((str (replace-regexp-in-string "['\"]" "" string))) (put-text-property eol (1+ eol) 'hcl-here-doc-marker str) (prog1 (string-to-syntax "|") (goto-char (+ 2 start)))))) (defun hcl--syntax-propertize-function (start end) (goto-char start) (hcl--syntax-propertize-heredoc end) (funcall (syntax-propertize-rules (hcl--here-doc-beg-re (2 (hcl--font-lock-open-heredoc (match-beginning 0) (match-string 1) (match-beginning 2)))) ("\\s|" (0 (prog1 nil (hcl--syntax-propertize-heredoc end))))) (point) end)) Cheers, Reza