Which one will be chosen depends on the value of
`font-lock-maximum-decoration'.")
-(defun python-font-lock-extend-region (beg end _old-len)
- "Extend font-lock region given by BEG and END to statement boundaries."
- (save-excursion
- (save-match-data
- (goto-char beg)
- (python-nav-beginning-of-statement)
- (setq beg (point))
- (goto-char end)
- (python-nav-end-of-statement)
- (setq end (point))
- (cons beg end))))
-
+(defvar font-lock-beg)
+(defvar font-lock-end)
+(defun python-font-lock-extend-region ()
+ "Extend font-lock region to statement boundaries."
+ (let ((beg font-lock-beg)
+ (end font-lock-end))
+ (goto-char beg)
+ (python-nav-beginning-of-statement)
+ (beginning-of-line)
+ (when (< (point) beg)
+ (setq font-lock-beg (point)))
+ (goto-char end)
+ (python-nav-end-of-statement)
+ (when (< end (point))
+ (setq font-lock-end (point)))
+ (or (/= beg font-lock-beg) (/= end font-lock-end))))
(defconst python-syntax-propertize-function
(syntax-propertize-rules
`(,python-font-lock-keywords
nil nil nil nil
(font-lock-syntactic-face-function
- . python-font-lock-syntactic-face-function)
- (font-lock-extend-after-change-region-function
- . python-font-lock-extend-region)))
+ . python-font-lock-syntactic-face-function)))
+ (add-hook 'font-lock-extend-region-functions
+ #'python-font-lock-extend-region nil t)
(setq-local syntax-propertize-function
python-syntax-propertize-function)
(setq-local imenu-create-index-function