changeset 60761:7aef7292e42f

(perl-font-lock-syntactic-face-function): Properly handle the case where the `m' or `s' command's argument is not yet terminated.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sun, 20 Mar 2005 17:06:13 +0000
parents a706fe4203bc
children 9d474a03949a
files lisp/progmodes/perl-mode.el
diffstat 1 files changed, 28 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/progmodes/perl-mode.el	Sun Mar 20 01:49:32 2005 +0000
+++ b/lisp/progmodes/perl-mode.el	Sun Mar 20 17:06:13 2005 +0000
@@ -330,30 +330,34 @@
 				      nil nil state 'syntax-table)))
 	    ;; The open/close chars are matched like () [] {} and <>.
 	    (let ((parse-sexp-lookup-properties nil))
-	      (ignore-errors
-		(with-syntax-table st
-		  (goto-char (nth 8 state)) (forward-sexp 1))
-		(when twoargs
-		  (save-excursion
-		    ;; Skip whitespace and make sure that font-lock will
-		    ;; refontify the second part in the proper context.
-		    (put-text-property
-		     (point) (progn (forward-comment (point-max)) (point))
-		     'font-lock-multiline t)
-		    ;;
-		    (unless
-			(save-excursion
-			  (let* ((char2 (char-after))
-				 (st2 (perl-quote-syntax-table char2)))
-			    (with-syntax-table st2 (forward-sexp 1))
-			    (put-text-property pos (line-end-position)
-					       'jit-lock-defer-multiline t)
-			    (looking-at "\\s-*\\sw*e")))
-		      (put-text-property (point) (1+ (point))
-					 'syntax-table
-					 (if (assoc (char-after)
-						    perl-quote-like-pairs)
-					     '(15) '(7)))))))))
+	      (condition-case err
+		  (progn
+		    (with-syntax-table st
+		      (goto-char (nth 8 state)) (forward-sexp 1))
+		    (when twoargs
+		      (save-excursion
+			;; Skip whitespace and make sure that font-lock will
+			;; refontify the second part in the proper context.
+			(put-text-property
+			 (point) (progn (forward-comment (point-max)) (point))
+			 'font-lock-multiline t)
+			;;
+			(unless
+			    (save-excursion
+			      (with-syntax-table
+				  (perl-quote-syntax-table (char-after))
+				(forward-sexp 1))
+			      (put-text-property pos (line-end-position)
+						 'jit-lock-defer-multiline t)
+			      (looking-at "\\s-*\\sw*e"))
+			  (put-text-property (point) (1+ (point))
+					     'syntax-table
+					     (if (assoc (char-after)
+							perl-quote-like-pairs)
+						 '(15) '(7)))))))
+		;; The arg(s) is not terminated, so it extends until EOB.
+		(scan-error (goto-char (point-max))))))
+	  ;; Point is now right after the arg(s).
 	  ;; Erase any syntactic marks within the quoted text.
 	  (put-text-property pos (1- (point)) 'syntax-table nil)
 	  (when (eq (char-before (1- (point))) ?$)