From 3d847fa9fd68592c50ea5e18c86b9f3eb5030654 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Mon, 24 Jul 2017 18:10:02 -0400 Subject: [PATCH] * lisp/progmodes/perl-mode.el: Add support for indented here docs * lisp/progmodes/perl-mode.el (perl-syntax-propertize-function): Recognize the new <<~ syntax for indented here docs. (perl-syntax-propertize-special-constructs): Adjust search of the end of here docs accordingly. * test/manual/indent/perl.perl: Add test for indented here docs. --- lisp/progmodes/perl-mode.el | 43 ++++++++++++------------------------ test/manual/indent/perl.perl | 8 +++++++ 2 files changed, 22 insertions(+), 29 deletions(-) diff --git a/lisp/progmodes/perl-mode.el b/lisp/progmodes/perl-mode.el index 3def37a2ea8..6197a53ee66 100644 --- a/lisp/progmodes/perl-mode.el +++ b/lisp/progmodes/perl-mode.el @@ -213,25 +213,6 @@ (regexp-opt perl--syntax-exp-intro-keywords) "\\|[-?:.,;|&+*=!~({[]\\|\\(^\\)\\)[ \t\n]*"))) -;; FIXME: handle here-docs and regexps. -;; < /.../ -;; s '...'...' -;; tr /.../.../ -;; y /.../.../ -;; -;; (defun perl-syntax-propertize-function (start end) (let ((case-fold-search nil)) (goto-char start) @@ -324,23 +305,25 @@ ((concat "\\(?:" ;; << "EOF", << 'EOF', or << \EOF - "<<[ \t]*\\('[^'\n]*'\\|\"[^\"\n]*\"\\|\\\\[[:alpha:]][[:alnum:]]*\\)" + "<<\\(~\\)?[ \t]*\\('[^'\n]*'\\|\"[^\"\n]*\"\\|\\\\[[:alpha:]][[:alnum:]]*\\)" ;; The <