I am having a problem in cperl-mode
described in this question. Basically inserting a newline at the start of a line in here doc in cperl-mode
is breaking the syntax highlighting. One of the answers suggested using font-lock-extend-region-functions to extend the font lock region to include all of the here doc. I have done that with the code below and verified it with highlight-refontification. However even though the region is extended, when I insert a newline, the region splits and the syntax highlighting still breaks. My function is shown below
(defun my/cperl-font-lock-extend-region-here ()
(save-excursion
(goto-char font-lock-beg)
(if (re-search-backward "=<<\s*['\"]?[0-9a-zA-Z_]+['\"]?\s*;" nil t)
(if (string-match "=<<\s*['\"]?\\([0-9a-zA-Z_]+\\)['\"]?\s*;" (thing-at-point 'line t))
(let ((here-tag (concat "^" (match-string 1 (thing-at-point 'line t)) "$")))
(beginning-of-line)
(let ((here-start (point)))
(goto-char font-lock-end)
(if (re-search-forward here-tag nil t)
(progn
(end-of-line)
(if (< font-lock-end (point))
(setq font-lock-end (point)))))
(if (> font-lock-beg here-start)
(setq font-lock-beg here-start))))))))
My question is, does any smart person know an approach to prevent syntax highlighting from breaking in cperl-mode
here docs?